Android APP渗透之双向认证突破

电子说

1.2w人已加入

描述

Android APP渗透之双向认证突破

今天有hxd发来一个APP说存在双向认证,没法正常抓包进行渗透,抓包的结果长下面这个样子,一般抓包看到服务器返回“400 No required SSL certificate was sent”那基本就可以确认测试的目标APP使用了双向认证,这种情况下,想要正常抓包进行渗透的话,就必须要从APP客户端中,把客户端证书以及证书密钥给找出来,然后导入抓包工具,即可正常抓包(同时需开启justtrustme等绕过服务端证书校验的插件)。

dump

客户端证书及密钥获取

接下来,我们就来看看怎么获取APP客户端证书及密钥,一般情况下,能用工具一把梭的话那肯定最好,平时常用的dump证书及密钥的工具主要有以下几个:

r0capture

r0capture具备客户端证书导出功能:默认开启;必须以Spawm模式运行;

运行脚本之前必须手动给App加上存储卡读写权限;

并不是所有App都部署了服务器验证客户端的机制,只有配置了的才会在Apk中包含客户端证书;

导出后的证书位于/sdcard/Download/包名xxx.p12路径,导出多次,每一份均可用,密码默认为:r0ysue;

hooker

也是基于frida的hook工具,支持客户端证书dump

平时常用的自动dump证书的工具就这两个,不过这次遇到的双向认证APP,使用证书dump也没有成功。

手动寻找证书及密钥

获取证书

既然用工具没法直接获取到证书及密钥,那就只好自己动手分析了,首先我们先来找客户端证书文件。客户端证书文件的话,一般直接解压apk包,在解压文件夹里的assets目录下可能会存在客户端证书文件,如下:

dump

看到有这两个明显的证书文件,证书文件一般直接双击即可安装导入到本地,这2个证书文件中的client.pfx双击安装证书的过程中,提示需要密码,而另一个不需要,经过验证,不需要密码的证书不是客户端证书(导入BurpSuite后抓包验证)

dump

获取密钥

APP脱壳后反编译查看源码,因为APP要使用客户端证书,肯定要从资源文件目录下去读取,因此尝试在源码中搜索关键字:"client.pfx",

dump

通过阅读代码,感觉在instance.load(open, "".toCharArray()); 代码处,应该传入证书密码打开证书文件,但是代码中显示的是一个空""字符串。第一次遇到空密码,有点拿不准,网上检索一下类似代码片段。

dump

发现在加载证书调用load方法的时候,参数2就是证书密码。

验证密钥

既然代码中显示证书密钥为空"",那本地安装client.pfx 输入空密码试试。

输入空密码,证书导入成功,说明这个APP的证书密码确实为空。

客户端证书导入BurpSuite

经过前面的操作,我们已经拿到的客户端证书文件,以及客户端证书密钥

导出key

openssl pkcs12 –in client.pfx –nocerts –nodes –out client.key

dump

由于之前通过反编译查看源码确认证书密钥为空,因此提示输入密码的时候直接回车就行。

dump

合成p12证书文件

将pfx证书和key文件合并成“.p12”证书文件

openssl pkcs12 -export -inkey client.key -in client.pfx -out client.p12

dump

导入p12证书抓包

在BurpSuite→User options→TLS→Client TLS Certificates中添加导入客户端证书:

dump

设置证书及证书密钥

dump

密码输入正确即可导入成功。

dump

成功抓包

成功搞定双向认证抓取到数据包

dump

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分