阅读 237

*oulapp的双向证书破解

*oulapp的双向证书破解

今天简单说一下双向证书的破解,顺便说一个比较好用的工具,案例: c291bA==
复制代码

破解双向证书: 之前见过单向证书校验,比如企查查、饿了么等,这个最简单的方法就是使用JustTrustMe,当然这个要依赖Xposed,手机没有root的话,你也可以使用太极、 VirtualXposed 等一些免root的xposed框架,这里就不主要说了,今天的重点是双向证书校验的破解。 双向证书校验顾名思义,就是双向认证,服务端会校验客户端(也就是我们的app)的证书;客户端也会校验服务端的证书,先来看看这篇文章的资料。SSL/TLS 双向认证(一) — SSL/TLS工作原理_网络_ustccw-CSDN博客,看完这篇文章就可以了解到,对于双向证书校验要破解有: 1. 证书密码 2. cer或者p12证书 知道上边两点,那就开始探索这个app吧。

定位

下载一个app(豌豆荚下载最新版),然后在资源文件里面找cer或者p12证书文件。
复制代码

直接找到,省了很多事。。。。 然后我们要继续看它的证书密码了,这个先来逆向反编译看一看。然后我们全局搜他的关键词client.cer(我这里用的是jadx)。
如上边的图,直接就定位到了(第一个是全局变量,可以直接去看第二个,这里jadx反编译没全部成功,但是也能阅读),我们跳转看看。
又找到了它的关键点load,这个load是干什么的呢??? KeyStore (Java 2 Platform SE 6)根据JavaApi文档来看,
第一个参数就是证书的文件io,可以不用管,第二个参数就是我们需要的证书密码,这里就很方便的找到了hook点(我们也可以直接根据jadx来分析他的的构造)。
上边是三个步骤中第一步和第二步就是他最后需要的处理密码的地方,透露一下,这是最后追踪到native了,这里我们继续看,看a方法在哪。

找到这个方法的实例化位置,然后在SoulNetworkSDK这个类下面找a方法。
这获取密码,名字都很那啥。就跟那啥似的。我们继续查找用例。下图就是我们最后需要的。

HOOK

现在到了hook的时候,打开frida,打开开发工具。。。。。。。其实这里有个问题,它密码会不会在app启动的时候就已经初始化了呢??
firda的spawn是可以应对这种问题的(这里我尝试好几次,都没hook到,应该是我使用方法有问题。),但是我们今天要说的是另外一个xposed工具,很方便、经常用、10几分钟一个算法都有可能。
工具就是:Inspeckage [GitHub - ac-pm/Inspeckage: Android Package Inspector - dynamic analysis with api hooks, start unexported activities and more. (Xposed Module)](https://github.com/ac-pm/Inspeckage) 
复制代码

这是我之前看的一篇文章也推荐给大家。Inspeckage使用笔记(app安全检测工具)_移动开发_coderchc的专栏-CSDN博客 我们安装Inspeckage,然后在xposed里面打钩、重启.

记得先在电脑执行adb forward tcp:8008 tcp:8008 ,并打开127.0.0.1:8008
现在打开app,等待出现密码。。。。。(这里我清理了app数据,密码才出来)

验证

有了密码和证书,我们就该做爬虫改干的事了。
这里推荐一个[GitHub - m-click/requests_pkcs12: Add PKCS#12 support to the Python requests library in a clean way, without monkey patching or temporary files](https://github.com/m-click/requests_pkcs12)框架,有p12和密码就能直接请求。
复制代码

错误:

正确:

导入Charles

这里我比较喜欢用Charles,不喜欢fd

最后就确定,开始抓包玩吧。。。。 这个app的参数破解挺有意思,喜欢的可以抽时间玩玩。 全篇废话较多,想什么写什么,思维有点跳跃。 以上分析仅用于学习交流。 欢迎关注小白微信公众号【小白技术社】,一起学习一起交流