黑盒工具,用于在 iOS 和 macOS 应用程序中禁用 SSL/TLS 证书验证(包括证书固定)。这是 https://github.com/iSECPartners/ios-ssl-kill-switch 的第二代版本。
一旦加载到 iOS 或 macOS 应用程序中,SSL Kill Switch 2 将修补负责处理 SSL/TLS 连接的底层函数,以覆盖并禁用系统的默认证书验证,以及任何类型的自定义证书验证(例如证书固定)。
它已成功针对各种实现证书固定的应用程序进行了测试,包括 Apple App Store。SSL Kill Switch 的第一个版本于 2012 年在 Black Hat Vegas 发布。
目前已知支持的最新 iOS 版本是 14.2。
在 iOS 上,SSL Kill Switch 2 可以作为 Cydia Subtrate 插件安装在已越狱的设备上。
安装 SSL Kill Switch 2 后,与设备处于同一网络的任何人都可以轻松地对 任何 SSL 或 HTTPS 连接执行中间人攻击。这意味着攻击者可以轻易获取电子邮件、在 Safari 中浏览的网站以及设备上运行的任何 App 下载的任何其他数据。
应使用 Cydia 安装以下依赖项:
然后,从 SSL Kill Switch 2 GitHub 页面的 release 标签页下载最新的预编译软件包。将其复制到设备,安装并 respring 设备:
dpkg -i <package>.deb
killall -HUP SpringBoard
设备的“设置”中应会出现一个新菜单,您可以在其中启用该扩展。最后,终止并重新启动您要测试的 App。
该插件之后可以使用以下命令卸载:
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 配置中的排除 bundle 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 上,需要手动将 SSLKillSwitch 库注入到需要禁用 SSL 固定的进程中。注入后,它将自动覆盖并禁用 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
如果您收到零指针,则可能需要启用代码签名并进行 profiling 构建,然后使用 release 文件夹中的二进制文件,甚至可能需要将二进制文件复制到应用的 resources 文件夹。在这种情况下,您会在控制台中看到沙盒读取违规的输出。要测试新版本的二进制文件,您需要终止应用并重新加载它。
使用 DYLD_INSERT_LIBRARIES 注入 SSLKillSwitch 并启动进程。
待定
使用 Xcode 项目为 macOS 构建 SSL Kill Switch 2。编译后的库将位于 Products/SSLKillSwitch.framework/Versions/A/SSLKillSwitch 中。这就是您需要注入到要禁用 SSL 固定的进程中的二进制文件。
MIT - 参见 ./LICENSE。
Alban Diquet - @nabla_c0d3