[CpawCTF] 第七夜: パケット解析 (しません)
Q11.[Network]pcap
以下、問題文
Q11.[Network]pcap 10pt
ネットワークを流れているデータはパケットというデータの塊です。
それを保存したのがpcapファイルです。
pcapファイルを開いて、ネットワークにふれてみましょう!
答案
今回は問題に pcap
ファイルというのが添付されています。
説明によると、この pcap
ファイルはパケット (の一部) を保存したファイルのようです。
この中に Flag
が隠れているそうなので、早速見つけていきましょう。
解析スタート
いつも通り、ダウンロードした場所で、ファイルをダブルクリックすると 「このファイルを開けるアプリケーションが見つかりません」という警告をくらいます。
pcap
ファイルは、ネットワークを流れる「パケット」というデータのカケラ (分割) の一部を保存したファイルであり、
この中身を覗き見るには、それを解釈することのできるツールが必要なようです。
ちなみに、pcap
ファイルを作成するには、
tcpdump
というコマンドを使ったり、
scapy
という python
ライブラリなどを使うとできるみたいです。
このブログの主題は CTF
であり、本題から逸れるのでここでは詳しくは語りませんが、
pcap
ファイルを作ったり、それを解析したりすることで、ネットワークのパケット通信に関して理解が深まると共に、
これを定期的に目的を持って行えば、普段サーバがどのような相手と通信をしていたり、不正な通信を受けていないか
などを知ることができるのではないでしょうか? そんなことないのかな...?
いつかそんなことも行えるようになったらな、と思います。
その日までとにかく知識を少しでもつけなければ...
少々前置きが長くなりましたが、
pcap
ファイルを解析するのに、よく wireshark という (フリー) ツールが使われるようです。
以下、窓の杜より引用。
多くのプロトコルに対応した高機能なパケット取得・プロトコル解析ソフト。 ネットワークに流れるパケット情報をリアルタイムで調査できる。 有線・無線LANや“InfiniBand”などさまざまなインターフェイスに対応している。
本ソフトの画面は縦に3分割されており、画面上段のリストには[Capture]-[Interface]メニューで選択したネットワークインターフェイスを流れるパケットがリアルタイムでリスト表示される。また、プロトコルやポート、IPアドレスなどの条件を組み合わせてフィルタリングしたり、指定したルールに従って色分け表示することも可能。
画面上段のリストからパケットを選択すると、画面中段には選択されたパケットの詳細情報が表示され、画面下段にはパケットデータが16進数でダンプ表示される。ほかにも、ネットワークを流れるパケット情報の統計を表示する機能などが搭載されており、ネットワーク不調の原因調査などに役立つ。
さらに、wireshark
には CUI
で使える tshark
というコマンドがあるらしいです。
僕はなるべく CUI
で済ませたいマンなので、tshark
を選んでいきます。
のちにこの性格がトラブルを引き起こすことを今はまだ知らない...
tshark
のインストール
- in
ubuntu
$ tshark Command 'tshark' not found, but can be installed with: sudo apt install tshark $ sudo apt install tshark
- in
mac
$ brew install wireshark
ちなみに、$ brew install tshark
とすると、Error: No available formula with the name "tshark"
と言われてしまいます。
導入は こちら を参考にさせていただきました。
tshark
の基本的な使い方は こちらを。
use tshark
さて、インストールも済んだことなので、早速 pcap
ファイルの調査といきます。
tshark
の -r option
にファイルを指定すると、中身を覗き込むことができるようです。
$ tshark -r network10.pcap 1 0.000000 169.254.144.80 → 169.254.144.81 IPv4 60 IPv6 hop-by-hop options[Malformed Packet] 2 0.000080 169.254.144.81 → 169.254.144.80 ICMP 82 Destination unreachable (Protocol unreachable)
うーーん?? これは grep
などをしなくても、ここに Flag
がないことがわかります。
何か別の表示が必要なのかと思い、man tshark
を読んで、detail
とかで検索したり、tshark -h
をして、再び検索したりしましたが、
とにかく分量が多くて (あと、英語ですし) 何をすればいいのか、皆目見当つかないという状況になってしまいました。
前回参考にさせていただいた writeup に再び手を伸ばすと、
wireshark
では見れるが、tshark
では「答えが得られなかった」という文が書かれています...
そこで mac
内で wireshark
を探し起動しようとしますが、見つからない。
改めてダウンロードするのも癪なので (tshark
は動いてますし)
このままいけるとこまでゴリ押してやろう、という気持ちになりました。
ウチ、tshark
で Flag
見つけたる!
まずは tshark
で Flag
を見つけた先人がいないか、検索しますが、
writeup
を見れど見れど、 wireshark
しか出てこない。
とにかく手に入った情報です。wireshark
をお使いの方々がどう見えるのかだけ探ります。
ふむ。どうやら、2 Frame 目に Flag
に関する情報があるようです。
ここで、前回 writeup の方が、-V option
をつけているので、
この option をつけてみるも、長い出力が出てきていちいち探す気になれません。
$ tshark -r network10.pcap -V | grep -i 'flag' Flags: 0x0000 Flags: 0x0000 Flags: 0x0000 $ tshark -r network10.pcap -V | grep -i 'cpaw' (該当なし)
上記のように、検索は不発です。
もっと、tshark
の option を知らねばいかん、ということで、tshark option
で日本語の情報を検索 (本当は英語で読めるようにならねば...)
tshark オプションメモ というページを参考にさせていただきます。
オプションにはだいたい、以下の種別があるようです。(これは英語でもなんとなく...)
この中から線がありそうなものを片っ端から試していきます。 あたりをつける基準は「表示を追加」とか書いてある option です。
すると、出力関連の -x option
で無事ヒットしました。
-x
:hex, ACSII
ダンプ表示を追加。
$ tshark -r network10.pcap -x 0000 70 58 12 24 49 0d 58 55 ca 24 2e 08 08 00 45 00 pX.$I.XU.$....E. 0010 00 28 00 01 00 00 40 00 06 37 a9 fe 90 50 a9 fe .(....@..7...P.. 0020 90 51 63 70 61 77 7b 67 6f 63 68 69 5f 75 73 61 .Qcpaw{gochi_usa 0030 5f 6b 61 6d 69 7d 00 00 00 00 00 00 _kami}...... 0000 58 55 ca 24 2e 08 70 58 12 24 49 0d 08 00 45 c0 XU.$..pX.$I...E. 0010 00 44 73 16 00 00 40 01 92 44 a9 fe 90 51 a9 fe .Ds...@..D...Q.. 0020 90 50 03 02 e7 b4 00 00 00 00 45 00 00 28 00 01 .P........E..(.. 0030 00 00 40 00 06 37 a9 fe 90 50 a9 fe 90 51 63 70 ..@..7...P...Qcp 0040 61 77 7b 67 6f 63 68 69 5f 75 73 61 5f 6b 61 6d aw{gochi_usa_kam 0050 69 7d i}
なんだか、GUI で見覚えのある 16進数っぽい表示と、それから右に文章ですね。
-x option
は 窓の杜 さんの文章で言う所の
画面下段にはパケットデータが16進数でダンプ表示される。
という部分でしょうか。
-V option
は 「画面中段には選択されたパケットの詳細情報が表示され」に該当??
最初に見た 169.254.144.80 <-> 169.254.144.81
間の通信は、パケットデータとして、Flag
の内容 (+ アルファ) を送りあっていたのでしょうか?
残念ながら今の私の知識では、そこまではわかりません。 己の力不足をひしひしと感じております。
submit
さて、何はともあれ、cpaw{gochi_usa_kami}
という Flag
が見つかったので、提出します。
此度も一悶着ありましたが、無事 10pt 獲得です。
パケット通信は、一応情報系の研究室に所属する身として、一度きちんと勉強したんですが ( マスタリングTCP/IP とか使って...) 実のところ、試験を乗り越える程度の理解しかできておらず、実用に足りてないし、自分の身にはなっていないので、 これを気にまた勉強し直そうと思います。
CTF
をやっていなかったら、pcap
ファイルとか、パケット解析とか、
そういったことに対して全く無知のままだろうと思うので、
このタイミングでこういった知識に出会うことができて、早速 CTF
に参加したことへのありがたみと言いますか、
良さみみたいなものを感じております。(語彙力)
ということで、今回もこの辺で失礼いたします。
次回は hash! hash! hash!
だそうです。
別解
なんとなく、less
コマンドで「バイナリファイルだろうけど、それでも見る?」
という警告を無視して閲覧すると、Flag
が出てきました。
悲しい。
以上です。