利用Frida绕过Android App(途牛apk)的SSL Pinning

0x00 前言

做APP测试过程中,使用burp无法抓到数据包或提示网络错误可能是因为APP启用了SSL Pinning,刚好最近接触到途牛apk就是这种情况,于是便有了本文。

0x01 SSL Pinning原理

SSL Pinning即证书锁定,将服务器提供的SSL/TLS证书内置到移动端开发的APP客户端中,当客户端发起请求时,通过比对内置的证书和服务器端证书的内容,以确定这个连接的合法性。

0x02 环境

Win10
安卓模拟器(夜神模拟器)
Burp
Frida(Python 3.7)
adb工具
apk(途牛apk)

0x03 利用Frida绕过SSL Pinning

绕过原理:
客户端请求时会将内置的证书与服务端的证书做一次性校验,通过hook的方式将此次校验的结果返回true或者干脆不让其做校验即可以绕过。当安卓APP初始化SSLContext时,我们使用frida劫持SSLContext.init方法,使用我们自己创建的TrustManager , 把它作为实参传入SSLContext.init方法的第二个参数( SSLContext.init(KeyManager,TrustManager,SecuRandom) 。这样就能使得APP信任我们的CA,以上操作都是通过一个js脚本注入实现的。

1. 利用adb连接安卓模拟器

这里我们使用的是夜神模拟器,它默认使用Android 5版本的,就是因为这个点,这里踩坑踩了很久,夜神的Android版本低会导致下面在启用Frida-server时报错,因此这里需要使用Android 7以上。
Android低版本报错如下
在这里插入图片描述
夜神模拟器创建高版本Android 7并启动在这里插入图片描述
利用adb连接模拟器,夜神模拟器adb连接默认是连接本机的62001端口,可是这里因为是新建的可能端口会有所变化,不过也还是在62001附近,可以使用netstat -ano查看一下本机端口,我这里是62041端口,如下所示代表连接成功

adb connect 127.0.0.1:62025 #连接设备
adb devices #查看设备

在这里插入图片描述

2. 设置burp证书

先在burp里设置本机代理
在这里插入图片描述
访问代理地址并下载burp证书
在这里插入图片描述
将下载的burp证书导入到模拟器中/data/local/tmp目录下,并重命名为cert-der.crt(此名称在接下来的fridascript.js脚本中使用,如果该名字命名为其他则脚本中相对应的地方也需要进行替换)

adb push cacert.der /data/local/tmp/cert-der.crt

3. 模拟器设置代理

在安卓模拟器设置->wlan选择对应网络设置代理
在这里插入图片描述

4. Frida设置

Python frida包安装

W

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值