实战:Frida 绕过 ssl pinning

一、概述

       安卓安全测试中,其中一个维度测试就是服务端业务逻辑安全性测试,主要通过抓包实现。其实说白了就是中间人攻击,装着要测试APP的安卓手机发包给我们电脑的burpsuite,我们可以使用bp截包改包的内容,再发给服务端,服务端收到请求后响应,把返回包发给电脑的bp,bp最后发给我们手机上的app。随着移动端安全逐渐加强,现在越来越多的app已经无法抓到包,或者提示网络相关错误。其实根本原因在于客户端发包时对于服务端的ssl证书进行了校验。

 

二、SSL pinning原理

证书锁定(SSL/TLS Pinning)即将服务器提供的SSL/TLS证书内置到APP客户端中,当客户端发请求时,通过比对内置的证书和服务器端证书的内容,以确定这个连接的合法性。所以,ssl pinning需要开发人员将APP代码内置仅接受指定CA或域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书,通过这种授权方式,保障了APP与服务端通信的唯一性和安全性。但是CA签发证书都存在有效期问题,所以缺点是在证书续期后需要将证书重新内置到APP中。

 

三、环境配置

3.1、Frida-agent:

建议使用安卓root真机进行测试

3.2、Frida-server:

#adb shell root
#adb  push  frida-server   /data/local/tmp/
#cd /data/local/tmp
#chmod 777  frida-server
#nohup  ./frida-server  &

3.3、Burp证书刷入安卓系统证书

从Android 从 7.0 开始,安卓系统不再信任用户 CA 证书,所以你需要把 CA 证书安装到系统 CA 证书目录。

## 转为pem格式
openssl x509 -inform DER -outform PEM -in cacert.der -out cacert.pem
## 重命名为<hash值>.0
 mv cacert.pem `openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1`'.0'
##remount将/system 置于可写入的模式,root情况下可使用
LIO-AN00:/ # mount -o remount,rw /system
LIO-AN00:/ # mount -o remount,rw /
##使用adb命令件<hash值>.0文件上传到安卓 /system/etc/security/cacerts/目录下
D:\Program Files\Nox\bin>adb push 9a5ba575.0  /system/etc/security/cacerts/
[100%] /system/etc/security/cacerts/9a5ba575.0
##进入安卓shell环境(一定要root)
D:\Program Files\Nox\bin>adb shell
##<hash值>.0文件赋予644权限
LIO-AN00:/ # chmod 644 /system/etc/security/cacerts/9a5ba575.0

查看是否成功刷入证书:

 

四、app渗透项目实战

4.1、无法抓包问题

在安卓真机上安卓app,可以正常打开,但是无法抓取数据包

 

4.2、Hook 反SSL pinning

运行frida-server

 运行app查看进程名

 

# frida -U -f 包名 -l frida-script.js

 

4.3、Burpsuite成功抓包

 

 

posted @ 2023-10-17 12:36  27ns  阅读(1852)  评论(0)    收藏  举报