SSL Pinning(证书绑定)
🔒 App 把服务端证书固定在本地,仅信任该证书,绕过系统 CA。r0capture 在 hook 层之下,本身就无视 pinning。
什么是 SSL Pinning
正常 TLS 校验:客户端信任系统 CA 颁发的所有证书。Pinning 则更进一步:App 内置一份预期的服务端证书/公钥,握手时校验服务端证书必须完全匹配内置的那份。
为什么有 Pinning
防止中间人攻击:即使攻击者拿到系统 CA 信任(如装了自签根证书),App 也会因 pin 不匹配而拒绝连接,从而抵御 mitmproxy/Charles 等抓包。
r0capture 为什么无视 Pinning
- Pinning 校验发生在 App 业务层(hook 点之上)
- r0capture hook 在
SSL_read/SSL_write,拿到的是校验之后的明文 - 即便 pinning 校验失败,App 仍可能先调
SSL_write发出请求(取决于实现),r0capture 仍能抓到
关键
r0capture 不需要绕过 pinning 就能抓包——它根本不参与 pinning 校验。这与 mitmproxy 等「中间人」工具不同,后者必须绕过 pinning 才能解密。
r0capture 还能定位 Pinning 代码
虽然不绕过,r0capture 提供 SSL Pinning 定位 hook,帮你找到 App 哪里在做 pinning,便于逆向研究。