用途:在获得明确授权的安全评估中,绕过 Android 与 iOS 应用的 SSL/TLS 证书固定,使 HTTPS 流量可经代理(如 Burp Suite)拦截,用于评估固定实现强度与应用网络防护。未获授权不得使用。
前提条件:Burp Suite 配置为代理并监听所有接口;Android 已 root 或 iOS 已越狱;目标设备运行 Frida server;安装 Objection(pip install objection);目标应用已安装并能复现固定行为。
主要能力与流程:
- 识别固定实现。Android 常见方式包括 Network Security Config(res/xml/network_security_config.xml 中的 pin-set)、OkHttp CertificatePinner、自定义 TrustManager、TrustKit 及证书透明度检查;iOS 包括 NSURLSession delegate、ATS 自定义信任评估、TrustKit、Alamofire ServerTrustPolicy、自定义 SecTrust 评估。
- 快速绕过:使用 Objection,Android 执行 objection --gadget com.target.app explore 后运行 android sslpinning disable;iOS 运行 ios sslpinning disable。
- 自定义 Frida 脚本:Android 可 hook TrustManagerImpl.verifyChain、OkHttp3 CertificatePinner.check、自定义 X509TrustManager、SSLContext.init 及 NetworkSecurityConfig;iOS 可 hook URLSession:didReceiveChallenge:completionHandler: 与 SecTrustEvaluateWithError。
- 高级固定:用 frida-trace 定位 TrustKit 或自定义校验函数后针对性 hook。
- 验证:将设备代理指向 Burp Suite,操作应用并确认 HTTPS 流量出现在 HTTP History 中。
适用场景:应用因证书固定拒绝经代理连接、需拦截 HTTPS 的授权测试、评估固定绕过难度与纵深防御。
限制与常见问题:证书透明度检查可能需单独绕过;多层固定需逐层处理;原生 C/C++ 层固定需在原生函数地址使用 Interceptor.attach;TrustKit 等可能动态更新 pin,测试期间需监控 pin 轮换。工具包括 Objection、Frida、apktool、SSLUnpinning(Xposed)、ssl-kill-switch2。