Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
frida-interception-and-unpinning — Fridaスクリプトを使用して、実行時にモバイルアプリケーションを書き換え、すべてのHTTPSトラフィックを直接MitMするためのツールです。 | Kitploit
ツール/GitHubGitHub/httptoolkit/frida-interception-and-unpinning
AndroidセキュリティiOSセキュリティウェブプロキシと傍受モバイルアプリペンテストリバースエンジニアリングペネトレーションテストモバイルセキュリティ
GitHubhttptoolkit/frida-interception-and-unpinning

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

frida-interception-and-unpinning

Fridaスクリプトを使用して、実行時にモバイルアプリケーションを書き換え、すべてのHTTPSトラフィックを直接MitMするためのツールです。

リポジトリを見るウェブサイト
2.3k2922日前Kitploit レビュー済み

Frida モバイル傍受スクリプト Funded by NLnet - NGI Zero Entrust

HTTP Toolkit の一部: HTTP(S) の構築・テスト・デバッグのための強力なツール

このリポジトリには、モバイルデバイスでの完全自動化された HTTPS MitM 傍受に必要なすべてを実行するために設計された Frida スクリプトが含まれています。

このスクリプト群は、Android と iOS での HTTP(S) トラフィックの MitM 傍受のために、傍受の処理、証明書の信頼の管理、証明書ピンニングとトランスペアレンシー検証の無効化をまとめて行うためにすべて一緒に使用することもできますし、特定の機能だけをフックするために個別に使用・調整することもできます。

スクリプトは以下を自動的に処理できます:

  • トラフィックの HTTP(S) プロキシへのリダイレクト - システム設定の変更と、すべてのソケット接続の直接リダイレクトの両方。
  • 指定した CA 証明書をシステムのトラストストアに注入し、接続でデフォルトで信頼されるようにする。
  • 既知の証明書ピンニングおよび証明書トランスペアレンシーのツールの多く(すべて?)をパッチし、積極的にブロックされている場合でも自分の CA 証明書による傍受を可能にする。
  • Android では、フォールバックとして: 残存するピンニング失敗を自動検出し、難読化された証明書ピンニングの自動パッチを試みる(完全に難読化されたアプリでは、最初のリクエストが失敗する可能性がありますが、これにより追加のパッチがトリガーされ、以降のすべてのリクエストが正しく機能します)。
  • 一般的な root 検出と脱獄検出の多くを無効化する。
  • ほとんどの HTTP/3 接続(ポート 443 へのすべての UDP)をブロックし、傍受が不便な場合にアプリが HTTP/2 または HTTP/1 にフォールバックするようにする。

Android スタートアップガイド

  1. MitM プロキシ(例: HTTP Toolkit)を起動し、ADB に接続された root 化された Android デバイスまたはエミュレータをセットアップします。
  2. MitM プロキシのポート(例: 8000)と PEM 形式の CA 証明書を確認します。
    • CA 証明書は -----BEGIN CERTIFICATE----- で始まる必要があります。テキストエディタで開くと、この内容を確認して抽出できます。
    • HTTP Toolkit では、両方の詳細が Intercept ページの 'Anything' オプションにあります。
  3. config.js を開き、以下の詳細を追加します:
    • CERT_PEM: PEM 形式の CA 証明書
    • PROXY_PORT: プロキシのポート
    • PROXY_HOST: デバイスから見たプロキシのアドレス(または adb reverse tcp:$PORT tcp:$PORT を使用してポートを ADB 経由で転送し、ホストに 127.0.0.1 を使用します)
  4. デバイスに Frida をインストールして起動します。
    • ここでの手順は、特定のデバイスと構成によって異なる場合があります。
    • 例: github.com/frida/frida から関連する frida-server をダウンロードし、解凍して、adb push でデバイスに転送し、次の 4 つのコマンドで実行します: adb shell、su、、。

