Tshark での二段階解析の利用

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

はじめに

この実験では、Wireshark のコマンドラインツールである tshark を使用して 2 パス解析を行い、PCAP ファイルからネットワークトラフィックを解析する方法を学びます。表示フィルターを使用して TCP 確認応答パケットを調べる際に、ファイル読み取り用の -r、2 パスモード用の -2、詳細出力用の -V などの重要なオプションの使用方法を練習します。

演習では、ファイルの検証、2 パス解析によるプロトコルの詳細解析の強化、ネットワークトラフィックパターンの解釈など、基本的な tshark 操作から高度な操作までを案内します。これらの実践的なスキルは、tshark の強力な機能を使用して、より正確かつ効率的なネットワーク解析を行うのに役立ちます。

-r capture.pcap でファイルを開く

このステップでは、Wireshark のコマンドラインツール tshark を使用してパケットキャプチャファイルを開き、調べる方法を学びます。この基本的なスキルは、より高度な解析手法に移行する前に、事前に記録されたネットワークトラフィックを解析するために不可欠です。

-r オプションは、tshark で最も頻繁に使用されるパラメータの 1 つです。「read(読み取り)」を意味し、tshark がライブのネットワークトラフィックをキャプチャするのではなく、ファイルからパケットを処理することを指定します。ここでは、記録されたネットワーク通信データを含む capture.pcap という名前のサンプルファイルを使用します。

始める前に、扱う対象について理解しましょう。

  • .pcap ファイルは、キャプチャされたネットワークパケットを保存するための標準フォーマットです。
  • このファイルには、解析する生のネットワークトラフィックデータが含まれています。
  • 保存されたキャプチャファイルを使用することで、ライブトラフィックを必要とせずにネットワークの動作を調査することができます。

以下の手順に注意深く従ってください。

  1. まず、キャプチャファイルが含まれるディレクトリに移動します。
cd ~/project
  1. キャプチャファイルが存在することを確認し、そのプロパティをチェックします。
ls -l capture.pcap

次のような出力が表示されるはずです。

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

これにより、ファイルが存在することが確認され、そのサイズとパーミッションが表示されます。

  1. では、キャプチャファイルの内容を開いて表示しましょう。
tshark -r capture.pcap

このコマンドは、ファイルを読み取り、キャプチャされた各パケットの概要をターミナルに表示します。各行は 1 つのネットワークパケットを表し、タイムスタンプ、送信元/宛先アドレス、プロトコルなどの基本情報が表示されます。

初心者向け:パケット解析を始める際には、ライブトラフィックを扱うよりも、保存されたキャプチャファイルを扱う方が簡単なことが多いです。-r オプションにより、この機能を利用することができます。次のステップでは、このトラフィックの特定の側面をフィルタリングして解析する方法を学びます。

-2 で 2 パス解析を有効にする

このステップでは、-2 オプションを追加することで、Wireshark の tshark を 2 パス解析モードで使用する方法を探ります。この強力な機能により、tshark はキャプチャファイルを 2 回処理し、プロトコル解析の精度と表示フィルターの結果を大幅に向上させます。

パケット解析の初心者の方へ:通常、tshark はパケットを 1 回だけ順番に読み取ります。2 パスモードでは、以下のように動作が変わります。

  1. 1 回目のパス:ファイル全体を素早くスキャンし、プロトコルの関係性と依存関係を構築します。
  2. 2 回目のパス:1 回目のパスで得た完全なコンテキストを持って、各パケットを注意深く解析します。

以下のような場合に 2 パスモードを使用すると良いでしょう。

  • 後のパケットが前のパケットを説明する複雑なプロトコルを扱うとき
  • 完全なパケットコンテキストが必要な高度な表示フィルターを適用するとき
  • 正確なプロトコル統計と概要を生成するとき

サンプルのキャプチャファイルを使って練習しましょう。

  1. まず、プロジェクトディレクトリに移動します(前のステップから続けている場合)。
cd ~/project
  1. 次に、2 パス解析を有効にして tshark を実行します。
tshark -2 -r capture.pcap

動作の理解:-2 フラグにより、二重スキャンプロセスが起動します。1 回目のパスでは、tshark は TCP シーケンス番号やセッション状態などの重要なプロトコル詳細を記録します。2 回目のパスでは、この情報を使用して会話を適切に再構築し、フィルターを正確に適用します。これは、確認応答がデータパケットの解釈に影響を与える TCP などのプロトコルに特に有効です。

-R "tcp.flags.ack==1" でレスポンスをフィルタリングする

このステップでは、Wireshark の強力な表示フィルタリング機能を使って、TCP ACK パケットをフィルタリングする方法を学びます。Tshark の -R オプションを使うと、これらのフィルターを適用してキャプチャされたネットワークトラフィックを解析できます。これは、TCP の確認応答(ACK)のような特定の種類のパケットに焦点を当てたいときに特に便利です。

