iOS Burp Suite 設定

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

iOS デバイスへの Burp 証明書のインストール

iOS デバイス上での安全な Web トラフィック解析と SSL pinning のために、Burp Suite は Burp Mobile Assistant を使うか、手動で設定することができます。以下は両方の方法の要約ガイドです。

Burp Mobile Assistant を使った自動インストール

Burp Mobile Assistant は Burp 証明書のインストール、プロキシ設定、そして SSL Pinning のプロセスを簡素化します。詳細は PortSwigger’s official documentation を参照してください。

手動インストール手順

  1. Proxy Configuration: iPhone の Wi-Fi 設定で Burp をプロキシとして設定します。
  2. Certificate Download: デバイスのブラウザで http://burp にアクセスして証明書をダウンロードします。
  3. Certificate Installation: ダウンロードしたプロファイルを Settings > General > VPN & Device Management からインストールし、Certificate Trust Settings で PortSwigger CA を信頼するように有効化します。

Interception Proxy の設定

この設定により、iOS デバイスとインターネット間のトラフィックを Burp を通して解析できます。クライアント間トラフィックをサポートする Wi-Fi ネットワークが必要です。利用できない場合は、usbmuxd 経由の USB 接続が代替手段となります。詳細な手順は PortSwigger のチュートリアル(device configurationcertificate installation)を参照してください。

OpenVPN + iptables REDIRECT による透明プロキシ

ターゲットアプリが設定した HTTP プロキシを無視する場合、代替案として iOS デバイスを researcher-controlled VPN gateway の背後に置き、トラフィックを Burp や mitmproxy に透過的にリダイレクトする方法があります。

これは単体では certificate pinning bypass ではありません。アプリごとやデバイスごとのプロキシを設定せずに、デバイスのトラフィックがインターセプトプロキシに到達するようにネットワーク経路を解決するだけです。アプリが実際に certificate pinning を行っている場合、pinning を別途バイパスしない限り HTTPS の復号は失敗します。

典型的なフロー:

  1. Linux ホスト上で OpenVPN サーバを動作させ、iOS デバイスを接続してそのトラフィックを tun0 に到達させます。
  2. Burp または mitmproxy を VPN リスナーの IP に対してポート 8080 でバインドします。
  3. リダイレクトされたクライアントはプロキシ認識がないため、宛先に直接接続しているかのように通信するため、Burp で invisible proxying を有効にします。
  4. tun0 に到着する TCP の 80443 をローカルのプロキシリスナーにリダイレクトします。
  5. プロキシ済みトラフィックがゲートウェイを離れ、返信が VPN 経由で戻るように、送信インターフェースに対して POSTROUTINGMASQUERADE ルールを追加します。
  6. インターセプトプロキシの CA を iOS デバイスにインストールして信頼させ、システムトラストストアのみに依存するアプリが生成されたリーフ証明書を受け入れるようにします。

Example rules:

# Redirect VPN client traffic into the local interception proxy
iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 443 -j REDIRECT --to-ports 8080

# Allow VPN client traffic to egress back to the Internet
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Notes:

  • これは、ターゲットアプリを変更したり iOS の Wi‑Fi 設定で明示的なプロキシを設定せずに、強制的なインターセプション(forced interception) を行いたい場合に便利です。
  • 443 を Burp にリダイレクトする方法は、インストールした CA を信頼するアプリ、または TLS 検証 / pinning が既にバイパスされているアプリに対してのみ機能します。
  • upstream リポジトリの例スクリプトは IP を受け取り、POSTROUTING ルールで /24 を付加します。実際には固定の /24 を仮定せず、実際の VPN クライアントサブネット を使用してください。
  • Burp を使用する場合は、Proxy –> Options –> Edit listener –> Request handling –> Support invisible proxying を有効にしてください。
  • mitmproxy は、VPN リスナー IP にバインドされ、transparent-mode の要件が満たされていれば同じ配置で利用できます。

Advanced Configuration for Jailbroken Devices

jailbreak されたデバイスを使う場合、USB 経由の SSH(iproxy を介した)はトラフィックを直接 Burp にルーティングする方法を提供します:

  1. SSH 接続確立: iproxy を使って SSH を localhost にフォワードし、iOS デバイスから Burp を実行しているコンピュータへ接続できるようにします。
iproxy 2222 22
  1. リモートポートフォワーディング: iOS デバイスのポート 8080 をコンピュータの localhost にフォワードし、Burp のインターフェースへ直接アクセスできるようにします。
ssh -R 8080:localhost:8080 root@localhost -p 2222
  1. グローバルプロキシ設定: 最後に、iOS デバイスの Wi‑Fi 設定を手動プロキシに設定し、すべての Web トラフィックを Burp 経由にします。

Full Network Monitoring/Sniffing

非 HTTP のデバイストラフィックの監視は、すべての種類のデータトラフィックをキャプチャできるツールである Wireshark を使って効率的に行えます。iOS デバイスのリアルタイムトラフィック監視は、Remote Virtual Interface の作成によって実現されます。詳細は this Stack Overflow post を参照してください。開始前に macOS システムに Wireshark をインストールしておく必要があります。

手順は主に以下のステップを含みます:

  1. iOS デバイスと macOS ホストを USB で接続します。
  2. トラフィック監視に必要な iOS デバイスの UDID を確認します。これは macOS の Terminal でコマンドを実行することで行えます:
$ rvictl -s <UDID>
Starting device <UDID> [SUCCEEDED] with interface rvi0
  1. UDIDの識別後、 Wireshark を起動し、データキャプチャのために “rvi0” インターフェイスを選択します。
  2. 特定のIPアドレスに関連するHTTPトラフィックをキャプチャするなどのターゲット監視には、Wiresharkの Capture Filters を使用できます:

Burp Cert Installation in Simulator

  • Burp証明書のエクスポート

In Proxy –> Options –> Export CA certificate –> Certificate in DER format

  • 証明書を ドラッグ&ドロップ して Emulator 内に配置する
  • エミュレータ内で Settings –> General –> Profile –> PortSwigger CA に移動し、証明書を verify する
  • エミュレータ内で Settings –> General –> About –> Certificate Trust Settings に移動し、PortSwigger CA を enable する

おめでとうございます。iOS simulator に Burp CA 証明書を正常に設定しました。

Tip

iOS simulator は MacOS のプロキシ設定を使用します。

MacOS Proxy Configuration

Burp をプロキシとして設定する手順:

  • System Preferences –> Network –> Advanced に移動
  • Proxies タブで Web Proxy (HTTP)Secure Web Proxy (HTTPS) を選択
  • 両方のオプションで 127.0.0.1:8080 を設定

  • Ok をクリックし、その後 Apply をクリック

参考資料

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする