これは、2021/8/21~2021/9/4の期間で開催された、setodaNote CTFの Network 分野のwriteupです。全体writeupはこちら
Host (30)
あなたはある通信を保存したファイルを受け取りました。添付されたファイルを解析し、通信先の Web サーバのホスト名を特定してください。
フラグはホスト名をフラグ形式で答えてください。例えばホスト名が host.example.com であった場合、フラグは flag{host.example.com} となります。
pcapファイルが配布されます。
wireshakで開いてみて、GETしている行を見てみるとHostが書いてありました。
もしくはそのままpcapファイルをstrings
コマンドで見ても出た。
$ strings host.pcap | grep Host Host: ctf.setodanote.net
tkys_never_die (50)
うまく爆発を避けれられているといいが。爆発音とともに通信が途切れる間際、後輩からデータが送られてきました。ターゲットが重要なファイルにアクセスしたことを示す証拠だと言い残して。後輩のためにもデータを解析し、重要なファイルの内容を特定してください。
添付されたファイルを解析し、フラグを得てください。
またpcapファイルが渡されます。
strinigs
コマンドでファイルを見てみると、どうやらflag.html
,flag.png
といったデータをやり取りしてるみたいです。
$ strings tkys_never_die.pcap | grep flag GET /flag.html HTTP/1.1 <img src="./flag.png" alt="flag.png" title="The Flag"> GET /flag.png HTTP/1.1 Referer: http://ctf.setodanote.net/flag.html
wiresharkで該当ファルを開き、File > Export Objects > HTTP で抽出してみると、flagが記載されたpngが出てきました。
echo_request (120)
組織内の通信を監視している部署から不審な通信データがあるので解析をしてほしいと依頼がありました。通信自体は許可されたプロトコルが使用されているようですが、、、
添付されたファイルを解析し、フラグを入手してください。
pcapファイルが配布されます。
wiresharkで開いてみると、ICMP
Protocolの通信が使われていて、その行のInfoにEcho (ping) request ...
と書いてあるので、このプロトコルの通信が怪しい。
このプロトコルの通信の中の、L29~ のデータを覗いてみると、66
, 6c
, ... とascii codeの16進表記でfl
となりそうな予感。データをL29~L54(7d)まで抽出してhex -> ascii変換すると、flag{ICMP_Tunneling_T1095}
になりました。
stay_in_touch (150)
あなたはある事件の調査としてある人物の通信を監視しています。どうやら誰かと連絡を取り合っているようです。通信データファイルを解析し、やりとりの内容を明らかにしてください。
添付されたファイルを解析し、フラグを入手してください。
またもやpcapファイルが配布されます。Network問だから基本パケットを解析するのかな。
今回はメールのやりとり、IMAP通信が肝のようです。
が、パケットの海を眺めても何も出てこなかった。要復習。
…というところまでが競技中。ほよたかさんのwriteup見てwiresharkの使い方を一つ覚えてから、IMAP通信の内容をUTF8で読んでいきます。
tcp.stream eq 12
みたいなクエリで通信の中身がstream単位で順を追って読みやすくなるみたい。
主要なメールを抜粋。
アカリ課長補佐 あ、試作機のレポートが 届いておりましたので転送しておきます。 なかなかの性能のようです。 パスワードは別にお送りします。 セトダ
--------------E3A9083942D9027C4375FEE4 Content-Type: application/x-zip-compressed; name="Report-AV-T0097.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Report-AV-T0097.zip" UEsDBBQAAQAAADBq8FK0Nz5zSgAAAD4AAAATAAAAUmVwb3J0LUFWLVQwMDk3LnR4dAzRMzm6 s5vAM3huF0n2GEKFrarxVD3WvzurjKz9sjA7iD6nWis0GBRcIdcyrQkqliocBi2lCUB6J0hR UgHzDVCnVx6LnLS5LenqUEsBAj8AFAABAAAAMGrwUrQ3PnNKAAAAPgAAABMAJAAAAAAAAAAg AAAAAAAAAFJlcG9ydC1BVi1UMDA5Ny50eHQKACAAAAAAAAEAGADNWpx++XnXARJtllL6edcB 0TOVfvl51wFQSwUGAAAAAAEAAQBlAAAAewAAAAAA --------------E3A9083942D9027C4375FEE4--
ここでファイルが送られてきている様子。encodeがbase64とあるのでdecodeしてみます。
$ echo "UEsDBBQAAQAAADBq8FK0Nz5zSgAAAD4AAAATAAAAUmVwb3J0LUFWLVQwMDk3LnR4dAzRMzm6 > s5vAM3huF0n2GEKFrarxVD3WvzurjKz9sjA7iD6nWis0GBRcIdcyrQkqliocBi2lCUB6J0hR > UgHzDVCnVx6LnLS5LenqUEsBAj8AFAABAAAAMGrwUrQ3PnNKAAAAPgAAABMAJAAAAAAAAAAg > AAAAAAAAAFJlcG9ydC1BVi1UMDA5Ny50eHQKACAAAAAAAAEAGADNWpx++XnXARJtllL6edcB > 0TOVfvl51wFQSwUGAAAAAAEAAQBlAAAAewAAAAAA" | base64 -D > report.zip
パスワードを聞かれたので、またIMAP通信の海に戻ってメールを読んでいきます。
アカリ課長補佐 お疲れ様です。 セトダです。 先ほどのファイルのパスワードです。 Yatagarasu-Takama-Kamuyamato2 以上です。 よろしくお願いいたします。
この通りのパスワードを入れるとzipが解凍でき、flagが書かれたテキストが出てきました👍
yes_you_can (150)
精密機械の技術者である古い友人から一通の封筒が送られてきました。中にはあなたに解析してほしいと震えた筆跡で書かれた手紙と1枚の SD カード。SD カードの中には1つのファイルが記録されていました。
添付されたファイルを解析してフラグを入手してください。
dump.log
が配布されます。これは車系のCAN通信
っぽいぞ!
この辺を参考にしながら環境を構築し、dumpファイルから操作を再生すると、何かわかりそう。
$ cat dump.log | canplayer
先程のICSimを動かすためにmakeする必要があるのだけど、Ubuntu 20.04 にはmake
が入ってなかったのでこちらも合わせて参考にしつつ環境構築。
やっと動かせたので動かしてみると、速度メーターがブンブン動くだけでflagっぽいものは見つからない。これは動いた軌跡を追跡したりする必要がある…?
ここで諦めて競技終了。twitterのwriteup呟きを追っかけてたところ「頻度分析」的なワードを目撃。まさか…!
上のシュミレーションでブンブン振り切れていた速度(244
)を取り出してみると3388行。
(1628245600.166569) vcan0 244#000000010D (1628245600.178027) vcan0 244#0000000147 (1628245600.188333) vcan0 244#0000000187 (1628245600.203577) vcan0 244#0000000178 ...(中略)... (1628245604.964372) vcan0 244#0000000146 (1628245604.979622) vcan0 244#000000019D (1628245604.995033) vcan0 244#0000000123 (1628245605.005261) vcan0 244#0000006600 (1628245605.020564) vcan0 244#0000006600 (1628245605.035802) vcan0 244#0000006600 (1628245605.051115) vcan0 244#0000006600 (1628245605.061376) vcan0 244#0000006600 (1628245605.076673) vcan0 244#0000006600 (1628245605.091981) vcan0 244#0000006600 (1628245605.102269) vcan0 244#0000006600 (1628245605.117603) vcan0 244#0000006600 (1628245605.132851) vcan0 244#0000006600 (1628245605.148139) vcan0 244#0000006600 (1628245605.158304) vcan0 244#0000006600 (1628245605.173560) vcan0 244#0000006600 (1628245605.188877) vcan0 244#0000006600 (1628245605.199262) vcan0 244#0000006600 (1628245605.209569) vcan0 244#0000006600 (1628245605.224917) vcan0 244#0000006600 (1628245605.240265) vcan0 244#0000006600 (1628245605.255572) vcan0 244#0000006600 (1628245605.270817) vcan0 244#0000006600 (1628245605.286161) vcan0 244#0000006600 (1628245605.296496) vcan0 244#0000006600 (1628245605.311850) vcan0 244#0000006600 (1628245605.327179) vcan0 244#0000006600 (1628245605.337468) vcan0 244#0000006600 (1628245605.352763) vcan0 244#0000006600 (1628245605.368324) vcan0 244#0000006600 (1628245605.383689) vcan0 244#0000006600 (1628245605.399061) vcan0 244#0000006600 (1628245605.409292) vcan0 244#0000006600 (1628245605.424578) vcan0 244#0000006600 (1628245605.439889) vcan0 244#0000006600 (1628245605.455298) vcan0 244#0000006600 (1628245605.470572) vcan0 244#0000006600 (1628245605.485856) vcan0 244#0000006600 (1628245605.501116) vcan0 244#0000006600 (1628245605.511357) vcan0 244#0000006600 (1628245605.526626) vcan0 244#0000006600 (1628245605.541914) vcan0 244#0000006600 (1628245605.557199) vcan0 244#0000006600 (1628245605.567471) vcan0 244#0000006600 (1628245605.582792) vcan0 244#0000006600 (1628245605.598139) vcan0 244#0000006600 (1628245605.608330) vcan0 244#0000006600 (1628245605.623608) vcan0 244#0000006600 (1628245605.639017) vcan0 244#0000006600 (1628245605.654251) vcan0 244#0000006600 (1628245605.669543) vcan0 244#0000006600 (1628245605.684802) vcan0 244#0000006600 (1628245605.700146) vcan0 244#0000006600 (1628245605.710357) vcan0 244#0000006600 (1628245605.725632) vcan0 244#0000006600 (1628245605.740951) vcan0 244#0000006600 (1628245605.756287) vcan0 244#0000006600 (1628245605.771577) vcan0 244#0000006600 (1628245605.786807) vcan0 244#0000006600 (1628245605.802040) vcan0 244#0000006600 (1628245605.812213) vcan0 244#0000006600 (1628245605.827500) vcan0 244#0000006600 (1628245605.842743) vcan0 244#0000006600 (1628245605.858059) vcan0 244#0000006600 (1628245605.868228) vcan0 244#0000006600 (1628245605.883526) vcan0 244#0000006600 (1628245605.898878) vcan0 244#0000006600 (1628245605.914166) vcan0 244#0000006600 (1628245605.924325) vcan0 244#0000006600 (1628245605.939642) vcan0 244#0000006600 (1628245605.954993) vcan0 244#0000006600 (1628245605.970280) vcan0 244#0000006600 (1628245605.985528) vcan0 244#0000006600 (1628245606.000769) vcan0 244#0000006C00 (1628245606.016107) vcan0 244#0000006C00 (1628245606.026317) vcan0 244#0000006C00 (1628245606.041631) vcan0 244#0000006C00 (1628245606.056878) vcan0 244#0000006C00 (1628245606.072224) vcan0 244#0000006C00 (1628245606.087501) vcan0 244#0000006C00 (1628245606.102802) vcan0 244#0000006C00 (1628245606.118081) vcan0 244#0000006C00 (1628245606.128311) vcan0 244#0000006C00 (1628245606.143582) vcan0 244#0000006C00 (1628245606.158933) vcan0 244#0000006C00 (1628245606.169245) vcan0 244#0000006C00 (1628245606.184620) vcan0 244#0000006C00 (1628245606.199960) vcan0 244#0000006C00 (1628245606.210186) vcan0 244#0000006C00 (1628245606.220392) vcan0 244#0000006C00 (1628245606.235635) vcan0 244#0000006C00 (1628245606.250931) vcan0 244#0000006C00 (1628245606.266217) vcan0 244#0000006C00 (1628245606.281453) vcan0 244#0000006C00 (1628245606.296816) vcan0 244#0000006C00 (1628245606.312049) vcan0 244#0000006C00 (1628245606.322353) vcan0 244#0000006C00 (1628245606.337603) vcan0 244#0000006C00 (1628245606.352847) vcan0 244#0000006C00 (1628245606.368184) vcan0 244#0000006C00 (1628245606.378398) vcan0 244#0000006C00 (1628245606.393770) vcan0 244#0000006C00 (1628245606.409106) vcan0 244#0000006C00 (1628245606.419329) vcan0 244#0000006C00 (1628245606.434557) vcan0 244#0000006C00 (1628245606.449888) vcan0 244#0000006C00 (1628245606.465302) vcan0 244#0000006C00 (1628245606.480634) vcan0 244#0000006C00 (1628245606.495862) vcan0 244#0000006C00 (1628245606.511173) vcan0 244#0000006C00 (1628245606.521442) vcan0 244#0000006C00 (1628245606.536704) vcan0 244#0000006C00 (1628245606.552015) vcan0 244#0000006C00 (1628245606.567302) vcan0 244#0000006C00 (1628245606.582578) vcan0 244#0000006C00 (1628245606.597822) vcan0 244#0000006C00 (1628245606.613126) vcan0 244#0000006C00 (1628245606.623269) vcan0 244#0000006C00 (1628245606.638572) vcan0 244#0000006C00 (1628245606.653817) vcan0 244#0000006C00 (1628245606.669091) vcan0 244#0000006C00 (1628245606.679302) vcan0 244#0000006C00 (1628245606.694639) vcan0 244#0000006C00 (1628245606.709998) vcan0 244#0000006C00 (1628245606.720231) vcan0 244#0000006C00 (1628245606.735480) vcan0 244#0000006C00 (1628245606.750917) vcan0 244#0000006C00 (1628245606.761544) vcan0 244#0000006C00 (1628245606.776790) vcan0 244#0000006C00 (1628245606.792070) vcan0 244#0000006C00 (1628245606.802239) vcan0 244#0000006C00 (1628245606.817570) vcan0 244#0000006C00 (1628245606.832844) vcan0 244#0000006C00 (1628245606.848211) vcan0 244#0000006C00 (1628245606.863658) vcan0 244#0000006C00 (1628245606.878981) vcan0 244#0000006C00 (1628245606.894306) vcan0 244#0000006C00 (1628245606.909646) vcan0 244#0000006C00 (1628245606.924935) vcan0 244#0000006C00 (1628245606.940259) vcan0 244#0000006C00 (1628245606.955596) vcan0 244#0000006C00 (1628245606.970880) vcan0 244#0000006C00 (1628245606.986163) vcan0 244#0000006C00 (1628245606.996366) vcan0 244#0000006C00 (1628245607.011704) vcan0 244#0000006100 (1628245607.027052) vcan0 244#0000006100 (1628245607.042279) vcan0 244#0000006100 (1628245607.057530) vcan0 244#0000006100 (1628245607.072860) vcan0 244#0000006100 (1628245607.088218) vcan0 244#0000006100 (1628245607.103633) vcan0 244#0000006100 (1628245607.118876) vcan0 244#0000006100 (1628245607.134166) vcan0 244#0000006100 (1628245607.144414) vcan0 244#0000006100 (1628245607.159718) vcan0 244#0000006100 ...(中略)... (1628245625.883150) vcan0 244#0000007D00 (1628245625.893383) vcan0 244#0000007D00 (1628245625.908700) vcan0 244#0000007D00 (1628245625.924023) vcan0 244#0000007D00 (1628245625.934219) vcan0 244#0000007D00 (1628245625.949538) vcan0 244#0000007D00 (1628245625.964828) vcan0 244#0000007D00 (1628245625.980268) vcan0 244#0000007D00 (1628245625.995532) vcan0 244#0000007D00 (1628245626.010898) vcan0 244#000000011B (1628245626.026240) vcan0 244#0000000111 (1628245626.041628) vcan0 244#00000001AB
最初の方は1xx
の値がランダムに続いていて、突如生前とした数値が連続で並びだします。最初の方は66,6c,61
、最後は7D
…。これはAsciiCode16進表記でいうところのf,l,a...}
なので、この規則正しい範囲のデータがflagになっているっぽい。
#!/usr/bin/env python3 # -*- coding:utf-8 -*- with open('dump.log') as f: data = f.readlines() flag = "" prev = '00' for line in data: line = line.strip() if line[26:29] == '244' and line[-2:] == '00': key = line[-4:-2] if key != prev: flag += chr(int(key,16)) prev = key print(flag)
実行結果
$ python solve.py flag{can_bus_hacking}
うわー!出たー!ちゃんとデータをもう少し抽出したりして傾向を確かめてみるべきであった。何ならシミュレーションや環境構築全然いらんかった…。
Digdig (200)
組織内の通信を監視している部署からマルウェア感染した端末から他にはない不審な通信が発生していたことが分かり、急ぎ解析してほしいを依頼がありました。どうやら、通信自体は組織内で許可されているプロトコルが使用されていたため外部に通信できた可能性もあり焦っているようです。
添付されたファイルを解析し、フラグを入手してください。
これはNetwork問の他のが出来ていなかったので手つかずのまま終わってしまっていたやつ。pcapファイルが配布されていて、全部で86行しか無い。全部DNS protocol。
ざっと眺めてみると、
15 18.082343 192.168.224.105 192.168.224.20 DNS 99 Standard query 0x000b A 005aa002735f69735f44414d.setodanote.net 19 18.095700 192.168.224.105 192.168.224.20 DNS 99 Standard query 0x000d A 005aa00663655f7472795f53.setodanote.net
こんな感じで、DNS queryの中身が途中からhexっぽい並びになっている。
怪しい箇所を抜き出してみると
005aa002735f69735f44414d.setodanote.net 005aa00663655f7472795f53.setodanote.net 005aa0034d595f464c41477d.setodanote.net 005aa0085f746861747d2066.setodanote.net 005aa00a6c61677b444e535f.setodanote.net 005aa00b5333637572313779.setodanote.net 005aa0076f7272795f666f72.setodanote.net 005aa00420666c6167206973.setodanote.net 005aa0096c61672069732066.setodanote.net 005aa00c5f5431303731217d.setodanote.net 005aa011797d323232323232.setodanote.net 005aa00d20666c6167206973.setodanote.net 005aa00f335f6b33795f3135.setodanote.net 005aa00e20666c61677b3768.setodanote.net 005aa001666c61677b546869.setodanote.net 005aa0105f35336375723137.setodanote.net 005aa000666c616720697320.setodanote.net 005aa00520666c61677b4e69.setodanote.net
ここから冒頭の005aa0
を削ると、ちょうど18行あるところに最初が00
~11
(10進で17)で始まるレコードが完成する。
最初の2桁をindexにして並び替えて、hex to ascii してあげるとflagが出てきました!
#!/usr/bin/env python3 # -*- coding:utf-8 -*- queries = [ '02735f69735f44414d', '0663655f7472795f53', '034d595f464c41477d', '085f746861747d2066', '0a6c61677b444e535f', '0b5333637572313779', '076f7272795f666f72', '0420666c6167206973', '096c61672069732066', '0c5f5431303731217d', '11797d323232323232', '0d20666c6167206973', '0f335f6b33795f3135', '0e20666c61677b3768', '01666c61677b546869', '105f35336375723137', '00666c616720697320', '0520666c61677b4e69'] flag = '' for i in range(17): #print(hex(i), flag) for q in queries: if q[:2] == hex(i)[2:].zfill(2): flag += bytes.fromhex(q[2:]).decode() break print(flag)
実行結果
$ python solve.py flag is flag{This_is_DAMMY_FLAG} flag is flag{Nice_try_Sorry_for_that} flag is flag{DNS_S3cur17y_T1071!} flag is flag{7h3_k3y_15_53cur17
途中のDNSから始まるやつが本物でした!
自力で解けたやん!もったいない!と思うけど、競技中はどの問題が自分に解けるかわからないもんね…。
Logger (250)
夕暮れ時、あなたの携帯が鳴動します。相手の番号は不明。非通知は拒否設定のはずと不思議に思いつつ電話に出ると「お前の秘密を知っている」と低い男の声が聞こえすぐに切れてしまいました。直後、あなたの携帯にファイルが添付された空白のメールが届きます。
添付されたファイルを解析してフラグを入手してください。
またpcapファイルが配布されます。今回は1100行。すべてUSB protocolです。
leftoverの中身が大事そうなので、これが入っている通信だけを抜き出すには usb.capdata
のfliterを適用してあげれば良さそう。
LeftOver capture data
の中身を全部抜き出して眺めてみるとこんな感じ。
...略 0000120000000000 0000121100000000 0000110000000000 0000000000000000 00002c0000000000 0000000000000000 0000090000000000 0000000000000000 0000120000000000 ...略
5,6桁目に数値が現れていることが多いので、ここを抜き出してヒストグラムを取ってみると
{'04': 17, '05': 6, '06': 7, '07': 9, '08': 27, '09': 8, '0a': 5, '0b': 11, '0c': 17, '0e': 2, '0f': 10, '10': 6, '11': 17, '12': 19, '13': 5, '14': 2, '15': 16, '16': 10, '17': 18, '18': 5, '19': 1, '1a': 4, '1b': 1, '1c': 6, '27': 1, '28': 1, '2a': 2, '2c': 37, '2d': 2, '2f': 1, '30': 1, '37': 1}
04~1c, 27~という感じにカテゴライズできそう。
1c(28d) - 4(4d) = 24d
, なので、アルファベットの文字数とそこそこ相関がありそう。ということで4つづらして変換できるものはアルファベットに直してみました。
#!/usr/bin/env python3 # -*- coding:utf-8 -*- import string from pprint import pprint with open('packets.txt', 'r') as f: data = f.readlines() arr = [] for d in data: c = d[4:6] if c != '00': arr.append(c) # histgram dic = {} for a in arr: if a in dic.keys(): dic[a] += 1 else: dic[a] = 1 #pprint(dic) # 4 shifted alphabet cand = '****' + string.ascii_lowercase for a in arr: idx = int(a,16) if idx < len(cand): print(cand[idx], end='') else: print(' ',end='')
実行結果
$ python solve.py one popular bbut unverified explanatin oon for the qwerty arrangement is that it wwas designed to reduce the likelihood of flag qwe keyb ard rty internal clashhing of typebard s by placing commonly ussed combinatiioons of letters farther froom each oher inside the machine
なんとなく…文章になってる気がする…。心の目でなら読めるぞ…。アルファベット以外をそのまま出力してみました。
one*2c*popular*2c*bbut*2c*unverified*2c*explanatin*2a*oon*2c*for*2c*the*2c*qwerty*2c*arrangement*2c*is*2c*that*2c*it*2c*wwas*2c*designed*2c*to*2c*reduce*2c*the*2c*likelihood*2c*of*2c*flag*2f*qwe*2d*keyb*27*ard*2d*rty*30**2c*internal*2c*clashhing*2c*of*2c*typebard*2a*s*2c*by*2c*placing*2c*commonly*2c*ussed*2c*combinatiioons*2c*of*2c*letters*2c*farther*2c*froom*2c*each*2c*oher*2c*inside*2c*the*2c*machine*37**28*
spaceが入りそうな2c
をspaceに、flag形式から2f
を{
,30
を}
、flag中に出てくる27
はleet文字の0
っぽいな…。などなどしてみたけど、いい感じにマッピングしきれず時間終了。なんかdelete的なのとか矢印とか混じってたのかなー?
ほよたかさんのwriteupを拝見。ほう!よくあるマップとやらがあるのか!!!今度ちゃんとハリネズミ本を読んでみよう(日本においいてきてしまった)。
対応表についてはこちらが参考になりそう。
- Universal Serial Bus (USB) - USB Implementers’ Forum
- USB HID Usage ID の Scancode 変換と対応するキー | capyBaral
そもそもLoggerではshiftを押した・押していないの情報を保持していて、大文字や記号なんかは上の力技では情報落ちしてしまっていた。2バイト目が0,2
の情報を持っているっぽい。プログラム組んでみようかと思ったけど、とっても便利なライブラリを見つけたのでこれでやってみた。
$ python UsbKeyboardDataHacker.py ../logger.pcap [+] Found : One<SPACE>popular<SPACE>bbut<SPACE>unverified<SPACE>explanatin<DEL>oon<SPACE>for<SPACE>the<SPACE>QWERTY<SPACE>arrangement<SPACE>is<SPACE>that<SPACE>it<SPACE>wwas<SPACE>designed<SPACE>to<SPACE>reduce<SPACE>the<SPACE>likelihood<SPACE>of<SPACE>flag{QWE_keyb0ard_RTY}<SPACE>internal<SPACE>clashhing<SPACE>of<SPACE>typebard<DEL>s<SPACE>by<SPACE>placing<SPACE>commonly<SPACE>ussed<SPACE>combinatiioons<SPACE>of<SPACE>letters<SPACE>farther<SPACE>froom<SPACE>each<SPACE>oher<SPACE>inside<SPACE>the<SPACE>machine.<RET>
わお。pcapそのまま喰わせて一瞬でflag出た!
このLoggerの読み方とパターンが知れたので、復習してよかった。
tkys_not_enough (250)
せっかく内偵中の後輩から通信データが送られてきたのに。いわく決定的な証拠を掴んだとのことですが、普段とは異なる方法で取得したデータなのか解析ツールにうまく取り込めません。後輩に聞こうにも通信データが送られた直後「やはり君だったか」という聞きなれない男の声を最後に連絡が途絶えてしまっています。あなたは何とかしてこの通信データを解析しなければなりません。
添付されたファイルを解析し、フラグを入手してください。
配布されたpcapファイル、破損しているようでwiresharkで開けない。問題文のとおりだ。
バイナリエディタで見てみると、途中にこんな箇所が。
バイナリエディタでこのFFFF
の部分を一旦削ってみると、少しだけ修復されてwiresharkでも開けるようになった。(が、まだ破損していると言われる)
wiresharkからの情報では不十分っぽかったので、pcapファイルを文字エンコードできる部分だけ抽出してみる。
$ strings tkys_not_enough.pcap > strings.txt
と、ちょっと通信が見えるように。
5個ほど通信がやり取りされているようで、全てtext/html
。本体に時々可読部があったのでつないでみると、
- If you've got a problem with the world, change yourself.
- I'm kidding.
うーん。わからん。何か見方を変えないといけないのかな?
とにかく間に挟まったバイナリ部分を何とかする必要がありそう。
バイナリファイルが挟まってそう、ということでforemost
コマンドで分解を試みるも何も出てこず。ならばbinwalk
で…!
$ binwalk -e tkys_not_enough.pcap DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 535234 0x82AC2 gzip compressed data, from Unix, last modified: 1970-01-01 00:00:00 (null date) 537545 0x833C9 gzip compressed data, from Unix, last modified: 1970-01-01 00:00:00 (null date)
おーなんか出てきた。
抽出したファイルに平分で直接flagが書いてありました👍
$ cat 82AC2 I'm going to practice making origami cranes so that I can fold them for you some day, okay? flag{netw0rk_shell_2000}
とても力技だったので、もうちょっとスマートに解ける方法はないのかな?と、ここでまたほよたかさんのwriteupをカンニング。
いつも解析対象にしているpcap capture file
のフォーマットではないらしく、windowsでコマンドで取得できるetl
というフォーマットのデータらしい。詳細は上記writeupやパケットキャプチャーソフトをインストールせずにパケットキャプチャーする方法参照。
これをpcapに変換するツール
を皆さん使ってpcapにして解いているっぽかったけど、exeファイルを実行する必要があるのでwindows機かそれなりに環境を用意する必要がありそう。しかしフォーマットがちゃんと知れて良かった。writeupありがたい。