Wiresharkでパケットを解析する際のメモ

Wiresharkでパケットを解析する際のメモ。

自分が度々使用するWiresharkの機能を思いつくままにまとめてみた。

Wireshark バージョン 2.6.0で検証。

  • Wiresharkのレイアウトを変更する
  • 時刻の表示形式を変更する
  • Protocol Hierarchyでキャプチャされた通信プロトコルの内訳を確認する
  • ConversationsでTCP・UDPのコネクション数を確認する
  • frame contains で目当てのパケットを手っ取り早く見つける
  • Follow HTTP Streamでgzip圧縮されたコンテンツを展開する
  • Base64エンコードされたデータをデコードする
  • キャプチャされたファイルやオブジェクトを抽出する
  • カスタムのカラムを適用する
  • WiresharkにTLS・SSLの秘密鍵をインポートする
  • Wiresharkのレイアウトを変更する

    Preferences -> Appearance -> Layout でWiresharkのレイアウトを変更する。

    自分が好んで使うのは左から2番目のレイアウト。

    時刻の表示形式を変更する

    View -> Time Display Formatから時刻の表示形式を変更する。自分が好んで使うのはUTC Date and Time of Day形式。

    Protocol Hierarchyでキャプチャされた通信プロトコルの内訳を確認する

    まずは何もフィルターをかけず、Statistics -> Protocol Hierarchyからキャプチャされた通信プロトコルの内訳を確認する。

    ConversationsでTCP・UDPのコネクション数を確認する

    Statistics -> ConversationsからTCP・UDPのコネクション数を確認する。

    frame contains で目当てのパケットを手っ取り早く見つける

    frame contains "keyword" フィルターで目当てのパケットを手っ取り早く見つける。

    以下はframe containsフィルターを用いてfugaという文字列を含むパケットを検索している。

    frame contains "fuga"

    検索対象のパケットがバイナリ・プロトコルの場合 (DNS など)、この方法では引っかからないことがある。その場合は文字列ではなくバイト・パターンで検索する。

    以下はframe containsフィルターを用いて0x66 0x75 0x67 0x61というバイト・パターンを含むパケットを検索している。(0x66 0x75 0x67 0x61 をHEXデコードするとfugaとなる)

    frame contains 66:75:67:61

    Follow HTTP Streamでgzip圧縮されたコンテンツを展開する

    Webサーバーからの応答データがgzip圧縮されていた場合、Follow TCP Streamではコンテンツを確認できないことがある。

    以下はFollow -> TCP Stream でサーバーの応答データを確認した際の様子。データがgzip圧縮されているため、コンテンツを確認できない。

    このような場合はFollow -> HTTP Streamを選択する。

    gzip圧縮が展開されて、サーバーからHTMLページが応答されている様子が確認できた。

    Base64エンコードされたデータをデコードする

    パケットにBase64エンコードされたデータが含まれていた場合、Wiresharkでデコードできる。

    以下はHTTPのPOSTリクエストに乗せられたaGVsbG8gd29ybGQKというBase64データをデコードする際の様子。

    Base64データを含むフィールドを選択して右クリックし、Show Packet Bytesを選択。

    ウィンドウ下部のDecode asからBase64を選択すると、データがBase64デコードされる。

    Base64の他にCompressed、Quoted-Printable、ROT13というオプションがある。

    キャプチャされたファイルやオブジェクトを抽出する

    キャプチャされたファイルやオブジェクトを抽出するには、いくつか方法がある。

    Export Objectsでオブジェクトを抽出する

    File -> Export Objectsでオブジェクトを抽出する。

    以下はHTTPでやり取りされたオブジェクトを抽出している。

    任意のパケットを抽出する

    任意のパケットを選択して右クリックし、Export Packet Bytesでパケットを抽出する。

    以下はWebサーバーから応答されたPNGファイルを抽出する。

    パケットのプレビューを取得する

    任意のパケットを選択して右クリックし、Show Packet Bytesでパケットのプレビューを取得できる。

    以下はWebサーバーから応答されたPNGファイルのプレビューを確認している。

    なお、上記の方法でオブジェクトを抽出できない場合は手動で抽出することも出来る。

    WiresharkのExport ObjectでHTTPオブジェクトが上手く抽出できなかったときの対処法

    カスタムのカラムを適用する

    パケットからカラムとして追加したいフィールドを選択して右クリックし、Apply as Columnを選択。

    以下はユーザーエージェント・ヘッダーをカラムとして追加する際の様子。

    ユーザーエージェントがカラムに追加された。

    追加したカラムを削除したい場合は、対象のカラムにカーソルを合わせ右クリックし、Remove This Columnを選択する。

    WiresharkにTLS・SSLの秘密鍵をインポートする

    こちらの記事の後半に手順を記載している。

    以上、自分が度々使用するWiresharkの機能を思いつくままにまとめてみた。

    ただし、自分は大量のパケットを解析する際はWiresharkよりもtsharkを重宝している。

    Leave a Reply

    Your email address will not be published. Required fields are marked *