banner
南村一童

南村一童

南村一童

MacでAndroid Studioのエミュレータを使用してhttpsをキャプチャする

最近、apk のテスト中に、通常の手法である Burp 証明書のエクスポート、証明書のインストール、Wi-Fi のプロキシ設定を使用しても、https のトラフィックをキャプチャできないことがわかりました(proxifier を使用して Android エミュレータを Burp プロキシ経由で動作させることもできますが、それは避けたいです)。検索エンジンで調べた結果、Android 7.0 以降では、システムはデフォルトでシステム証明書のみを信頼し、ユーザーがインストールした証明書を信頼しなくなったことがわかりました。そのため、さまざまなエミュレータを使用して apk の https パケットをキャプチャする試みが何度か失敗した後、結局 Android Studio を選択しました。証明書をシステム証明書にインストールします。

Burp 証明書の準備#
  1. Burp 証明書のエクスポート
  2. openssl を使用して証明書の形式を変更し、まず Burp 証明書の der 形式を pem 形式に変換し、次に証明書のハッシュを取得します。
openssl x509 -inform DER -in burp.der -out burp.pem 
openssl x509 -inform PEM -subject_hash_old -in burp.pem

image
ファイル名を取得したハッシュに変更します。

mv burp.pem 9a5ba575.0
エミュレータの準備#
  1. Android Studio を開き、新しいエミュレータを作成します。詳細は図を参照してください。
    image.png

システムイメージは必要に応じて選択できます。
image.png

エミュレータの名前を入力し、エミュレータのストレージサイズを設定し、複数のポイントを与えてインストールスペースが不足しないようにします。
image.png

image.png

  1. emulator コマンドを使用してエミュレータを起動します。コマンドのデフォルトの場所は / Users/{{ユーザー名}}/Library/Android/sdk/emulator で、-no-snapshot-load パラメータを追加してエミュレータの状態を保存します。そうしないと、エミュレータを再起動するたびに adb root、remount コマンドを再実行して証明書の権限を変更する必要があります。
すべてのエミュレータを表示する   emulator -list-avds
エミュレータを起動する   emulator @Resizable_API_33 -writable-system -no-snapshot-load

image.png

image.png

証明書のアップロード#
  1. adb コマンドを使用してパーティションを再マウントし、system を読み書き可能にします。
adb root    root権限に入る
adb disable-verity    パーティションチェック機能を無効にする
adb reboot    デバイスを再起動する
adb remount    パーティションを再マウントし、systemパーティションを読み書き可能にする

image.png
image.png
image.png

  1. 証明書のアップロード
adb push 9a5ba575.0 /sdcard    証明書を/sdcardディレクトリにアップロードする
adb shell    システムに入り、whoamiコマンドを使用してrootユーザーかどうかを確認できます
cp /sdcard/9a5ba575.0 /system/etc/security/cacerts/    システムに入った後、証明書をシステムの証明書ディレクトリにコピーする
chmod 644 /system/etc/security/cacerts/9a5ba575.0    証明書の権限を変更する

image.png

  1. 証明書のインストールが成功したかどうかを確認する
    エミュレータの画面で操作し、設定(setting)に移動し、セキュリティ(security)を選択し、その他のセキュリティ設定(more security settings)を選択し、暗号化と資格情報(encryption & credentials)を選択し、信頼された資格情報(trusted credentials)を選択します。
    image.png
Wi-Fi プロキシの設定#

image.png
image.png

キャプチャ成功
image.png

参考記事#

https://www.freebuf.com/articles/system/347725.html
https://developer.android.com/studio/run/emulator-commandline?hl=zh-cn#startup-options
https://developer.android.com/studio/command-line/adb?hl=zh-cn
https://juejin.cn/post/6844903645289398280
https://android.stackexchange.com/questions/232234/why-adb-remount-retruns-remount-failed-on-android-emulator

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。