@port139 Blog

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

SANSからの練習問題を試す ファイルの取り出し レジストリ情報を確認する

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

 

*1:出力にかなりの時間を必要とするので、実行後はしばらく放置になりますね

*2:$$$PROTO.HIV\ControlSet001\Services\irykmmwwを指定してもThe requested key could not be found in the hive(s) searchedというエラーになってしまうのでパスの指定には注意が必要です

*3:http://support.microsoft.com/kb/243330/ja