RedLineを中心にRootkit対応の手順を確認してきましたが、Volatilityにはマルウェアの調査を意図したプラグインが各種提供されています。
マルウェア関連のプラグインは、Wiki に整理されていますので、そちらを参照してみてください。*1
malfind
yarascan
svcscan
ldrmodules
impscan
apihooks
idt
gdt
threads
callbacks
driverirp
devicetree
psxview
timers
SANS BlogでもATP.IMGに対して幾つかモジュールを実行して結果を確認しています。すでに使ったプラグインもありますが、malfindなどは実行していませんので、念のためマルウェア調査関連のプラグインも実行してみたいと思います。
では、まず最初に名前からしてそれっぽい malfind を実行してみたいと思います。
上記Wikiの説明によると、malfindは隠されている又はインジェクトされたコード/DLLをユーザーモードメモリ内で発見するというプラグインになっています。
malfindの実行結果を一部引用してみます、VolatilityのWikiではPAGE_EXECUTE_READWRITEかつ16進数部分がMZとなっているパターンを例示してくれていますが、今回のAPT.IMGにそういったパターンは含まれていないようです。そもそも、そんな簡単なチェック方法で良いのか?という素朴な疑問はありますが、impscan も併用して調べないという流れになるわけですかね?残念ながら今の私の知識レベルではimpscanをどう使うと良いのかが分かりませんです。
Process: explorer.exe Pid: 1672 Address: 0x2570000
Vad Tag: VadS Protection: PAGE_EXECUTE_READWRITE
Flags: CommitCharge: 1, MemCommit: 1, PrivateMemory: 1, Protection: 6
0x02570000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0x02570010 00 00 57 02 00 00 00 00 00 00 00 00 00 00 00 00 ..W.............
0x02570020 10 00 57 02 00 00 00 00 00 00 00 00 00 00 00 00 ..W.............
0x02570030 20 00 57 02 00 00 00 00 00 00 00 00 00 00 00 00 ..W.............
0x2570000 0000 ADD [EAX], AL
0x2570002 0000 ADD [EAX], AL
0x2570004 0000 ADD [EAX], AL
0x2570006 0000 ADD [EAX], AL
0x2570008 0000 ADD [EAX], AL
0x257000a 0000 ADD [EAX], AL
0x257000c 0000 ADD [EAX], AL
0x257000e 0000 ADD [EAX], AL
0x2570010 0000 ADD [EAX], AL
0x2570012 57 PUSH EDI
0x2570013 0200 ADD AL, [EAX]
0x2570015 0000 ADD [EAX], AL
0x2570017 0000 ADD [EAX], AL
0x2570019 0000 ADD [EAX], AL
0x257001b 0000 ADD [EAX], AL
0x257001d 0000 ADD [EAX], AL
0x257001f 0010 ADD [EAX], DL
0x2570021 005702 ADD [EDI+0x2], DL
0x2570024 0000 ADD [EAX], AL
0x2570026 0000 ADD [EAX], AL
0x2570028 0000 ADD [EAX], AL
0x257002a 0000 ADD [EAX], AL
0x257002c 0000 ADD [EAX], AL
0x257002e 0000 ADD [EAX], AL
0x2570030 2000 AND [EAX], AL
0x2570032 57 PUSH EDI
0x2570033 0200 ADD AL, [EAX]
0x2570035 0000 ADD [EAX], AL
0x2570037 0000 ADD [EAX], AL
0x2570039 0000 ADD [EAX], AL
0x257003b 0000 ADD [EAX], AL
0x257003d 0000 ADD [EAX], AL
0x257003f 00 DB 0x0
次に、ldrmodulesプラグインの結果を確認してみます。このプラグインは-vで詳細情報の表示が可能なようですので、-v 付きで実行してみます(部分的に抜粋)。
Pid Process Base InLoad InInit InMem MappedPath
-------- -------------------- ---------- ------ ------ ----- ----------
884 svchost.exe 0x10000000 True True True \WINDOWS\system32\irykmmww.d1l
Load Path: C:\WINDOWS\system32\irykmmww.d1l : irykmmww.d1l
Init Path: C:\WINDOWS\system32\irykmmww.d1l : irykmmww.d1l
Mem Path: C:\WINDOWS\system32\irykmmww.d1l : irykmmww.d1l
今回のAPT.IMGのメモリイメージ内では、特に"隠す"ということについては、ここでチェックする範囲では実施されてないという事になるんでしょうかね。
更にapihookプラグインも実行してみます。Wikiのサンプルを見た感じでは、Hooking module: <unknown> となっているのが注意すべき点という事でしょうか。APT.IMGに対して実行してみたところ、以下の結果だけで特に興味を引く結果はないように見えますが、そもそもこれは何を検出した結果として下記を出したのか?が疑問です。Function部分?
************************************************************************
Hook mode: Usermode
Hook type: Import Address Table (IAT)
Process: 1088 (svchost.exe)
Victim module: tapisrv.dll (0x733e0000 - 0x73420000)
Function: activeds.dll!<unknown>
Hook address: 0x76e1ef81
Hooking module: adsldpc.dll
Disassembly(0):
0x76e1ef81 8bff MOV EDI, EDI
0x76e1ef83 55 PUSH EBP
0x76e1ef84 8bec MOV EBP, ESP
0x76e1ef86 ff7508 PUSH DWORD [EBP+0x8]
0x76e1ef89 ff157810e176 CALL DWORD [0x76e11078]
0x76e1ef8f f7d8 NEG EAX
0x76e1ef91 1bc0 SBB EAX, EAX
0x76e1ef93 40 INC EAX
0x76e1ef94 5d POP EBP
0x76e1ef95 c20400 RET 0x4
0x76e1ef98 90 NOP
この辺りのプラグインは、仕組みを正確に理解できていないので結果をどう読んでいけばよいのかが難しいです。仕組みというより、参照しているデータがどういった意味を持っていて、何に使われているのかを理解していないことが分からない原因ですね。
ちょっと難しいプラグインは飛ばして、psxviewを実行したいと思います。このプラグインは複数ソースからの情報をベースに隠されたプロセスを検出するというアプローチですね。
Offset(P) Name PID pslist psscan thrdproc pspcid csrss session deskthrd
---------- -------------------- ------ ------ ------ -------- ------ ----- ------- --------
0x02163020 winlogon.exe 660 True True True True True True True
0x02122020 services.exe 704 True True True True True True True
0x0211a650 ctfmon.exe 2020 True True True True True True True
0x01fa71a8 explorer.exe 1672 True True True True True True True
0x0252c020 svchost.exe 1140 True True True True True True True
0x0204d648 cmd.exe 840 True True True True True True True
0x01fc1a78 VMwareUser.exe 2004 True True True True True True True
0x02054da0 svchost.exe 884 True True True True True True True
0x02196220 wscntfy.exe 1260 True True True True True True True
0x021739b0 svchost.exe 1088 True True True True True True True
0x01fa4590 svchost.exe 968 True True True True True True True
0x02361558 MIRAgent.exe 456 True True True True True True True
0x02364da0 lsass.exe 716 True True True True True True False
0x0211c7e8 VMwareTray.exe 1984 True True True True True True True
0x02091da0 svchost.exe 1212 True True True True True True True
0x01fbdda0 iexplore.exe 796 True True True True True True True
0x024cb458 vmacthlp.exe 872 True True True True True True True
0x0239b630 spoolsv.exe 1512 True True True True True True True
0x0251eda0 msiexec.exe 1464 True True True True True True True
0x01f33628 alg.exe 464 True True True True True True True
0x01fc2570 VMwareService.e 1032 True True True True True True True
0x0250aad8 smss.exe 564 True True True True False False False
0x025c8830 System 4 True True True True False False False
0x024ca2c0 csrss.exe 636 True True True True False True True
0x03178220 wscntfy.exe 1260 False True False False False False False
0x0c605020 svchost.exe 1140 False True False False False False False
0x0ad69da0 iexplore.exe 796 False True False False False False False
0x0edd0628 alg.exe 464 False True False False False False False
0x032b3da0 svchost.exe 884 False True False False False False False
0x0eed3628 alg.exe 464 False True False False False False False
0x10b54628 alg.exe 464 False True False False False False False
0x15934830 System 4 False True False False False False False
0x1b217da0 iexplore.exe 796 False True False False False False False
0x04097020 svchost.exe 1140 False True False False False False False
0x035c1590 svchost.exe 968 False True False False False False False
0x07b1ada0 iexplore.exe 796 False True False False False False False
0x0edd59b0 svchost.exe 1088 False True False False False False False
0x12f3dda0 svchost.exe 884 False True False False False False False
*1:modscanとかもRootkit対応で使えそうな気がしますけどないですね。