APP双向认证绕过
前言:app抓包的时候,不知道你有没有遇到过抓不包的情况,如果burpsuite响应包是下面这样情况,这篇文章也许能帮到点什么。
首先我们分析一下为什么响应包是这样呢?这是因为服务器端对客户端的证书做了校验,我们的burpsuite是没有带客户端证书,所以服务器端验证没有通过,也就出现了这种状况。
这里我们得明白单向认证和双向认证是什么(想具体了解的可以百度一下)。
1、单向认证 简单来说就是客户端对服务器端的证书的做了校验;
2、双向认证 就是客户端对服务器端的证书做了验证,同时服务器端也对了客户端的证书做了校验;
单向认证绕过:
如果你发现请求的时候,连包都抓不到,这可能就是做了单向认证;
我们可以下一个Xposed,然后再安装一个JustTrueMe模块,JustTrueMe可以禁用ssl证书验证,启动一下就可以绕过客户端校验了(这里别在真实手机里装,可能会出问题的,最好在手机模拟机里测试)。
双向认证绕过:
如果你发现单向认证绕过之后,又出现刚开始我们说的那种状况。这个时候,我们要想的是什么,服务器端既然校验客户端证书,那我们就发给他一个,burpsuite也有这个功能,我们只要找到客户端的证书,安装到burpsuite里一切也就解决了。
那么现在的问题就是寻找客户端的证书。
客户端的证书肯定在apk中,我们解压一下apk,在assets目录下搜下.p12或者.pfx(这里还有个问题,如果app加壳怎么办,那技术好点,我们就脱壳呗,差点的话,我们就找它低版本的app,低版本的也许没加壳呢)。
这种证书安装的时候,会需要密码,所以我们还得反编译去找安装密码,这里就是最难的地方。
这里给大家举个例子(就用soul),没有反编译能力的我,也是看着别人文章一步步摸索的,希望大家看了有点用(懂反编译的老哥看个笑话就行)。
1、用jeb打开apk,右键解析一下
2、搜索我们前面找到的证书名字,它肯定是需要打开证书的(或者关键字PKCS12,这是通常读取证书需要用到的关键字)
3、右键解析
4、往下找到这些
5、追踪v1,v1也就是证书密码(双击v1就可以追踪)
6、追踪a
7、追踪getStorePassword
8、发现native,调用了一个别的接口文件,往上翻看调用的那个
9、soul-netsdk就是调用的libsoul-netsdk.so文件,我们在解压的apk中搜一下
10、用IDA打开这个文件
11、搜一下getStorePassword
12、双击,然后F5生成伪代码
13、到这我们也就找到安装证书的密码,然后把证书安装到burpsuite里就行了(密码如果错的话,是安装不成功的)
14、抓个包试一下,看是否成功
成功!
BY 小和尚的安全之路