Android 開発者として、私は自分の Android デバイスでネットワーク トラフィックを検査したいです。 自分のアプリでは、実際、HTTP (s) トラフィックをデバッグするのに役立つツールがたくさんあります。 しかし、どのように他の様々なアプリを監視することができます。
この記事では、mitmproxy ツールを使ってそれを行うお手伝いをします。
簡単に言うと、mitmproxy は HTTP および HTTPS の対話型中間者プロキシであり、コンソール インターフェイスがあり、何より無料です!
その仕組みを理解するには、こちらのドキュメントを読むとよいでしょう。
前提条件
- Mitmproxy tool
- Android Emulator with root permission
重要事項:エミュレータを作るとき、ターゲット (android version) で “(Google APIs)” を選択しなければならず、 “(Google Play” を選択しないと adb root access が取得できなくなります。
Idea
理想的には、ユーザー追加 CA として mitmproxy CA 証明書を手動でインストールして完了です!
残念ながら、Android 7 以降、アプリはユーザー追加 CA を使用するように設定されていない限り、ユーザー追加 CA を無視するようになりました。 また、ほとんどのアプリケーションは、ユーザー証明書を使用することを明示的にオプトインしません。 そのため、mitmproxy CA 証明書を、信頼できる CA としてシステム証明書ストアに配置する必要があります。
Create mitmproxy certificate
- Install mitmproxy
brew install mitmproxy
- Generate certificate
mitmproxy
Rename certificate
- Enter your certificate folder
cd ~/.mitmproxy/
- CA Certificates in Android is stored by the name of their hash, を、拡張子として’0’を付けてください。 ここで、証明書のハッシュを生成します
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1
- 例えば。 出力は
hash_value.
mitmproxy-ca-cert.cer
をhash_value.0
にコピーして、システム証明書を使用する準備ができました
cp mitmproxy-ca-cert.cer hash_value.0
Inert certificate into system certificate store
- Enter Android SDK 内の emulator フォルダ
cd .../Android/SDK/emulator/
- Get your AVDs list with
emulator -list-avds
./emulator -list-avds
- Start your android emulator with
-writable-system
option in the Android SDK. に書き込むため/system
./emulator -avd <avd_name_here> -writable-system
- adb を root で再起動
adb root
- システムパーティションを書き込み可能に再マウント
adb shell "mount -o rw,remount /"
- 自分のパーティションをプッシュします
。 証明書をシステムの証明書ストアに格納し、ファイルのパーミッションを設定する
adb push ~/.mitmproxy/hash_value.0 /system/etc/security/cacerts
adb shell "chmod 664 /system/etc/security/cacerts/hash_value.0"
- Reboot your emulator
adb reboot
ここで、エミュレータにCA証明書をインストールしました。
Setup Proxy on Emulator
- Open Emulator Settings, add manual proxy with hostname: 127.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.0.0.1 とポート 8080
Launch the tool and see the magic!
- mitmproxy -> はインタラクティブな TUI を提供します
- mitmdump -> はシンプルなターミナル出力を提供します
- mitmweb -> はブラウザ ベースの GUI です
たとえば、以下のように Youtube アプリケーションを開いてトラフィックをモニターしています。
- Run
mitmproxy
- Run
mitmweb
API詳細
を見てみると。
Voila!