文章目录
一、App抓包失败的常见原因1. SSL Pinning(证书绑定)2. 应用加固与混淆3. 非HTTP协议加密4. **网络层过滤**
二、WAF导致的拦截及绕过技巧1. 请求头混淆2. 分块传输编码(Chunked Encoding)3. 编码混淆4. 协议级绕过5. 规则逻辑漏洞
三、实战工具推荐四、风险提示
以下是针对App渗透测试中抓包失败的原因分析及绕过WAF的解决方案,结合最新技术趋势和实战经验总结:
一、App抓包失败的常见原因
1. SSL Pinning(证书绑定)
现象:App与服务端通信时绑定特定证书,导致抓包工具(如Burp Suite)无法解密HTTPS流量。根本原因:App在代码中硬编码证书指纹或公钥,拒绝非信任证书的通信。解决方案:
反编译修改:使用Apktool反编译APK,删除证书绑定逻辑后重签名。动态Hook:通过Frida/Xposed框架Hook SSL校验函数(如checkServerTrusted)直接绕过。
2. 应用加固与混淆
现象:App被第三方加固(如360加固、梆梆安全),核心代码被加密或混淆。根本原因:加固工具对DEX文件加密,阻止静态分析工具获取关键逻辑。解决方案:
动态脱壳:使用Frida/DroidSSL在内存中Dump解密后的DEX文件。模拟器调试:在Xposed+VirtualXposed环境中运行App,绕过加固检测。
3. 非HTTP协议加密
现象:App使用WebSocket、gRPC或自定义二进制协议通信。根本原因:传统抓包工具仅支持HTTP/HTTPS,无法解析私有协议。解决方案:
流量镜像:通过路由器或透明代理(如mitmproxy)捕获原始流量。逆向协议:使用IDA Pro分析so库中的加密函数,还原协议格式。
4. 网络层过滤
现象:App检测到代理设置或VPN,主动拒绝连接。根本原因:App通过Proxy.isProxySet()检测代理,或绑定特定网络接口。解决方案:
透明代理:使用iptables将流量重定向到Burp,避免App感知代理。VPN穿透:通过Drony或Postern将流量隧道化,绕过代理检测。
二、WAF导致的拦截及绕过技巧
若确认是WAF拦截流量,可尝试以下方法(需结合渗透场景):
1. 请求头混淆
修改User-Agent:伪装为搜索引擎爬虫(如Googlebot/2.1)或主流浏览器。添加冗余头:插入无意义头字段(如X-Forwarded-For: 127.0.0.1)干扰规则匹配。
2. 分块传输编码(Chunked Encoding)
原理:将请求体分块发送,绕过基于内容长度的检测规则。操作:使用Burp插件(如Chunked Coding Converter)自动分块。
3. 编码混淆
Unicode兼容性:利用NFKC/NFKD规范化漏洞,如用<(U+FF1C)替代<绕过XSS检测。多重编码:对Payload进行URL双重编码或Base64+Hex混合编码。
4. 协议级绕过
非常规HTTP方法:使用DIGEST、PURGE等方法替代GET/POST,部分WAF规则未覆盖。缓冲区溢出:发送超大请求(>10MB),利用云WAF的流量限制策略绕过检测。
5. 规则逻辑漏洞
未初始化变量:在命令注入中插入${undefined_var},如cat /etc/passwd改写为cat$u /etc/passwd。注释符分割:将敏感词拆分为/*!50001sElect*/,利用MySQL特性绕过正则匹配。
三、实战工具推荐
Frida:动态Hook SSL Pinning和网络库函数(推荐脚本:frida-android-unpinning)。Wadb:通过USB调试直接抓取Android App的TCP流量,绕过证书绑定。r0capture:基于Frida的通用抓包工具,支持非HTTP协议和加固App。Sqlmap Tamper脚本:如charencode.py和apostrophemask.py,自动化编码绕过WAF。
四、风险提示
法律合规:所有操作需在授权范围内进行,未经许可攻击系统可能触犯《网络安全法》。技术迭代:WAF规则每周更新,需持续研究新漏洞(如2025年兴起的AI动态规则生成对抗技术)。
若仍无法解决,建议从逆向分析App网络模块入手,定位流量加密点或代理检测逻辑。技术深度决定绕过上限,持续学习才是核心解决方案。