@port139 Blog

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

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

RedLineを中心にRootkit対応の手順を確認してきましたが、Volatilityにはマルウェアの調査を意図したプラグインが各種提供されています。

マルウェア関連のプラグインは、Wiki に整理されていますので、そちらを参照してみてください。*1

CommandReferenceMal23 - volatility - A reference for malware commands - An advanced memory forensics framework - Google Project Hosting

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対応で使えそうな気がしますけどないですね。