iOS スタートアップガイド

  1. MitM プロキシ(例: HTTP Toolkit)を起動し、コンピュータに接続された脱獄済み iOS デバイスをセットアップします。
  2. MitM プロキシのポート(例: 8000)と PEM 形式の CA 証明書を確認します。
    • CA 証明書は -----BEGIN CERTIFICATE----- で始まる必要があります。テキストエディタで開くと、この内容を確認して抽出できます。
    • HTTP Toolkit では、両方の詳細が Intercept ページの 'Anything' オプションにあります。
  3. config.js を開き、以下の詳細を追加します:
    • CERT_PEM: PEM 形式の CA 証明書
    • PROXY_PORT: プロキシのポート
    • PROXY_HOST: デバイスから見たプロキシのアドレス
  4. デバイスに Frida をインストールして起動します。
    • ここでの手順は、特定のデバイスと構成によって異なる場合がありますが、通常は Cydia/Sileo などから https://build.frida.re をパッケージソースとして利用できます。
    • コンピュータ上で frida-ps -Uai を実行して、正しく動作していることを確認してください。
  5. frida-ps -Uai で対象アプリの ID を確認します(簡単なテストには、github.com/httptoolkit/ios-ssl-pinning-demo を使用してみてください。ID は com.httptoolkit.ios-pinning-demo です)
  6. Frida を使用して、スクリプトを注入した状態で対象のアプリを起動します(config.js から始めます)。使用するスクリプトは任意ですが、iOS の場合、次のコマンドが良い出発点です:

スクリプト

上記のコマンドは関連するすべてのスクリプトを使用していますが、通常は任意のサブセットを使用できます。ただし、ほぼすべてのケースで config.js を最初のスクリプトとして含める必要があります(他のスクリプトで使用されるいくつかの変数を定義します)。

たとえば、プロキシと証明書の設定を別の場所で処理し、難読化フォールバックなしで、Android でピンニング解除のみを行う場合は、次のように実行できます:

root@kitploit:~
frida -U \
    -l ./config.js \
    -l ./android/android-certificate-unpinning.js
    -f $PACKAGE_ID

各スクリプトには、何を行うか、どのように機能するかについての詳細なドキュメントが先頭の大きなコメントセクションに含まれています。スクリプトは次のとおりです:

  • config.js

    他のスクリプトで使用される変数を定義します:

    • CERT_PEM - 信頼する追加の CA 証明書(PEM 形式)
    • PROXY_HOST - 使用するプロキシサーバーの IP アドレス(IPv4)(ピンニング解除のみを行う場合は不要)
    • PROXY_PORT - 使用するプロキシサーバーのポート(ピンニング解除のみを行う場合は不要)
    • DEBUG_MODE - デフォルトは false ですが、これを true にすると、デバッグや問題のリバースエンジニアリングに役立つ追加の出力が多数有効になります。
    • BLOCK_HTTP3 - デフォルトは true で、ポート 443 へのすべての UDP 接続をドロップして HTTP/3 をブロックします。

    これは、他のスクリプトよりも前にコマンドラインで指定する必要があります。

  • native-connect-hook.js

    すべてのネットワークトラフィックを直接キャプチャし、すべての接続を設定されたプロキシホストとポートにルーティングします。

    これは すべての ネットワーク接続に適用される低レベルのフックです。これにより、プロキシ設定を無視する接続や他の raw ソケット接続を行う接続も含め、すべての接続が強制的に対象のプロキシサーバーにリダイレクトされ、有効な場合は HTTP/3 接続もブロックされます。

    このフックは libc に適用され、Android、Linux、iOS、およびその他の多くの関連環境で動作します。

  • native-tls-hook.js

これらのスクリプトは、より広範な HTTP Toolkit プロジェクトの一部であり、NGI Zero Entrust Fund を通じて資金提供されています。この基金は NLnet によって設立され、欧州委員会の Next Generation Internet プログラムから資金提供を受けています。詳細は NLnet プロジェクトページ をご覧ください。

NLnet 財団ロゴ NGI Zero Entrust ロゴ

