Tshark で表示フィルタを使用する

WiresharkBeginner
オンラインで実践に進む

はじめに

この実験では、Wireshark のコマンドラインツール tshark でディスプレイフィルタを活用し、効率的なネットワークトラフィック分析を行う方法を学びます。特定の IP アドレスや TCP ポートからのパケットなど、特定のトラフィックパターンを分離するために、パケットキャプチャファイル (capture.pcap) を読み込み、フィルタを適用する練習を行います。

実践的な演習を通して、ファイル読み込みのための -r コマンドとフィルタ適用のための -Y コマンドといった、重要な tshark コマンドを習得します。フィルタ適用前後の結果を比較することで、ネットワークトラブルシューティングスキルを向上させることを重視します。

Tshark のインストールとサンプルファイルの確認

この最初のステップでは、tshark コマンドラインツールがインストールされており、サンプルパケットキャプチャファイルが作業ディレクトリにあることを確認します。これにより、後のネットワーク分析タスクに必要な環境が整います。

  1. まず、tshark のインストールを確認するために、バージョンをチェックします。ターミナルを開き、以下のコマンドを実行します。

    tshark -v

    tshark がインストールされていることを示す、以下の様な出力が表示されるはずです。

    TShark (Wireshark) X.Y.Z (Git vX.Y.Z-gXXXXXXXXXXXX)
    ...

    バージョン番号 (X.Y.Z) は異なる場合がありますが、出力があることで tshark が準備完了であることが確認できます。

  2. 次に、サンプルパケットキャプチャファイルがあるプロジェクトディレクトリに移動します。これは、この実験のデフォルトの作業ディレクトリです。

    cd ~/project
  3. このディレクトリにサンプルパケットキャプチャファイル capture.pcap が存在することを確認します。このファイルは、以降のすべての分析ステップで使用されます。

    ls -l capture.pcap

    以下の様な出力が表示されるはずです。

    -rw-r--r-- 1 labex labex 123456 Jan 1 00:00 capture.pcap

    この出力は、ファイルのパーミッション、所有者、サイズ、変更日時を示しており、ファイルが存在しアクセス可能であることを確認します。

パケットキャプチャファイルの読み込み (-r オプション)

このステップでは、tshark を使ってパケットキャプチャファイルの内容を読み込み、表示する方法を学びます。-r オプションは入力ファイルの指定に必須であり、tshark にライブデータのキャプチャではなく、事前に記録されたネットワークトラフィックを分析させるために使用されます。

  1. ~/project ディレクトリにいることを確認します。このディレクトリに capture.pcap ファイルがあります。

    cd ~/project
  2. 今、tshark を使って capture.pcap ファイルからすべてのパケットを読み込み、表示します。

    tshark -r capture.pcap

    -r フラグは、指定されたファイルから読み込むように tshark に指示します。このコマンドは、各パケットの概要を直接ターミナルに表示します。

  3. 出力は、各パケットの基本情報を列挙した形で表示されます。パケット番号、タイムスタンプ、送信元および宛先 IP アドレス、プロトコル、および簡単な説明などの詳細が表示されます。例えば:

    1   0.000000 10.0.2.15 → 10.0.0.2 TCP 74 80 → 49234 [SYN] Seq=0 Win=64240 Len=0
    2   0.000123 10.0.0.2 → 10.0.2.15 TCP 74 49234 → 80 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0
    ...

    各行は 1 つのネットワークパケットを表し、トラフィックの概要を迅速に把握できます。

  4. capture.pcap には多数のパケットが含まれているため、出力は継続的にスクロールされます。表示を停止し、コマンドプロンプトに戻すには、Ctrl+C キーを押します。このキーボードショートカットは、tshark プロセスを安全に終了します。

ソース IP アドレス (10.0.2.15) でフィルタリング

このステップでは、特定の送信元 IP アドレスからのパケットのみを表示するように、表示フィルタを適用する方法を学びます。tshark-Y オプションを使用すると、Wireshark の強力な表示フィルタ構文を使って、分析対象を関連するトラフィックに絞り込むことができます。

  1. ~/project ディレクトリにいることを確認します。

    cd ~/project
  2. 今、capture.pcap ファイルをフィルタリングして、送信元 IP アドレスが 10.0.2.15 のパケットのみを表示します。フィルタ ip.src==10.0.2.15 はこの条件を指定します。

    tshark -r capture.pcap -Y "ip.src==10.0.2.15"

    -Y フラグは、引用符で囲まれた表示フィルタを適用します。

  3. このコマンドは、フィルタ条件に一致するパケットのみを出力します。表示されるすべてのパケットが送信元 IP アドレスとして 10.0.2.15 を持っていることに気付くでしょう。

    1   0.000000 10.0.2.15 → 10.0.0.2 TCP 74 80 → 49234 [SYN] Seq=0 Win=64240 Len=0
    3   0.000456 10.0.2.15 → 10.0.0.2 TCP 66 80 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0
    ...

    この出力を、前のステップのフィルタリングされていない結果と比較してください。これにより、大きなキャプチャファイル内の特定のトラフィックパターンに焦点を当てるために、表示フィルタがどのように役立つかがわかります。

  4. フィルタリングされた出力の確認が終わったら、Ctrl+C を押して表示を停止し、コマンドプロンプトに戻ります。

複数のフィルタ条件を組み合わせる (ip.src=10.0.2.15 かつ tcp.port=80)

このステップでは、論理演算子を使用して複数の表示フィルタを組み合わせることで、ネットワークトラフィック分析をより精緻にする方法を学びます。and 演算子を使用することで、表示されるパケットは定義されたすべての条件を満たす必要があることを指定できます。これにより、非常にターゲットを絞った調査が可能になります。

  1. ~/project ディレクトリにいることを確認します。

    cd ~/project
  2. 今、同時に 2 つの条件を満たすパケットをフィルタリングしてみましょう。IP アドレス 10.0.2.15 から送信され、かつ TCP ポート 80 (HTTP トラフィックによく使用されます) を使用するパケットです。and 演算子は、パケットが出力に含まれるためには、両方の条件が真である必要があることを保証します。

    tshark -r capture.pcap -Y "ip.src==10.0.2.15 and tcp.port==80"

    このコマンドは、送信元 IP と TCP ポートの両方の条件に一致するパケットのみを表示します。

  3. 出力は、両方の条件を満たすパケットのみが表示されます。たとえば、指定された IP アドレスからの HTTP 要求や応答が表示される場合があります。

    1   0.000000 10.0.2.15 → 10.0.0.2 TCP 74 80 → 49234 [SYN] Seq=0 Win=64240 Len=0
    5   0.001234 10.0.2.15 → 10.0.0.2 HTTP 145 GET /index.html HTTP/1.1
    ...

    単一フィルタを使用する場合と比較して、この組み合わせたフィルタがより正確な結果を提供する方法に注目してください。このテクニックは、特定の会話やアプリケーショントラフィックを分離するために非常に重要です。

  4. 出力の確認が終わったら、Ctrl+C を押してコマンドプロンプトに戻ります。

詳細なパケット表示 (-P オプション)

この最終ステップでは、tshark-P オプションを使用して、フィルタリングされたパケットの詳細情報を表示する方法を学びます。-P フラグは、パケットのサマリーを表示しながらファイルにパケットを書き込む場合、または他の出力抑制オプションと併用する場合に特に便利です。

  1. ~/project ディレクトリにいることを確認します。

    cd ~/project
  2. まず、ファイルへの書き込み時に -P を使用する場合と使用しない場合の違いを見てみましょう。-P を使用せずにこのコマンドを実行します。

    tshark -r capture.pcap -Y "ip.src==10.0.2.15 and tcp.port==80" -w filtered.pcap

    パケットがファイルに書き込まれているため、画面にパケット情報が表示されません。

  3. 今、-P オプションを使用して同じコマンドを実行します。

    tshark -r capture.pcap -Y "ip.src==10.0.2.15 and tcp.port==80" -w filtered.pcap -P

    -P フラグを使用すると、パケットが同時にファイルに書き込まれる一方で、画面にパケットのサマリーが表示されます。

    1   0.000000 10.0.2.15 → 10.0.0.2 TCP 74 80 → 49234 [SYN] Seq=0 Win=64240 Len=0
    2   0.000123 10.0.2.15 → 10.0.0.2 TCP 74 80 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0
    ...
  4. もう 1 つの便利なシナリオは、-P-q (クワイエットモード) と組み合わせる場合です。まず、-q だけを試してみましょう。

    tshark -r capture.pcap -Y "ip.src==10.0.2.15 and tcp.port==80" -q

    これはすべてのパケット出力を抑制し、最後にカウントのみを表示します。

  5. 今、-q-P と組み合わせます。

    tshark -r capture.pcap -Y "ip.src==10.0.2.15 and tcp.port==80" -q -P

    -P オプションは -q の抑制を上書きし、再びパケットのサマリーを表示します。

-P オプションは、フィルタリングされた結果を同時にファイルに保存しながらパケット処理を監視する必要がある場合、または -q のような他のオプションによる出力抑制を上書きしたい場合に最も価値があります。

まとめ

この実験では、ネットワークトラフィック分析のために Wireshark のコマンドラインツール tshark を使用して、表示フィルタを効果的に適用する方法を学びました。-r で PCAP ファイルを読み込み、-Y で IP アドレスとポートを基にフィルタリングし、論理演算子 (例:and) を使って条件を組み合わせる練習を行いました。

これらの演習を通して、特定のトラフィックパターンを特定し、-P で結果を確認する方法を学びました。これにより、ターゲットを絞ったパケット分析に必要なスキルを習得し、関連するネットワークデータに焦点を当てることで、効率的なトラブルシューティングが可能になります。