希望和各位大佬一起学习,如果文章内容有错请多多指正,谢谢!
个人博客链接:CH4SER的个人BLOG – Welcome To Ch4ser's Blog
0x00 Frida 环境配置
1. 本地安装 Frida
pip install frida
pip install frida-tools
2. 模拟器安装 Frida
下载地址:https://github.com/frida/frida/releases
本地 frida 版本需要和模拟器 frida 版本保持一致,并且需注意模拟器位数(x86、x64),真机选择 ARM,模拟器选择无 ARM 的。
我的本地 frida 版本是 16.2.1 且模拟器是 x86 所以选择如下:
解压后将 frida-server-16.2.1-android-x86 复制到模拟器 adb.exe 同级目录下,执行以下操作在模拟器安装并启动 frida
adb.exe push frida-server /data/local
adb.exe shell
cd /data/local/
chmod 777 frida-server-16.2.1-android-x86
./frida-server-16.2.1-android-x86
然后另启一个命令行设置转发,其中 27042 为 frida 默认端口
adb.exe forward tcp:27042 tcp:27042
判断 frida 是否连接成功,出现模拟器进程信息表示成功
frida-ps -U
frida-ps -R
0x01 Frida+HOOK-JS+BurpSuite(推荐方案)
hook脚本下载地址:https://github.com/apkunpacker/FridaScripts
下载 SSLUnpinning 脚本
配置好 BurpSuite 代理并启动 frida,指定 APK 和 SSLUnpinning,即可绕过证书双向验证
adb.exe shell
cd /data/local/
./frida-server-16.2.1-android-x86
adb.exe forward tcp:27042 tcp:27042
frida -U -f 包名 -l hookjs文件名
//包名可以通过 ls /data/data 或 APK 资源器查看
0x02 Frida+r0capture+WireShark(通杀方案)
r0capture项目地址:https://github.com/r0ysue/r0capture
配置好 BurpSuite 代理并启动 frida
adb.exe shell
cd /data/local/
./frida-server-16.2.1-android-x86
adb.exe forward tcp:27042 tcp:27042
在 r0capture 项目执行如下命令,生成 xxxx.pcap,该格式不能通过 BurpSuite 查看,但可以通过 WireShark 查看。
python r0capture.py -U -f 包名 -p xxxx.pcap
0x03 导入证书
思路:1、解压获取apk的证书文件;2、反编译后得到证书文件的密钥;3、Burp导入证书后实现对应抓包
该方案仅适用于 Apk 能反编译,有证书文件的场景,加壳需要脱壳,但有时不一定能脱壳成功。
以 mostalk App 的证书双向认证为例,首先使用 MobSF 静态分析,得知其证书文件位置:
解压 Apk 并找到证书文件位置,导入 BurpSuite - Settings - Network - TLS,这里提示要求输入密钥,密码一般通过反编译得到,但 mostalk App 加壳了我没有脱壳成功。
0x04 总结
总的来说推荐使用方案一,可以在 BurpSuite 方便查看,但是有时会绕不过。
方案二基本上是通杀,但是只能 WireShark 查看,个人不是很习惯。
方案三也是一种思路,成功与否主要在于 Apk 能否反编译拿到密钥。