今天收到了一个APP,发现存在双向认证,导致无法正常抓包进行渗透。通常在抓包中,如果服务器返回“400 No required SSL certificate was sent”,基本可以确定目标APP使用了双向认证。在这种情况下,为了正常抓包进行渗透,需要从APP客户端中获取客户端证书和证书密钥,然后导入抓包工具,同时需开启绕过服务端证书校验的插件(如justtrustme)。
Frida环境配置
在PC上配置Frida环境略过,下面主要介绍在iOS设备上安装Frida Server的两种方式。
Frida Server默认版本安装
- 添加Frida官方源:https://build.frida.re
- 搜索并安装Frida:
pip install frida
- 验证安装结果:
frida-ps
Frida Server指定版本安装
- 下载指定版本的Frida Server。
- 安装指定版本的Frida Server:
dpkg -i frida-server.deb
- 验证安装结果:
frida-ps
Frida检测绕过
提取Frida文件
通过Frida Server默认版本安装方式,可以在cydia中查看相关文件的安装路径:
/usr/lib/frida/frida-agent.dylib
/usr/sbin/frida-server
将以上两个文件拷贝出保存。
卸载Frida Server
在Cydia中卸载Frida Server。
恢复Frida Server
在/usr/lib/
目录下新建一个frida
文件夹,并将之前拷贝的两个文件放入frida
文件夹中。
运行Frida Server
通过上述方式恢复Frida Server文件后,进入手机shell,手动运行Frida Server。
- SSH连接手机shell:
ssh root@your_device_ip
- 启动Frida Server:
/usr/sbin/frida-server
- 验证安装结果:
frida-ps
Frida检测绕过效果
绕过APP提示“设备存在风险”后退出。
尝试使用Frida对目标APP进行hook,如果APP仍然提示设备存在风险,先启动APP,等APP正常打开后,再使用attact模式对APP进行hook。
Android APP渗透之双向认证突破
客户端证书及密钥获取
工具获取
使用r0capture或hooker等工具进行客户端证书的dump,但这些工具可能在双向认证APP中无法成功。
手动查找
获取证书
在APK包解压后的assets
目录下可能存在客户端证书文件。
获取密钥
通过反编译APP源码,查找证书文件加载的地方,尝试找到证书的密码。密码为空的情况下,尝试直接导入证书。
导入证书抓包
使用openssl导出证书密钥:
<code>openssl pkcs12 -in client.pfx -nocerts -nodes -out client.key</code>
将pfx证书和key文件合并成“.p12”证书文件:
<code>openssl pkcs12 -export -inkey client.key -in client.pfx -out client.p12</code>
在BurpSuite的TLS设置中导入客户端证书,设置证书及证书密钥,成功输入密码后即可导入成功。
成功抓包
成功搞定双向认证抓取到数据包。
Reference:
https://github.com/r0ysue/r0capture:https://github.com/r0ysue/r0capture[2]
https://github.com/CreditTone/hooker:https://github.com/CreditTone/hooker[3]
https://bbs.pediy.com/thread-265404.htm:https://bbs.pediy.com/thread-265404.htm
暂无评论内容