实战: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成功抓包


浙公网安备 33010602011771号