IOS系统抓包之短链-破解双向证书

前言

上次文章iOS系统抓包入门实践之短链有说道关于常规抓包、路由直连以及单向证书校验的抓包方式,该文章将是在短链抓包中进行补充,主要是针对短链抓包中不太经常用到的双向证书,并进行破解和通过Charles抓取数据包,给大家提供一些解决思路。

  • 设备:越狱iPhone 5s、Mac
  • 案例:c291bA==,该app在之前安卓端已经完成双向证书破解。

双向证书判断

双向证书判断

通过常规抓包的方式,进行梭哈,发现只要开启代理,该app提示未能读取数据,因为它的格式不正确。并且在Charles中发现400 No required SSL certificate was sent
file
file
上边提示和安卓端提示相同,也就更能确定它使用的是双向证书。

双向证书主要是在通讯过程中,服务端校验了客户端证书是否正确,同样客户端也校验了服务端证书是否正确。

该app主要是在客户端封装了证书,相比于单向证书,多了在服务端校验客户端证书的过程,在Charles抓包过程中,使用的是Charles本身的证书,导致服务端校验失败,才会出现400 No required SSL certificate was sent这样的提示,那也就是我们只需要拿到封装在客户端的证书以及证书密码,即可完成与服务端的通讯。

突破分析

确定该app为双向证书,那该app的静态资源里面一定有该app的证书文件,通过解压该app的ipa包,在Payload/***_New原身里面发现该app的证书文件。
file
将该p12证书文件安装到Mac系统下,发现其需要密码。
file

破解密码

砸壳

由于App Store下载的应用都是经过苹果加密,加密之后的应用我们无法进行反编译分析,所以需要我们进行砸壳分析,也就是进行对已加密的应用进行解密操作。
这里使用frida-ios-dump进行砸壳,获取其未加密的二进制文件。

获取密码

将该app的二进制文件使用ida pro打开,并在string窗口搜索该证书名后进入该类里面,最后进行f5看其伪代码。
file
通过ida分析,可以清楚的看到该app的证书密码。
由于该app将证书密码硬编码在代码中,也不需要使用其他逆向技术进行分析跟踪。

Charles导入客户端证书

按图中进行导入,最后输入密码即可。
file
最后抓包就是可以的,不再提示证书异常。
file

python实现

在这里借助requests-pkcs12实现。
file

小结

在该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

本文系作者 @ 原创发布在 我的编程学习之路。未经许可,禁止转载。

喜欢()
热门搜索
20 文章
0 评论
147 喜欢
Top