12
0

Androidエミュレーターの通信をBurp Suiteで取得する

Last updated at Posted at 2023-12-04

エミュレーターの通信を Burp Suite で取りたかったので、手順を簡単にまとめます。
手順として下記2つの方法があります。

検証環境

  • macOS Monterey 12.7.1
  • Android 12.0 Google APIs (API 31) ※root が使用できるもの
  • Burp Suite Professional v2023.10.3.6

ポート転送を利用する方法

複数起動している場合は、適宜 adb -s [デバイスID] を指定してください。

手順

  1. Android エミュレーターを起動する
  2. Burpを Loopback Only (127.0.0.1)8080 ポートで開始する
  3. Androidエミュレーターのプロキシ設定をする ( iptables または Wi-Fi の Proxy 設定)
  4. エミュレーターからホスト側へポート転送を行う
$ adb reverse tcp:8080 tcp:8080

これで Burp で通信が取れるようになっていると思います。

※ポートフォワーディングの一覧表示

$ adb reverse --list

※ポートフォワーディングの削除

$ adb reverse --remove tcp:8080

仮想ネットワークのIPを指定する方法

手順

  1. Android エミュレーターを起動する
  2. Burpを Loopback Only (127.0.0.1)8080 ポートで開始する
  3. 仮想ネットワークのホスト側の IPアドレス(10.0.2.2)でプロキシ設定をする ( iptables または Wi-Fi の Proxy 設定)

これで Burp で通信が取れるようになっていると思います。

エミュレーターのプロキシ設定の例

Burp の証明書は下記を参考に適宜インストールしてください。

iptables で設定する場合

# ポート転送の場合
$ iptables -t nat -A OUTPUT -p tcp --dport [取得したいPORT番号] -j DNAT --to 127.0.0.1:8080

# 仮想ネットのホストIPの場合
$ iptables -t nat -A OUTPUT -p tcp --dport [取得したいPORT番号] -j DNAT --to 10.0.2.2:8080

Android の Wi-Fi から設定する場合

画面: Settings > Network & internet > Internet > Wi-Fi > AndroidWifi > ペンマーク > Advanced options > Proxy
Proxy hostname: 127.0.0.1 (ポート転送の場合)
Proxy hostname: 10.0.2.2 (仮想ネットのホストIPの場合)
Proxy port: 8080

※ Wi-Fi が「制限されたネットワーク」となった場合は、一度 Proxy の設定を削除し再接続してください。

参考記事

12
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
0