はじめに
この実験では、Wireshark のコマンドラインツール tshark を使用して TCP ストリームを分析する方法を学びます。パケットキャプチャを読み取り、TCP 会話を特定し、詳細な検査のために特定のストリームデータを抽出するための重要なコマンドを練習します。
演習では、キャプチャファイルの検証、プロトコルの詳細の調査、およびストリームコンテンツの保存を行います。この実験を完了することで、tshark の強力なフィルタリングと統計機能を使用したネットワークトラフィック分析の実践的なスキルを身につけることができます。
-r tcp.pcap で TCP キャプチャを読み取る
このステップでは、Wireshark のコマンドラインツール tshark を使用して TCP パケットキャプチャファイルを読み取る方法を学びます。これは、保存されたキャプチャファイルからネットワークトラフィックを分析する最初のステップです。パケットキャプチャを読み取る方法を理解することは、ネットワークのトラブルシューティングと分析の基礎となります。
tshark の -r オプションを使用すると、以前に保存されたキャプチャファイルからパケットを読み取ることができます。これは、文書を開くようなもので、-r フラグは tshark にどの「文書」(キャプチャファイル)を開くかを指示します。~/project ディレクトリにある tcp.pcap という名前のサンプルファイルを使用します。
- まず、キャプチャファイルが予想される場所に存在することを確認しましょう。これは、ファイルを分析しようとする前の良い習慣です。
ls ~/project/tcp.pcap
- 次に、
tsharkを使用してキャプチャファイルを読み取ります。フィルターを使用しない基本的なコマンドでは、ファイル内のすべてのネットワークトラフィックの概要が表示されます。
tshark -r ~/project/tcp.pcap
これにより、重要な列を含む概要ビューが表示されます。
- パケット番号(キャプチャされたパケットの順序を示す)
- タイムスタンプ(各パケットがキャプチャされた時刻)
- 送信元と宛先の IP アドレス
- 使用されたプロトコル(TCP、UDP など)
- パケット内容の簡単な情報
- パケットの内容をより詳細に調べるために、
-Vフラグ(詳細モード)を追加することができます。これにより、各パケットのプロトコルがレイヤーごとに完全に分解されて表示されます。
tshark -r ~/project/tcp.pcap -V
詳細出力には、以下の詳細が表示されます。
- イーサネットレイヤー(MAC アドレス)
- IP レイヤー(送信元/宛先 IP、TTL など)
- TCP レイヤー(ポート、シーケンス番号、フラグ)
- アプリケーションレイヤーデータ(存在する場合)
この詳細ビューは、通信中に各ネットワークレイヤーで正確に何が起こっているかを理解するのに役立ちます。
-z conv,tcp でストリームインデックスを特定する
このステップでは、Wireshark の tshark を -z conv,tcp オプションとともに使用して、パケットキャプチャ内の TCP 会話ストリームを特定する方法を学びます。これにより、ホスト間の通信パターンを分析することができます。
始める前に、TCP ストリームは 2 つのエンドポイント間の完全な会話を表すことを理解することが重要です。各ストリームには一意のインデックス番号があり、多数の同時接続が含まれる可能性のあるネットワークキャプチャ内の特定の通信を分離して分析するのに役立ちます。
-z conv,tcp オプションは、キャプチャ内のすべての TCP 会話のテーブルを表示し、ストリームインデックス、送信元/宛先アドレス、ポート、およびパケット数を示します。これにより、キャプチャファイル内のすべての TCP アクティビティの概要を把握することができます。
- まず、キャプチャファイル内のすべての TCP 会話を一覧表示しましょう。
tshark -r ~/project/tcp.pcap -z conv,tcp
このコマンドを実行すると、tshark はパケットキャプチャファイルを処理し、すべての TCP 会話の概要を生成します。このコマンドは指定された pcap ファイルを読み取り (-r)、会話統計オプション (-z conv,tcp) を適用します。
出力には、以下の列を持つテーブルが表示されます。
- ストリームインデックス(各 TCP ストリームの一意の識別子)
- 送信元アドレス:ポート(接続を開始したデバイスを示す)
- 宛先アドレス:ポート(受信デバイスを示す)
- 各方向のパケット数(トラフィックの流れを特定するのに役立つ)
- 総パケット数(会話のサイズを示す)
会話統計のみを表示し(パケットの詳細を表示しない)、フィルタリングするには、
-q(クワイエットモード)を追加します。
tshark -r ~/project/tcp.pcap -z conv,tcp -q
-q オプションは、tshark に要求した統計のみを出力するよう指示します。これにより、会話の概要のみに関心がある場合に、出力がすっきりして読みやすくなります。
- 次のステップで特定のストリームを追跡するために必要になるので、ストリームインデックス(最初の列)をメモしておきましょう。これらのインデックスは、非常に混雑したネットワークキャプチャ内の個々の会話に焦点を当てることができるため、非常に重要です。
-z follow,tcp,stream,0 でストリームを追跡する
このステップでは、Wireshark の tshark を -z follow,tcp オプションとともに使用して、パケットキャプチャから特定の TCP ストリームを追跡して分析する方法を学びます。これにより、2 つのエンドポイント間の会話の実際のデータフローを再構築することができ、アプリケーションレベルの通信を理解しやすくなります。
-z follow,tcp,stream,0 オプションを使用すると、ストリーム 0(0 を前のステップで取得した希望のストリームインデックスに置き換えてください)を個々のパケットではなく連続したデータフローとして調べることができます。これは、単一のウェブページの読み込みに複数のパケットが関与する可能性のある HTTP などのプロトコルを分析する際に特に有用です。
- まず、キャプチャからストリーム 0(最初の TCP 会話)を追跡しましょう。このコマンドは pcap ファイルを読み取り、会話全体を再構築します。
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,0
出力には、以下の 3 つの重要な情報が表示されます。
- クライアントとサーバー間の完全なデータ交換が順番に再構築されます。
- アプリケーションレイヤーデータの ASCII 表現(アプリケーションが実際に送信した内容)
- 方向指示子(クライアントからサーバーへは ">"、サーバーからクライアントへは "<")。これにより、会話の各部分を誰が開始したかを追跡することができます。
別のストリームを追跡するには、"0" を希望のストリームインデックス(ステップ 2 の出力から)に置き換えます。たとえば、キャプチャ内の 2 番目の会話を表示するには、次のようにします。
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,1
- パケットヘッダを含まず、データのみを表示するクリーンな出力を得るには、
-q(クワイエットモード)を追加します。これは、アプリケーションデータのみに関心がある場合に便利です。
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,0 -q
リダイレクトを使用してストリームテキストを保存する
このステップでは、出力リダイレクトを使用して TCP ストリームの内容をファイルに保存する方法を学びます。この手法は、ネットワーク通信パターンを分析したり、キャプチャしたデータを同僚と共有する必要がある場合に特に有用です。このプロセスでは、パケットキャプチャファイルから特定の TCP ストリームデータを抽出し、後で調査するためにテキストファイルに保存します。
- まず、ストリーム 0 を
stream0.txtという名前のファイルに保存しましょう。このコマンドはパケットキャプチャファイル (tcp.pcap) を読み取り、TCP ストリームインデックス 0 の内容のみを抽出し、その出力を新しいテキストファイルにリダイレクトします。
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,0 -q > ~/project/stream0.txt
- コマンドを実行した後、ファイルが正常に作成されたことを確認します。
ls -lコマンドを使用すると、ファイルのサイズや作成時間などの詳細情報が表示されます。
ls -l ~/project/stream0.txt
- 保存した実際の内容を表示するには、
catコマンドを使用します。これにより、TCP ストリームの完全な会話が表示され、クライアントとサーバーのメッセージの両方が含まれます。
cat ~/project/stream0.txt
- 同じ手法は、キャプチャファイル内の任意の TCP ストリームに適用できます。以下は、コマンド内のストリームインデックスを変更することでストリーム 1 を保存する方法です。前のファイルを上書きしないように、新しいファイル (
stream1.txt) を作成していることに注意してください。
tshark -r ~/project/tcp.pcap -z follow,tcp,stream,1 -q > ~/project/stream1.txt
- 長いストリームを調査する際には、行番号を付けると分析が容易になります。
catコマンドに-nフラグを付けると、各行に対応する番号が表示され、会話の特定の部分を参照しやすくなります。
cat -n ~/project/stream0.txt
まとめ
この実験では、Wireshark のコマンドラインツール tshark を使用して TCP ネットワークトラフィックを分析する方法を学びました。演習では、-r を使用してパケットキャプチャを読み取り、-V を介して詳細なプロトコル情報を表示し、-z conv,tcp を使用して TCP 会話を特定してストリーム分析を行いました。
また、インデックスによって特定の TCP ストリームを追跡し、出力リダイレクトを通じてストリームの内容を保存する練習を行いました。これらの手法は、tshark を使用してネットワークトラフィックを最初のキャプチャから焦点を絞ったデータ調査まで行う実用的なワークフローを提供します。


