
Fridaスクリプトを使用して、実行時にモバイルアプリケーションを書き換え、すべてのHTTPSトラフィックを直接MitMするためのツールです。
HTTP Toolkit の一部: HTTP(S) の構築・テスト・デバッグのための強力なツール
このリポジトリには、モバイルデバイスでの完全自動化された HTTPS MitM 傍受に必要なすべてを実行するために設計された Frida スクリプトが含まれています。
このスクリプト群は、Android と iOS での HTTP(S) トラフィックの MitM 傍受のために、傍受の処理、証明書の信頼の管理、証明書ピンニングとトランスペアレンシー検証の無効化をまとめて行うためにすべて一緒に使用することもできますし、特定の機能だけをフックするために個別に使用・調整することもできます。
スクリプトは以下を自動的に処理できます:
-----BEGIN CERTIFICATE----- で始まる必要があります。テキストエディタで開くと、この内容を確認して抽出できます。config.js を開き、以下の詳細を追加します:
CERT_PEM: PEM 形式の CA 証明書PROXY_PORT: プロキシのポートPROXY_HOST: デバイスから見たプロキシのアドレス(または adb reverse tcp:$PORT tcp:$PORT を使用してポートを ADB 経由で転送し、ホストに 127.0.0.1 を使用します)frida-server をダウンロードし、解凍して、adb push でデバイスに転送し、次の 4 つのコマンドで実行します: adb shell、su、chmod +x /.../frida-server、/.../frida-server。adb devices を使用)を確認してください。Frida はデバイス上で root としてのみ実行されることに注意してください。上記の例で su が提供するのは、root 化されたデバイスで実行した場合の root 権限です。su などを実行した後に root になっているか確認するには、シェルで whoami を実行して root と表示されるか確認してください。tech.httptoolkit.pinning_demo です)config.js から始めます)。使用するスクリプトは任意ですが、Android の場合、次のコマンドが良い出発点です:
frida -U \
-l ./config.js \
-l ./native-connect-hook.js \
-l ./native-tls-hook.js \
-l ./android/android-proxy-override.js \
-l ./android/android-system-certificate-injection.js \
-l ./android/android-certificate-unpinning.js \
-l ./android/android-certificate-unpinning-fallback.js \
-l ./android/android-disable-root-detection.js \
-f $PACKAGE_ID
-----BEGIN CERTIFICATE----- で始まる必要があります。テキストエディタで開くと、この内容を確認して抽出できます。config.js を開き、以下の詳細を追加します:
CERT_PEM: PEM 形式の CA 証明書PROXY_PORT: プロキシのポートPROXY_HOST: デバイスから見たプロキシのアドレスhttps://build.frida.re をパッケージソースとして利用できます。frida-ps -Uai を実行して、正しく動作していることを確認してください。frida-ps -Uai で対象アプリの ID を確認します(簡単なテストには、github.com/httptoolkit/ios-ssl-pinning-demo を使用してみてください。ID は com.httptoolkit.ios-pinning-demo です)config.js から始めます)。使用するスクリプトは任意ですが、iOS の場合、次のコマンドが良い出発点です:
frida -U \
-l ./config.js \
-l ./ios/ios-connect-hook.js \
-l ./ios/ios-disable-detection.js \
-l ./native-tls-hook.js \
-l ./native-connect-hook.js \
-f $APP_ID
上記のコマンドは関連するすべてのスクリプトを使用していますが、通常は任意のサブセットを使用できます。ただし、ほぼすべてのケースで config.js を最初のスクリプトとして含める必要があります(他のスクリプトで使用されるいくつかの変数を定義します)。
たとえば、プロキシと証明書の設定を別の場所で処理し、難読化フォールバックなしで、Android でピンニング解除のみを行う場合は、次のように実行できます:
frida -U \
-l ./config.js \
-l ./android/android-certificate-unpinning.js
-f $PACKAGE_ID
各スクリプトには、何を行うか、どのように機能するかについての詳細なドキュメントが先頭の大きなコメントセクションに含まれています。スクリプトは次のとおりです:
config.js
他のスクリプトで使用される変数を定義します: