【データ解析】tsharkコマンドでpcapデータを解析
こんにちは〜インフラエンジニアのtamolabです!皆さんはWireSharkをご利用になったことはございますでしょうか?WireSharkとは、多くのプロトコルに対応した高機能なパケット取得・プロトコル解析ソフトです。
こちらを利用すると、パケットの解析が可能になります。皆さんがカフェで利用しているWifiは誰かがWireSharkでパケット見ているかもしれないので注意してくださいね。とは言いつつも、SSL複合を行うわけではないので、見れる情報には制限はあります!
1. Wiresharkの課題
Wiresharkを利用したことある方なら共感を得れると思いますが、フィルター機能を上手に利用しないととんでもないデータ量になります。小一時間ばかり通信をモニターしていると、100万-1000万行くらいのpcapファイルが生成されます。また、システム管理者やネットワーク管理者で、Linuxにてtcpdumpなどでデータ取得している方は1-10億行くらいのデータになるかと思います。この取得した膨大なデータをWiresharkアプリを起動して、読み込みを行うとアプリが落ちること間違いなしです笑
そこで、膨大なデータを解析するときはtsharkコマンドを利用しましょう。tsharkコマンドとは、WiresharkのCLIバージョンだと思ってください。事実、Wiresharkアプリをダウンロードすると、tsharkパッケージもダウンロードされるので、利用できる状態になります。
CLIなので、並列処理、シェルスクリプトでの記載、cron、grepなどなど、CLI職人にとってはpcapデータをかなり楽に扱えるようになります!
2. 環境設定
本記事ではMacOSで試しています。まずお持ちのMacでtsharkを利用できる状態にします。GUIでもCLIでもどちらからでも可能です。
GUI(Webから)でインストールの場合
下記からインストールできます。
https://www.wireshark.org/download.html
CLI(ターミナル)でインストールの場合
$ brew install wireshark
※まだhomebrew(brewコマンド)が利用できない場合は、下記を参考に利用できるようにしてみてください!
Homebrewのインストール方法
3. 実行
早速実行していきましょう!今回はtest.pcapというデータを見ていきます。
$ tshark -r test.pcap
これでデータの中身が確認できたと思います。
ちなみにデータの並び方と表示されている項目はデフォルト状態ですが、確認したいデータや表示順などを指定することができます。
GUIのWiresharkで列の表示変更を行った場合もtsharkコマンドの結果に影響されますのでご注意ください。
4. pcapファイルのフィルタリング方法
今回は下記の条件をつけてフィルタリングして、再度実行してみましょう。
【条件追加】
(※)通常のWireShark(GUI)で利用できるフィルター
・smb2プロトコルの通信に絞る
smb2.tree && tcp.dstport==445
・ファイル名や利用認証ID名が抜けている余分な通信は除去する
smb2.filename != "" && smb2.acct != ""
【表示設定】
(※)通常のWireShark(GUI)で利用できる列の書き方
・認証ID名
smb2.acct
・フォルダパス(共有パス)
smb2.tree
・操作ファイル名
smb2.filename
・アクセスしている端末名
smb2.host
いざ、実行してみます。
# 実際は改行はないのでご注意ください
$ tshark -r test.pcap
-T fields
-e smb2.acct
-e smb2.tree
-e smb2.filename
-e smb2.host
-Y 'smb2.tree && tcp.dstport==445 && smb2.filename != "" && smb2.acct != ""'
下記のようにパイプやリダイレクトを利用して簡単に扱えるデータに変換ももちろん可能です。
$ tshark -r test.pcap <オプション系> | grep -i test
$ tshark -r test.pcap <オプション系> > test.csv
5. 便利なオプション
6. キーワード
#wireshark #tshark #pcap #データ解析 #homebrew
7. お問い合わせ
本投稿のコメントでも構いませんし、下記からお問い合わせいただいても大丈夫です。
note.tamolab@gmail.com