Inspect network traffic on Android

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.cerhash_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!

コメントする