
Android 抓包配置 (Charles + Burp)
Android 抓包配置 (Charles + Burp)
背景知识
Android 系统是有两种证书类型的,Release 包默认只信任系统证书,而 Debug 包默认信任系统证书和用户证书。
我们要劫持 SSL 流量就必须要做到 MITM,然而我们 MITM 后的数据包内的证书需要设备信任,所以需要把我们的根证书加进系统信任的证书列表里。作为普通用户,正常途径只能添加用户证书,而 APP 是一般构建的是 Release 包,所以我们必须通过修改系统证书的方式来让我们的证书被信任。
在 Android 14 之后,证书需要放在 /system/etc/security/cacerts
和 /apex/com.android.conscrypt/cacerts
目录下,我提供的 magisk 模块能做到这点。
所需资源
需要一台有 Magisk 环境的手机L
Charles
Burp:https://pan.baidu.com/s/1J_CUxLKqC0h3Ypg4sQV0_g 提取码:52pj
module:https://blog.irec.moe/android_capture/reqable-magisk.zip
Charles 配置
激活步骤略。把 Proxy -> Windows proxy 关掉,File -> Clear session 一下。
导出根证书
Help -> SSL proxying -> Save Charles Root certificate 保存一下根证书,如果有需要你也可以把根证书装你手机上。

找到刚刚的根证书目录,使用这条命令计算证书 Subject 的 Hash 值(Windows 使用 Git Bash),把输出的第一行作为文件名,改成这样的格式 b51d9383.0
,这是用来创建证书的符号链接的。
1
openssl x509 -subject_hash_old -in cert.pem

改名好之后,打开这个模块的安装包,把证书丢到这个目录下 reqable-magisk.zip\system\etc\security\cacerts
。这个模块是从 reqable 里面提取出来的,因为现在的 Android system 目录是不可写的,所以需要这样一个模块来挂载证书。

丢进去之后,传到手机上用 Magisk 安装即可。重启之后可以在系统设置 -> 信任的证书看到我们导入的证书。

Charles SSL 配置
找到 Proxy -> SSL proxying settings
把 Enable SSL proxying 的勾打上,点击左下角的加号,Host 和 Port 都填写 *

手机端配置
手机打开 WLAN 设置,找到你连接的 WiFi 详情,修改代理设置为手动。主机名填写运行 Charles 设备的 IP,端口填写 Charles 的监听端口(默认 8888)。

然后 Charles 会提示你是否允许连接请求,点击 Allow 即可。
PS: 这里 Charles 的 Access control 有 bug,不论我填 10.2.2.119 还是 10.2.2.0/24 还是 0.0.0.0/24 都不行,只能这样让他弹窗然后点 Allow。这里我手贱点了 Deny 然后怎么样都没法恢复了,只好在手机上换了个 IP。

到这里你就能截获 SSL 流量了,你可以在 Charles 的主界面的左边的 sitemap 看到有动静。

不过仅仅抓包对我来说是不够的,我需要使用 Burp 对数据包进行修改。
Charles 转发到 Burp 配置
找到 Proxy -> External proxying settings
把 Web Proxy (HTTP) 和 Secure Web Proxy 都打上,目的地址填 Burp 的监听地址和端口(默认8080),这里我 Charles 和 Burp 都运行在本机,所以用 127.0.0.1
。

保存之后你就能在 Burp 里面看到数据包了,接下来就是你自己探索的时间了。
Enjoy~
