Tshark で HTTP オブジェクトをエクスポートする

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

はじめに

この実験では、Wireshark のコマンドラインツール tshark を使用して、HTTP トラフィックを分析し、パケットキャプチャから転送されたオブジェクトを抽出する方法を学びます。キャプチャファイルを読み取る -r や、画像やドキュメントなどの HTTP コンテンツを取得する --export-objects などの重要なコマンドを練習します。

演習では、事前にキャプチャされたファイル (http.pcap) から HTTP オブジェクトをローカルディレクトリにエクスポートし、特定のリクエストをフィルタリングし、抽出されたファイルを調査する手順を案内します。これらの実践的な手法は、ネットワークトラフィック分析やフォレンジック調査に不可欠です。

-r http.pcap で HTTP キャプチャを開く

このステップでは、Wireshark のコマンドラインツール tshark を使用して、事前にキャプチャされた HTTP トラフィックファイルを開き、調査する方法を学びます。これは、ライブパケットをキャプチャせずに保存されたネットワークトラフィックデータを分析する必要がある場合に特に有用です。

始める前に、いくつかの基本事項を理解しましょう。

  • .pcap ファイルは、ネットワークパケットデータを保存するための一般的な形式です。
  • tshark は Wireshark のコマンドラインバージョンで、GUI なしでパケット分析を行うことができます。
  • HTTP トラフィックは通常、クライアントとサーバー間のウェブリクエストとレスポンスを示します。

まず、サンプルのキャプチャファイルがある正しいディレクトリにいることを確認します。

cd ~/project

tshark-r オプションはここで重要です。これは「read(読み取り)」を意味し、ライブトラフィックをキャプチャする代わりに、保存されたファイルからパケットデータを分析することができます。典型的な HTTP ウェブトラフィックが含まれる http.pcap という名前のサンプルキャプチャファイルを使用します。

キャプチャファイルの内容を開いて表示するには、次のコマンドを実行します。

tshark -r http.pcap

このコマンドは、パケットリストを直接ターミナルに表示します。各行は、いくつかの重要なフィールドを持つ 1 つのネットワークパケットを表します。

  • パケット番号:キャプチャ内のパケットのシーケンス番号
  • タイムスタンプ:パケットがキャプチャされた時刻(秒)
  • 送信元 IP:パケットの送信元
  • 宛先 IP:パケットの宛先
  • プロトコル:使用されているネットワークプロトコル(この場合は HTTP)
  • パケット長:パケットのサイズ(バイト)
  • 情報:パケットの内容に関する簡単な詳細

たとえば、次のような典型的な HTTP リクエストとレスポンスを示す出力が表示される場合があります。

1 0.000000 192.168.1.100 → 192.168.1.1 HTTP GET /index.html HTTP/1.1
2 0.000123 192.168.1.1 → 192.168.1.100 HTTP HTTP/1.1 200 OK (text/html)

最初の行は、クライアント(192.168.1.100)がウェブページを要求していることを示し、2 行目はサーバーの成功したレスポンスを示しています。この基本的なビューは、トラフィックの流れをすぐに理解するのに役立ちます。

データの調査が終了したら、パケットビューを終了するには、単に Ctrl+C を押します。これにより、コマンドプロンプトに戻ります。

--export-objects http,./objects でオブジェクトをエクスポートする

このステップでは、パケットキャプチャから HTTP で転送されたファイルを抽出する方法を探ります。HTTP 通信を含むネットワークトラフィックをキャプチャすると、画像、PDF、スクリプトなどのファイルが HTTP プロトコル内のバイナリオブジェクトとして送信されます。Tshark はこれらのファイルを分析のために抽出する便利な方法を提供します。

まず、パケットキャプチャファイルが保存されているプロジェクトディレクトリに移動しましょう。これにより、すべてのコマンドが正しいファイルで動作するようになります。

cd ~/project

ファイルを抽出する前に、それらを保存する場所が必要です。mkdir -p コマンドは "objects" という名前のディレクトリを作成し、Tshark は抽出したファイルをここに保存します。-p フラグは、ディレクトリがすでに存在する場合にエラーを表示しないことを意味します。

mkdir -p objects

ここで、Tshark の強力な --export-objects 機能を使用します。このコマンドはパケットキャプチャをスキャンし、HTTP ファイル転送を識別し、元のファイルを再構築します。--export-objects の後の構文には 2 つの部分があります。"http" はプロトコルを指定し、"./objects" は出力ディレクトリです。

tshark -r http.pcap --export-objects http,./objects

このコマンドを実行すると、以下のようなことが起こります。

  1. Tshark が http.pcap ファイルを読み取ります(-r フラグ)
  2. HTTP トラフィックを分析し、ファイル転送を識別します
  3. 見つかった各ファイルが再構築され、./objects ディレクトリに保存されます

