Tshark での Hex データダンプ

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

はじめに

この実験では、Wireshark の tshark コマンドラインツールを使用して、16 進数出力でネットワークパケットを分析する方法を学びます。-r フラグを使用してパケットキャプチャファイル (capture.pcap) を読み取り、-x を使用して生のパケットデータを 16 進数形式で表示する練習を行います。

演習では、tshark コマンドの実行、パケットの概要の解釈、および 16 進数ダンプの調査を行います。TCP ハンドシェイクの例を分析して、この手法がネットワークのトラブルシューティングやセキュリティ調査にどのように役立つかを理解します。

-r capture.pcap でファイルを読み取る

このステップでは、Wireshark のコマンドラインツール tshark-r オプションとともに使用して、パケットキャプチャファイルを読み取る方法を学びます。これは、事前にキャプチャされたネットワークトラフィックデータを分析する基本的な方法です。

始める前に、PCAP ファイルにはネットワークインターフェイスからキャプチャされた生のネットワークトラフィックデータが含まれていることを理解することが重要です。-r フラグを使用すると、読み取るパケットキャプチャファイルを指定できます。これは、テキストエディタでドキュメントを開くのと似ています。~/project ディレクトリにある capture.pcap という名前のサンプルファイルを使用します。

  1. まず、正しいディレクトリにいることを確認します。これは、tshark がキャプチャファイルの場所を知る必要があるため、重要です。
cd ~/project
  1. 次に、tshark を使用してキャプチャファイルを読み取ります。フィルターを指定しない基本的なコマンドでは、ファイル内のすべてのパケットが表示されます。
tshark -r capture.pcap

このコマンドは、キャプチャファイル内の各パケットに関する基本情報を表示します。これには以下が含まれます。

  • パケット番号(キャプチャの順序を示す)
  • タイムスタンプ(パケットがキャプチャされた時刻)
  • 送信元と宛先の IP アドレス(パケットを送信した者と受信した者)
  • プロトコル(このネットワーク通信の種類)
  • パケット長(パケットのサイズ)
  • 基本的なプロトコル情報(各プロトコルに固有の詳細)

出力例(実際の出力は異なる場合があります):

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.000234 192.168.1.1 → 192.168.1.2 TCP 54 443 → 49234 [ACK] Seq=1 Ack=1 Win=64240 Len=0

この出力は、2 つのホスト間の基本的な TCP ハンドシェイクを示しています。[SYN] が付いた最初のパケットは接続要求を示し、[SYN, ACK] が付いた 2 番目のパケットは応答であり、3 番目の [ACK] がハンドシェイクを完了します。各行は、重要な詳細を含む 1 つのネットワークパケットを表しており、ネットワーク通信の時系列のビューを提供します。

-x で 16 進数ダンプを有効にする

このステップでは、Wireshark のコマンドラインツール tshark を使用して、ネットワークパケットの生のバイナリコンテンツを調査する方法を探ります。-x オプションは、各パケットを構成する実際の 16 進数データを明らかにするため、特に強力です。これは、詳細なパケット分析に不可欠です。

ネットワークトラフィックを扱う際、パケットは基本的にバイトのシーケンスです。-x フラグは、tshark に以下を表示するよう指示します。

  1. 標準的なパケットヘッダ情報(送信元/宛先アドレスなど)
  2. パケットの生データの完全な 16 進数表現
  3. そのデータの ASCII 解釈(該当する場合)

進む前に、パケットキャプチャファイルが保存されている正しい作業ディレクトリにいることを確認しましょう。

cd ~/project

これで、16 進数出力を有効にしてパケットキャプチャファイル (capture.pcap) を分析します。

tshark -r capture.pcap -x

このコマンドは、各パケットについて 3 つの主要なセクションに分かれた出力を生成します。

  1. 基本的なパケット情報を示す概要行
  2. 生のパケットバイトを示す 16 進数ダンプ
  3. それらのバイトの ASCII 表現(表示可能な文字を表示)

