Trend Micro CTF 2017 Online Qualifier writeup
Trend Micro CTF 2017 Online Qualifier writeup
いつもの yharima で参加.
結果は 500pts で 88th でした.微妙.
Windows バイナリを解析する力が足りない事を実感した.厳しい.
自分が解いた2問の writeup を書いておきます.
Reversing 100
記憶が微妙だけど落としてきたファイルを解凍すると, biscuit1 と biscuit2 が出てきたはず.
biscuit2 zip で暗号化されているので,まず biscuit1 を解析していく.
biscuit1 は Windows バイナリなので ollydbg に投げつけて実行してみる.
まず実行すると Please find sweets name staring from m for biscuit2. と出るので,
更にステップ実行しながらレジスタをみていると m から始まる英単語がいくつかでてくる.
適当にでてきたやつを入れていくと macaron で解凍できた.
解凍するとさらに biscuit3, biscuit4, biscuit5 が出て来る.
biscuit3 は jpeg で開いてもビスケットな画像だけ.
思考停止して binwalk してみると,
$ binwalk biscuit3.jpg DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 JPEG image data, JFIF standard 1.01 382 0x17E Copyright string: "Copyright (c) 1998 Hewlett-Packard Company" 14253 0x37AD Zip archive data, at least v1.0 to extract, compressed size: 5, uncompressed size: 5, name: biscuit.txt 14356 0x3814 End of Zip archive
なんか text ファイルが入っているので展開してみると中に, cream と書いてあるファイルがあるので,これがフラグの一部だと思われる.
続いて biscuit4 を見てるみるとただの text ファイルで以下のような内容.
$ cat biscuit4
Please create flag.
hint:
Flag = TMCTF{biscuit3_ biscuit5}
なるほど,ヒントで, biscuit3 は解析が終わっているのであとは biscuit5 を解析する必要がある.
biscuit5 はまた Windows バイナリなので ollydbg にかける.
適当にステップ実行して RET あたりのレジスタをみてみると choux という文字列が入ってるのでこれっぽい.
あとは,ヒントのよおり TMCTF{cream_ choux} とかで投げてみたけど通らない.
試行錯誤しているうちに最終的には TMCTF{choux_cream} で通った記憶.謎かった.
Analysis-Offensive 100
解凍すると Forensic_Encyption が出て来るので file にかけると,
$ file Forensic_Encyption Forensic_Encyption: MS-DOS executable, MZ for MS-DOS
えっ…,ちょっと binwalk してみよう.
$ binwalk Forensic_Encyption DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 13390 0x344E Zip archive data, at least v2.0 to extract, compressed size: 16181, uncompressed size: 20874, name: file_1 29607 0x73A7 Zip archive data, at least v2.0 to extract, compressed size: 378, uncompressed size: 418, name: file_2 30177 0x75E1 End of Zip archive
なんか埋め込まれてるので展開すると file_1 と file_2 が出て来る.
まず file_1 をみてみると. jpeg で開いてみるとなんか smily な画像が出てくるだけ.
binwalk してみても特に何もなさそうなので exiftool にかけると,
$ exiftool file_1 ExifTool Version Number : 10.20 File Name : file_1 (snip) User Comment : VHVyaW5nX01hY2hpbmVfYXV0b21hdG9u (snip)
なんか怪しいユーザコメントがある. base64 っぽいのでデコードすると,
$ exiftool file_1 | grep "User Comment" | awk '{print $4}' | base64 -D
Turing_Machine_automaton
file_2 をみてみると zip で解凍しようとすると,
$ unzip file_2 Archive: file_2 skipping: key.txt unsupported compression method 99
なんか適当に調べていると 7z で解凍できるらしい.
$ 7z e file_2 // パスワードは `Turing_Machine_automaton`
で解凍できた. key.txt がフラグかーと思ってみてみると…
$ cat key.txt
src 192.168.30.211 dst 192.168.30.251
proto esp spi 0xc300fae7 reqid 1 mode transport
replay-window 32
auth hmac(sha1) 0x2f279b853294aad4547d5773e5108de7717f5284
enc cbc(aes) 0x9d1d2cfa9fa8be81f3e735090c7bd272
sel src 192.168.30.211/32 dst 192.168.30.251/32
src 192.168.30.251 dst 192.168.30.211
proto esp spi 0xce66f4fa reqid 1 mode transport
replay-window 32
auth hmac(sha1) 0x3bf9c1a31f707731a762ea45a85e21a2192797a3
enc cbc(aes) 0x886f7e33d21c79ea5bac61e3e17c0422
sel src 192.168.30.251/32 dst 192.168.30.211/32
あれ…,これは IPSec とかの通信を復号するときに使える鍵とかの情報….
でも pcap なんかなかったしどういうことなの…と思って,
元の Forensic_Encyption を strings してみると, file_3 なる文字列がみえる.
これは何か足りていないような気がするけどなんで binwalk で展開できないのかと思い,
バイナリエディタで開いて眺めてみると…,先頭は以下のようになっている.
0000000: 4d5a 0304 1400 0000 0800 f484 af4a bc79 MZ...........J.y
まあ先頭が MZ なんだから MS-DOS executable, MZ for MS-DOS なんだろう….
03 04 14 ってなんか特徴のありそうな16進数のように思えたのでググってみると,
50 4b 03 04 14 が PKZip らしい.あれこれ書き換えられてる…と思って 4d5a => 504b にして binwalk すると,
$ binwalk Forensic_Encyption DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 Zip archive data, at least v2.0 to extract, compressed size: 13354, uncompressed size: 31112, name: file_3 13390 0x344E Zip archive data, at least v2.0 to extract, compressed size: 16181, uncompressed size: 20874, name: file_1 29607 0x73A7 Zip archive data, at least v2.0 to extract, compressed size: 378, uncompressed size: 418, name: file_2 30177 0x75E1 End of Zip archive
file_3 でてきた.そしてこいつを wireshark で開くと開ける!
さっきの key.txt を Preferences => Protocol => ESP から入れて復号して,
192.168.30.211 でフィルタすると HTTP 通信があって index.html がある.
こいつを開くと,
$ cat index.html
<HTML>
<BODY>
M4 Navy
Reflector:C Thin, beta, I, IV, II (T M J F), Plugboard: L-X/A-C/B-Y
TMCTF{APZTQQHYCKDLQZRG}
APZTQQHYCKDLQZRG is encrypted.
</BODY>
</HTML>
まだ暗号化されてるのか…, M4, Naby, Reflector, Plugboard などで検索すると,
どうやらエニグマを使って暗号化されているらしい.
チーム部屋に投げると,エニグマのシミュレータが貼られたのでポチポチそれっぽい設定をする.
最終的には以下のような設定にすると,意味のあるワードになったので投げてみた(しかし設定ミスしていることにあとできづいた).

TMCTF{RISINGSUNANDMOON} がフラグだった.
Analysis-Offensive 200(WIP)
入力は 8文字の数字.これを AABBCCDD と表すと以下の条件を満たす必要がありそう.
- 入力された8桁は素数
- AA と BB は素数
- CC は 平方数
- (AABB ^ (CC * CC)) >> 8 が 0
AABBCCDDValidate Flag:を文字としてみて全部足した結果から 0x120 を引いた結果も素数
これの中でもっとも大きい数字は 43436447 っぽく,これを入れて出力される flag.txt は TMCTF{434364}.
これを入力しても通らずほぼすべての時間を溶かして死亡しました…. :sob: