コンテンツにスキップ

アプリ層キャプチャ

プロキシにも NIC にも手が届かないプログラムがあります。証明書ピンニングを使う、プロキシを完全に無視する、あるいは独自暗号を使うプログラムです。アプリ層キャプチャは別のルートを取ります。プログラムの内部から直接平文を読み取るのです。証明書はインストールせず、プロキシも設定せず、NIC もキャプチャしないため、これらの「防御」はいずれも通用せず、それでも実際に何を送受信しているのかが見えます。これは一般的なキャプチャツールにとって最も典型的な盲点であり、このモードの切り札です。


1. 他のツールが平文を得られないものでも、これなら得られる

Section titled “1. 他のツールが平文を得られないものでも、これなら得られる”
対象プログラムの「防御」 プロキシキャプチャ NIC キャプチャ アプリ層キャプチャ
証明書ピンニング ❌ 接続できない/エラーになる 🔒 暗号文のみ ✅ 平文
システムプロキシを無視 ❌ キャプチャできない 🔒 暗号文のみ ✅ 平文
独自・非標準の暗号 ❌ 復号できない 🔒 暗号文のみ ✅ 平文

原理はシンプルです。プログラムの内部から直接平文を読み取る方式で、中間者もおらず、証明書にも一切手を触れません。だから「中間者」や「証明書」を狙った防御はどれも通用しないのです。

実際の結果:実行中のプログラムを選ぶと、その送受信した平文を内部から直接読み取り、方向(送信↑/受信↓)ごとに1件ずつ一覧表示する。詳細にはリクエストの HTTP 平文がまるごと表示される


暗号ライブラリや技術スタックを選り好みしません。プログラム内部から平文を読み取る方式は、プロキシや NIC よりもはるかに多くのプログラムをカバーします

  • プログラムが主流の暗号ライブラリを使っていようと、マイナーなものを使っていようと、内部から平文を読み取れます。
  • ネイティブプログラムであろうと、さまざまなクロスプラットフォームフレームワーク(デスクトップクライアント、クロスプラットフォームアプリなど)で書かれたアプリであろうと、同じように対応できます。
  • オペレーティングシステム内蔵の暗号を使って通信するプログラムさえカバーします。.NET / PowerShell など、Windows のシステムネットワークスタックを使うプログラムも含みます。これらは他のツールが最も苦戦する盲点であることが多いのですが、ここでは変わらず内部から平文を読み取れます。
  • ひとことで言えば、ブラウザ、デスクトップクライアント、ネイティブプログラム、他のツールでは「暗号文のみ」となる多くの対象が、ここではまさに平文で見えるのです。

3. より手ごわいケースにも対応

Section titled “3. より手ごわいケースにも対応”

最も手ごわいプログラムに向けて、さらに2つの手段があります。

  • 「ソケットトラフィック」という、より低レベルのフォールバック軽量化されている、シンボルが除去されている、あるいは新しい技術スタック(例えば純粋な Go、Rust、または Windows のシステムネットワークスタックの利用)で書かれたプログラムに対して、通常の方法では暗号化・復号のエントリーポイントが見つからないとき、このスイッチをオンにするとより低レベルのルートでデータを取得し、それでも平文を得られます。プログラムの暗号化・復号のエントリーポイントを特定できるかどうかに依存せず、NIC にも依存しません。他のツールが完全に行き詰まる多くのプログラムを、この方法で扱えます。
  • 「起動の瞬間」をキャプチャ:多くの認証やハンドシェイクは、プログラムが最初に起動するその瞬間に行われます。先にプログラムを閉じてツールに起動させれば、この起動直後のトラフィックもキャプチャされるので、あの重要な最初のリクエストを取りこぼしません。

新規セッション・アプリ層キャプチャ:実行中のプログラムを選ぶ(またはプログラムのパスを入力する)と内部から直接平文を読み取る。「ターゲットを再起動」にチェックを入れると起動直後をキャプチャでき、「ソケットトラフィック」でより低レベルのフォールバックを使える


4. キャプチャ後:理解し、デコードする

Section titled “4. キャプチャ後:理解し、デコードする”

内部から読み取った平文は、他のすべてのキャプチャ方法と同じ処理を経ます。

  • 複数の表示方法:構造化表示、整形テキスト、16進、そして自動判別があり、送受信それぞれの方向で個別に切り替えられます。詳しくはデータの表示とデコードを参照してください。
  • 自動展開と自動判別:gzip / brotli / deflate / zstd を自動展開し(多重に重なった圧縮も含む)、JSON、XML、フォーム、protobuf / gRPC などを自動判別して整形します。
  • カスタムコーデック:独自・社内のソケットプロトコルには、短いスクリプトを書いて読み方を教えられます。詳しくはカスタムプロトコルのデコードを参照してください。

  • 最適な用途:証明書ピンニングを使う、プロキシを無視する、または独自・非標準の暗号を使うプログラムで、プロキシでも NIC でも平文が得られないもの。
  • 実行中のプログラムにそのまま作用:実行中のプログラムを選べば、その場で内部から平文を読み取れます。再起動も設定変更も不要です(プログラムのパスを入力してツールに起動させることもできます)。
  • 選択したプログラムのみが対象:デフォルトでは、そのプログラムのすべての子プロセスへ自動的には広がりません。マルチプロセス/マルチウィンドウのプログラムは、それぞれ個別に選択する必要がある場合があります。
  • システムレベルキャプチャへ引き継ぐべきときmacOS の内蔵システムアプリや、特に手ごわく深く隠れたアプリは、外部からのあらゆる介入を拒むため、このモードでは入り込めません。そうした対象にはシステムレベルキャプチャ(プログラムの内部には入らず、システムの低いレイヤーから観測する方式)に切り替えてください。

6. 4つのローカルキャプチャ方法の選び方

Section titled “6. 4つのローカルキャプチャ方法の選び方”
あなたの状況 使うべき方法
すでに実行中のプログラム/証明書ピンニングを使う/プロキシを無視する/独自暗号を使う アプリ層キャプチャ(このページ)
コマンドで起動できる通常のプログラム(ブラウザ/スクリプト/CLI) プロセス単位のキャプチャ(より手軽)
マシン上のすべてのトラフィック、または非 HTTP トラフィックを見たい NIC キャプチャ
macOS の内蔵システムアプリ/手ごわいアプリ システムレベルキャプチャ

関連:プロキシキャプチャ · 証明書ピンニングの解除 · データの表示とデコード