@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

ハイバネーションファイルのコンバート

ハイバネーションファイルも、Sandman プロジェクトを使えばクラッシュダンプファイルへコンバートできるみたいですが、手元ではうまくいったことがない今日この頃。
Hibinfo.exe で試しているのですが、Error:Failed to open file. になってしまいコンバートが先にすすみません。
ということで、昨年末に試してこけてた気がする、Volatility Framework 1.3ベータに含まれる hibinfo コマンドを実行。

C:\>c:\temp\Volatility-1.3_Beta\volatility hibinfo -f c:\temp
\hiberfil.sys -d c:\temp\hiberRAW.bin
c:\temp\Volatility-1.3_Beta\forensics\win32\crashdump.py:31: DeprecationWarning:
 the sha module is deprecated; use the hashlib module instead
  import sha
Signature: 

SystemTime: Thu Jan 01 00:00:00 1970

Control registers flags
CR0: 80010031
CR0[PAGING]: 1
CR3: 0ad40080
CR4: 000006f1
CR4[PSE]: 1
CR4[PAE]: 1
Traceback (most recent call last):
  File "c:\temp\Volatility-1.3_Beta\volatility", line 219, in <module>
    main()
  File "c:\temp\Volatility-1.3_Beta\volatility", line 212, in main
    modules[argv[1]].execute(argv[1], argv[2:])
  File "c:\temp\Volatility-1.3_Beta\vmodules.py", line 62, in execute
    self.cmd_execute(module, args)
  File "c:\temp\Volatility-1.3_Beta\vmodules.py", line 1677, in hibinfo
    (major,minor,build) =  hiberAS.get_version()
  File "c:\temp\Volatility-1.3_Beta\forensics\win32\hiber_addrspace.py", line 45
2, in get_version
    addr_space = IA32PagedMemoryPae(self,self.CR3)
NameError: global name 'IA32PagedMemoryPae' is not defined

これは、PAE 環境に問題があるとかそいうオチ?
ということで?PAEを無効にしてからハイバネーションファイルを作成して実行。

C:\>volatility hibinfo -t nopae -f c:\temp\hiberfil_NOPAE.sys -d c:\temp\NOPAE_hib.bin
c:\temp\Volatility-1.3_Beta\forensics\win32\crashdump.py:31: DeprecationWarning:
 the sha module is deprecated; use the hashlib module instead
  import sha
Signature: 

SystemTime: Thu Jan 01 00:00:00 1970

Control registers flags
CR0: 80010031
CR0[PAGING]: 1
CR3: 12ae0000
CR4: 000006d1
CR4[PSE]: 1
CR4[PAE]: 0
Traceback (most recent call last):
  File "c:\temp\Volatility-1.3_Beta\volatility", line 219, in <module>
    main()
  File "c:\temp\Volatility-1.3_Beta\volatility", line 212, in main
    modules[argv[1]].execute(argv[1], argv[2:])
  File "c:\temp\Volatility-1.3_Beta\vmodules.py", line 62, in execute
    self.cmd_execute(module, args)
  File "c:\temp\Volatility-1.3_Beta\vmodules.py", line 1677, in hibinfo
    (major,minor,build) =  hiberAS.get_version()
  File "c:\temp\Volatility-1.3_Beta\forensics\win32\hiber_addrspace.py", line 46
7, in get_version
    ['_KGDTENTRY','BaseLow'], NtTibAddr)
  File "c:\temp\Volatility-1.3_Beta\forensics\object.py", line 206, in read_obj
    return read_value(addr_space, current_type, vaddr + offset)
  File "c:\temp\Volatility-1.3_Beta\forensics\object.py", line 71, in read_value

    buf = addr_space.read(vaddr, type_size)
  File "c:\temp\Volatility-1.3_Beta\forensics\x86.py", line 124, in read
    paddr = self.vtop(vaddr)
  File "c:\temp\Volatility-1.3_Beta\forensics\x86.py", line 109, in vtop
    if self.entry_present(pgd):
  File "c:\temp\Volatility-1.3_Beta\forensics\x86.py", line 72, in entry_present

    if (entry & (0x00000001)) == 0x00000001:
TypeError: unsupported operand type(s) for &: 'NoneType' and 'int'

むーん、今度は TypeErrorですか。
PAEを無効化する手順の資料。

Windows Server 2003 Service Pack 1 または Windows XP Service Pack 2 で PAE カーネルの読み込みを防止する方法
http://support.microsoft.com/kb/900524/ja