@port139 Blog

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

メモリイメージ上のハイブ位置を確認する

まず hivescan を実行し、ハイブのオフセット位置を確認します。コマンドラインとしては以下になります。

volatility hivescan -f RAMイメージファイル名.dmp

実行するとオフセット位置が表示されます。手元では VMware上のWindows XP Sp2(メモリ 382M)で作成した物理メモリのイメージファイルに対して実行したところ、以下の結果が表示されました。

Offset (hex)
50928480 0x3091b60
50934640 0x3093370
53414752 0x32f0b60
137409032 0x830b208
137410224 0x830b6b0
140522312 0x8603348
140786528 0x8643b60
176403168 0xa83b2e0
176603144 0xa86c008
183324680 0xaed5008
197058952 0xbbee188
203182920 0xc1c5348
208904200 0xc73a008
214981472 0xcd05b60
225348448 0xd6e8b60
237789704 0xe2c6208
237790896 0xe2c66b0
238197600 0xe329b60
249588576 0xee06b60
263824200 0xfb9a348
303197024 0x12126b60
314991112 0x12c66208
314992304 0x12c666b0
330853216 0x13b86b60
348459400 0x14c51188
350638920 0x14e65348

メモリサイズが 2GB など大きい場合には、かなりの時間を必要とします。
得られたオフセット位置を使い、hivelist コマンドでそれぞれのハイブのアドレスを確認します。オフセット位置の指定は -o オプションになりますが、先頭のアドレスを指定すれば OK です。

volatility hivelist -f c:\temp\physmem.bin -o 50928480

Address      Name
0xe1cbe008   \Documents and Settings\test\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe2086b60   \Documents and Settings\test\NTUSER.DAT
0xe1aba188   \Documents and Settings\LocalService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe1a90008   \Documents and Settings\LocalService\NTUSER.DAT
0xe18c32e0   \Documents and Settings\NetworkService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe18bd008   \Documents and Settings\NetworkService\NTUSER.DAT
0xe15b0208   \WINDOWS\system32\config\software
0xe1370348   \WINDOWS\system32\config\default
0xe1372b60   \WINDOWS\system32\config\SAM
0xe15b06b0   \WINDOWS\system32\config\SECURITY
0xe1271b60   [no name]
0xe1018370   \WINDOWS\system32\config\system
0xe1008b60   [no name]

この結果で、SYSTEM と SAM ハイブの仮想アドレスが確認できました。