移动应用安全基础篇:APP抓包姿势总结
字数 1584 2025-08-18 11:38:45

APP抓包技术全面指南:绕过SSL Pinning与高级抓包方法

一、SSL Pinning概述

SSL Pinning(证书绑定)是移动应用常见的安全机制,用于防止中间人攻击。它会将服务器证书或公钥内置在应用中,在通信时验证服务器证书是否与内置证书匹配。

工作原理

  • 应用内置服务器证书或公钥
  • 每次HTTPS连接时验证服务器证书
  • 不信任系统信任的CA证书(如Burp/Fiddler的证书)

二、Android平台抓包技术

1. 使用Frida绕过SSL Pinning

准备工作

  1. 安装Frida工具:pip install frida-tools
  2. 准备Burp证书:cert-der.crt
  3. 目标设备已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脚本核心功能

  1. 从文件系统加载自定义CA证书
  2. 创建包含信任CA的KeyStore
  3. 创建信任自定义KeyStore的TrustManager
  4. 拦截SSLContext.init()调用,替换TrustManager

2. JustTrustMe方法

实现原理
Hook Android中所有用于校验SSL证书的API:

  • OkHttp的CertificatePinner
  • Apache HttpClient的SSLSocketFactory
  • HttpsURLConnection的HostnameVerifier和X509TrustManager
  • WebView的证书校验

使用方法

  1. 安装Xposed框架
  2. 下载安装JustTrustMe模块
  3. 激活模块并重启设备

三、iOS平台抓包技术

1. 使用Objection绕过SSL Pinning

准备工作

  1. 设备越狱并安装Cydia
  2. 添加Frida源
  3. 安装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+)

安装方法

  1. 确保已安装Cydia Substrate
  2. 下载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:

  1. 配置Proxifier规则
  2. 强制所有流量通过代理
  3. 在Charles中查看捕获的数据

2. 高级抓包工具

iOS工具推荐

  1. Thor(锤子)

    • 抓取ipa安装包
    • 捕获音乐、视频等多媒体
    • 支持自定义过滤器
  2. HTTP Catcher

    • 实时记录HTTP/1, HTTP/2和WebSocket请求
    • 支持HTTPS解密
    • 请求过滤和重写功能

五、总结与防御建议

技术总结

  • Android平台:Frida和JustTrustMe是主流方案
  • iOS平台:Objection和SSL Kill Switch 2效果最佳
  • 特殊场景:路由直连应用需使用Proxifier等工具

防御建议(针对开发者)

  1. 多因素证书校验
  2. 证书动态更新机制
  3. 敏感操作二次验证
  4. 代码混淆和完整性检查
  5. 定期更换证书和密钥

六、参考资源

  1. Frida官方文档
  2. SSL Kill Switch 2 GitHub
  3. OkHttp证书绑定文档
  4. Apache HttpClient文档
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 操作步骤 : 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 操作步骤 : 2. SSL Kill Switch 2 实现原理 : Hook iOS安全传输相关函数: SSLHandshake SSLSetSessionOption SSLCreateContext tls_ helper_ create_ peer_ trust (iOS 10+) 安装方法 : 确保已安装Cydia Substrate 下载deb包并安装: 使用方法 : 在设置中启用"Disable Certificate Validation" 3. Frida Hook AFNetworking 示例脚本 : 四、特殊场景处理 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等工具 防御建议(针对开发者) 多因素证书校验 证书动态更新机制 敏感操作二次验证 代码混淆和完整性检查 定期更换证书和密钥 六、参考资源 Frida官方文档 SSL Kill Switch 2 GitHub OkHttp证书绑定文档 Apache HttpClient文档