【CyberDefenders】MalDoc101【Walkthrough】

# 初めに
どうも、クソ雑魚のなんちゃてエンジニアです。
本記事は ___[CyberDefenders](https://cyberdefenders.org/)___ （以下リンク参考）の「___MalDoc101___」にチャレンジした際のWalkthroughになります

https://cyberdefenders.org/blueteam-ctf-challenges/51

※本チャレンジについてはRed側のペネトレというよりはBlue側の分析力を問われるものになります。

# Multiple streams contain macros in this document. Provide the number of highest one.
とりあえずファイルがなんなのか確認します。
```bash
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`で見るか。
```bash
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`コマンドで確認してみる。サマリは以下だ。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/3b4e06a1-7846-8b15-65c5-92bae95ffe61.png)
`AutoExec`の欄を確認すればいい。

# What malware family was this maldoc attempting to drop?
このWordファイルのハッシュをまず取る。
![3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/43e1d05a-188e-92b5-c33e-252d49abbe5a.png)
VTに投げ込んでみる。
![3-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/9d1e6472-2bce-9093-680f-687d274bce5e.png)
family labelsに出てるな。

# What stream is responsible for the storage of the base64-encoded string?
`olevba`コマンドの出力でBase64してるオブジェクトが確認できている。
![4-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/3199cc6e-1c7b-80f7-fc26-3e92a53dbb68.png)
このstreamをたどればいいので再度`oledump`したときの出力を確認する。
そうすれば34なのが分かると思う。
![4-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/05a46bc8-689b-c145-05e1-7e575e9eea6d.png)
あたりだ。

# This document contains a user-form. Provide the name?
以下を確認すればどういったものを探ればいいかが見えてくる。
Formは`.frm`らしい。

https://answers.microsoft.com/en-us/msoffice/forum/all/introduction-to-the-office-macro-editor-part-2/ab747f7e-3c40-48cc-b28d-db5221701535

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/129e3f2c-c41e-b30d-0952-66508c291a58.png)
見つけた。

# This document contains an obfuscated base64 encoded string; what value is used to pad (or obfuscate) this string?
34のオブジェクトから先ほどのBase64のコードを引っ張ってくる。
また、コードを眺めていると、replaceが多用されていることが分かる。
Replaceするpythonコードを以下のように作成し、回してみた。
![6-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/2e8e3d8f-613d-6ed7-ba0e-3a79461bed8b.png)
あ、この文字列での置換で大丈夫そうですね。

# 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でエンコードされた奴をデコードする。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2036848/d040283c-9ebf-9e8d-c3c2-84cbd5b42186.png)

見えました。

# Multiple domains were contacted to download a trojan. Provide first FQDN as per the provided hint.
上記デコードを確認すればいいですね。

# 最後に
Emotetを題材にした懐かしい感じのMaliciousなWordの解析でした。
最近見てませんね、このFamily。出てきても困りますけど。

※`olevba`のコマンドは天才ですね。いい練習になりました。