frida-tls-pinning について
Fridaを使って、モバイルアプリのTLS証明書ピンニングや独自の信頼検証を調査するスキルです。ネットワークスタックの特定、フックの調査、対象を絞った変更の検証を支援し、一律のバイパスには頼りません。
主な機能
- 01Android、iOS、クロスプラットフォームのスタック特定
- 02Java、Objective-C、ネイティブコンポーネントの調査
- 03公開スクリプトによる有効なフックの特定
- 04変更したリクエストの検証項目
- 05アプリ版、プラットフォーム、ライブラリ、ロールバックの記録
活用シーン
- 01証明書ピンニングで遮断されたHTTPS通信の調査
- 02モバイルアプリの信頼検証フックの特定
- 03対象フックによる遮断リクエストの変化の検証
- 04テスト環境とロールバック手順の記録
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rudra-ravi/ frida-skills --skill frida-tls-pinningインストール後、Claude Code で/frida-tls-pinningを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlreferences/tls-patterns.md
詳細
Frida TLS ピンニング
HTTPS トラフィックが証明書ピンニングまたはカスタムの信頼性検証によってブロックされる場合に、このスキルを使用します。
まずスタックを特定する
- Android Java:OkHttp、TrustManager、Conscrypt、WebView、ネットワークセキュリティ設定。
- Android ネイティブ:BoringSSL、OpenSSL、Cronet、proxygen、Flutter エンジン。
- iOS:
NSURLSession、デリゲートの信頼性チャレンジ、SecTrustEvaluate*、ネイティブ BoringSSL。 - クロスプラットフォーム:React Native、Flutter、Unity、カスタムのネイティブネットワーク処理。
最終回答として、汎用的なバイパスを最初に使わないでください。公開スクリプトを使って、どのフックが実行されるかを調べてから、必要なフックだけを残します。
Android のプローブ
Java.perform(() => {
for (const name of [
"okhttp3.CertificatePinner",
"com.android.org.conscrypt.TrustManagerImpl",
"javax.net.ssl.SSLContext"
]) {
try { console.log("found", name, Java.use(name)); } catch (_) {}
}
});
iOS のプローブ
if (ObjC.available) {
for (const name of Object.keys(ObjC.classes).filter(n => n.includes("Trust") || n.includes("Session"))) {
console.log(name);
}
}
ネイティブのプローブ
for (const m of Process.enumerateModules()) {
if (/ssl|crypto|boring|cronet|liger/i.test(m.name)) console.log(m.name, m.base, m.path);
}
検証
- プロキシがデバイスまたはアプリのプロファイルで信頼されています。
- ブロックされたリクエストを実行した際に、フックのログが記録されます。
- 変更後、同じリクエストが成功します。
- トラフィックを確認できるか、アプリの動作から信頼性検証がバイパスされたことを確認できます。
- 最終スクリプトには、アプリのバージョン、プラットフォーム、ライブラリ、ロールバックコマンドが記載されています。
参考資料
フレームワーク固有のフックオプションについては、references/tls-patterns.md を参照してください。
コメント
Markdown 対応