はじめに
この実験では、Wireshark のコマンドラインツール tshark を使用してネットワークパケットキャプチャを分析する方法を学びます。サンプルの PCAP ファイルを扱いながら、キャプチャファイルを読み込む -r、詳細出力を行う -V、パケット数を制限する -c などの重要なコマンドを練習します。
実践的な演習を通じて、パケットヘッダを調べ、IP アドレスやプロトコルなどの重要なネットワーク情報を特定し、さまざまな出力形式を解釈します。この実験では、効果的なネットワークトラフィック分析のために tshark の主要な機能を実際に体験することができます。
-r capture.pcap でファイルを開く
このステップでは、Wireshark の強力なコマンドラインツール tshark を使用して、事前に記録されたネットワークトラフィックを分析する方法を説明します。ネットワーク分析を行う場合、ライブトラフィックをキャプチャするのではなく、以前にキャプチャしたデータを調べる必要がよくあります。-r フラグ("read" の略)を使用すると、分析するパケットキャプチャファイルを指定することで、まさにそれを行うことができます。
始める前に、正しい場所にいることを確認しましょう。ターミナルベースの作業では、ファイルが保存されている正しいディレクトリにいることが重要です。
cd ~/project
LabEx 環境には、Wireshark のコマンドラインバージョンである tshark がプリインストールされています。利用可能であることを確認し、どのバージョンを使用しているかを確認するために(あらゆるツールを使用する際の良い習慣です)、以下を実行します。
tshark --version
詳細なバージョン情報が表示され、tshark が正しくインストールされ、使用できる状態になっていることが確認できます。
このデモンストレーションでは、サンプルネットワークキャプチャファイルを使用します。これはすでに /home/labex/project/capture.pcap にダウンロードされています。
これで、キャプチャされたネットワークトラフィックを調べることができます。キャプチャファイルの内容を読み取って表示する基本的なコマンドは次のとおりです。
tshark -r capture.pcap
このコマンドはファイルを処理し、キャプチャされたすべてのパケットの概要を表示します。出力の各行は 1 つのネットワークパケットを表し、ネットワークアクティビティを理解するのに役立ついくつかの重要な情報が含まれています。
- パケット番号 (Packet number): 各パケットのシーケンシャル識別子
- タイムスタンプ (Timestamp): パケットがキャプチャされた時刻(キャプチャの開始からの相対時間)
- 送信元 IP (Source IP): パケットの送信元
- 宛先 IP (Destination IP): パケットの宛先
- プロトコル (Protocol): 使用されているネットワークプロトコル(TCP、UDP など)
- 長さ (Length): パケットのサイズ(バイト単位)
- 情報 (Info): パケットの目的または内容の簡単な説明
TCP 接続が確立されていることを示す、典型的な出力は次のようになります。
1 0.000000 192.168.1.1 → 192.168.1.2 TCP 66 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
2 0.000123 192.168.1.2 → 192.168.1.1 TCP 66 49234 → 443 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
この最初のビューでは、キャプチャファイルに含まれるネットワーク通信の概要を把握できます。これに基づいて、以降のステップでさらに詳しく見ていきます。
デフォルト出力でパケットの概要を表示する
このステップでは、tshark がデフォルトで表示する基本的なパケット概要を読み、理解する方法を探ります。これはネットワークトラフィックを分析する際の出発点となり、各パケットに関する重要な情報を構造化された形式で示します。
始める前に、キャプチャファイルが保存されている正しい作業ディレクトリにいることを確認しましょう。
cd ~/project
tshark のデフォルト出力は、ネットワークトラフィックを列形式で表示し、各列は通信に関する重要な情報を提供します。
- パケット番号:キャプチャ内の各パケットの連続識別子
- タイムスタンプ:最初のパケットを基準として、パケットがキャプチャされた時間
- 送信元アドレス:パケットの送信元(IP アドレス)
- 宛先アドレス:パケットの宛先(IP アドレス)
- プロトコル:使用されているネットワークプロトコル(TCP、UDP など)
- 長さ:パケットのサイズ(バイト単位)
- 情報:プロトコルに固有の追加詳細
これを実際に見るために、最初の 5 つのパケットを見てみましょう。
tshark -r capture.pcap -c 5
出力例:
1 0.000000 192.168.1.1 → 192.168.1.2 TCP 66 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
2 0.000123 192.168.1.2 → 192.168.1.1 TCP 66 49234 → 443 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0
3 0.000145 192.168.1.1 → 192.168.1.2 TCP 54 443 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0
4 0.000567 192.168.1.1 → 192.168.1.2 TLSv1 583 Client Hello
5 0.000789 192.168.1.2 → 192.168.1.1 TCP 54 49234 → 443 [ACK] Seq=1 Ack=530 Win=65535 Len=0
ネットワークキャプチャで何が起こっているかをより広く理解するために、各プロトコルタイプに属するパケットの数を数えることができます。これにより、ネットワークトラフィックで最もアクティブなプロトコルを特定するのに役立ちます。
tshark -r capture.pcap -qz io,phs
このコマンドは、プロトコル階層表を生成し、キャプチャファイル内のさまざまなプロトコルの分布を示します。これは、複雑なネットワークトラフィックパターンを分析する際に特に有用です。
-V で詳細フィールドを表示する
このステップでは、Wireshark の -V(verbose、詳細表示)フラグを使用して、包括的なパケット詳細を表示する方法を探ります。これは、ネットワークパケット内のすべてのプロトコル層とそのフィールドを調べる必要がある場合に特に有用です。
始める前に、パケットキャプチャファイルが保存されている正しい作業ディレクトリにいることを確認しましょう。
cd ~/project
-V フラグを使用すると、各パケットの完全な構造が明らかになり、物理フレームからアプリケーションデータまでのすべてのプロトコル層が表示されます。この階層的な表示により、ネットワーク通信において異なるプロトコルがどのように連携しているかを理解することができます。キャプチャファイルの最初のパケットを見てみましょう。
tshark -r capture.pcap -V -c 1
出力には、各プロトコル層に関する詳細情報が表示されます。以下は、表示される内容の例です(分かりやすくするために短縮しています)。
Frame 1: 66 bytes on wire (528 bits), 66 bytes captured (528 bits)
Encapsulation type: Ethernet (1)
Arrival Time: Jun 8, 2023 10:15:32.000000000 UTC
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1686219332.000000000 seconds
[Time delta from previous captured frame: 0.000000000 seconds]
[Time delta from previous displayed frame: 0.000000000 seconds]
[Time since reference or first frame: 0.000000000 seconds]
Frame Number: 1
Frame Length: 66 bytes (528 bits)
Capture Length: 66 bytes (528 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:tcp]
Ethernet II, Src: 00:11:22:33:44:55, Dst: aa:bb:cc:dd:ee:ff
Destination: aa:bb:cc:dd:ee:ff
Source: 00:11:22:33:44:55
Type: IPv4 (0x0800)
Internet Protocol Version 4, Src: 192.168.1.1, Dst: 192.168.1.2
Version: 4
Header length: 20 bytes
...
特定のプロトコル(例えば TCP)を含むパケットの詳細のみを表示したい場合は、-V と -Y 表示フィルタを組み合わせることができます。これにより、特定のネットワークトラフィックに焦点を当てた分析が可能になります。
tshark -r capture.pcap -V -Y "tcp" -c 1
-c 100 でパケットをカウントする
このステップでは、-c フラグを使用して Tshark でパケットの表示を制御する方法を探ります。これは、大量のパケットを含むキャプチャファイルを扱い、パケットのサンプルのみを分析する必要がある場合に特に有用です。
まず、パケットキャプチャファイルが保存されている作業ディレクトリに移動しましょう。これにより、すべてのコマンドが正しいファイルを対象に動作することが保証されます。
cd ~/project
-c フラグ("count" の略)は、Tshark が処理および表示するパケットの数を制限します。たとえば、キャプチャファイルの最初の 100 個のパケットのみを調べるには、次のようにします。
tshark -r capture.pcap -c 100
特定の種類のトラフィックを分析する場合、-c フラグと -Y を使用した表示フィルタを組み合わせることができます。このコマンドは、最初の 100 個の HTTP パケットを表示します。
tshark -r capture.pcap -Y "http" -c 100
ファイル内のパケットの総数(最初の 100 個だけでなく)を知る必要がある場合、このパイプラインは出力のすべての行をカウントします。
tshark -r capture.pcap | wc -l
キャプチャ内のプロトコルのより詳細な内訳が必要な場合、このコマンドは各プロトコルタイプのカウントを示すプロトコル階層の概要を提供します。
tshark -r capture.pcap -qz io,phs
まとめ
この実験では、ネットワークパケットキャプチャを分析するために、Wireshark のコマンドラインツール tshark を使用する方法を学びました。演習では、-r フラグを使用して PCAP ファイルを開く方法、--version を使用してインストールを確認する方法、およびパケットのメタデータやプロトコル情報を含むデフォルトの出力フィールドを調べる方法をカバーしました。
また、構造化されたパケットの概要形式を解釈する方法と、-c フラグを使用して出力量を制御する方法を練習しました。これらのスキルは、保存されたキャプチャファイルを使用した効率的なネットワークトラフィック分析とプロトコル調査のための堅固な基礎を提供します。


