intercepting-mobile-traffic-with-burpsuite について
モバイルアプリのペネトレーションテスト担当者向けに、Burp Suite で通信を傍受するスキルです。Android と iOS のプロキシ設定、アプリとバックエンド間の HTTP 通信分析、証明書の信頼設定とピンニング、API の手動テストを扱い、許可されたテストを対象とします。
主な機能
- 01Burp Suite プロキシリスナーの設定
- 02Android と iOS のプロキシ設定
- 03Burp CA 証明書のインストール
- 04リクエスト、レスポンス、機密データの分析
- 05Repeater による API の手動テスト
- 06証明書ピンニングへの対応
活用シーン
- 01モバイル API の認証と認可の確認
- 02通信中の機密データ漏えいの発見
- 03証明書ピンニング実装の評価
- 04API のインジェクションとアクセス制御のテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill intercepting-mobile-traffic-with-burpsuiteインストール後、Claude Code で/intercepting-mobile-traffic-with-burpsuiteを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
Burp Suite でモバイルトラフィックを傍受する
使用する場面
次の場合にこのスキルを使用します。
- 認証、認可、インジェクションの脆弱性について、モバイルアプリケーションの API エンドポイントをテストする場合
- ペネトレーションテスト中に、モバイルアプリとバックエンドサーバー間で送信されるデータを分析する場合
- 証明書ピンニングの実装と、その回避難易度を評価する場合
- モバイルネットワークトラフィックにおける機密データの漏えいを特定する場合
テストの許可を得ていないアプリケーションからのトラフィックを傍受するために、このスキルを使用しないでください。許可のないトラフィック傍受は、コンピューター詐欺に関する法律に違反します。
前提条件
- テスト用ワークステーションに Burp Suite Professional または Community Edition がインストールされていること
- Burp Suite ホストと同じネットワーク上にある Android デバイス/エミュレーター、または iOS デバイス
- 対象デバイスに Burp Suite CA 証明書がインストールされていること
- Android 7 以降の場合:ネットワークセキュリティ設定の変更、またはシステム CA を信頼させる Magisk モジュール
- SSL ピンニングを回避する場合:Frida + Objection、またはカスタム Frida スクリプト
- プロキシ設定が可能な Wi-Fi ネットワーク
ワークフロー
手順 1:Burp Suite のプロキシリスナーを設定する
Burp Suite > Proxy > Options > Proxy Listeners:
- Bind to address: All interfaces (or specific IP)
- Bind to port: 8080
- Enable "Support invisible proxying"
リスナーがアクティブであることを確認し、共有ネットワーク上でのワークステーションの IP アドレスを控えておきます。
手順 2:モバイルデバイスのプロキシを設定する
Android:
Settings > Wi-Fi > [Network] > Advanced > Manual Proxy
- Host: <burp_workstation_ip>
- Port: 8080
iOS:
Settings > Wi-Fi > [Network] > Configure Proxy > Manual
- Server: <burp_workstation_ip>
- Port: 8080
手順 3:Burp Suite CA 証明書をインストールする
Android(API 24 未満):
# Export Burp CA from Proxy > Options > Import/Export CA Certificate
# Transfer to device and install via Settings > Security > Install from storage
Android(API 24 以降/Android 7 以降): API 24 以降を対象とするアプリは、デフォルトではユーザーがインストールした CA を信頼しません。次の方法があります。
# Option A: Modify app's network_security_config.xml (requires APK rebuild)
# Add to res/xml/network_security_config.xml:
# <network-security-config>
# <debug-overrides>
# <trust-anchors>
# <certificates src="user" />
# </trust-anchors>
# </debug-overrides>
# </network-security-config>
# Option B: Install as system CA (rooted device)
openssl x509 -inform DER -in burp-ca.der -out burp-ca.pem
HASH=$(openssl x509 -inform PEM -subject_hash_old -in burp-ca.pem | head -1)
cp burp-ca.pem "$HASH.0"
adb push "$HASH.0" /system/etc/security/cacerts/
adb shell chmod 644 /system/etc/security/cacerts/$HASH.0
# Option C: Magisk module (MagiskTrustUserCerts)
iOS:
1. Navigate to http://<burp_ip>:8080 in Safari
2. Download Burp CA certificate
3. Settings > General > VPN & Device Management > Install profile
4. Settings > General > About > Certificate Trust Settings > Enable full trust
手順 4:トラフィックを傍受して分析する
プロキシを設定したら、対象アプリを開き、その機能を操作します。
Burp Suite > Proxy > HTTP History:キャプチャしたすべてのリクエストとレスポンスを確認します。
分析する主な項目:
- 認証トークン:JWT の構造、トークンの有効期限、更新の仕組み
- API エンドポイント:RESTful パス、GraphQL クエリ、パラメータのパターン
- 転送中の機密データ:PII、認証情報、財務データ
- レスポンスヘッダー:セキュリティヘッダー(HSTS、CSP、X-Frame-Options)
- エラーレスポンス:スタックトレース、デバッグ情報、内部パス
手順 5:Burp Repeater を使って API の脆弱性をテストする
傍受したリクエストを Repeater に転送し、手動でテストします。
Right-click request > Send to Repeater
Test categories:
- Authentication bypass: Remove/modify auth tokens
- IDOR: Modify user IDs, object references
- Injection: SQL injection, NoSQL injection in parameters
- Rate limiting: Rapid request replay for brute force assessment
- Business logic: Modify prices, quantities, permissions in requests
手順 6:Burp Scanner でテストを自動化する
Right-click request > Do active scan (Professional only)
Scanner checks:
- SQL injection (error-based, blind, time-based)
- XSS (reflected, stored)
- Command injection
- Path traversal
- XML/JSON injection
- Authentication flaws
手順 7:証明書ピンニングに対処する
証明書ピンニングが原因でトラフィックを確認できない場合:
# Frida-based bypass (generic)
frida -U -f com.target.app -l ssl-pinning-bypass.js
# Objection bypass
objection --gadget com.target.app explore
ios sslpinning disable # or
android sslpinning disable
主な概念
| 用語 | 定義 |
|---|---|
| MITM プロキシ | 暗号化されたトラフィックを検査するために TLS 接続を終端し、再確立する中間者プロキシ |
| 証明書ピンニング | OS の信頼ストアに加え、受け入れるサーバー証明書を制限するクライアント側の検証 |
| ネットワークセキュリティ設定 | アプリの信頼アンカー、平文トラフィックポリシー、証明書ピンニングを制御する Android XML 設定 |
| 透過プロキシ | CONNECT リクエストを送信しない、プロキシを認識しないクライアントを処理する Burp の機能 |
| IDOR | 安全でない直接オブジェクト参照。認可チェックを経ずに識別子を操作してリソースにアクセスすること |
ツールとシステム
- Burp Suite Professional:アクティブスキャナーを備えた、フル機能の Web アプリケーションセキュリティテスト用プロキシ
- Burp Suite Community:手動傍受と基本ツールを備えた無料版
- Frida:実行時の SSL ピンニング回避に使用する動的計装ツール
- mitmproxy:プログラムによるトラフィック分析に対応する、Burp Suite のオープンソース代替ツール
- Charles Proxy:モバイル向けの証明書インストールに対応する代替 HTTP プロキシ
よくある落とし穴
- Android 7+ の CA 信頼:ユーザーがインストールした証明書は、API 24+ を対象とするアプリでは信頼されません。システム CA としてインストールするか、アプリを変更する必要があります。
- 証明書の透明性:一部のアプリは、中間者攻撃を検出するために証明書の透明性ログを使用します。アプリで CT が強制されているか確認してください。
- HTTP 以外のプロトコル:Burp Suite が処理できるのは HTTP/HTTPS のみです。WebSocket、MQTT、gRPC、または独自のバイナリプロトコルには Wireshark を使用してください。
- VPN ベースのアプリ:VPN トンネルを使用するアプリは、デバイスのプロキシ設定を迂回します。トラフィックをリダイレクトするには、root 化されたデバイスで iptables ルールが必要になる場合があります。
コメント
Markdown 対応