【渗透测试】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中就会拦截到相应的通信流量: