taisho3日記

WriteUpなど。

MNCTF 2018 Writeup

今年も参加してきました。

8位でした、ミーティー!!

f:id:taisho3_indo8:20180713214728j:plain

エスカレータ上がったところで案内している方は勅使川原君かな?とか、

会場内に「たしかこの方は山崎君。。」とか思いながら着席しました。

凌さんではなく、山崎君のカウントダウンで競技開始でした。

 

今年は去年にもまして調査系というか、インシデント対応に使えそうな問題が多く、

また、勉強できたことも多く、楽しめました。

問題もシリーズ形式で、前の問題から内容が続いていく感じがメインで構成されています。

この路線で続けてほしいです!

 

もう問題サーバが公開されました。

MNCTF2018

 ※本当に危険なものはないですが、実際の攻撃パターンを再現したりする問題ファイルがあったり、Shinobotを仕込まれる問題等あるため、会社内で実施すると、いろいろアラート上がる可能性が高いですのでお気を付けを。

 

■新人奮闘Ⅰ(マルウェア解析)

「AD_OptimizationTool.exe」をダウンロードし、SHA-256を答えるだけ。

何かしらのツールか、下記にアップロードして解答。

f:id:taisho3_indo8:20180713220742p:plain

 

 

■新人奮闘Ⅱ(マルウェア解析)

「AD_OptimizationTool.exe」表層解析レポートを埋めよとのこと。

MD5SHA1、SHA256、ファイルサイズ、コンパイル日付、Import関数)

すべての要素は下記に投げれば得られます。

(途中までStub_PEでやってました。)

 

 

■新人奮闘Ⅲ(マルウェア解析)

「AD_OptimizationTool.exe」を実行すると、発行されるコマンドを答える問題。

stringsした。

f:id:taisho3_indo8:20180713221807p:plain

でも、下記でもとける。

f:id:taisho3_indo8:20180713221913p:plain

 

ここまでの新人奮闘はすべてVirusTotalで解けるという感じ。

 

 

