Fythem 发表于 2022-10-19 16:12

整合一个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


Fythem 发表于 2023-11-21 10:34

CubicRoot6 发表于 2023-11-14 09:23
有真机无root抓包的思路吗

应该主要还是针对https的抓包。可以试试virtual xposed。另外,利用cve提权将抓包工具证书放入系统证书库。自定义系统,将抓包工具证书放入系统证书库。自定义系统将root特征隐藏。暂时就想到这几种方式。

陌晓寒 发表于 2023-2-9 15:04

导入老是各种报错if DNS configuration is turned on,NameServe;cananot be empty,试过好多写法,这种咋搞

正己 发表于 2022-10-20 13:30

学习了,每日一个骚操作{:17_1073:}

TinyBad 发表于 2022-10-20 13:43

一个奇妙的思路,通过clash写一个配置替代反复手写HTTP袋里,学到了

nullable 发表于 2022-10-20 14:26

你这波操作也是真的骚

xiting 发表于 2022-10-20 14:46

谢谢分享{:1_919:}

烤奶少糖2 发表于 2022-10-20 17:03

看完了,但是为什么不用Charles呢

Fythem 发表于 2022-10-20 18:51

烤奶少糖2 发表于 2022-10-20 17:03
看完了,但是为什么不用Charles呢

burp那一块换成charles和fiddler抓包,也是可以的

JiuTian666 发表于 2022-10-20 19:07

不错不错, 新姿势

aonima 发表于 2022-10-20 20:18

不错,新东西

hxiang 发表于 2022-10-20 22:50

安卓版的?
页: [1] 2 3 4 5
查看完整版本: 整合一个Android抓包新姿势(AVD+https+remount+clash代{过}{滤}理转发+burp 版)