Trend Micro CTF 2017 – MISC 100 writeup
2017/06/23~24 の日程で、Trend Micro CTF 2017 に参加しました。
時間の都合もあり一部しか参加できませんでしたが、解けた1問の writeup を残しておきます。
MISC 100
与えられた .pcap ファイルを解析する問題です。
とりあえず覗く
なぜか Wireshark で開けないため、とりあえず strings
コマンドで覗きます。
最後のあたりに FTP 通信が見えるので抜き出してみます。keylog.txt
とやらを転送していますね。
220 Welcome to blah FTP service.
4c9@
USER user1
331 Please specify the password.
7c:@
PASS P@ssw0rd
230 Login successful.
Bc<@
PORT 192,168,2,10,250,19
200 PORT command successful. Consider using PASV.
9c=@
STOR keylog.txt
<c>@
150 Ok to send data.
CLIENT_RANDOM 9563c57725522ab0cebb420f2ff549cdcc214d05a2b7aa5601f1935bcd1ac7c3 c5e10df5dbd09bd97b5ea6f1b291d8cac7066178d6805cf371e12ea1095131d1e6096132d7d0e072c78005f6d1b7fe5b
CLIENT_RANDOM f51ac603ddd9c6d8146cd03028f129365e32a928a08629892be4c26a454634bb 0a9dea018920113ec333446e1a185fd072444a1db9d7a8a9b9b21f2472f39db3f92929a25e3d634d58259537a3b47d60
CLIENT_RANDOM 3e401f34cc591c8a35aeedaddf181f7c458a84e058392735d74679eb0393431a 89d66ea9f10d711b6ff8c54c86474096252b8e8173aa271d8441b38c720d9d4a5b569b14cb1d898df16473ebfa23a1d2
CLIENT_RANDOM 0e2d5ecede1cf0f7d1d75329e3e386e160d99ac89e0ec09187651096d79ba35a afe74535c230c9d7e5f08ace8ce02d8200b8078854e41c30703f7da4ab7bd405788956805e9403996aa9412e2a26d545
CLIENT_RANDOM 89e8225f13ed1b39406f25c3f634f0ec91da0be693b7dcb9044efbbf2fe9363e 60b8b92fd58faabbfe00bec7fbf1c39db21030ff3c215c079176be6bcfe167df4114f1950790aaf432312a1397be2cb6
CLIENT_RANDOM 55d1989b2b9005b72599552ff352c4eef03bdb7153aaddd9942d69a19441fdaf 07cc14d902872bbdbdf5d05463a918c585604d373d7524ff405c396a2d4adafffd82b6136de4b7204d33fd9f2ff8f113
CLIENT_RANDOM 3cd78f4befe06bdb4c5559930817c8056aa14fe0c6a67d806ea0cc34c317fa51 ac7be48df12853bae2896042829a2011225e56ccdb63a05520b574b6d9f4aedd3f6c8377d47130e995f16a588dad5858
CLIENT_RANDOM cfaf0c18297c00ba7541ae55012df1fe825727a32ab94e38e1aeb985f9cf3ce5 3f81b68f0b9df5b719a54bb364505cb29209ae7a30d0525bb5a873e375bdbc9ac77ff24aa21def886d61f7cdcc0b06d5
CLIENT_RANDOM a77cdcf8084d073ec7059933e454408e25c6a01c8dbb888e9a3a862b609d8503 b5e7230fc735a87666fd2aee430917fd97bcf5f961b4099b979453b51176c0496629fe5af17da7f52204953782c90fdb
CLIENT_RANDOM d2d06ea94000a9204ea9e2d8272e77e4758958caaff0e9b4bfa7dbe4228d9251 bb716b4ff6de9730d0cd85446f3b5682b9055a54ac071279326ad2739083f54f0d13e689b47fcbb88a0dddb9ddd44175
CLIENT_RANDOM 4955c52a45946483854a4f333493870baa838a5c54c7112252a2828931393cd3 45aef6edb24a058b613559847db56db375b2f4286f9633f26735799ac2e8b0679853e72c1ec4188908bfa9b021c829cd
CLIENT_RANDOM 2acd97c21e8d33bb349d9612cb5b6220f10e5e4106d9449bf7dc5c933292f59e f70dc2ce8a96da62b9c6c5e2dea8aa776a666908c46a34d71dd297a002ba9e6a55b39e1cc8e845a7e058c779b400f82f
4cA@
4cB@
226 Transfer complete.
(cC@
.cD@
QUIT
221 Goodbye.
CLIENT_RANDOM
って何ぞやと調べてみたところ、HTTPS 通信を復号できる鍵であると判明。
https://www.m00nie.com/2015/05/decrypt-https-ssltls-with-wireshark/
一連の CLIENT_RANDOM
部分だけ抜き出して、 keylog.txt
の名前で保存しておきます。
Wireshark で開く
バイナリで見ると先頭が a1 b2 c3 d4
となっているはずなのに、d4 c3 b2 a1
とマジックナンバーが逆になっている。(チームメンバが気づいてくれました)
手動で書き換えてみると、無事 Wireshark で開けるように。
HTTP2 な通信ですね。Edit → Preferences
で設定画面を開き、 Protocols → SSL → (Pre)-Master-Secret log filename
に、先ほど保存しておいた keylog.txt
を読み込ませて復号します。
データを抽出
HTTP2 の DATA を 適当に 選んで Follow → SSL Stream
で開いてみます。(いい目星の付け方があれば知りたい)
Show and save data as
を Raw
にしてファイル保存します。(仮に data.bin
とする)
抽出したデータを確認
binwalk
コマンドで調べてみると、以下のファイルが含まれていました。
$ binwalk -e data.bin
DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------
324 0x144 LZMA compressed data, properties: 0x01, dictionary size: 16777216 bytes, uncompressed size: 559903 bytes
329 0x149 gzip compressed data, from Unix, NULL date: Thu Jan 1 09:00:00 1970
3016 0xBC8 TIFF image data, big-endian
47301 0xB8C5 TIFF image data, big-endian
91520 0x16580 gzip compressed data, from Unix, NULL date: Thu Jan 1 09:00:00 1970
102770 0x19172 gzip compressed data, from Unix, NULL date: Thu Jan 1 09:00:00 1970
gzip の中身が謎ですね。file
コマンドを叩いたり、直接開いて確認した結果、2つの HTML と、1つの CSS であることが分かりました。
HTML を確認
ブラウザで開いてみると、最後に怪しげな画像が2つ並んだページが表示されました。
HTML ソースを確認すると
<samp>HINT: visual cryptgraphy</samp>
の記載があるため、Visual Cryptgraphy
でググると Wikipedia がヒット。
Visual cryptography – Wikipedia
なるほど、上手いこと重ねると答えが出そうですね。
画像データを取り出す
該当部分の CSS を見ると、BASE64 でデータが埋め込まれていたので、そこだけを抜き出してデコードし、画像ファイルに。
.sp {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSU(略)ErkJggg==);
background-repeat: no-repeat;
display: block;
}
Base64 Online – base64 decode and encode
画像ファイルの高さが 106px
であったことから、上下半分の 53px
ずつに分割しました。
よく見ると、CSS にも以下の記載があるので間違いなさそうです。
.sp-0 {
width: 440px;
height: 53px;
background-position: 0 0;
}
.sp-1 {
width: 440px;
height: 53px;
background-position: 0 -53px;
}
画像ファイルを重ねる
どうやって重ねようかと考えていたところ、チームメンバが SiriusComp というソフトを見つけてくれました。
JPG と TIFF にしか対応していないようなので、Convert PNG to TIFF あたりを使用して PNG から TIFF に変換します。
上下 53px ずつに分割したファイルを重ねてみます。
TMCTF{CanYouSeeThis?}
色々と遠回りをした気もしますが、無事にフラグゲットです。
ディスカッション
コメント一覧
まだ、コメントがありません
フォローする
カテゴリー
最近の投稿
ブログについて