本文目录导读:

在进行APP安全测试时,抓取HTTPS流量是核心环节,由于HTTPS是加密的,需要通过中间人(MITM)代理来解密流量,以下是主流、专业的操作流程和工具推荐(以Android/iOS为例):
核心原理
- 设置代理:让APP的流量先经过你的抓包工具(如Burp Suite、Fiddler、Charles)。
- 安装CA证书:在手机/模拟器上安装抓包工具生成的根证书(Root CA),让系统信任这个“伪装”的服务器。
- 绕过SSL Pinning:如果APP内置了证书锁定(SSL Pinning),需要额外处理。
环境准备(通用步骤)
物理设备 vs 模拟器
- 模拟器(推荐新人):操作简单,获取Root权限容易(如夜神、MuMu、Android Studio自带模拟器)。
- 真机(推荐生产环境):更真实,但旧版Android(<7.0)无需Root,新版需要Root或使用VirtualXposed等工具。
网络设置
- 确保手机和电脑在同一个Wi-Fi下(或使用USB共享网络+Proxifier)。
- 关闭Windows防火墙或放行抓包工具端口。
主流工具配置(以Android为例)
方案A:Burp Suite(最专业,适合深度测试)
- Burp代理监听:
Proxy -> Options设置监听IP(如0.0.0:8080)。 - 手机设置代理:Wi-Fi设置中填入电脑IP和端口(如
168.1.100:8080)。 - 安装CA证书:
- 手机浏览器访问
http://burp(或电脑IP+端口),下载cacert.der。 - Android 7+需Root:将证书安装到系统信任存储区(
/system/etc/security/cacerts/),普通用户安装的证书对APP无影响。 - 无Root:使用“Magisk模块”(如Move Certificates)或VirtualXposed+JustTrustMe。
- 手机浏览器访问
方案B:Charles(Mac/Win通用,图形化友好)
- Proxy -> Proxy Settings:勾选
HTTP Proxy,端口默认8888。 - 手机代理设置:同上,指向电脑IP:8888。
- 安装证书:
- 手机浏览器访问
chls.pro/ssl下载证书。 - 安装时注意:在“设置->安全->从存储设备安装”(部分机型需在“证书”类型中选择“VPN和应用”)。
- 手机浏览器访问
- SSL Proxying Settings:添加
*:443(抓所有HTTPS)或具体域名。
关键挑战:SSL Pinning(证书绑定)
现象:设置代理后,APP提示“网络错误”或“无法连接到服务器”,但浏览器正常上网。
解决方案(按难度排序):
-
方案1:使用已ROOT设备 + Xposed/模块
- JustTrustMe:Xposed模块,一键绕过大部分SSL Pinning(仅限非混淆/非Native层)。
- SSLUnpin:另一种常用模块。
- Frida(最强大):脚本注入,绕过自定义Pinning。
# 示例:使用Frida绕过objection默认pinning frida -U -f com.app.package --no-pause -l ssl_pinning.js
-
方案2:VirtualXposed(无Root)
安装VirtualXposed,在虚拟环境中安装APP和JustTrustMe模块(无需真Root)。
-
方案3:游戏/Unity APP(特殊)
- 如果使用了
Best HTTP、OkHttp等库,Frida脚本可能需要针对特定库注入。
- 如果使用了
常见问题排雷
| 问题 | 原因 | 解决 |
|---|---|---|
| 无法安装证书 | 部分Android系统限制了用户证书安装 | 检查“安装证书”类型是否为“VPN和应用”;或直接Copy进系统目录(需Root) |
| APP不信任用户证书 | 系统证书存储位置错误 | 将证书重命名为 hash.0 格式,放入 /system/etc/security/cacerts/(需Root) |
| 流量走了VPN但抓不到 | 代理设置冲突(如APP检测到代理) | 使用 ProxyDroid 或 Postern 强制代理(需Root);或改用 tcpdump + Wireshark |
| iOS抓包需额外注意 | iOS 10.3+要求信任证书 | 设置->通用->关于本机->证书信任设置,手动开启 |
| 仍无法解密 | 使用了双向认证(双向TLS) | 需要在Burp/Charles中导入客户端证书(.p12) |
进阶技巧:无代理流量的抓取
如果APP使用了非HTTP代理(如自定义TCP、QUIC、WebSocket)或防代理检测:
- VPN抓包:使用
Packet Capture(Android)或RethinkDNS本地VPN抓包。 - 流量转发:使用
mitmproxy的透明代理模式(需iptables转发)。 - 物理层抓包:通过
tcpdump抓取手机网卡流量,再用Wireshark分析(适合分析底层协议)。
总结推荐工作流
- 优先方案:Root + Frida + Burp Suite(覆盖95%场景)。
- 无Root方案:VirtualXposed + JustTrustMe(仅限部分APP)。
- 绝对必要:确认APP是否使用了双向SSL认证(需拿到客户端证书),或者Native层Pinning(需Frida Hook
libconnection.so等)。
⚠️ 法律与道德提示:仅对自己的APP或经过授权的测试环境进行抓包操作,禁止非法窃取他人通信数据。