■新人奮闘Ⅳ(フォレンジック

与えられたログから、不正ログインされている時刻を答える。

先ほどの答え「cmd /c net user /add /domain vpnadmin P@ssw0rD1!」を利用する。

vpnadminでログを検索し、その時刻が答え。

 

 

■新人奮闘Ⅴ(その他)

先ほどのログで、送信元IPがある。

2018/07/13 15:01,vpnadmin,27.117.128.1

そこから送信元の国を調べる問題。

下記つかった。

f:id:taisho3_indo8:20180713222714p:plain

答えは韓国。

 

 

■大量不正

ファイルをマルウェアの断片と見立て、似ているファイルを探す問題。

ファジーハッシュというものを利用するらしい。

回答できず。

あとで知ったが、virustotalで「ssdeep」という値がそれらしい。

これの値が近いものを探してもOKだが、数が多いのでコマンドがベスト。

f:id:taisho3_indo8:20180713223422p:plain

 

コマンドだと下記とのこと。

C:\temp\ctf\malwares\malware>ls
sample1.bin sample20.bin sample32.bin sample44.bin sample56.bin sample68.bin sample8.bin sample91.bin
sample10.bin sample21.bin sample33.bin sample45.bin sample57.bin sample69.bin sample80.bin sample92.bin
sample100.bin sample22.bin sample34.bin sample46.bin sample58.bin sample7.bin sample81.bin sample93.bin
sample11.bin sample23.bin sample35.bin sample47.bin sample59.bin sample70.bin sample82.bin sample94.bin
sample12.bin sample24.bin sample36.bin sample48.bin sample6.bin sample71.bin sample83.bin sample95.bin
sample13.bin sample25.bin sample37.bin sample49.bin sample60.bin sample72.bin sample84.bin sample96.bin
sample14.bin sample26.bin sample38.bin sample5.bin sample61.bin sample73.bin sample85.bin sample97.bin
sample15.bin sample27.bin sample39.bin sample50.bin sample62.bin sample74.bin sample86.bin sample98.bin
sample16.bin sample28.bin sample4.bin sample51.bin sample63.bin sample75.bin sample87.bin sample99.bin
sample17.bin sample29.bin sample40.bin sample52.bin sample64.bin sample76.bin sample88.bin
sample18.bin sample3.bin sample41.bin sample53.bin sample65.bin sample77.bin sample89.bin
sample19.bin sample30.bin sample42.bin sample54.bin sample66.bin sample78.bin sample9.bin
sample2.bin sample31.bin sample43.bin sample55.bin sample67.bin sample79.bin sample90.bin

 

C:\temp\ctf\malwares\malware>ssdeep -bcdr *
"sample68.bin","sample1.bin",99

 

 

■種類特定(ネットワーク)

pcapをゲットして、マルウェアの名前を特定する問題。

去年の教訓で最新シグネチャにしたsnortにかけて、普通にでた(最新のシグネチャにて)。

 

[**] [1:42894:3] MALWARE-CNC Win.Trojan.Ursnif variant outbound connection [**]
[Classification: A Network Trojan was Detected] [Priority: 1]
07/04-19:28:54.497629 10.0.0.66:49202 -> 199.16.199.6:80
TCP TTL:255 TOS:0x0 ID:26 IpLen:20 DgmLen:451
***A**** Seq: 0x51B897A5 Ack: 0x19A3 Win: 0x3E65 TcpLen: 20
[Xref => http[:]//virustotal.com/en/file/d137ee63561a123edc51a1d23ce74a18ee094a872b0b9151606934ad12701c05/analysis/]

 

Ursnifを答えとして入力したがNGだったので、別名調べて「Gozi」で正解した。

(Ursnifは答えチェックミスだったそうで、正解のようです。)

 

答え合わせの時間にて、どなたかがvirustotalに投げて出たとのことだったのでやってみた。

f:id:taisho3_indo8:20180713224132p:plain

えー、ナニコレ。。こんな機能あったの?

 

Snortでチェックしてるやん。。

f:id:taisho3_indo8:20180713224223p:plain

virustotal、すごいな。。

 

 

■標的攻撃Ⅰ(マルウェア解析)

エクセルファイルが渡されて、マクロが稼働する実行条件となる「ユーザ名」を答えろとのこと。

 

エクセルがない。。

 

仕方ないのでとりあえずのstringsで、ユーザ名らしき数名をメボシをつけ、入力して正解(答え複数のため、そのどれかでOKだったらしい)。

f:id:taisho3_indo8:20180713225135p:plain

 

 

■標的攻撃Ⅱ(マルウェア解析)

先ほどのエクセルがうまく稼働するとhttpsの通信が発生するとのこと。

 

エクセルがない。。

 

stringsで探す。。

C:\temp\ctf\attachment>strings 製品価格一覧20180711.xls |grep https
https[:]//gist.githubusercontent.com/Sh1n0g1/3a240ce15fe7f26263ddf1877e5acc38/raw/d1d74601e5f4c94c958130accb16add9bb16e33d/cert
https[:]//gist.githubusercontent.com/Sh1n0g1/3a240ce15fe7f26263ddf1877e5acc38/raw/d1d74601e5f4c94c958130accb16add9bb16e33d/cert

あった。。

 

 

■標的攻撃Ⅲ(マルウェア解析)

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

とのこと。。

多分上記でダウンロードされるファイルだよね?と思い、ダウンロードした。

中身は下記。

f:id:taisho3_indo8:20180713225544p:plain

ここで、予習の成果がでた。

下記を読んでいたため、同じ手口の問題だと予測できた。

blog.macnica.net

紹介されていた下記コマンドの要領で二次検体を手に入れた。

certutil -decode %temp%\\HnftK.pHFj %temp%\\ThnjFY.cab

 

そのSHA256で答え。

予習大事。。

 

 

■標的攻撃Ⅳ(ネットワーク)

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

とのこと。

実行させてみたがhttpsなのでFQDNだけでURLが確認できない。

はてさて、で行き詰っていたら、ここまで助けてくれたvirustotalを思い出して、ダメ元で先ほど作成した二次検体をなげてみた。

f:id:taisho3_indo8:20180713230457p:plain

あるやん。。

これを入力し、正解した。

ミーティー!

 

 

■穴埋防御(マルウェア解析)

定義途中のYaraルールを完成させよとの問題。

さっぱりピーマンで解答できず。

Base64をでコードし、PowerShellということは分かったが、

mainの部分がさらにBase64されていた模様。

 

そこをデコードして、IDAなどにいれるとMutex名がわかるとのこと。

(やってみたが、なぜかフリー版のIDAでは、解答例のようにうまくでませんでした。よくわからず。。)

(2018/7/14修正) フリー版のIDAでもできてました。。デコード失敗してただけだったかも。

 

 

■盗難情報(暗号)

下記されたものを復号する問題。

XOR(シングルバイトキー)→ Base64 → ROT13

 

時間なく焦っており、そのままXORブルートから開始し、わけのわからないことになったまま終了しました。。

 

あとから復習で解きました。

a='aRIoHutsQk8ISEHLKS1EEkHIS4RISEFfUEpISEJdLvLYSEHISTMUHypIh9fW/

・・・省略・・・

ZKj86hwX6tdr0RzJmVGx1OHISEIpHSgEh1q1yj=='
dst=open('out.dat','wb')

b=a.decode('rot13').decode('base64')

dst.write(''.join(chr(ord(x)^0x15) for (x) in b))

dst.close()

 

これで、png画像がでて、答えがのってます。

(XORの部分はブルートフォースして探した。)

 

解答コーナーでは、下記が紹介されていた。

自作のpythonブルートフォースするのはやめ、今後こちら有効に利用させてもらいます。。

デコードなどを何段も、いろんな種類でかませれるのが素晴らしいです。。

 

昼はつけめんTETSUにて。。うまし。

f:id:taisho3_indo8:20180713232437j:plain

 

 

身になること多く、有意義な時間でした!

また来年もチャレンジしたいです。

ミーティー!!