9.

PCAP / PCAPNG (.pcap / .pcapng) とは ― tcpdump / Wireshark のパケットキャプチャ形式

編集
この記事の要点
  • PCAP / PCAPNG (.pcap / .pcapng) はネットワークのパケットキャプチャファイル形式
  • PCAP は libpcap 由来の古典形式(マジック 0xA1B2C3D4)、PCAPNG は 後継(マジック 0x0A0D0D0A)でメタ情報リッチ
  • キャプチャツール: tcpdump -w out.pcap / tshark -w / dumpcap、解析は Wireshark が定番
  • -r で読み込み、tcp port 443 and host 1.2.3.4 など BPF フィルタで絞り込み
  • 機密情報を含むことが多い (Cookie / Basic 認証 / API キー)。共有時は tcprewritetracewrangler で匿名化

要点

  • PCAP / PCAPNG はネットワークのパケットキャプチャを保存するファイル形式。
  • .pcap は古典的な libpcap 形式、.pcapng は次世代 (Pcap Next Generation) でメタデータ拡張に対応。
  • tcpdump / Wireshark / tshark がデファクトツール。書き出しは tcpdump -w out.pcap
  • 障害解析、セキュリティ調査、CTF (Capture The Flag) 競技で多用。

概要

パケットキャプチャは「ネットワークインタフェースを通過したフレーム / パケットの生データを、タイムスタンプ付きで丸ごとファイル化したもの」である。古くは Unix の libpcap が定義した PCAP 形式が広まり、tcpdump や Wireshark など主要ツールがこれを共通言語にしてきた。2000 年代後半に登場した PCAPNG (Pcap Next Generation) は、複数インタフェースの同時記録、ホスト名 / 注釈などのメタ情報、レコード単位の柔軟なブロック構造をサポートし、Wireshark のデフォルト保存形式になっている。

キャプチャされたファイルは生のイーサネットフレームをそのまま含むため、平文認証 (FTP / HTTP / Telnet) のパスワードや内部 API のレスポンスがそのまま読めることがあり、取り扱いには細心の注意が必要。

内部構造

PCAP (libpcap) は単純で、先頭にグローバルヘッダ (マジック 0xa1b2c3d4、リンク種別、スナップ長など) があり、その後ろにレコードヘッダ + パケット本体の繰り返し。レコードヘッダはタイムスタンプ (秒 / マイクロ秒) + 取得長 + 元の長さの 4 フィールドのみで、シンプル極まりない。

PCAPNG はブロック構造で、Section Header Block / Interface Description Block / Enhanced Packet Block / Name Resolution Block / Interface Statistics Block などが連なる。各ブロックは TLV 風に拡張可能で、解析時のフィルタ済みフラグ、コメント、複数 NIC を 1 ファイルに同居させられる。

主な用途

  • 障害解析: アプリログだけでは見えない TCP 再送、RST、TLS ハンドシェイク失敗を可視化。
  • セキュリティインシデント対応: マルウェアの C2 通信パターン、侵害範囲のタイムライン構築。
  • プロトコル開発: 自作プロトコルのワイヤ動作確認、QUIC / HTTP/3 / gRPC のフロー解析。
  • CTF: フォレンジック系問題で配布される定番形式。問題ファイルに .pcap / .pcapng がよくある。
  • 性能測定: パケット間隔、ジッタ、ロス率を tshark で集計し、TPS / RTT を裏取りする。

関連形式との比較

  • pcapng vs pcap: 機能差が大きい一方、古いツール (legacy IDS、組み込み機器) は pcap しか読めない。配布用は editcap -F pcap で変換する。
  • ERF (Endace): 商用キャプチャ装置の独自形式。高精度タイムスタンプを持つ。
  • NetFlow / IPFIX: フロー単位の統計レコード。中身ではなく集計値を扱うため軽量だが、ペイロード解析は不能。
  • HAR (HTTP Archive): ブラウザ層の通信記録。アプリ層に絞った解析向きで PCAP より高レベル。

コマンド・ツール

# eth0 で 80/tcp と 443/tcp を採取 (Ctrl+C で停止)
sudo tcpdump -i eth0 -w cap.pcap 'tcp port 80 or tcp port 443'

# スナップ長を全長にして取りこぼし防止
sudo tcpdump -i eth0 -s 0 -w full.pcap

# ファイルを Wireshark 表現フィルタで絞り込み
tshark -r cap.pcapng -Y 'http.request.method == "POST"'

# pcapng → pcap (旧ツール互換)
editcap -F pcap cap.pcapng cap.pcap

# 大容量を時間で分割しながら採取 (60 秒ごと、5 ファイル循環)
sudo tcpdump -i eth0 -G 60 -W 5 -w 'cap-%H%M%S.pcap'

# TLS 復号 (SSLKEYLOGFILE を渡せば平文に近づく)
SSLKEYLOGFILE=keys.log chromium ...
wireshark -o tls.keylog_file:keys.log cap.pcapng

注意点

  • 機微情報の混入: ペイロード平文・Cookie・JWT などが丸ごと保存される。社外共有時はマスキング (tcprewriteeditcap --secrets 等) を検討。
  • サイズ爆発: 本番回線では数分で GB 級になる。BPF フィルタ (tcp port 443 等) で対象を絞ること。
  • スナップ長 (snaplen): 既定で 262144 など切り詰められ、ペイロードが完全に取れていない罠あり。-s 0 で全長指定。
  • タイムスタンプ精度: pcap はマイクロ秒、pcapng はナノ秒対応。NIC の TS が無いと OS タイマー精度に依存。
  • 暗号化通信: TLS / SSH の本文は鍵が無いと復号不能。必要なら事前に SSLKEYLOGFILE を仕込む。

関連リンク

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ISO(.iso)
  2. IMG(.img)
  3. VHD / VHDX(.vhd / .vhdx)
  4. QCOW2(.qcow2)
  5. OVA / OVF(.ova / .ovf)
  6. PEM(.pem)
  7. CRT / CER / DER(.crt / .cer / .der)
  8. PFX / P12(.pfx / .p12)
  9. PCAP / PCAPNG(.pcap / .pcapng)
  10. DMP / コアダンプ(.dmp / .core)

最近更新/作成されたページ