以下は、典型的な出力セクションの外観です(デモンストレーションのために短縮されています)。

1 0.000000 192.168.1.1 → 192.168.1.2 TCP 66 443 → 49234 [SYN] Seq=0 Win=64240 Len=0
0000  00 1a 4b 12 34 56 00 1b 11 22 33 44 08 00 45 00   ..K.4V..."3D..E.
0010  00 34 12 34 00 00 80 06 78 9a c0 a8 01 01 c0 a8   .4.4....x.......
0020  01 02 01 bb c0 52 00 00 00 00 00 00 00 00 50 02   .....R........P.
0030  fa f0 00 00 00 00 00 00 00 00                     ..........

16 進数表示は以下のように整理されています。

  • 最も左の列(0000、0010 など)は、16 進数でのバイトオフセットを示します。
  • 中央のセクションは、1 行あたり 16 バイトのパケットデータを 16 進数形式で表示します。
  • 右のセクションは、ASCII 文字表現を表示します(表示不可の文字はドットで表示されます)。

このビューは、バイトレベルでプロトコルヘッダを調査したり、ネットワーク伝送の正確な内容を検証したりする必要がある場合に非常に有用です。

--hexdump frames でフレームを制限する

このステップでは、Wireshark の --hexdump オプションをフレームフィルタリングとともに使用して、16 進数出力に表示されるパケットを正確に制御する方法を学びます。この手法は、生の 16 進数データを調査する際に特定のネットワークパケットに焦点を当てるのに役立ちます。特に、多数のパケットを含む大きなキャプチャファイルを扱う場合に非常に有効です。

--hexdump オプションは、基本的な -x フラグよりも正確な制御を可能にします。-x はすべてのパケットの 16 進数ダンプを表示するのに対し、--hexdump では表示するフレーム番号を正確に指定できます。これは、詳細に調べたいパケットのみを表示する拡大鏡のようなものです。

  1. まず、キャプチャファイルが保存されている正しい作業ディレクトリにいることを確認しましょう。これにより、Tshark が分析したいファイルを見つけることができます。
cd ~/project
  1. 次に、Tshark を使用して特定のフレームの 16 進数データを表示します。コマンドの構造は以下の通りです。
    • -r capture.pcap はパケットキャプチャファイルを読み取ります。
    • --hexdump frame=1-3 は、フレーム 1 から 3 のみを表示するよう Tshark に指示します。
    • 等号 (=) はフレームフィルタを 16 進数ダンプオプションに接続します。

以下のコマンドを実行して、フレーム 1 - 3 を 16 進数で表示します。

tshark -r capture.pcap --hexdump frame=1-3

このコマンドは、以下を示す出力を生成します。

  • 要求した 3 つのフレームのみ(1、2、および 3)
  • 各フレームの完全な 16 進数表現
  • 通常のパケット概要情報のない生のバイトデータ

出力例(デモンストレーションのために短縮されています):

Frame 1: 66 bytes on wire
0000  00 1a 4b 12 34 56 00 1b 11 22 33 44 08 00 45 00   ..K.4V..."3D..E.
0010  00 34 12 34 00 00 80 06 78 9a c0 a8 01 01 c0 a8   .4.4....x.......
0020  01 02 01 bb c0 52 00 00 00 00 00 00 00 00 50 02   .....R........P.
0030  fa f0 00 00 00 00 00 00 00 00                     ..........

Frame 2: 66 bytes on wire
0000  00 1b 11 22 33 44 00 1a 4b 12 34 56 08 00 45 00   ..."3D..K.4V..E.
0010  00 34 ab cd 00 00 80 06 12 34 c0 a8 01 02 c0 a8   .4.......4......
0020  01 01 c0 52 01 bb 00 00 00 00 00 00 00 01 50 12   ...R..........P.
0030  ff ff 00 00 00 00 00 00 00 00                     ..........

以前の出力との主な違いに注意してください。

  • 指定したフレームのみが表示されます(余分なパケットはありません)。
  • 各フレームは完全な 16 進数表現を示します。
  • 出力は通常のパケット概要行をスキップし、分析するためのクリーンな 16 進数データを提供します。

