【渗透测试】Adb works with Frida to bypass SSL Pinning

adb配合frida绕过SSL Pinning抓包

0x01 为什么要绕过

SSL Pinning是一种防止中间人攻击的技术,主要机制是在客户端发起请求–>收到服务器发来的证书进行校验,如果收到的证书不被客户端信任,就直接断开连接,常用于App端。

当不进行任何配置时,使用burp监听,操作App,Burp会记录到如下日志:

adb

翻译过来就是收到致命警报:证书_未知

那么如果想要继续监听流量,就需要进行绕过

0x02 准备工作

原材料:

1
2
3
4
5
6
7
adb
frida
frida-tools
frida-skeleton
hluda-server
burp suite
夜神模拟器

第一步,安装adb

Win的adb安装很简单,只需要去https://dl.google.com/android/repository/platform-tools-latest-windows.zip 网站下载 platform-tools压缩包即可:

20220424

接着配置环境变量,将解压的platform-tools路径写入变量:

20220424

接着打开cmd,运行adb version查看是否安装成功:

20220424

第二步,安装frida/frida-tools

首先在frida · PyPI网站结合本地Python版本下载两个文件,例如本地环境Python3.8,那么要下载frida-15.1.14.tar.gzfrida-15.1.14-py3.8-win-amd64.egg两个文件

20220424

下载到本地:

20220424

然后将frida-15.1.14-py3.8-win-amd64.egg文件复制到C:\Users\username目录

20220424

因为安装frida setup.py的时候,脚本会先在本地查找egg文件,如果查不到,那么就会在线下载,因为网络问题可能就会一直卡住无法完成安装。

所以我们先下载egg文件,再运行安装脚本,那么就会完成安装

20220424

然后pip install frida-tools安装frida-tools

20220424

第三步,安装frida-skeleton

项目基于frida的安卓hook框架,提供了很多frida自身不支持的功能

地址:Margular/frida-skeleton

将项目克隆到本地,pip安装一下依赖运行脚本:

20220424

第四步,下载hluda-server

下载地址:Releases · hzzheyang/strongR-frida-android (github.com)

下载之前需要先adb连接模拟器查看模拟器内核:

20220424

得到内核为x86,那么就下载x86的hluda-server

20220424

下载到本地后,利用adb push [hluda-server path] /data/local/tmphluda-server传到模拟器目录下

20220424

然后再次进入模拟器的Shell,进入到/tmp目录下,此时hluda-server已经在目录下

20220424

到这里准备工作就已经做好,剩下的BurpSuite和模拟器安装就不赘述。

0x03 Bypass SSL Pinning

首先adb连接到模拟器,不同的模拟器端口不同,常见的夜神模拟器端口为62001

然后进入模拟器Shell,进入/tmp目录下,赋予hluda-server运行权限并运行

20220424

此时表示已经在运行,暂不需要去管。

在模拟器中打开目标App,新开cmd窗口,运行frida-ps -U获取模拟器当前所有进程

20220424

这里一个小tips,保证模拟器除了目标App之外没有其他非必要App同时在运行,那么就很容易找到目标App的进程名称

接着运行frida -U -f package注入进程

20220424

此时目标App可能是处于黑屏状态,使用%resume使App重新运行

之后运行frida-skeleton脚本,查看当前设备是否在线:

20220424

然后运行python [frida-skeleton.py](http://frida-skeleton.py/) package进行Bypass

20220424

此时如果配置好抓包,操作App,Burp中就会拦截到相应的通信流量:

20220424