
iOSおよびmacOSアプリケーション内で、証明書ピンニングを含むSSL証明書の検証を無効化するブラックボックスツール。
ブラックボックスツール。iOSおよびmacOSアプリケーション内でSSL/TLS証明書検証(証明書ピンニングを含む)を無効化します。https://github.com/iSECPartners/ios-ssl-kill-switch の第2版です。
iOSまたはmacOSアプリケーションに読み込まれると、SSL Kill Switch 2はSSL/TLS接続の処理を担当する低レベル関数にパッチを適用し、システムのデフォルトの証明書検証に加えて、あらゆる種類のカスタム証明書検証(証明書ピンニングなど)を上書きして無効化します。
Apple App Storeを含む証明書ピンニングを実装するさまざまなアプリケーションに対して正常にテストされました。SSL Kill Switchの最初のバージョンはBlack Hat Vegas 2012でリリースされました。
サポートが確認されている最新のiOSバージョンは14.2です。
iOSでは、SSL Kill Switch 2はジェイルブレイク済みデバイスにCydia Subtrate tweakとしてインストールできます。
SSL Kill Switch 2をインストールすると、デバイスと同じネットワーク上の誰でも、あらゆる SSLまたはHTTPS接続に対して簡単に中間者攻撃を実行できるようになります。つまり、メール、Safariで表示したウェブサイト、デバイス上で実行中の任意のアプリがダウンロードするその他のデータに簡単にアクセスできるようになるということです。
以下の依存関係をCydiaを使用してインストールしてください:
次に、SSL Kill Switch 2のGitHubページのreleaseタブにある最新のプリコンパイル済みパッケージをダウンロードしてください。デバイスにコピーしてインストールし、respringします:
dpkg -i <package>.deb
killall -HUP SpringBoard
デバイスの設定に新しいメニューが表示され、そこで拡張機能を有効にできます。最後に、テストしたいアプリを終了して再起動してください。
このtweakは後で以下のコマンドでアンインストールできます:
dpkg -r com.nablac0d3.SSLKillSwitch2
多くの人がSSL Kill Switch 2を使ってApp Storeのトラフィックを傍受する方法について質問してきました。ここに手順を記載しましたが、現在は古くなっています: http://nabla-c0d3.github.io/blog/2013/08/20/intercepting-the-app-stores-traffic-on-ios/
デフォルトでは、SSL Kill SwitchはCharles Proxy iOSアプリを妨害するため、それを使用してネットワークトラフィックをプロキシできなくなります。これを修正するには、Charles Proxyアプリ(com.xk72.Charles)をSSL Kill Switch設定の除外バンドルIDリストに追加してください:

ビルドにはTheosスイートがインストールされている必要があります: http://www.iphonedevwiki.net/index.php/Theos/Getting_Started
次に、SSL Kill Switch 2のルートフォルダ内で、自分のtheosインストール先へのシンボリックリンクを作成してください:
ln -s /<path_to_your_theos_folder> theos
dpkgがインストールされていることを確認してください。Homebrewを使用している場合は、次を使用します:
brew install dpkg
次に、SSL Kill Switch 2のDebianパッケージは以下のコマンドでビルドできます:
make package
SSL Kill Switch 2は、プロセスに注入される動的ライブラリとしてmacOSアプリケーションで使用できます。
macOSでは、SSLピンニングを無効化する必要があるプロセスにSSLKillSwitchライブラリを手動で注入する必要があります。注入されると、自動的にSSL検証を上書きして無効化します。
これを行うには、次のようないくつかの方法があります:
LLDBでプロセスを起動するか、XcodeのDebug->Attach to processでプロセスにアタッチして一時停止し、dlopen()を使用してSSLKillSwitchを読み込みます:
(lldb) expr (void*)dlopen("/path/to/build/SSLKillSwitch.framework/Versions/A/SSLKillSwitch", 1)
期待される結果は非ゼロポインタです:
(void *) $1 = 0x00007f92e74d10c0
ゼロポインタを受け取った場合は、コード署名を有効にしてプロファイリング用にビルドし、リリースフォルダ内のバイナリを使用する必要があるかもしれません。さらに、バイナリをアプリのリソースフォルダにコピーする必要があるかもしれません。その場合、サンドボックスの読み取り違反がコンソールに出力されているはずです。新しいバージョンのバイナリをテストするには、アプリを終了して再度読み込む必要があります。
DYLD_INSERT_LIBRARIESを使用してSSLKillSwitchを注入し、プロセスを起動します。
TBD
Xcodeプロジェクトを使用して、macOS用のSSL Kill Switch 2をビルドしてください。コンパイルされたライブラリは_Products/SSLKillSwitch.framework/Versions/A/SSLKillSwitch_で利用可能になります。これは、SSLピンニングを無効化したいプロセスに注入する必要があるバイナリです。
MIT - ./LICENSEを参照。
Alban Diquet - @nabla_c0d3