@port139 Blog

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

SANSからの練習問題を試す フックの確認 (1)

これまでの手順により、"irykmmww"という不審なファイル名と同じドライバがある事が確認できました。

f:id:hideakii:20140313202308p:plain

不審なカーネルモードのドライバとくればやはりRootkitなどを疑う事になるかと思います。RedLineでは、Hooksという項目があり、こちらでRootkitがよく使うフック手法をベースに確認ができるようになっています。

項目としては、IDT Hooks、SSDT Hooks、IRP Hooksの3種類を確認する事が可能になっています。

f:id:hideakii:20140313202315p:plain

順番にフック状況を確認していきたいと思います。まずはITD Hooksの項目を確認してみますが、こちらは何もない様です。

f:id:hideakii:20140313202325p:plain

次にSSDT Hooksを確認します。これは幾つか表示されてきますが、いずれもirykmmww.sysがntoskrnl.exeをフックしている事が分かります。

f:id:hideakii:20140313202333p:plain

SSDTのHooked Functionとして表示されている項目は以下になります。

  1. NtDeviceIoControlFile
  2. NtEnumerateKey
  3. NtEnumerateValueKey
  4. NtOpenKey
  5. NtQueryDirectoryFile
  6. NtQuerySystemInformation
  7. NtQueryValueKey

 これらは一般的にRootkitがファイルやレジストリを隠すために利用するシステムコールという感じですね。

それぞれの役割を正しく把握する意味で、内容をマイクロソフトのサイトなどで確認すべきだと思うのですが、名前だけで勝手に役割を推測して満足しているのは私の悪いところですね。

RedLineでは、OSが標準的に利用しているフックについてはノイズになるので表示しないような仕組みが導入されているそうで、Volatilityのssdtプラグインとでは表示されるデータ量(ノイズ部分)に差異が出てきます。Ver2.0のコマンドリファレンスにはssdt_exという似たような動作するコマンドがあるのですが、2.3で見当たらないのは無くなっているという事なんでしょうかね。

試しにVolatilityの ssdt プラグインの出力結果も確認してみます。(一部抜粋)  

Entry 0x0042: 0xf836fe9c (NtDeviceIoControlFile) owned by irykmmww.sys

  Entry 0x0043: 0x8060915a (NtDisplayString) owned by ntoskrnl.exe

  Entry 0x0044: 0x805b38da (NtDuplicateObject) owned by ntoskrnl.exe

  Entry 0x0045: 0x805e30ee (NtDuplicateToken) owned by ntoskrnl.exe

  Entry 0x0046: 0x8060cbdc (NtEnumerateBootEntries) owned by ntoskrnl.exe

  Entry 0x0047: 0xf83706dc (NtEnumerateKey) owned by irykmmww.sys

  Entry 0x0048: 0x8060cbc0 (NtEnumerateSystemEnvironmentValuesEx) owned by ntoskrnl.exe

  Entry 0x0049: 0xf837075e (NtEnumerateValueKey) owned by irykmmww.sys

  Entry 0x004a: 0x805a91a6 (NtExtendSection) owned by ntoskrnl.exe

  Entry 0x004b: 0x805e329a (NtFilterToken) owned by ntoskrnl.exe

  Entry 0x004c: 0x8060c0f4 (NtFindAtom) owned by ntoskrnl.exe

  Entry 0x004d: 0x8056bf68 (NtFlushBuffersFile) owned by ntoskrnl.exe

  Entry 0x004e: 0x805abec4 (NtFlushInstructionCache) owned by ntoskrnl.exe

  Entry 0x004f: 0x8061b026 (NtFlushKey) owned by ntoskrnl.exe

Volatilityでは、owned by ntoskrnl.exeとowned by win32k.sysも表示されるので、これらを除外した結果を確認する方が見やすくなりますね。

最後に IRP Hooksを確認してみます。こちらはアイテム数が 271 もありますが、まずはirykmmwwを検索してみてもマッチはありません。

f:id:hideakii:20140313202342p:plain

課題としては、このIRP Hooksは一般的に良く使われていて、ここからノイズをフィルタしていく必要があるという点でしょうか。

SANS Blogの解説では、driverirp プラグインを使い、更に -r オプションにより tcpip に絞り込んで確認を行っているようです。

driverirpの結果には irykmmww も含まれています。

DriverName: irykmmww

DriverStart: 0xf836f000

DriverSize: 0x3900

DriverStartIo: 0x0

   0 IRP_MJ_CREATE                        0xf837105a irykmmww.sys

   1 IRP_MJ_CREATE_NAMED_PIPE             0x804f355a ntoskrnl.exe

   2 IRP_MJ_CLOSE                         0xf837105a irykmmww.sys

   3 IRP_MJ_READ                          0x804f355a ntoskrnl.exe

   4 IRP_MJ_WRITE                         0x804f355a ntoskrnl.exe

   5 IRP_MJ_QUERY_INFORMATION             0x804f355a ntoskrnl.exe

   6 IRP_MJ_SET_INFORMATION               0x804f355a ntoskrnl.exe

   7 IRP_MJ_QUERY_EA                      0x804f355a ntoskrnl.exe

   8 IRP_MJ_SET_EA                        0x804f355a ntoskrnl.exe

   9 IRP_MJ_FLUSH_BUFFERS                 0x804f355a ntoskrnl.exe

  10 IRP_MJ_QUERY_VOLUME_INFORMATION      0x804f355a ntoskrnl.exe

  11 IRP_MJ_SET_VOLUME_INFORMATION        0x804f355a ntoskrnl.exe

  12 IRP_MJ_DIRECTORY_CONTROL             0x804f355a ntoskrnl.exe

  13 IRP_MJ_FILE_SYSTEM_CONTROL           0x804f355a ntoskrnl.exe

  14 IRP_MJ_DEVICE_CONTROL                0xf837105a irykmmww.sys

  15 IRP_MJ_INTERNAL_DEVICE_CONTROL       0x804f355a ntoskrnl.exe

  16 IRP_MJ_SHUTDOWN                      0xf837105a irykmmww.sys

  17 IRP_MJ_LOCK_CONTROL                  0x804f355a ntoskrnl.exe

  18 IRP_MJ_CLEANUP                       0x804f355a ntoskrnl.exe

  19 IRP_MJ_CREATE_MAILSLOT               0x804f355a ntoskrnl.exe

  20 IRP_MJ_QUERY_SECURITY                0x804f355a ntoskrnl.exe

  21 IRP_MJ_SET_SECURITY                  0x804f355a ntoskrnl.exe

  22 IRP_MJ_POWER                         0x804f355a ntoskrnl.exe

  23 IRP_MJ_SYSTEM_CONTROL                0x804f355a ntoskrnl.exe

  24 IRP_MJ_DEVICE_CHANGE                 0x804f355a ntoskrnl.exe

  25 IRP_MJ_QUERY_QUOTA                   0x804f355a ntoskrnl.exe

  26 IRP_MJ_SET_QUOTA                     0x804f355a ntoskrnl.exe

  27 IRP_MJ_PNP                           0x804f355a ntoskrnl.exe