APT.IMG でまだ確認してない点としてレジストリ情報があります。
Volatility にはレジストリ関連のプラグインがありますので、それらの結果を確認しておきたいと思います。
まず、hivelist プラグインを使い、メモリ上での配置状況を確認してみます。
Virtual Physical Name
---------- ---------- ----
0xe1b01718 0x0cdce718 \Device\HarddiskVolume1\Documents and Settings\demo\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe1a47b60 0x0c073b60 \Device\HarddiskVolume1\Documents and Settings\demo\NTUSER.DAT
0xe190e008 0x0bfa9008 \Device\HarddiskVolume1\Documents and Settings\LocalService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe1905b60 0x0bf2cb60 \Device\HarddiskVolume1\Documents and Settings\LocalService\NTUSER.DAT
0xe1830b60 0x0a03fb60 \Device\HarddiskVolume1\Documents and Settings\NetworkService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat
0xe1836b60 0x0abaeb60 \Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT
0xe14b56b8 0x08a726b8 \Device\HarddiskVolume1\WINDOWS\system32\config\software
0xe1739710 0x085d0710 \Device\HarddiskVolume1\WINDOWS\system32\config\default
0xe173eb60 0x08594b60 \Device\HarddiskVolume1\WINDOWS\system32\config\SAM
0xe14b5b60 0x08a72b60 \Device\HarddiskVolume1\WINDOWS\system32\config\SECURITY
0xe13a9758 0x02e15758 [no name]
0xe1035b60 0x02a9eb60 \Device\HarddiskVolume1\WINDOWS\system32\config\system
0xe102e008 0x02a98008 [no name]
上記で各ハイブの位置が分かりますが、次に system ハイブに注目してみたいと思います。
指定したハイブをファイルとして保存するには、hivedump コマンドを使うことができますので、sysytem ハイブキーの仮想アドレスを指定してダンプしてみます。*1
>volatility.exe -f APT.img --profile=WinXPSP3x86 hivedump -o 0xe1035b60
この結果は再帰してキーのリストを表示してくれるものですが、デバイスドライバとして登録されている irykmmww の文字列を探してみます。
2009-05-05 19:28:33 UTC+0000 \$$$PROTO.HIV\ControlSet001\Enum\Root\LEGACY_IRYKMMWW
2009-05-05 19:28:33 UTC+0000 \$$$PROTO.HIV\ControlSet001\Enum\Root\LEGACY_IRYKMMWW\0000
2009-05-05 19:28:33 UTC+0000 \$$$PROTO.HIV\ControlSet001\Enum\Root\LEGACY_IRYKMMWW\0000\Control
snip
2009-05-05 19:28:33 UTC+0000 \$$$PROTO.HIV\ControlSet001\Services\irykmmww
2009-05-05 19:28:32 UTC+0000 \$$$PROTO.HIV\ControlSet001\Services\irykmmww\Security
2009-05-05 19:28:33 UTC+0000 \$$$PROTO.HIV\ControlSet001\Services\irykmmww\Enum
二カ所で見つかってきましたが、Services配下で発見されたキーについて詳しくみてみます。printley プラグインを使うことで指定したキー配下の情報を得ることが出来るようですので -K "ControlSet001\Services\irykmmww" を指定して実行します。*2
>volatility.exe -f APT.img --profile=WinXPSP3x86 printkey -K "ControlSet001\Services\irykmmww"
Volatility Foundation Volatility Framework 2.3
Legend: (S) = Stable (V) = Volatile
----------------------------
Registry: \Device\HarddiskVolume1\WINDOWS\system32\config\system
Key name: irykmmww (S)
Last updated: 2009-05-05 19:28:33 UTC+0000
Subkeys:
(S) Security
(V) Enum
Values:
REG_DWORD Type : (S) 1
REG_DWORD Start : (S) 3
REG_DWORD ErrorControl : (S) 1
REG_EXPAND_SZ ImagePath : (S) \??\C:\WINDOWS\system32\drivers\irykmmww.sys
ImagePath として irykmmww.sys が登録されている事が確認できました。hivedump の出力でも確認できますが、キーの最終更新日時 Last updated も確認できますね。
検索対象とするハイブを絞りたい場合には、-o オプションを使い検索対象としたハイブのオフセットを指定すれば良いようです。
メモリイメージ内のレジストリデータを、そのままバイナリファイルとして取り出す事ができれば、RegEditなりで読み取る事が可能になり便利ではないかと思うのですが、今の所それは出来ないということでしょうかね?
サービスに関連したプラグインとしては、もう一つ getservicesids があります。このプラグインを実行すると、サービスの SID を確認する事ができます。この値、S-1-5-80 より後ろはサービス名大文字UnicodeのSHA1値という事みたいですね。*3
'S-1-5-80-656274236-3017758052-1347752369-3436093889-4074239946': 'irykmmww'
参考資料
http://jls-scripts.googlecode.com/files/Timeliner%20Release%20Documentation.pdf