コマンドを実行した後、Tshark は抽出した各ファイルを表示します。たとえば、以下のようなファイルの抽出が成功したことを示す出力が表示される場合があります。

Exporting HTTP object 1: image1.jpg
Exporting HTTP object 2: document.pdf

これらのファイルは、これで objects ディレクトリにあり、さらに調査することができます。この手法は、ウェブトラフィックの分析やネットワークトラブルシューティング中のファイルダウンロードの調査に特に有用です。

./objects 内のファイルを一覧表示する

このステップでは、前のステップでパケットキャプチャから抽出された HTTP オブジェクトを調べます。これらのオブジェクトは、画像、ドキュメント、スクリプトなど、HTTP で転送されたファイルを表しています。./objects ディレクトリの内容を一覧表示することで、どのファイルが正常にエクスポートされたかを確認し、さらなる分析の準備をすることができます。

まず、抽出されたファイルが保存されているプロジェクトディレクトリに移動しましょう。これにより、正しい場所で作業していることが保証されます。

cd ~/project

詳細情報を含めてすべての抽出されたファイルを表示するには、2 つの便利なオプションを使用した ls コマンドを使います。

ls -lh ./objects

各部分の機能は以下の通りです。

  • -l は、パーミッション、サイズ、タイムスタンプを含む長い形式の一覧を表示します。
  • -h は、人間が読みやすい形式(バイトではなく KB、MB)でファイルサイズを表示します。

HTTP トラフィックから抽出された実際のファイルを示す、以下のような出力が表示されるはずです。

total 24K
-rw-r--r-- 1 labex labex 5.2K Jan 1 10:00 image1.jpg
-rw-r--r-- 1 labex labex 12K Jan 1 10:00 document.pdf
-rw-r--r-- 1 labex labex 1.5K Jan 1 10:00 script.js

抽出されたファイルの数だけを知りたい場合(詳細を見る必要がない場合)は、このコマンドで数をカウントできます。

ls ./objects | wc -l

wc -l 部分は、出力の行数をカウントします。これはファイルの数に対応します。この例では、以下のように表示されます。

3

-Y "http.request.uri" で特定のリクエストをフィルタリングする

このステップでは、Wireshark のコマンドラインツールである tshark を使用して、パケットキャプチャファイルから特定の HTTP リクエストをフィルタリングする方法を探ります。-Y オプションを使用すると、強力な表示フィルターを適用して、分析対象となるネットワークトラフィックのみに焦点を当てることができます。

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

cd ~/project

基本的なコマンド構造では、tshark -r を使用してパケットキャプチャファイルを読み取り、その後に -Y とフィルター式を指定します。HTTP トラフィックを扱う場合、URI(Uniform Resource Identifier)パスを調べることで、HTTP リクエストパケットを具体的にフィルタリングすることができます。

tshark -r http.pcap -Y "http.request.uri"

このコマンドは http.pcap ファイルを処理し、フィルターに一致する HTTP リクエストパケットのみを表示します。一致する各パケットについて、以下を含む重要な情報が表示されます。

  • パケット番号(キャプチャ内の位置を示す)
  • パケットがキャプチャされたタイムスタンプ
  • 送信元と宛先の IP アドレス
  • 完全な HTTP リクエスト URI パス

典型的な出力は以下のようになります。

10 1.234567 192.168.1.100 → 203.0.113.5 HTTP GET /images/logo.png HTTP/1.1
15 2.345678 192.168.1.100 → 203.0.113.5 HTTP GET /api/data.json HTTP/1.1

特定のファイルタイプやパスを探すことで、フィルターをさらに詳細にすることができます。たとえば、PNG 画像ファイルのリクエストのみを見つけるには、URI 内の ".png" をチェックするようにフィルターを変更できます。

tshark -r http.pcap -Y 'http.request.uri contains ".png"'

この手法は、ウェブトラフィックを分析して特定のリソースのリクエストを識別する場合や、特定の種類のウェブリクエストのトラブルシューティングを行う場合に特に有用です。表示フィルターの構文により、分析で表示するパケットを正確に制御することができます。

まとめ

この実験では、Wireshark のコマンドラインツール tshark を使用して、HTTP トラフィックを分析し、転送されたオブジェクトを抽出する方法を学びました。http.pcap ファイルを使って、-r フラグでパケットの詳細を表示し、--export-objects を使って画像やドキュメントなどの HTTP オブジェクトを指定されたディレクトリにエクスポートする練習を行いました。

また、-Y フラグを使って特定の HTTP リクエストをフィルタリングし、URI に基づいてトラフィックを分離する方法も調べました。これらの手法は、tshark のコマンドラインインターフェイスを通じて、効率的なネットワーク分析とターゲット指向のファイル抽出に必要なスキルを提供します。