こんとろーるしーこんとろーるぶい

週末にカチャカチャッターン!したことを貼り付けていくブログ

MNCTF2018 writeup

2018/7/12開催のMNCTF2018に参加。
最速のwriteup投稿を目指して、ちょっと荒いが投稿。

最後の2問は解けなかった、残念。

新人奮闘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」の解析レポートを書こうとしています。ここにアクセスして、手伝ってあげてください。※すべての項目を入力すると正解が得られます。

f:id:graneed:20180712133620p:plain

解答

ハッシュとファイルサイズはサッと取得する。

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で確認する。

f:id:graneed:20180712133638p:plain f:id:graneed:20180712133647p:plain

取得した情報を入力すると答えが表示された。

f:id:graneed:20180712134051p:plain

新人奮闘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形式)

解答

直前の問題で得たvpnadmingrepする。

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で見てみる。

f:id:graneed:20180712134306p:plain

/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を開く。 f:id:graneed:20180712134324p:plain

Alt+F11キーでマクロを確認する。 f:id:graneed:20180712134358p:plain

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を実行すると、コマンドプロンプトが起動して何らかのコマンドを実行してすぐに閉じられた。
力技だが、閉じられる前にキャプチャを取得。

f:id:graneed:20180712134545p:plain

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にかけたが、見つからなかった。