Recopec
文章24
标签32
分类6

文章分类

一言

文章归档

Android 抓包配置 (Charles + Burp)

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 模块能做到这点。

所需资源

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 安装即可。重启之后可以在系统设置 -> 信任的证书看到我们导入的证书。

Screenshot_2025-09-04-11-00-15-57_fc704e6b13c4fb26bf5e411f75da84f2

Charles SSL 配置

找到 Proxy -> SSL proxying settings

把 Enable SSL proxying 的勾打上,点击左下角的加号,Host 和 Port 都填写 *

手机端配置

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

Screenshot_2025-09-04-11-07-59-30_41a74ddf68be21faad2fbbb691b15143

然后 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~

参考资料

Android14设置Charles证书为系统根证书

Reqable

本文作者:Recopec
本文链接:https://blog.irec.moe/android_capture.html
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可