2019年2月4日月曜日

Mac で Wireshark 入門

概要

Wireshark は特定のインタフェースに対する通信パケットをキャプチャすることができる GUI ツールです
今回は Mac でのインストールと簡単な使い方を紹介します

環境

  • macOS 10.14.2
  • Wireshark 2.6.6

インストール

Homebrew でインストールできます

  • brew cask install wireshark

起動する

アプリの一覧にあるので選択して起動します
パケットをキャプチャするインタフェースを選択する画面になるので好きなインタフェースを選択します
今回はわかりやすいように vagrant で立ち上げた VM との通信をキャプチャしたいと思うので vboxnet1 を選択しました

起動するとブロードキャスト通信など何かしらが表示されると思います
基本的な見方は大きく 3 つのあり、それぞれ「パケット一覧」「パケット詳細」「パケットのバイト情報」になります

特定のポートの通信を表示

では具体的に使っていきます
今回は Mac (192.168.99.1) -> Vagrant VM (192.168.99.200) の通信を確認します
VM 上では Web アプリ (9292 ポート) が動作しているのでそこに対するパケットを表示してみます
Wireshark 上部の検索バーに tcp.port==9292 と入力しましょう
そして VM に対して curl なりでアクセスしてみます
すると以下のようにパケットの一覧が表示されました

上記はアクセスした結果 VM から返ってきたレスポンス情報のパケットを表示しています
1 度の curl アクセスですが多くの通信をしていることがわかります

パケットの詳細ペインを見るとわかりますがパケットは「Frame」「Ethernet II」「Internet Protocol Version4」「Transmission Control Protocol」など複数の要素で構成されていることがわかります
各要素を選択するとバイト情報の部分反転するのでどの要素がどのバイト部分なのかがわかるようになっています

また VM から Mac にアクセスしてもパケットが流れ入ることを確認できます
以下は VM から Mac に対して ping を送信した際のパケット情報です

その他クエリ

基本的な操作はこれだけです
インタフェースを選択してクエリでフィルタを掛けるだけです
ポート以外にも様々なクエリがあります

  • 特定のホストに対するアクセスだけを表示する
    • ip.dst_host==192.168.99.200
  • ping だけを表示する
    • icmp
  • UDP ポートで検索
    • udp.port==53

また絞り込みのフィールドに適当に文字を入れるとクエリを補完してくれるのでそこから探しても OK です

パケットを検索する

先程はパケットの一覧を絞り込む機能を紹介しました
検索機能を使えば一覧の他にバイト情報に対しても検索することができます
パケットの一覧がある状態で虫眼鏡アイコンを押すか Cmd+f で検索バーを表示できます

そして検索部分に検索したい文字列を入力します
検索する型はすぐ左のプルダウンから選択できます
「String」を選択している場合は文字列マッチで検索します
「Hex value」を選択すれば 16進数で該当する数字があるか検索できます

また検索対象を変更することもできます
検索バーの一番左のプルダウンで選択できます
スクリーンショットは「Packet bytes」を選択しておりこれを選択すると一番下のペイン (パケットのバイト情報) を対象にパケットの検索をすることができます
他にも「Packet List」「Packet details」がありそれぞれのペインに対する検索を行うことができます

tcpdump で保存したキャプチャファイルを Wireshark で表示する

例えば Mac 側で以下のように tcpdump を実行しておきます

  • sudo tcpdump -i vboxnet1 -w vboxnet1.cap

この vboxnet1.cap ファイルを Wireshark で開いてみましょう
一度 Wireshark を最初の画面に戻します
最初の画面に戻すのはキャプチャを停止すれば OK なので左上の赤い資格のボタン「Stop capturing packets」を選択します
そしてメニューバーから「Open」を選択し先程の .cap ファイルを選択しましょう

すると以下のように tcpdump でキャプチャしたパケットを GUI で確認することができます

最後に

Mac 上で Wireshark を使ってみました
Windows や Linux デスクトップで使っている人は同じように使えます
Wireshark 自体は特定のネットワークインタフェースのパケットを監視するためのツールです
そこに豊富な検索機能が可視化機能が付いている感じです

また tcpdump など CUI 環境で取得したパケットをグラフィカルに確認することもできます
つまり Wireshark が動作しているマシンからだと到達できないネットワークでも tcpdump が実行できる環境があれば、その環境のパケット情報をグラフィカルに確認することができるということです

今回は基本的な操作方法をメインに紹介しました
パケットの細かい見方や把握方法までは紹介していないのでパケット解析をガチでやる人は、ちゃんとこのパケットが何を意味しているかなども理解する必要があると思います

参考サイト

0 件のコメント:

コメントを投稿