【渗透测试】Adb works with Frida to bypass SSL Pinning
adb配合frida绕过SSL Pinning抓包
0x01 为什么要绕过
SSL Pinning是一种防止中间人攻击的技术,主要机制是在客户端发起请求–>收到服务器发来的证书进行校验,如果收到的证书不被客户端信任,就直接断开连接,常用于App端。
当不进行任何配置时,使用burp监听,操作App,Burp会记录到如下日志:

翻译过来就是收到致命警报:证书_未知
那么如果想要继续监听流量,就需要进行绕过
0x02 准备工作
原材料:
1 | adb |
第一步,安装adb
Win的adb安装很简单,只需要去https://dl.google.com/android/repository/platform-tools-latest-windows.zip 网站下载 platform-tools压缩包即可:

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

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

第二步,安装frida/frida-tools
首先在frida · PyPI网站结合本地Python版本下载两个文件,例如本地环境Python3.8,那么要下载frida-15.1.14.tar.gz和frida-15.1.14-py3.8-win-amd64.egg两个文件

下载到本地:

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

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

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

第三步,安装frida-skeleton
项目基于frida的安卓hook框架,提供了很多frida自身不支持的功能
将项目克隆到本地,pip安装一下依赖运行脚本:

第四步,下载hluda-server
下载地址:Releases · hzzheyang/strongR-frida-android (github.com)
下载之前需要先adb连接模拟器查看模拟器内核:

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

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

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

到这里准备工作就已经做好,剩下的BurpSuite和模拟器安装就不赘述。
0x03 Bypass SSL Pinning
首先adb连接到模拟器,不同的模拟器端口不同,常见的夜神模拟器端口为62001
然后进入模拟器Shell,进入/tmp目录下,赋予hluda-server运行权限并运行

此时表示已经在运行,暂不需要去管。
在模拟器中打开目标App,新开cmd窗口,运行frida-ps -U获取模拟器当前所有进程

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

此时目标App可能是处于黑屏状态,使用%resume使App重新运行
之后运行frida-skeleton脚本,查看当前设备是否在线:

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

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