ネットワークエンジニアやセキュリティ担当者にとって、パケットキャプチャツールであるWiresharkの習得は不可欠なスキルの一つです。
インターネット通信の多くが暗号化(HTTPS)された現代においても、内部ネットワークの診断やレガシーシステムの保守、あるいはプロトコルの動作理解において、HTTP通信の平文データを解析する手法は基本中の基本となります。
本記事では、Wiresharkを使用してHTTP通信のパケットをキャプチャし、その中身を詳細に確認する手順から、効率的なフィルタリングの方法までを網羅的に解説します。
Wiresharkの概要とHTTP解析の重要性
Wiresharkは、ネットワーク上を流れるデータをリアルタイムで捕らえ、その内容を人間が理解できる形式で表示するオープンソースのパケット解析ソフトです。
OSI参照モデルの各レイヤーに対応した解析が可能であり、トラブルシューティングやセキュリティ調査において世界標準のツールとして広く利用されています。
パケットキャプチャとは
ネットワーク上を流れるデータは、パケットと呼ばれる小さな単位に分割されて送受信されます。
パケットキャプチャとは、NIC(ネットワークインターフェースカード)を通過するこれらのデータを、解析のために取り出す作業を指します。
通常、NICは自分宛てのパケットのみを受信しますが、Wiresharkを使用する際は「プロミスキャスモード」に設定することで、同じセグメントを流れる他の通信も傍受できるようになります。
なぜHTTP通信の解析が必要なのか
現在のWebサイトはHTTPSによる暗号化が主流ですが、開発環境や一部の古い組み込みデバイスでは依然としてHTTP(ポート番号80)が利用されています。
HTTPはデータが暗号化されない平文(プレーンテキスト)で送信されるため、通信内容の全てを容易に読み取ることが可能です。
この特性を利用して、APIの通信確認や認証プロセスの脆弱性診断、マルウェアの通信先特定などが行われます。
平文のHTTP通信を解析することは、パケットの構造を学ぶ上で最も適した教材であり、ネットワーク解析の第一歩となります。
Wiresharkのインストールと初期設定
解析を始める前に、Wiresharkを適切な環境でセットアップする必要があります。
WiresharkはWindows、macOS、Linuxといった主要なOSに対応しており、公式サイトからインストーラーをダウンロードできます。
インストール手順
Windows環境の場合、インストール過程で「Npcap」というライブラリの導入が求められます。
Npcapはパケットを捕捉するために不可欠なドライバであるため、必ず同時にインストールするようにしてください。
また、管理者権限がないとネットワークインターフェースを正しく認識できない場合があるため、起動時の権限にも注意が必要です。
キャプチャインターフェースの選択
Wiresharkを起動すると、利用可能なネットワークインターフェースが一覧表示されます。
ここで、解析対象の通信が流れているインターフェース(Wi-Fiやイーサネットなど)を選択します。
インターフェース名の横に波形のグラフが表示されているものが、現在通信が行われているアクティブな項目です。
HTTP通信のキャプチャと平文データの確認手順
それでは、実際にHTTP通信をキャプチャし、その内容を確認する具体的な流れを見ていきましょう。
通信のキャプチャ開始
対象のインターフェースをダブルクリックすることで、キャプチャが開始されます。
キャプチャが始まると、画面上部のパケットリストペインに膨大な数のパケットが次々と表示されます。
この中から目的のHTTP通信を見つけるために、フィルタ機能や解析機能を活用します。
パケットリストからのHTTP通信の特定
キャプチャを停止するには、画面左上の赤い四角いアイコンをクリックします。
HTTP通信を確認するためには、上部のフィルタ入力欄に「http」と入力し、Enterキーを押下してください。
これにより、DNSやTCP、TLSといったHTTP以外の通信が非表示になり、HTTPプロトコルのパケットだけが抽出されます。
HTTPヘッダーとペイロードの解析
抽出されたパケットの中から、解析したい行をクリックすると、画面下部のパケット詳細ペインにその内容が表示されます。
「Hypertext Transfer Protocol」という項目を展開することで、HTTPリクエストやレスポンスの詳細を確認できます。
以下の表は、Wiresharkで確認できる主なHTTPヘッダー情報の例です。
| 項目 | 説明 |
|---|---|
| Request Method | GET, POST, PUTなどのリクエストメソッド |
| Host | 接続先のドメイン名またはIPアドレス |
| User-Agent | ブラウザやクライアントツールの識別情報 |
| Content-Type | 送受信されるデータの形式(html, jsonなど) |
| Cookie | セッション管理に使用されるクッキー情報 |
特にPOSTメソッドの場合、ヘッダーの後の「JSON」や「HTML Form URL Encoded」などのセクションに、ユーザーが入力したIDやパスワードが生のテキストとして表示されます。
Wiresharkでの効率的なパケットフィルタリング活用術
大規模な通信の中で特定のデータを素早く見つけるためには、フィルタリング機能の習熟が欠かせません。
表示フィルタ(Display Filter)の基本
表示フィルタは、キャプチャ済みのデータから特定の条件に合致するものだけを画面に出す機能です。
単純なキーワードだけでなく、比較演算子や論理演算子を組み合わせることで、高度な絞り込みが可能になります。
特定のホストやメソッドでの絞り込み
例えば、特定のドメインに対する通信だけを見たい場合や、データの送信(POST)だけを抽出したい場合には、以下のフィルタ式を使用します。
# 特定のホストへのHTTP通信を表示
http.host == "example.com"
# HTTP POSTリクエストのみを表示
http.request.method == "POST"
# 特定のステータスコード(404 Not Foundなど)を表示
http.response.code == 404
# 特定の文字列を含むパケットを検索
http contains "password"
これらのフィルタを組み合わせる際は、&&(AND)や||(OR)を使用します。
例として、http.host == "example.com" && http.request.method == "POST"と入力すれば、特定のサイトに対するデータ送信のみを即座に特定できます。
HTTP解析における高度なテクニック
単一のパケットを見るだけではなく、一連のやり取りをまとめて確認する方法を知っておくと、解析効率が飛躍的に向上します。
HTTP Streamのフォロー(Follow HTTP Stream)
HTTPの通信は複数のTCPパケットに分割されて運ばれることが多く、パケットリストだけでは通信の全体像が掴みづらいことがあります。
そのような場合は、対象のパケットを右クリックし、「Follow」→「HTTP Stream」を選択してください。
これにより、リクエストとレスポンスの対話形式が一つのウィンドウに表示され、まるでブラウザとサーバの会話を読んでいるかのように内容を把握できます。
赤色がクライアントからの送信、青色がサーバからの返信として色分けされるため、非常に視認性が高いのが特徴です。
オブジェクトのエクスポート(Export Objects)
HTTP通信によってダウンロードされた画像やHTMLファイルそのものを、Wiresharkから抽出して保存することができます。
メニューの「File」→「Export Objects」→「HTTP…」を選択すると、キャプチャデータ内に含まれるファイルの一覧が表示されます。
ここからファイルを選んで保存することで、パケットの中を流れていた画像やスクリプトを、実際のファイルとして再現することが可能です。
これはフォレンジック調査において、どのようなコンテンツが閲覧されたかを特定する際に非常に強力な機能となります。
セキュリティ上の留意点とHTTPSへの対応
Wiresharkでの解析作業には、倫理的・法的な責任が伴います。
HTTP(平文)通信のリスク
ここまでの手順で見てきた通り、HTTP通信は中身が丸見えの状態です。
もし公共のWi-FiなどでHTTPサイトを利用し、ログイン情報を入力した場合、同じネットワーク内にいる攻撃者にWiresharkを使われるだけで、全ての情報が盗まれる危険性があります。
開発者や管理者としては、自社のサービスが意図せずHTTPのまま運用されていないか、このツールを使って定期的にチェックすることが求められます。
HTTPS通信の可視化について
現代のインターネットの標準であるHTTPS(TLS/SSL)は、通信内容が暗号化されているため、Wiresharkでキャプチャしても「Application Data」と表示されるだけで、中身を読むことはできません。
しかし、ブラウザの「SSLKEYLOGFILE」という環境変数を利用して秘密鍵の情報をログとして出力し、それをWiresharkに読み込ませることで、HTTPS通信を復号して解析
これは自身の端末で行うデバッグ作業としては一般的ですが、他人の暗号化通信を無断で復号することは不正アクセスに該当する恐れがあるため、絶対に行わないでください。
まとめ
Wiresharkを用いたHTTP通信の解析は、パケットがどのようにネットワークを移動し、どのような構造でデータがやり取りされているかを理解するための最適な手法です。
フィルタ機能を使いこなし、HTTP Streamのフォローを活用することで、複雑なネットワークトラブルの原因や、アプリケーションの動作の詳細を手に取るように把握できるようになります。
一方で、平文データの脆弱性を目の当たりにすることで、情報セキュリティの重要性をより深く実感できるはずです。
本記事で紹介したキャプチャ手順とフィルタリング技術を土台として、より高度なネットワーク解析スキルへとステップアップしていきましょう。
Wiresharkは多機能ゆえに奥が深いツールですが、まずはHTTPという身近なプロトコルから触れ始めることが、習熟への近道となります。
