标签: 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
创建AVD
3.2、创建burp证书(参考:安卓手机使用adb添加系统证书方法)
打开burp,电脑浏览器访问"http://burp"并下载证书cacert.cer,获得证书文件cacert.cer之后,准备将其转换成可放入系统证书库的文件
[Shell] 纯文本查看 复制代码 openssl x509 -inform DER -subject_hash_old -in 证书文件.cer
获取hash值
获得红框中的hash值并把它作为后续的放入到系统证书库的证书名字,当前我的证书名为(9a5ba575.0)
[Shell] 纯文本查看 复制代码 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 写入环境变量
[Plain Text] 纯文本查看 复制代码 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"
添加环境变量
保存并退出,并使其生效
[Plain Text] 纯文本查看 复制代码 source .bash_profile
接着进入到AVD目录并以 "-writable-system" 的方式启动AVD
[Shell] 纯文本查看 复制代码 cd /Users/xxx/Library/Android/sdk/emulator/
#查看模拟器名字
./emulator -list-avds
./emulator -avd '@模拟器名字' -writable-system
然后就可以看到AVD运行了起来,此时再在控制台执行remount命令挂载文件系统,接着就可以push我们修改好的系统证书文件了。
[Shell] 纯文本查看 复制代码 adb root
adb remount
remount
[Shell] 纯文本查看 复制代码 #推入证书
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就可以了(至于其他配置,可以查阅相关文档进行自定义的配置)
[Plain Text] 纯文本查看 复制代码 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,从文件导入配置就可以了。
使用时在"配置"中勾选刚导入的配置文件
使用代{过}{滤}理1
点击运行
使用代{过}{滤}理2
"代{过}{滤}理" 中选择burp(在yaml文件中命名的),就可以将流量转发到指定ip:port上。
使用代{过}{滤}理3
最后再在burp当中进行一番抓包配置(这个burp配置,应该可以不用再贴出来了吧?对吧?对吧?),就可以抓包了。
抓包成功
四、多余的总结(不是)
1、解决了真机和pc连接同一网络,但抓不到包的各种情况(例如访问隔离之类的,直接在pc本地抓包本地发包)
2、解决了remount(不管是AVD还是真机)挂载不上的问题。
3、补充一些抓包姿势,通过代{过}{滤}理转发去抓包可以试试drony(小程序|App抓包-Drony配合Burp实现App定向抓包)和 lamda
|