1. 为什么有些App抓不到包最近在测试一个金融类App时发现用常规的抓包工具完全捕获不到任何请求数据。这让我意识到现代App的反抓包手段已经进化到相当复杂的程度。作为安全测试人员我们需要了解这些技术背后的原理才能找到应对之策。常见的抓包失败场景包括使用Charles/Fiddler等工具时App直接无法联网能看到HTTPS请求但内容全部加密只能捕获到少量无关紧要的请求核心业务请求完全隐身2. 主流反抓包技术原理剖析2.1 SSL Pinning证书锁定这是目前最有效的反抓包技术之一。App在编译时就将合法的证书或公钥硬编码到代码中运行时只会信任这些特定证书。当我们尝试用中间人攻击(MITM)方式抓包时由于证书不匹配App会直接拒绝连接。实现方式通常有两种证书锁定(Certificate Pinning)验证服务器证书是否与预置的完全一致公钥锁定(Public Key Pinning)只验证证书中的公钥是否匹配2.2 非标准端口与协议有些App会使用非443端口进行HTTPS通信或者干脆自定义二进制协议。这会让传统抓包工具完全失效因为它们默认只监控常见端口的标准协议。2.3 请求内容二次加密即使HTTPS通道被成功拦截App可能还会对请求体进行额外的加密处理。常见做法包括使用AES对称加密业务数据对关键参数进行单独签名采用Protobuf等二进制格式传输数据2.4 环境检测与反调试高级App会检测运行环境如果发现以下情况就会禁用网络功能设备已root/越狱检测到Xposed/Frida等hook框架系统证书库被修改运行在模拟器中3. 突破反抓包的实战方案3.1 绕过SSL Pinning对于Android平台常用方法有使用Objection框架objection android sslpinning disable修改APK文件删除证书校验相关代码使用Frida脚本动态hook验证函数iOS平台则可以考虑使用SSL Kill Switch 2越狱插件通过Cydia Substrate注入代码对二进制文件进行静态patch3.2 处理自定义协议对于非标准协议可以使用Wireshark进行原始流量捕获逆向分析App的协议实现编写自定义解析插件3.3 对抗环境检测关键是要让App认为运行在正常环境中使用Magisk Hide隐藏root状态通过XPrivacyLua伪造设备信息在真机而非模拟器上测试4. 高级抓包技巧与工具链4.1 组合使用多种工具推荐的工作流先用Packet Capture进行初步探测使用Wireshark分析原始流量配合Charles/Fiddler解析HTTPS必要时上Frida进行动态调试4.2 移动端抓包方案AndroidHttpCanary无需root的抓包神器VPN模式抓包避免证书问题使用Termux搭建本地代理iOSStream免越狱网络分析工具通过电脑共享WiFi抓包需要描述文件信任自定义证书4.3 自动化测试集成对于需要持续集成的场景使用mitmproxy编写自动化脚本结合Appium进行UI自动化测试通过adb命令控制抓包过程5. 实战案例某金融App抓包分析最近分析的一个案例中App采用了以下防护措施双向SSL Pinning请求参数动态签名核心接口使用gRPC协议突破步骤使用jadx反编译APK定位证书校验代码编写Frida脚本绕过签名验证用Wireshark捕获gRPC流量通过protoc解码proto文件关键发现签名算法使用HMAC-SHA256时间戳参与签名计算每个接口有独立的密钥6. 安全防护建议对于开发者来说建议采用分层防御策略基础层HTTPSSSL Pinning业务层参数签名时效控制传输层自定义序列化格式运行时环境检测反调试对于安全测试人员我的经验是保持工具链更新多角度尝试不同方案重视逆向分析记录完整的测试过程抓包与分析是个持续对抗的过程。随着Android 14引入更严格的证书限制以及iOS不断强化的隐私保护我们需要不断更新技术储备。建议定期参加安全会议关注OWASP Mobile项目保持对最新防护技术的了解。