ツールをダウンロード
chmod +x /.../frida-server
/.../frida-server
  • 問題がある場合は、コマンドを実行する前にデバイスがオンになっていて接続されていること(adb devices を使用)を確認してください。Frida はデバイス上で root としてのみ実行されることに注意してください。上記の例で su が提供するのは、root 化されたデバイスで実行した場合の root 権限です。su などを実行した後に root になっているか確認するには、シェルで whoami を実行して root と表示されるか確認してください。
  • 対象のアプリのパッケージ ID を確認します(簡単なテストには、github.com/httptoolkit/android-ssl-pinning-demo を使用してみてください。パッケージ ID は tech.httptoolkit.pinning_demo です)
  • Frida を使用して、スクリプトを注入した状態で対象のアプリを起動します(config.js から始めます)。使用するスクリプトは任意ですが、Android の場合、次のコマンドが良い出発点です:
    root@kitploit:~
    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
    
  • 対象のすべてのトラフィックを調査・確認・変更してください!問題が発生した場合は、issue を開いて、これらのスクリプトをさらに改善するのにご協力ください。
  • root@kitploit:~
    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
    
  • 対象のすべてのトラフィックを調査・確認・変更してください!問題が発生した場合は、issue を開いて、これらのスクリプトをさらに改善するのにご協力ください。
  • BoringSSL ベースのライブラリのすべての TLS 検証を変更して、設定した CA 証明書を信頼するようにします。

    特に、これは iOS の組み込み BoringSSL API をフックします。これは iOS が TLS 証明書の検証を処理する通常の方法です(そのため、ほとんどすべての iOS HTTPS 傍受に十分です)が、iOS と Android の両方のいくつかの他のケースでも使用されます。

    これにより、すべての証明書に対して自分の CA が事実上信頼され、その CA に対するすべての証明書ピンニング、証明書トランスペアレンシー、およびその他の制限が無効になります。他の多くの Frida フックとは異なり、これは TLS 検証を完全に無効にするものではない(これは非常に安全ではありません)ことに注意してください。代わりに、特定の CA 証明書を使用するすべての接続が信頼されるように検証をオーバーライドし、第三者による傍受を許可するために検証を緩めることはありません。

  • android/

    • android-proxy-override.js

      対象アプリの Android プロキシ設定をオーバーライドし、正常なトラフィックがすべてプロキシサーバーを経由してリダイレクトされ、傍受されるようにします。

    • android-system-certificate-injection.js

      ネイティブの Android API を変更して、すべてのトラストストアが追加の CA 証明書をデフォルトで信頼するようにし、暗号化された TLS トラフィックをキャプチャできるようにします。

    • android-certificate-unpinning.js

      証明書ピンニング(システムで信頼されているすべての証明書ではなく、認識された証明書の小さなセットのみを受け入れる)や証明書トランスペアレンシー(使用されるすべての証明書が公開証明書ログに登録されていることを検証する)など、追加の証明書制限のための一般的な既知のテクニックの多くを変更または無効にします。

    • android-certificate-unpinning-fallback.js

      未処理の証明書検証失敗を検出し、自動生成されたフォールバックパッチで未知の認識されないケースを処理しようとします。これはより実験的で、少し予測できない可能性がありますが、難読化されたケースには非常に役立ち、一般的には(最初の失敗の後に)ピンニングの問題を修正するか、少なくとも Frida のログ出力でさらなるリバースエンジニアリングのためのコードを強調表示します。このスクリプトは android-certificate-unpinning.js と一部のロジックを共有しており、単独では使用できません。このスクリプトを使用する場合は、フォールバックではないピンニング解除スクリプトも含める必要があります。

    • android-disable-root-detection.js

      root 化された Android デバイスの検出を防ぐために、ネイティブ層と Java 層の両方で一般的な root 検出チェックを無効にします。

      このスクリプトは、既知の root インジケーター(su、Magisk、関連アプリなど)に対するファイルシステムアクセス、シェルコマンド、パッケージ検索をインターセプトし、主要なシステムプロパティ(ro.secure、ro.debuggable など)を偽装して本番環境をシミュレートします。

      ファイル存在チェックやシェルコマンド実行などの疑わしい動作をブロックし、標準的および高度な root チェックの両方を使用するアプリでの検出回避に役立ちます。

    • android-disable-flutter-certificate-pinning.js

      Flutter ベースのアプリケーション(通常はシステムの証明書設定を無視します)が、明示的な証明書ピンニングのほとんどの場合でも、CA 証明書を信頼するようにします。このスクリプトは今のところ実験的です。

  • ios/

    • ios-connect-hook.js

      すべての iOS ネットワークトラフィックを直接キャプチャし、すべての接続を設定されたプロキシホストとポートにルーティングします。

      これは すべての ネットワーク接続に適用される低レベルのフックです。これにより、プロキシ設定を無視する接続や他の raw ソケット接続を行う接続も含め、すべての接続が強制的に対象のプロキシサーバーにリダイレクトされます。

    • ios-disable-detection.js

      JailMonkey の脱獄検出を無効にします。

  • utilities/test-ip-connectivity.js

    通常、傍受自体の一部としてこれを使用したいとは思わないかもしれませんが、設定のセットアップの一部としては非常に役立ちます。

    このスクリプトを使用すると、候補となる IP アドレスのリストとターゲットポートを設定し、プロセスに各アドレスをテストさせ、最初に到達可能なアドレスについて Frida クライアントにメッセージを送信できます。これは、ターゲットデバイス(スマートフォン)からプロキシサーバー(コンピュータ)に到達するためにどの IP アドレスが最適かわからない場合に、自動化された設定プロセスに役立ちます。