lisz-works

プログラミングと興味を貴方に

CUI版Wireshark「tshark」を使う方法

【スポンサーリンク】

ラップトップ

コンソール上で動作するパケットキャプチャ「tshark」を使う方法です!

Wiresharkだとちょっと重たくて使えない環境などでも、コンソール上でサクッと使えるのでいい感じです!

インストール

コンソールから簡単にインストールすることができます。

$ apt install tshark

質問が出たら「y」、「はい」

ルートユーザで使用する

一般ユーザで試したらうまいことネットワークが見つけられなかったので、rootでの実行をオススメします。

$ sudo su

ネットワークインターフェース確認

「tshark -D」でネットワークインターフェースの一覧表示がされます。

# tshark -D
Running as user "root" and group "root". This could be dangerous.
1. enp0s3
2. enp0s8
3. any
4. lo (Loopback)
5. nflog
6. nfqueue
7. usbmon1
8. ciscodump (Cisco remote capture)
9. randpkt (Random packet generator)
10. sshdump (SSH remote capture)
11. udpdump (UDP Listener remote capture)

ここに出てくる名前や番号を使って、パケットキャプチャするものを選択します。

パケットキャプチャの開始

ネットワークインターフェースを選択して、パケットキャプチャを開始します。

# tshark -i <インターフェース名 or インターフェース番号>

インターフェース番号は、-Dで表示したリストの先頭にある番号です。

実行後に通信が発生すると、情報がズラズラと出力され始めます。

# tshark -i enp0s3
Running as user "root" and group "root". This could be dangerous.
Capturing on 'enp0s3'
    1 0.000000000    10.0.2.15 → 117.18.237.29 TCP 54 56910 → 80 [ACK] Seq=1 Ack=1 Win=30732 Len=0
    2 0.000364552 117.18.237.29 → 10.0.2.15    TCP 60 [TCP ACKed unseen segment] 80 → 56910 [ACK] Seq=1 Ack=2 Win=65535 Len=0
    3 0.248829040    10.0.2.15 → 52.36.96.214 TCP 54 56242 → 443 [ACK] Seq=1 Ack=1 Win=65535 Len=0
    4 0.249344122 52.36.96.214 → 10.0.2.15    TCP 60 [TCP ACKed unseen segment] 443 → 56242 [ACK] Seq=1 Ack=2 Win=65535 Len=0

実行時のオプションについては、こちらに表でまとまった素晴らしいものがありました。

n.pentest.ninja

パケットキャプチャの終了

「Ctrl+C」でパケットキャプチャが終了します。

フィルタリング

「-Y」や「-f」をつけて、Wiresharkのフィルタ文字列を入力することで、表示をフィルタリングする事ができます。

複数ページ見たのですが、Yだったりfだったりで、実行しても内容は変わらないように見えたので、どちらが正解かは不明です……

下記は、送信IPが「10.0.2.15」のものに絞ってフィルタしています。

# tshark -i enp0s3 -Y ip.src==10.0.2.15
Running as user "root" and group "root". This could be dangerous.
Capturing on 'enp0s3'
    1 0.000000000    10.0.2.15 → 13.225.176.10 TCP 54 41880 → 443 [ACK] Seq=1 Ack=1 Win=65320 Len=0
    3 0.767378482    10.0.2.15 → 13.32.52.57  TCP 54 60966 → 443 [ACK] Seq=1 Ack=1 Win=65320 Len=0
    5 1.791278658    10.0.2.15 → 118.215.181.232 TCP 54 47702 → 443 [ACK] Seq=1 Ack=1 Win=65320 Len=0
    6 1.791393151    10.0.2.15 → 118.215.181.232 TCP 54 47704 → 443 [ACK] Seq=1 Ack=1 Win=65320 Len=0

フィルタリングを指定して開始後、「パケットキャプチャの開始」と同じような操作を行いましたが、先頭のパケット番号が飛び飛びになっている事がわかりますね。

簡単なフィルタ例

あまりWireshark力がないので、超簡単なレベルのものを……

項目 フィルタ文字列
IPを限定 ip.addr=
送信IP指定 ip.src=
受信IP指定 ip.dst=
tcp TCPプロトコルのパケットのみにフィルタ
udp UDPプロトコルのパケットのみにフィルタ

フィルタについては、Wiresharkと同じなので

「もっとカスタマイズしたフィルタを使いたいぜ!」

という方は、コチラのようなページ

や、「Wireshark フィルタ」などで検索すると、フィルタリングの例が色々出てくると思います!

キャプチャをファイルへ保存

「-w」オプションを使用します。

# tshark -i enp0s3 -w <file>

とはいえ、何やらほぼバイナリなものが出力されたので、いい感じに使えません……

データのHex表示

「-x」オプションを使用すると、パケットをHex表示してくれます。

GUIのWiresharkを使っていると、パケット選択時に下ペインに表示されるようなHex表示を表示してくれます。

# tshark -i 3 -f udp -x
Running as user "root" and group "root". This could be dangerous.
Capturing on 'any'
0000  00 04 00 01 00 06 08 00 27 69 ef 9d 00 00 08 00   ........'i......
0010  45 00 00 42 bf ce 40 00 40 11 4b 24 0a 00 02 0f   E..B..@.@.K$....
0020  c0 a8 63 01 ce 4b 23 2b 00 2e 2f f8 02 00 25 22   ..c..K#+../...%"
0030  0e 00 00 00 00 00 00 01 01 0e 00 00 10 00 00 00   ................
0040  04 00 00 00 0a 0e 00 00 20 00 00 00 04 00 00 00   ........ .......
0050  14 25                                             .%

参考

こちらを参考にしました。ありがとうございました!

knowledge.sakura.ad.jp

blog.torigoya.net

あとがき

CUI版Wireshark「tshark」を使う方法でした!

CUIでも思ったよりいい感じに見れそうなことがわかりました!

Hexダンプして、それを解析とかするにはこっちの方が若干手っ取り早いかなという印象です。

Wiresharkは起動とかに地味に時間かかりますしね。

あとVM上での動作だとWiresharkは結構重たい印象があるので、そのようなケースでもtsharkは有効です!

よければご参考に!