TCP ACK パケットは、ネットワーク通信において重要な役割を果たします。コンピュータが TCP 接続を通じてデータを受信すると、データの正常な受信を確認するためにこれらの確認応答パケットを返します。これらをフィルタリングすることで、システムがデータの配信を確認する方法を調べることができます。

手順を一歩一歩見ていきましょう。

  1. まず、キャプチャファイルが保存されている作業ディレクトリに移動する必要があります。
cd ~/project
  1. 次に、2 パス解析(-2)オプションを使用して Tshark を実行し、ACK フィルターを適用します。
tshark -2 -r capture.pcap -R "tcp.flags.ack==1"

このコマンドの動作を分解して説明します。

  • -2 は、より正確な結果を得るために 2 パス解析を有効にします。
  • -r capture.pcap は、入力とするキャプチャファイルを指定します。
  • -R "tcp.flags.ack==1" は、ACK パケットに対する表示フィルターを適用します。

理解すべき重要なポイント:

  • -R オプションは、Tshark にフィルター条件に一致するパケットのみを表示するよう指示します。
  • tcp.flags.ack==1 は、TCP ACK フラグが 1(true)に設定されているパケットを正確に一致させます。
  • TCP ACK は通常のプロトコル動作であり、必ずしも問題を示すものではありません。
  • 2 パス解析(-2)は、正確なプロトコル解析とフィルタリングを保証するのに役立ちます。

コマンドを実行すると、ACK フラグが設定された TCP パケットのみを含む出力が表示されます。典型的な行は次のようになります。

1 0.000000 192.168.1.1 → 192.168.1.2 TCP 54 443 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0

これは、パケット番号、タイムスタンプ、送信元/宛先の IP アドレス、ポート番号、およびフィルター対象の [ACK] フラグを含む TCP 固有の情報を示しています。

-V で結果を詳細表示する

このステップでは、Wireshark の -V(詳細表示)オプションを使って、包括的なパケット詳細を表示する方法を学びます。ネットワークトラフィックを解析する際に、パケットの完全な構造を理解することは非常に重要です。-V フラグを使用すると、完全なプロトコル階層とすべてのフィールド値が表示され、前のフィルタリングで得られた TCP ACK パケットを調査する際に特に便利です。

詳細表示出力(-V)には、各パケットの 3 つの重要な側面が明らかになります。

  • 異なるレイヤーがどのように相互にカプセル化されているかを示す完全なプロトコルの分解
  • これらのプロトコル内のすべてのフィールド値で、通常の表示では隠されている技術的な詳細も含まれます
  • ネットワーク通信における実際のプロトコルの積み重ねを反映した明確な階層構造

手順を一歩一歩実行してみましょう。

  1. まず、キャプチャファイルが保存されている作業ディレクトリに移動します。これにより、パケットキャプチャデータにアクセスできます。
cd ~/project
  1. 次に、フィルタリングされた ACK パケットに対して詳細表示出力を持つコマンドを実行します。2 パス解析(-2)と前のフィルター(-R)を組み合わせ、-V を追加していることに注意してください。
tshark -2 -r capture.pcap -R "tcp.flags.ack==1" -V

パケット解析の初心者の方へ:

  • -V オプションは「詳細表示」モードを有効にします。これは、本の目次から本文を読むようなものです。
  • 基本的なパケットの概要を表示するデフォルトの表示とは異なり、詳細表示モードではすべての技術的な詳細が表示されます。
  • 出力は、パケットの構造とまったく同じように、プロトコルレイヤー(イーサネット → IP → TCP など)で情報を整理します。
  • 各プロトコルフィールドの具体的な値が表示され、ネットワーク交換で実際に何が起こっているかを理解するのに役立ちます。

出力で期待される内容は次の通りです(簡略化した例)。

Frame 1: 54 bytes on wire...
Ethernet II, Src: aa:bb:cc:dd:ee:ff...
Internet Protocol Version 4, Src: 192.168.1.1...
Transmission Control Protocol, Src Port: 443...
    [ACK] Seq=1 Ack=1 Win=64240 Len=0
    [TCP Flags: ·······A····]

まとめ

この実験では、Wireshark の tshark コマンドラインツールを使用して 2 パスのパケット解析を行う方法を学びました。このプロセスでは、-r オプションを使用してキャプチャファイル(capture.pcap)からパケットを読み取り、解析前にその場所を確認しました。

また、-2 オプションで有効になる 2 パスモードを調査しました。このモードは、パケットを 2 回スキャンすることでプロトコル解析の精度を向上させます。この手法は、複雑なフィルターや後続のパケットからのコンテキスト情報を必要とするプロトコルに対して特に有用です。