iOS系统抓包之短链-破解双向证书
The following article is from 小白技术社 Author 吾爱小白
前言
上次文章iOS系统抓包入门实践之短链[1]有说道关于常规抓包、路由直连以及单向证书校验的抓包方式,该文章将是在短链抓包中进行补充,主要是针对短链抓包中不太经常用到的双向证书,并进行破解和通过Charles抓取数据包,给大家提供一些解决思路。
设备:越狱iPhone 5s、Mac 案例:c291bA==,该app在之前安卓端已经完成双向证书破解。
双向证书判断
双向证书判断
通过常规抓包的方式,进行梭哈,发现只要开启代理,该app提示未能读取数据,因为它的格式不正确
。并且在Charles中发现400 No required SSL certificate was sent
双向证书主要是在通讯过程中,服务端校验了客户端证书是否正确,同样客户端也校验了服务端证书是否正确。
该app主要是在客户端封装了证书,相比于单向证书,多了在服务端校验客户端证书的过程,在Charles抓包过程中,使用的是Charles本身的证书,导致服务端校验失败,才会出现400 No required SSL certificate was sent
这样的提示,那也就是我们只需要拿到封装在客户端的证书以及证书密码,即可完成与服务端的通讯。
突破分析
确定该app为双向证书,那该app的静态资源里面一定有该app的证书文件,通过解压该app的ipa包,在Payload/***_New
原身里面发现该app的证书文件。
破解密码
砸壳
由于App Store下载的应用都是经过苹果加密,加密之后的应用我们无法进行反编译分析,所以需要我们进行砸壳分析,也就是进行对已加密的应用进行解密操作。这里使用frida-ios-dump
进行砸壳,获取其未加密的二进制文件。
获取密码
将该app的二进制文件使用ida pro
打开,并在string窗口搜索该证书名后进入该类里面,最后进行f5
看其伪代码。
Charles导入客户端证书
按图中进行导入,最后输入密码即可。
python实现
在这里借助requests-pkcs12
实现(win下写的代码)
小结
在该app的IOS版本中的双向证书的破解比安卓简单许多,只有frida进行砸壳-分析二进制文件,没有进行Hook操作,破解证书密码也方便不少。
参考
https://blog.csdn.net/linvo/article/details/9173511
https://zhuanlan.zhihu.com/p/139940495
http://zhaoxincheng.com/index.php/2020/07/15/oulapp%e7%9a%84%e5%8f%8c%e5%90%91%e8%af%81%e4%b9%a6%e7%a0%b4%e8%a7%a3/
https://github.com/m-click/requests_pkcs12