初めに
どうも、クソ雑魚のなんちゃてエンジニアです。
本記事は CyberDefenders (以下リンク参考)の「MalDoc101」にチャレンジした際のWalkthroughになります
※本チャレンジについてはRed側のペネトレというよりはBlue側の分析力を問われるものになります。
Multiple streams contain macros in this document. Provide the number of highest one.
とりあえずファイルがなんなのか確認します。
remnux@remnux:~/Downloads/MalDoc101$ file sample.bin
sample.bin: Composite Document File V2 Document, Little Endian, Os: Windows, Version 10.0, Code page: 1252, Template: Normal.dotm, Revision Number: 1, Name of Creating Application: Microsoft Office Word, Create Time/Date: Thu Jul 23 00:12:00 2020, Last Saved Time/Date: Thu Jul 23 00:12:00 2020, Number of Pages: 1, Number of Words: 3, Number of Characters: 21, Security: 0
remnux@remnux:~/Downloads/MalDoc101$
Office Wordファイルっぽい。
oledump
で見るか。
remnux@remnux:~/Downloads/MalDoc101$ oledump.py sample.bin
1: 114 '\x01CompObj'
2: 4096 '\x05DocumentSummaryInformation'
3: 4096 '\x05SummaryInformation'
4: 7119 '1Table'
5: 101483 'Data'
6: 581 'Macros/PROJECT'
7: 119 'Macros/PROJECTwm'
8: 12997 'Macros/VBA/_VBA_PROJECT'
9: 2112 'Macros/VBA/__SRP_0'
10: 190 'Macros/VBA/__SRP_1'
11: 532 'Macros/VBA/__SRP_2'
12: 156 'Macros/VBA/__SRP_3'
13: M 1367 'Macros/VBA/diakzouxchouz'
14: 908 'Macros/VBA/dir'
15: M 5705 'Macros/VBA/govwiahtoozfaid'
16: m 1187 'Macros/VBA/roubhaol'
17: 97 'Macros/roubhaol/\x01CompObj'
18: 292 'Macros/roubhaol/\x03VBFrame'
19: 510 'Macros/roubhaol/f'
20: 112 'Macros/roubhaol/i05/\x01CompObj'
21: 44 'Macros/roubhaol/i05/f'
22: 0 'Macros/roubhaol/i05/o'
23: 112 'Macros/roubhaol/i07/\x01CompObj'
24: 44 'Macros/roubhaol/i07/f'
25: 0 'Macros/roubhaol/i07/o'
26: 115 'Macros/roubhaol/i09/\x01CompObj'
27: 176 'Macros/roubhaol/i09/f'
28: 110 'Macros/roubhaol/i09/i11/\x01CompObj'
29: 40 'Macros/roubhaol/i09/i11/f'
30: 0 'Macros/roubhaol/i09/i11/o'
31: 110 'Macros/roubhaol/i09/i12/\x01CompObj'
32: 40 'Macros/roubhaol/i09/i12/f'
33: 0 'Macros/roubhaol/i09/i12/o'
34: 15164 'Macros/roubhaol/i09/o'
35: 48 'Macros/roubhaol/i09/x'
36: 444 'Macros/roubhaol/o'
37: 4096 'WordDocument'
remnux@remnux:~/Downloads/MalDoc101$
13,15,16とあるが、一番大きい数字を答える。
What event is used to begin the execution of the macros?
olevba
コマンドで確認してみる。サマリは以下だ。
AutoExec
の欄を確認すればいい。
What malware family was this maldoc attempting to drop?
このWordファイルのハッシュをまず取る。
VTに投げ込んでみる。
family labelsに出てるな。
What stream is responsible for the storage of the base64-encoded string?
olevba
コマンドの出力でBase64してるオブジェクトが確認できている。
このstreamをたどればいいので再度oledump
したときの出力を確認する。
そうすれば34なのが分かると思う。
あたりだ。
This document contains a user-form. Provide the name?
以下を確認すればどういったものを探ればいいかが見えてくる。
Formは.frm
らしい。
This document contains an obfuscated base64 encoded string; what value is used to pad (or obfuscate) this string?
34のオブジェクトから先ほどのBase64のコードを引っ張ってくる。
また、コードを眺めていると、replaceが多用されていることが分かる。
Replaceするpythonコードを以下のように作成し、回してみた。
あ、この文字列での置換で大丈夫そうですね。
What is the program executed by the base64 encoded string?
上記見れば何のコマンドを実行しているかが見えるはず。
What WMI class is used to create the process to launch the trojan?
powershell
で実行しているBase64でエンコードされた奴をデコードする。
見えました。
Multiple domains were contacted to download a trojan. Provide first FQDN as per the provided hint.
上記デコードを確認すればいいですね。
最後に
Emotetを題材にした懐かしい感じのMaliciousなWordの解析でした。
最近見てませんね、このFamily。出てきても困りますけど。
※olevba
のコマンドは天才ですね。いい練習になりました。