16 進数出力を確認する

この最後のステップでは、パケットキャプチャから得られた 16 進数出力を分析し、解釈します。16 進数ダンプを理解することは、ネットワーク分析の基礎です。なぜなら、これによりネットワークを介して伝送される生のバイナリデータがそのまま表示されるからです。このスキルは、ネットワークプロトコルの理解、通信問題のデバッグ、および低レベルのパケット検査に不可欠です。

  1. まず、最初の 3 つのフレームの包括的な 16 進数ダンプを生成しましょう。プロジェクトディレクトリで以下のコマンドを使用します。
cd ~/project
tshark -r capture.pcap --hexdump frame=1-3

このコマンドは capture.pcap ファイルを読み取り、フレーム 1 から 3 の 16 進数表現を表示します。--hexdump オプションは、Tshark に 16 進数と ASCII 表現を並べて表示するよう指示します。

  1. 出力構造を注意深く調べましょう。16 進数ダンプは、パケット構造を視覚化しやすいように整理されています。
  • 各フレームはそのサイズ(例:"Frame 1: 66 bytes on wire")で始まり、パケットの総長を示します。
  • 左の列はバイトオフセット(0000、0010 など)を示し、特定のバイトを見つけるのに役立ちます。
  • 中央のセクションは、1 行あたり 16 バイトの 16 進数データを表示し、実際のパケット内容を示します。
  • 右の列は、表示可能な文字の ASCII 表現を示し、テキストプロトコルを見つけるのに役立ちます。
  1. 次に、16 進数ダンプ内の重要なプロトコルヘッダを特定しましょう。ネットワークパケットは階層構造に従っており、これを 16 進数出力で確認できます。
## Ethernet header (first 14 bytes)
0000 00 1a 4b 12 34 56 00 1b 11 22 33 44 08 00

## IP header (next 20 bytes)
0010 45 00 00 34 12 34 00 00 80 06 78 9a c0 a8 01 01
0020 c0 a8 01 02

## TCP header (next 20 bytes)
0020 01 bb c0 52 00 00 00 00 00 00 00 00 50 02
0030 fa f0 00 00 00 00 00 00 00 00

イーサネットヘッダが最初に来て、その後に IP ヘッダ、そして TCP ヘッダが続きます。各プロトコルヘッダには、固定位置に特定のフィールドが含まれており、これらを解読することができます。

  1. ネットワークパケットでよく遭遇するいくつかの一般的な値を解釈する練習をしましょう。
  • 08 00 は IPv4(EtherType)を示します。これはネットワークカードに次に続くプロトコルを伝えます。
  • 45 は 5 ワードのヘッダ長を持つ IPv4 を示します('4' は IP バージョン、'5' は 32 ビットワードでのヘッダ長)。
  • c0 a8 01 01 は 16 進数での 192.168.1.1 です(各ペアは IP アドレスの 1 オクテットを表します)。
  • 01 bb は 10 進数でのポート 443 です(最初のバイト 01 は 256、bb は 187 で、合計で 443)。

ネットワークプロトコルはビッグエンディアンのバイト順を使用していることを忘れないでください。つまり、マルチバイトフィールドを解釈する際には、最上位バイトが最初に来ます。

まとめ

この実験では、Wireshark の tshark コマンドラインツールを使用してパケットキャプチャを分析し、16 進数データを調査する方法を学びました。演習では、-r オプションを使用して PCAP ファイルを読み取り、基本的なパケット情報を表示し、-x フラグを使用して詳細な 16 進数ダンプを取得する方法を実証しました。

これらの手法を用いることで、TCP ハンドシェイクの観察からバイトレベルでの生のパケットデータの検査まで、包括的なネットワークトラフィック分析が可能であることを確認しました。パケット概要と 16 進数および ASCII 表現を組み合わせることで、ネットワークのトラブルシューティングやプロトコルの調査に強力な機能を提供します。