写在前面:合法学习边界
抓包只用于授权目标。APP 流量含用户数据,非授权抓取可能违反法律与平台规则。
一、APP 抓包难点
APP 比 Web 更难抓包,难点集中:
1
2
3
4
5
| 1. HTTPS 加密 → 需装 CA 证书
2. 安卓 7+ 用户证书不被系统信任
3. iOS 需要手动信任证书
4. APP 做证书固定(SSL Pinning)
5. APP 检测代理(反抓包)
|
二、工具选择
1
2
3
4
| 抓包:Burp Suite(功能全)/ Charles(可视化好)/ mitmproxy(命令行+脚本)
绕过 Pinning:frida + objection / Xposed + JustTrustMe
环境:模拟器(雷电/MuMu/Genymotion)或真机
辅助:adb、Magisk、Cydia(iOS 越狱)
|
三、Android 抓包
第 1 步:Burp 开代理(127.0.0.1:8080)
第 2 步:设备连代理
1
2
3
| WiFi 手动代理 → 电脑局域网 IP:8080
模拟器用 adb 也可:
adb shell settings put global http_proxy 192.168.x.x:8080
|
第 3 步:装 CA 证书
1
2
3
4
5
| 浏览器访问 http://burp/ → 下载 cacert.der → 改名 .cer 安装
安卓 7+ 系统应用不信任用户证书:
方法1:安卓 7 以内模拟器
方法2:root 后把证书转系统证书(openssl 转 pem → 放 /system/etc/security/cacerts)
方法3:Magisk 模块 / JustTrustMe
|
第 4 步:验证
1
| # 装好后,Burp 里能解密 APP 的 HTTPS 请求
|
四、iOS 抓包
第 1 步:连代理
第 2 步:安装并信任证书
1
2
3
| Safari 访问 http://burp/ → 下载描述文件 → 安装
设置 → 通用 → 关于本机 → 证书信任设置 → 开启对 Burp 的完全信任
(iOS 10.3+ 必须手动信任,否则无效)
|
第 3 步:验证
五、绕过 SSL Pinning
装了证书仍抓不到 → APP 证书固定。常见绕过:
frida + objection(Android/iOS 通用)
1
2
3
4
5
6
| pip install frida-tools objection
# 设备连接后
frida-ps -U
objection -g com.example.app explore
android sslpinning disable # Android
ios sslpinning disable # iOS
|
Xposed + JustTrustMe
1
2
| 安卓:Xposed 装 JustTrustMe 模块,全局禁用校验
iOS:越狱 + SSL Kill Switch 2 / 或 frida
|
六、绕过代理检测(反抓包)
有些 APP 检测系统代理,发现代理就拒绝联网。绕过:
1
2
3
| 方法1:不用系统代理,用 iptables 透明代理转发到 Burp
方法2:Proxifier / ProxyDroid 把 APP 流量强制代理
方法3:抓包工具走 VPN 模式(Charles 支持)
|
七、常见坑
1
2
3
4
5
| 安卓证书装了没效果 → 系统证书问题,用 JustTrustMe/系统证书
iOS 信任了还不行 → Pinning,用 frida/SSL Kill Switch
只有 CONNECT 无内容 → 证书没信任
APP 闪退/拒绝连接 → 代理检测,换透明代理
双 factor/风控 → 抓包动作别太频繁
|
影响与风险
APP 抓包被滥用会导致:
1
2
3
| 用户数据与接口泄露
支付/业务逻辑被篡改
隐私合规风险
|
测试能力本身中性,必须限定授权范围。
八、检测与防御(蓝队)
1
2
3
4
| 敏感接口证书固定
检测代理/模拟器/root(风控)
服务端鉴权与频控
抓包审计与告警
|
修复
1
2
3
4
| 敏感接口证书固定
检测代理/模拟器/root(风控)
服务端鉴权与频控
抓包流量审计告警
|
九、小结
APP 抓包 = 代理 + 证书信任 + 绕过 Pinning。Android 卡在“系统证书”,iOS 卡在“手动信任”,后面都卡在“Pinning”。把这套流程和 frida/objection 用熟,基本能覆盖绝大多数 APP 的 HTTPS 流量。