突破SSL Pinning抓app的数据包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了突破SSL Pinning抓app的数据包相关的知识,希望对你有一定的参考价值。

参考技术A 做app测试时,手机安装burpsuite证书后依然抓不到数据包,可能是因为app启用了SSL Pinning(ssl证书绑定)。

APP中封装了客户端的证书,APP收到用户伪造的证书后,对该证书进行强校验,验证该证书是不是自己承认的证书,如果不是,则断开连接。

安卓手机绕过SSL Pinning

Xposed+JustTrustMe

将APK中所有用于校验SSL证书的API都进行了Hook,从而绕过证书检查。

https://github.com/Fuzion24/JustTrustMe

ios手机绕过SSL Pinning

SSL Kill Switch

https://github.com/nabla-c0d3/ssl-kill-switch2

另外推荐个屏蔽root/越狱检测的插件:

IOS:liberty lite             android:RootCloak

参考资料:

https://bbs.pediy.com/thread-226435.htm

https://www.freebuf.com/column/207103.html

SSL pinning - 在 AFSecurityPolicy 中设置固定公钥而不是固定证书

【中文标题】SSL pinning - 在 AFSecurityPolicy 中设置固定公钥而不是固定证书【英文标题】:SSL pinning - setting pinned public keys instead of pinned certificates in AFSecurityPolicy 【发布时间】:2015-04-17 18:12:49 【问题描述】:

我正在使用 AFNetworking 进行 SSL 固定。我得到它使用以下代码。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
[manager.securityPolicy setPinnedCertificates:myCertificate];

我的问题是,有没有办法在 AFSecurityPolicy 中设置公钥而不是证书?我们的证书偶尔会更改一次,我不想将其传递进去。AFSecurityPolicy.h 中没有 setPublicKeys 方法。 AFSecurityPolicy.m 有一个属性pinnedPublicKeys,但无法设置,因为它不在头文件中。

提前致谢。

【问题讨论】:

【参考方案1】:

密钥是从证书中提取的,可以使用捆绑包中的.cer 文件自动提取,也可以在您手动设置pinnedCertificates 属性时提取。即使旧证书已过期,新证书也可以使用,只要公钥不变。

参见the implementation of setPinnedCertificates:(以及AFPublicKeyForCertificate 函数)。如果您不清楚它是如何工作的,我建议您设置一个断点并在应用启动时单步执行它。

【讨论】:

有道理,我确实看到 AFSecurityPolicy 对我的证书所做的所有事情都是提取我的公钥,实际上我什至可以使用正确的公钥创建一个虚拟证书。

以上是关于突破SSL Pinning抓app的数据包的主要内容,如果未能解决你的问题,请参考以下文章

Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)

Wireshark抓包问题

android黑科技系列——Wireshark和Fiddler分析Android中的TLS协议包数据(附带案例样本)

iOS 绕过SSL认证抓包(需越狱)

网络抓包原理

苹果手机app怎么burpsuirt抓包怎么设置