本帖最后由 泄密无花 于 2023-4-4 15:02 编辑
0x00 前言
1、安卓功能逆向学习了一阵子了,期间也夹杂着一些各种各样的东西,不过是时候迈出下一步了
2、碰巧今天遇到一个App抓不到包,那么就来写篇帖子记录一下这段时间的积累
3、这是一个系列贴,技术都是跟大佬学的,帖子都是自己写的(原不原创不重要啦,主要还是自己太菜了)
4、关于单向认证与双向认证、CA证书等等相关的基础知识,各位大佬自行搜索了解哦
5、本贴非常初学者,欢迎指出错误
0x01 工具
1、模拟环境:雷电模拟器 9
2、Magisk Delta:https://huskydg.github.io/magisk-files/intro.html
3、JustTrustMe:https://github.com/Fuzion24/JustTrustMe
4、JustTrustMePlus:https://github.com/langgithub/JustTrustMePlus
5、LSPosed:https://github.com/LSPosed/LSPosed
6、算法助手 v2.1
7、frida:https://github.com/frida/frida
8、Burp Suite
9、OpenSSL:https://slproweb.com/products/Win32OpenSSL.html
10、目标App:移动经纪人(com.anjuke.android.newbroker)
环境部署略过,自行搜索
0x02 SSL Unpinning - 证书
众所周知,使用抓包软件需要导入证书,那么自从Android 7 之后就不再信任用户证书了,就需要把抓包软件的证书导入到系统证书中,有点类似于Windows安装证书时,要把证书安装到受信任的证书根目录一样
1)由于Burp Suite(下面简称BP)导出的证书为der,那么就需要用到OpenSSL来生成Android的证书
导出BP的证书之后,命名为:bp.der,Linux下可以直接执行下面这个脚本,即可得到证书(Windows的OpenSSL参考帖子工具提供的下载地址,命令一致)什么!你还不会?
#!/bin/bash
openssl x509 -in bp.der -inform DER -out bp.pem -outform PEM
name=$(openssl x509 -inform PEM -subject_hash_old -in bp.pem | head -1)
cat bp.pem > "$name.0"
2)把生成的证书导入Android
adb devices
adb root
adb remount
# 导入Burp Suite的证书
adb push 9a5ba575.0 /system/etc/security/cacerts/
adb reboot
如果报错,多执行几次报错的命令即可
3)对于一般没有检测的App来说,这样已经可以愉快地抓包了
0x03 SSL Unpinning - 单向认证
1、单向认证网上的资料都是使用Xposed + JustTrustMe/TrustMeAlready等等模块进行对校验函数的Hook,Android 8 之后就使用Magisk + LSPosed来替代了Xposed
Magisk + LSPosed 部署,略过
1)部署了Magisk + LSPosed环境之后加载模块,就可以对检测很一般的App进行抓包了
2)JustTrustMe/TrustMeAlready等类似模块已经年久失修了,所以这里使用了算法助手 v2.1
[ + ] 先在LSPosed设置作用域之后,再运行算法助手

[ + ] 运行算法助手之后,选择需要Hook的功能点或者自定义Hook,再使用算法助手重启目标App

[ + ] BP设置WiFi代理进行抓包,出现报错

算法助手的JustTrustMe升级版会导致目标App的使用HTTP,但是端口却是443,网页会返回报错
解决方法:设置代理,让BP强制使用SSL即可

3)这种方法都是Hook相关的校验函数,具体的校验逻辑可以去学习一下大佬的项目
2、使用透明代理抓包
[ + ] 参考文章
https://blog.seeflower.dev/archives/210/
https://www.52pojie.cn/thread-1747740-1-1.html
1)查看模拟机、手机的系统架构
getprop ro.product.cpu.abi # 查询命令
2)下载对应架构的Clash Core
Clash:https://github.com/Dreamacro/clash
3)下载参考文章中的附件

4)修改config.yaml中的IP为本机IP

5)确保已经连接adb之后,按顺序运行push.bat、run.bat,运行之后不要关闭终端
-------未完待续