プロトコルリバースエンジニアリング は何をしますか?
ACTION REQUIRED(読了後即実行)
NOW: ../field-journal/precedent-reverse.md を読み、許可と通常の操作境界を確認する
NOW: タスクがプロトコル/トラフィック/シリアライズ形式のリバースであること(純粋なWebパラメータ署名ではない → js-reverse/)
NOW: 対象ネットワークとのやり取りがある場合 → ../scripts/case-init.ps1 でスコープを設定;auth が許可されていない限り、対象へのACTを禁止する
NEXT: ../tool-index.md を読む;不足ツールはbootstrapする(tshark/wireshark等は手動でインストールが必要な場合あり)
ACT: ワークフローのPhase 1に進み、フレームレイアウトまたはメッセージディクショナリのドラフトを作成する
適用シナリオ
- カスタムTCP/UDPバイナリプロトコル
- Protobuf / gRPC / FlatBuffers / MessagePack
- WebSocket / MQTT / プライベートRPC
- PCAP / PCAPNGからのフィールドとステートマシンの復元
- クライアント-サーバー間の検証、シーケンス番号、暗号化フレームヘッダー
本スキルを使わないケース
| 状況 | 参照先 |
|---|
| HTTPパラメータ署名 / JS暗号化のみ | js-reverse/ |
| TLS証明書の問題のみ | pentest-tools/ またはブラウザプロキシ |
| ファームウェア内プロトコルスタックの深掘り + エミュレーション | firmware-pentest/ を先に実行し、その後本スキルに戻る |
ワークフロー
Phase 1 — 取得とトリアージ
□ サンプルを入手:PCAP / プロキシエクスポート / クライアントログ / バイナリ
□ 方向をマーク:C→S / S→C;ハンドシェイク、ハートビート、再接続の有無
□ 固定ヘッダー?マジックナンバー?長さフィールド?TLV?固定長?
□ 圧縮(zlib/gzip/lz4)または暗号化(AES/ChaChaフレーム内)の有無
□ tshark -r cap.pcap -T fields -e frame.number -e ip.src -e tcp.payload
Phase 2 — フレームレイアウトの復元
□ 複数の同一タイプメッセージをアライメントし、不変バイト / 自己増分シーケンス番号を探す
□ 長さフィールド:ビッグエンディアン/リトルエンディアン、ヘッダー含む/含まない
□ チェックサム:CRC16/32、checksum、HMACの位置
□ ステートマシンを描画:Connect → Auth → Ready → Request/Response → Close
□ ツール:Wiresharkカスタムディセクタのドラフト / ImHex / 010 Editorテンプレート / Kaitai Struct
Phase 3 — シリアライズと暗号化
□ Protobuf:.protoの復元(blackboxprotobuf / pbtk / protoc --decode_raw)
□ gRPC:HTTP/2ヘッダー + protobufボディ
□ 暗号化:鍵導出を探す(クライアントso/dll/JS)→ ida-reverse / js-reverse / apk-reverseと連携
□ リプレイ:許可されたスコープ内でのみ;無害なフィールドから始め、機密操作は後で
Phase 4 — 成果物
MUST 成果物:
- メッセージタイプテーブル(name / opcode / fields)
- 少なくとも1つの再現可能なデコードコマンドまたはスクリプト
- Evidence:元のhex抜粋 + デコード結果(匿名化済み)
ツールチェーン
| ツール | 必須 | 用途 | インストール方法 |
|---|
| tshark / Wireshark | 強く推奨 | PCAP解析 | 手動 / winget |
| Python3 | はい | デコードスクリプト | システム |
| blackboxprotobuf | オプション | 未知のprotobuf | pip |
| ImHex / 010 | オプション | 構造テンプレート | 手動 |
| IDA / r2 / Ghidra | 必要に応じて | クライアントシリアライズ関数 | 対応スキルを参照 |
参考
references/protocol-workflow.md — フレームレイアウトとProtobufクイックリファレンス
- 関連スキル:
../ida-reverse/ ../js-reverse/ ../firmware-pentest/ ../pentest-tools/
ルーティングコンテキスト
上流: MASTER-ROUTING R21 · routing.md
下流: クライアントアルゴリズムが必要な場合 → ida-reverse/js-reverse;リプレイが必要な場合 → pentest-tools/api-security
同列: malware-analysis(C2プロトコル)、digital-forensics(トラフィックフォレンジック)
タスク完了チェックリスト