ネットワークフォレンジック入門|パケットの中身を読む
フォレンジック編の第4回。第6話のNetworkタブは「1つのタブのHTTP通信」しか見えませんでしたが、今回はその下にある「通信そのもの」の構造を学びます。次回のWireshark実践への準備です。
📋 目次
📡 ネットワークフォレンジックとは何か|通信そのものを記録する
Networkタブが見せてくれなかった「もっと下のレイヤー」
第6話のNetworkタブとの違い
第6話で学んだ開発者ツールのNetworkタブは、そのブラウザタブが行ったHTTP/HTTPS通信だけを見せてくれるものでした。一方、ネットワークフォレンジックで使うパケットキャプチャは、ネットワークインターフェースを通過するすべての通信を、プロトコルやアプリケーションを問わず、生のデータとしてそのまま記録します。
サイバー攻撃を受けた際、攻撃者がどんな通信をしていたかを再構築するには、ブラウザの中だけでなく、サーバーやネットワーク機器を通過したすべての通信の記録(PCAPファイル)が決定的な証拠になります。次回学ぶWiresharkは、このPCAPファイルを解析するための代表的なツールです。
📦 パケットの「層構造」を理解する|カプセル化
1つの通信は、何重もの「封筒」に包まれている
あなたがブラウザで送ったたった1つのHTTPリクエストは、実際には複数のプロトコルの層に包まれてネットワークを流れています。これをカプセル化(Encapsulation)と呼びます。一番外側から内側へ、ちょうど何重もの封筒を開けていくように構造化されています。
| 層 | 役割 | 主な情報 |
|---|---|---|
| Ethernet(データリンク層) | 同じ配線上の機器同士の受け渡し | 送信元/宛先 MACアドレス |
| IP(ネットワーク層) | 異なるネットワーク間の経路選択 | 送信元/宛先 IPアドレス |
| TCP/UDP(トランスポート層) | どのアプリ宛かを識別、信頼性確保 | 送信元/宛先 ポート番号 |
| HTTP/DNS等(アプリケーション層) | 実際のやり取りの内容 | リクエスト内容・ドメイン名等 |
🤝 TCPの3ウェイハンドシェイクを読む
会話を始める前の「あいさつ」のような手順
TCP通信では、データの送受信を始める前に3回のやり取りで接続を確立します。これを3ウェイハンドシェイクと呼びます。パケットキャプチャの中でこのパターンを見つけられると、「ここで新しい接続が始まった」と分かります。
SYN(クライアント → サーバー)
「接続を始めたいです」という最初の合図。SYNフラグが立った状態で送られます。
SYN-ACK(サーバー → クライアント)
「了解しました、こちらも接続準備ができています」という応答。SYNとACKの両方のフラグが立っています。
ACK(クライアント → サーバー)
「了解しました、接続を開始します」という最終確認。これで接続が確立し、実際のデータ(HTTPリクエストなど)の送受信が始まります。
🧩 CTFで使うパケット解析テクニック3選
次回Wiresharkで実践する基本の考え方
TCPストリームを追跡する(Follow TCP Stream)
1つの通信は複数のパケットに分割されています。Wiresharkの「Follow TCP Stream」機能を使うと、バラバラのパケットから1つの会話全体を人間が読める形に再構築できます。CTFのネットワーク問題ではまず最初に試すべき定番操作です。
平文プロトコルを狙う
FTP・Telnet・HTTP(非SSL)のような暗号化されていないプロトコルでは、パスワードやコマンドがそのまま流れていることがあります。パケットキャプチャの中からこうした平文プロトコルの通信を見つけるのは、CTFのネットワークフォレンジック問題の王道パターンです。
DNSクエリに潜む「データ持ち出し」を疑う
一見正常なDNS通信に見えても、サブドメイン部分(aGVsbG8.evil.example.comのような部分)に実はBase64エンコードされたデータが埋め込まれている「DNSトンネリング」という手法があります。ファイアウォールがDNS通信を許可しがちなことを悪用した、見つけにくい情報持ち出し手法です。
🧩 5分CTFチャレンジ:パケットの層をすべて剥いてフラグを探せ
1つのパケットを最深部まで掘り下げる
下のパケットインスペクターは、Wiresharkの「パケット詳細」パネルを模した表示です。各層をクリックして展開し、最も内側のアプリケーション層までたどってください。
チャレンジの手順
各層のヘッダー行をクリックすると展開・収納できます。Frame → Ethernet II → Internet Protocol → Transmission Control Protocol → Hypertext Transfer Protocol の順にすべて開いて、最も内側のフィールドを確認してください。
Frame Number: 47
Frame Length: 215 bytes
Source: 08:00:27:a1:2b:3c
Type: IPv4 (0x0800)
Source Address: 192.168.56.10
Destination Address: 192.168.56.1
Protocol: TCP (6)
Destination Port: 80
Sequence Number: 1
Flags: 0x018 (PSH, ACK)
Host: internal.example.local
User-Agent: curl/7.68.0
X-Debug-Flag: CTF{P4CK3T_L4Y3RS_P33L3D}
Accept: */*
すべての層を展開して見つけたフラグを入力してください。
各層の見出し(▶のついた行)をクリックすると展開されます。一番下の「Hypertext Transfer Protocol」まで開いてください。
HTTP層の中にX-Debug-Flag:という、デバッグ用に残されたカスタムヘッダーがあります。そこに書かれている値がフラグです。
📝 まとめ+FAQ+次回予告
今回のポイントを振り返ろう
第18話では、ブラウザのNetworkタブよりさらに下の層にある「パケットキャプチャ」の世界を学びました。Ethernet・IP・TCP・アプリケーション層というカプセル化の構造、TCPの3ウェイハンドシェイク、そしてCTFで使われる平文プロトコルやDNSトンネリングといった実践的な視点を身につけました。次回はいよいよWiresharkで本物のパケット解析を体験します。
・パケットキャプチャはブラウザのNetworkタブより広い範囲(全プロトコル・全通信)を記録する
・1つの通信はEthernet→IP→TCP→アプリケーション層の順にカプセル化されている
・TCPはSYN→SYN-ACK→ACKの3ウェイハンドシェイクで接続を確立する
・HTTPS等の暗号化通信は、鍵がなければパケットキャプチャでも内容は読めない
・平文プロトコルやDNSトンネリングはCTFのネットワーク問題の定番パターン
Q. PCAPファイルとは何ですか?
キャプチャしたパケットを保存するための標準的なファイル形式です(拡張子は.pcapや.pcapng)。Wireshark・tcpdumpなど多くのツールがこの形式に対応しているため、あるツールで記録したキャプチャを別のツールで開いて解析することができます。
Q. 暗号化された通信(HTTPS)もパケットキャプチャで読めますか?
通信が発生したこと(送信元・宛先・タイミング・通信量)は分かりますが、暗号化された本文の内容は鍵がなければ読めません。サーバー側でTLSの秘密鍵を提供してもらうか、クライアント側でセッションキーをログに出力する設定(SSLKEYLOG)を行わない限り、内容の復号はできません。
Q. パケットキャプチャは合法ですか?
自分が管理するネットワークや機器上で行う限り問題ありません。しかし、許可なく他人のネットワークの通信を傍受する行為は、不正アクセス禁止法や電気通信事業法等に違反する可能性があります。CTFやペネトレーションテストでは、必ず許可された環境内でのみ実施してください。
Q. tcpdumpとWiresharkの違いは何ですか?
tcpdumpはコマンドラインで動作する軽量なキャプチャツールで、サーバー上でサッと記録するのに向いています。Wiresharkはグラフィカルなインターフェースを持ち、パケットの詳細な階層構造を視覚的に確認したり、複雑な条件で絞り込んだりするのに向いています。「tcpdumpで記録し、Wiresharkで分析する」という組み合わせもよく使われます。
Wireshark実践|複数のパケットから通信を追う
フォレンジック編の最終回。今回学んだ層構造の知識を使い、複数のパケットからなる一連の通信を追跡してフラグを見つけ出します。
📚 参考情報
- Wireshark公式サイト「About」「Documentation」
- IPA「TCP/IPの基礎」関連資料
- RFC 793 — Transmission Control Protocol(TCP仕様書)


コメント