
任意のFlutterおよびShorebirdバージョン向けの自動化されたSSLピンニングバイパス — PyGhidraの静的解析がBoringSSLを自動発見し、すぐに実行可能なFridaおよびRenefスクリプトを生成します
PyGhidra を使用して libflutter.so をリバースエンジニアリングし、SSL 証明書検証関数の位置を特定した後、Frida と Renef の両方に対応したすぐに使えるバイパススクリプトを生成します。
libflutter.so をヘッドレスで読み込み、定義されたすべての文字列から ssl_client をスキャンします。ssl_crypto_x509_session_verify_cert_chain です。flutter_ssl_pinning.js) — 実行時に戻り値を ptr(1) (SSL_VERIFY_OK) にパッチします。flutter_ssl_pinning.lua) — Memory.patch を使用して関数エントリを (ARM64) で上書きします。MOV X0, #1 ; RET環境変数
GHIDRA_INSTALL_DIRを設定するか、--ghidra-install-dirを指定してください。
# libflutter.so を解析し、両方のスクリプトを生成
python3 flutter_ssl_pinning.py libflutter.so
# Frida で実行
frida -U -f com.example.app -l flutter_ssl_pinning.js
# Renef で実行
renef -s com.example.app -l flutter_ssl_pinning.lua
| 引数 | デフォルト値 | 説明 |
|---|---|---|
binary | (必須) | libflutter.so へのパス |
output | flutter_ssl_pinning | 出力のベース名 (<name>.js と <name>.lua が生成されます) |
--module | libflutter.so | ターゲットプロセス内のモジュール名 |
--ghidra-install-dir | 自動 | Ghidra のインストールディレクトリ |
| ファイル | ツール | 仕組み |
|---|---|---|
flutter_ssl_pinning.js | Frida | Interceptor.attach + retval.replace(ptr(1)) |
flutter_ssl_pinning.lua | Renef | Memory.patch (MOV X0, #1 ; RET) |
生成された出力のサンプルは example/ ディレクトリを参照してください。
| ターゲット | 状態 |
|---|---|
Google Flutter の libflutter.so (arm64-v8a) | ✅ 動作確認済み |
| Shorebird パッチ適用済み Flutter ビルド | ✅ 動作確認済み |
| Ghidra 12.x + pyghidra | ✅ 動作確認済み |
| Frida 17.x および 16.x | ✅ 動作確認済み |
| Renef (最新版) | ✅ 動作確認済み |
Google Flutter と Shorebird はどちらも同じ
libflutter.soSSL エンジンを使用しています。 同じ Flutter エンジンバージョンでは、ビルドタイプに関係なく自動検出される RVA は同一です。
プロキシベースの MITM のためにピンニングをバイパスするだけでなく、自己完結型の flutter_http_monitor.py を使用して、Frida 内で直接 復号化された HTTP トラフィックをキャプチャできます。
これは BoringSSL の SSL_write/SSL_read を libflutter.so (任意の Flutter バージョン、arm64) 内で自動的に特定し、平文のリクエストとレスポンス(再構築、チャンク解除、gzip 展開、JSON 整形済み)を出力する Frida スクリプトを生成します。
pip install capstone pyelftools
# バイナリをスキャンしてモニターを生成(.apk を渡すことも可能)
python3 flutter_http_monitor.py path/to/libflutter.so -o monitor.js
# アプリに対して実行
frida -U -f com.target.app -l monitor.js
オプションとして、Frida の REPL 内で addScope('api.example.com') を使用すると、特定のホストのみを監視できます(Burp スタイルのスコープ)。単一ファイルで、他に配布するものはありません。
このツールは許可されたセキュリティ研究および侵入テストのみを目的としています。
自分が所有していない、または明示的な書面によるテスト許可を得ていないアプリに対しては使用しないでください。