Android APP渗透之双向认证突破
今天有hxd发来一个APP说存在双向认证,没法正常抓包进行渗透,抓包的结果长下面这个样子,一般抓包看到服务器返回“400 No required SSL certificate was sent”那基本就可以确认测试的目标APP使用了双向认证,这种情况下,想要正常抓包进行渗透的话,就必须要从APP客户端中,把客户端证书以及证书密钥给找出来,然后导入抓包工具,即可正常抓包(同时需开启justtrustme等绕过服务端证书校验的插件)。
客户端证书及密钥获取
接下来,我们就来看看怎么获取APP客户端证书及密钥,一般情况下,能用工具一把梭的话那肯定最好,平时常用的dump证书及密钥的工具主要有以下几个:
r0capture
r0capture具备客户端证书导出功能:默认开启;必须以Spawm模式运行;
运行脚本之前必须手动给App加上存储卡读写权限;
并不是所有App都部署了服务器验证客户端的机制,只有配置了的才会在Apk中包含客户端证书;
导出后的证书位于/sdcard/Download/包名xxx.p12路径,导出多次,每一份均可用,密码默认为:r0ysue;
hooker
也是基于frida的hook工具,支持客户端证书dump
平时常用的自动dump证书的工具就这两个,不过这次遇到的双向认证APP,使用证书dump也没有成功。
手动寻找证书及密钥
获取证书
既然用工具没法直接获取到证书及密钥,那就只好自己动手分析了,首先我们先来找客户端证书文件。客户端证书文件的话,一般直接解压apk包,在解压文件夹里的assets目录下可能会存在客户端证书文件,如下:
看到有这两个明显的证书文件,证书文件一般直接双击即可安装导入到本地,这2个证书文件中的client.pfx双击安装证书的过程中,提示需要密码,而另一个不需要,经过验证,不需要密码的证书不是客户端证书(导入BurpSuite后抓包验证)
获取密钥
APP脱壳后反编译查看源码,因为APP要使用客户端证书,肯定要从资源文件目录下去读取,因此尝试在源码中搜索关键字:"client.pfx",
通过阅读代码,感觉在instance.load(open, "".toCharArray()); 代码处,应该传入证书密码打开证书文件,但是代码中显示的是一个空""字符串。第一次遇到空密码,有点拿不准,网上检索一下类似代码片段。
发现在加载证书调用load方法的时候,参数2就是证书密码。
验证密钥
既然代码中显示证书密钥为空"",那本地安装client.pfx 输入空密码试试。
输入空密码,证书导入成功,说明这个APP的证书密码确实为空。
客户端证书导入BurpSuite
经过前面的操作,我们已经拿到的客户端证书文件,以及客户端证书密钥
导出key
openssl pkcs12 –in client.pfx –nocerts –nodes –out client.key
由于之前通过反编译查看源码确认证书密钥为空,因此提示输入密码的时候直接回车就行。
合成p12证书文件
将pfx证书和key文件合并成“.p12”证书文件
openssl pkcs12 -export -inkey client.key -in client.pfx -out client.p12
导入p12证书抓包
在BurpSuite→User options→TLS→Client TLS Certificates中添加导入客户端证书:
设置证书及证书密钥
密码输入正确即可导入成功。
成功抓包
成功搞定双向认证抓取到数据包
-
Android
+关注
关注
12文章
3923浏览量
127114 -
dump
+关注
关注
0文章
13浏览量
9505
发布评论请先 登录
相关推荐
评论