MASTG-TECH-0064: 绕过证书绑定
一些应用程序会实现 SSL 证书绑定,这会阻止应用程序接受你拦截的证书作为有效证书。这意味着你将无法监视应用程序和服务器之间的流量。
对于大多数应用程序,证书绑定可以在几秒钟内绕过,但前提是该应用程序使用这些工具涵盖的 API 函数。如果应用程序使用自定义框架或库实现 SSL 证书绑定,则必须手动修补和停用 SSL 证书绑定,这可能很耗时。
本节介绍绕过 SSL 证书绑定的各种方法,并提供有关当现有工具不起作用时应采取的措施的指导。
适用于越狱和非越狱设备的方法¶
如果你有一个安装了 frida-server 的越狱设备,你可以通过运行以下 objection 命令来绕过 SSL 证书绑定(如果你使用的是非越狱设备,请参阅 自动将 Frida Gadget 注入 IPA)
ios sslpinning disable
这是一个输出示例
另请参阅Objection 关于禁用 iOS 的 SSL 证书绑定的帮助,以获取更多信息并检查 pinning.ts 文件以了解绕过的工作原理。
仅适用于越狱设备的方法¶
如果你有一个越狱设备,你可以尝试以下可以自动禁用 SSL 证书绑定的工具之一
- “SSL Kill Switch 2”是禁用证书绑定的一种方法。 它可以通过 Cydia 商店安装。 它将挂钩到所有高级 API 调用并绕过证书绑定。
- Burp Suite 应用程序也可用于绕过证书绑定。
当自动化绕过失败时¶
技术和系统会随着时间的推移而改变,一些绕过技术最终可能无法工作。 因此,测试人员的工作之一是进行一些研究,因为并非每个工具都能足够快地跟上操作系统版本。
一些应用程序可能会实现自定义 SSL 证书绑定方法,因此测试人员还可以开发新的绕过脚本,利用现有脚本作为基础或灵感,并使用类似的技术,但针对应用程序的自定义 API。 在这里,你可以检查这三个此类脚本的优秀示例
- “objection - Pinning Bypass Module” (pinning.ts)
- “Frida CodeShare - ios10-ssl-bypass” 作者:@dki
- “在混淆的应用程序中使用 OkHttp 规避 SSL 证书绑定” 作者:Jeroen Beckers
其他技术
如果你无权访问源代码,你可以尝试二进制修补
- 如果使用 OpenSSL 证书绑定,你可以尝试二进制修补。
- 有时,证书是应用程序包中的一个文件。 将证书替换为 Burp 的证书可能就足够了,但要注意证书的 SHA 总和。 如果它被硬编码到二进制文件中,你也必须替换它!
- 如果你可以访问源代码,你可以尝试禁用证书绑定并重新编译应用程序,查找
NSURLSession
、CFStream
和AFNetworking
的 API 调用,以及包含诸如“pinning”、“X.509”、“Certificate”等单词的方法/字符串。