移动应用安全基础篇:APP抓包姿势总结
字数 1584 2025-08-18 11:38:45
APP抓包技术全面指南:绕过SSL Pinning与高级抓包方法
一、SSL Pinning概述
SSL Pinning(证书绑定)是移动应用常见的安全机制,用于防止中间人攻击。它会将服务器证书或公钥内置在应用中,在通信时验证服务器证书是否与内置证书匹配。
工作原理
- 应用内置服务器证书或公钥
- 每次HTTPS连接时验证服务器证书
- 不信任系统信任的CA证书(如Burp/Fiddler的证书)
二、Android平台抓包技术
1. 使用Frida绕过SSL Pinning
准备工作:
- 安装Frida工具:
pip install frida-tools - 准备Burp证书:
cert-der.crt - 目标设备已root
操作步骤:
# 推送Burp证书到设备
adb push burpca-cert-der.crt /data/local/tmp/cert-der.crt
# 使用Frida加载脚本
frida -U -f it.app.mobile -l frida-android-repinning.js --no-pause
Frida脚本核心功能:
- 从文件系统加载自定义CA证书
- 创建包含信任CA的KeyStore
- 创建信任自定义KeyStore的TrustManager
- 拦截SSLContext.init()调用,替换TrustManager
2. JustTrustMe方法
实现原理:
Hook Android中所有用于校验SSL证书的API:
- OkHttp的CertificatePinner
- Apache HttpClient的SSLSocketFactory
- HttpsURLConnection的HostnameVerifier和X509TrustManager
- WebView的证书校验
使用方法:
- 安装Xposed框架
- 下载安装JustTrustMe模块
- 激活模块并重启设备
三、iOS平台抓包技术
1. 使用Objection绕过SSL Pinning
准备工作:
- 设备越狱并安装Cydia
- 添加Frida源
- 安装Objection:
pip3 install objection
操作步骤:
# 附加到目标应用
objection --gadget AppName explore
# 禁用SSL Pinning
ios sslpinning disable
2. SSL Kill Switch 2
实现原理:
Hook iOS安全传输相关函数:
- SSLHandshake
- SSLSetSessionOption
- SSLCreateContext
- tls_helper_create_peer_trust (iOS 10+)
安装方法:
- 确保已安装Cydia Substrate
- 下载deb包并安装:
dpkg -i com.nablac0d3.sslkillswitch2_0.13.deb
killall -HUP SpringBoard
使用方法:
在设置中启用"Disable Certificate Validation"
3. Frida Hook AFNetworking
示例脚本:
function main() {
var resolver = new ApiResolver('objc');
var matches = resolver.enumerateMatchesSync("-[AFSecurityPolicy evaluateServerTrust:forDomain:]");
Interceptor.attach(ptr(matches[0]["address"]), {
onLeave: function(retval) {
retval.replace(1); // 强制返回验证成功
}
});
}
main();
四、特殊场景处理
1. 路由直连应用抓包
问题现象:
- 开启/关闭代理不影响APP通信
- 抓包工具无法捕获任何数据
原因分析:
应用使用了http.route.default-proxy参数,默认不通过代理进行路由寻址
解决方案:
使用Proxifier配合Charles:
- 配置Proxifier规则
- 强制所有流量通过代理
- 在Charles中查看捕获的数据
2. 高级抓包工具
iOS工具推荐:
-
Thor(锤子):
- 抓取ipa安装包
- 捕获音乐、视频等多媒体
- 支持自定义过滤器
-
HTTP Catcher:
- 实时记录HTTP/1, HTTP/2和WebSocket请求
- 支持HTTPS解密
- 请求过滤和重写功能
五、总结与防御建议
技术总结
- Android平台:Frida和JustTrustMe是主流方案
- iOS平台:Objection和SSL Kill Switch 2效果最佳
- 特殊场景:路由直连应用需使用Proxifier等工具
防御建议(针对开发者)
- 多因素证书校验
- 证书动态更新机制
- 敏感操作二次验证
- 代码混淆和完整性检查
- 定期更换证书和密钥