整合一个Android抓包新姿势(AVD+https+remount+clash代{过}{滤}理转发+burp 版)
标签: Https抓包,AVD,remount,系统证书,clash代{过}{滤}理转发,Burp根据自己的一些需求整合了一些抓包手段,有一部分内容借鉴了其他大佬的抓包姿势,均有在文中备注并添加链接。
(保命)
一、需求的产生:
出差了,要加白ip进行测试,这里环境用的公共环境的ip进行加白,手机直连可以访问业务,但不知道为啥抓不到包,pc和手机互相也ping不通,考虑到加白ip流程比较麻烦(需要提交申请的那种),所以我还是尽量保持已经加好的ip,于是就想直接电脑装模拟器抓包。
二、手头的设备:
m1 的 macbookpro
三、开始捣鼓
3.1、创建AVD
这里不清楚国内的各种模拟器是否支持m1芯片,于是就上手Android Studio中的 AVD,配置是Pixel 3a XL API 29 + AndroidQ arm64-v8a,其余的默认就可以了。现在可以不着急运行,因为后面我们需要通过命令行启动AVD
3.2、创建burp证书(参考:安卓手机使用adb添加系统证书方法)
打开burp,电脑浏览器访问"http://burp"并下载证书cacert.cer,获得证书文件cacert.cer之后,准备将其转换成可放入系统证书库的文件
openssl x509 -inform DER -subject_hash_old -in 证书文件.cer
获得红框中的hash值并把它作为后续的放入到系统证书库的证书名字,当前我的证书名为(9a5ba575.0)
openssl x509 -inform DER -text -in 证书文件.cer > hash值.0
3.3、Remount并将证书导入到系统目录
获得了修改好的证书文件(9a5ba575.0)之后,就需要将证书放入AVD的目录当中,直接adb push会报Read-only,直接adb root 、adb remount也会报错,通过百度学到了通过命令行配置启动参数的方式运行AVD(参考:解决Android Studio ADV模拟器无法使用remount命令记录),就可以以写的方式启动AVD并向系统目录写入证书文件。
启动AVD之前,需要配置一下Android相关的环境变量。打开 .bash_profile 写入环境变量
export ANDROID_HOME=/Users/xxx/Library/Android/sdk
export PATH="$ANDROID_HOME/emulator:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/cmdline-tools/latest:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$PATH"
保存并退出,并使其生效
source .bash_profile
接着进入到AVD目录并以 "-writable-system" 的方式启动AVD
cd /Users/xxx/Library/Android/sdk/emulator/
#查看模拟器名字
./emulator -list-avds
./emulator -avd '@模拟器名字' -writable-system
然后就可以看到AVD运行了起来,此时再在控制台执行remount命令挂载文件系统,接着就可以push我们修改好的系统证书文件了。
adb root
adb remount
#推入证书
adb push 9a5ba575.0 /system/etc/security/cacerts/
#检查一下证书权限(644权限-rw-r--r--)
adb shell
cd /system/etc/security/cacerts/
ls -la
3.4、抓包(clash+burp)
此时我们已经将证书成功放入到系统证书当中了,已经可以通过设置代{过}{滤}理进行抓包了。不过平常抓包的时候,或多或少都会碰到需要来回切代{过}{滤}理,很麻烦,这里就从其他同事那边学到了利用clash进行代{过}{滤}理转发抓包的姿势,需要抓包的时候点击clash开关就可以将流量转发到我们指定的ip:port上,还是比较方便的,于是就有了这一部分内容。
首先,还是需要安装clash应用的。接下来就是配置yaml规则文件,只要将图片中圈出的ip和port修改成burp监听的ip和port就可以了(至于其他配置,可以查阅相关文档进行自定义的配置)
mixed-port: 7890
allow-lan: false
mode: global
log-level: info
external-controller: 127.0.0.1:9090
proxies:
- name: "burp"
type: http
server: 192.168.70.72
port: 8080
proxy-groups:
- name: Proxy
type: select
proxies:
- burp
修改完之后直接adb push到AVD当中。然后打开clash,从文件导入配置就可以了。
使用时在"配置"中勾选刚导入的配置文件
点击运行
"代{过}{滤}理" 中选择burp(在yaml文件中命名的),就可以将流量转发到指定ip:port上。
最后再在burp当中进行一番抓包配置(这个burp配置,应该可以不用再贴出来了吧?对吧?对吧?),就可以抓包了。
四、多余的总结(不是)
1、解决了真机和pc连接同一网络,但抓不到包的各种情况(例如访问隔离之类的,直接在pc本地抓包本地发包)
2、解决了remount(不管是AVD还是真机)挂载不上的问题。
3、补充一些抓包姿势,通过代{过}{滤}理转发去抓包可以试试drony(小程序|App抓包-Drony配合Burp实现App定向抓包)和 lamda
CubicRoot6 发表于 2023-11-14 09:23
有真机无root抓包的思路吗
应该主要还是针对https的抓包。可以试试virtual xposed。另外,利用cve提权将抓包工具证书放入系统证书库。自定义系统,将抓包工具证书放入系统证书库。自定义系统将root特征隐藏。暂时就想到这几种方式。 导入老是各种报错if DNS configuration is turned on,NameServe;cananot be empty,试过好多写法,这种咋搞
学习了,每日一个骚操作{:17_1073:} 一个奇妙的思路,通过clash写一个配置替代反复手写HTTP袋里,学到了 你这波操作也是真的骚 谢谢分享{:1_919:} 看完了,但是为什么不用Charles呢 烤奶少糖2 发表于 2022-10-20 17:03
看完了,但是为什么不用Charles呢
burp那一块换成charles和fiddler抓包,也是可以的 不错不错, 新姿势 不错,新东西 安卓版的?