抓不到APP的包怎么办?
字数 1055 2025-08-11 08:35:57

绕过APP强制不走代理的抓包方法:DNS劫持+隐形代理

背景介绍

许多APP现在做了特殊安全处理,导致无法通过传统HTTP代理方式抓取数据。当手机设置代理后,APP仍能正常使用而浏览器无法访问网站,这表明APP设置了"强制不走代理"机制。

解决方案概述

使用DNS劫持+隐形代理的方法可以绕过这种防御机制,主要需要以下组件:

  1. 客户端(手机、平板或模拟器)
  2. DNS服务器(推荐Linux+dnsmasq)
  3. 隐形代理(推荐Windows+Burp)

详细配置步骤

1. Burp配置隐形代理

  1. 打开Burp Suite
  2. 进入Proxy -> Options
  3. 添加新的代理监听器
  4. 选择"Invisible"(隐形)模式
  5. 设置监听端口(通常为8080)

2. 搭建DNS服务器(以dnsmasq为例)

  1. 安装dnsmasq(Linux系统):

    sudo apt-get install dnsmasq
    
  2. 编辑配置文件/etc/dnsmasq.conf

    address=/.com/192.168.1.10
    address=/.cn/192.168.1.10
    

    将192.168.1.10替换为Burp所在机器的IP地址

  3. 重启dnsmasq服务:

    sudo systemctl restart dnsmasq
    

3. 客户端证书安装

iOS设备:

  1. 安装Burp证书
  2. 进入"设置"->"通用"->"关于本机"->"证书信任设置"
  3. 针对根证书启用完全信任

Android 7以下:

  1. 常规方法安装Burp证书

Android 7及以上:

  1. 将Burp的cer证书转换为pem格式:

    openssl x509 -inform der -in demo.der -out demo.pem
    
  2. 计算证书哈希值:

    openssl x509 -subject_hash_old -in demo.pem
    
  3. 重命名证书文件为"哈希值.0"(如9a5ba575.0)

  4. 将证书复制到系统证书目录:

    adb remount
    adb push 9a5ba575.0 /system/etc/security/cacerts/
    

4. 客户端网络设置

  1. 设置DNS服务器地址为自建DNS服务器IP
  2. 确保不修改Burp所在机器的DNS设置(避免死循环)

注意事项

  1. 该方法不适用于以下情况:

    • 使用HTTP DNS请求的APP
    • 直接使用IP地址通信的APP
  2. 对于上述特殊情况,可考虑IP层劫持:

    • 在路由器上设置静态路由
    • 在Burp机器网卡上绑定多个IP地址
  3. 虚拟机使用建议:

    • 避免同时使用安卓模拟器和VMware虚拟机
    • 推荐使用安卓7以下版本的模拟器(避免证书安装问题)

开始抓包

完成以上配置后:

  1. 启动APP
  2. 在Burp中查看Proxy -> HTTP history
  3. 所有APP请求应已成功捕获

补充说明

对于更高级的防御机制,可能需要结合其他技术手段,如:

  • 逆向分析APP的证书校验逻辑
  • 使用Xposed框架或Frida进行运行时hook
  • 修改APP的network_security_config.xml文件

此方法已在多种场景下验证有效,但具体实施可能因APP和系统版本差异而需要适当调整。

绕过APP强制不走代理的抓包方法:DNS劫持+隐形代理 背景介绍 许多APP现在做了特殊安全处理,导致无法通过传统HTTP代理方式抓取数据。当手机设置代理后,APP仍能正常使用而浏览器无法访问网站,这表明APP设置了"强制不走代理"机制。 解决方案概述 使用 DNS劫持+隐形代理 的方法可以绕过这种防御机制,主要需要以下组件: 客户端(手机、平板或模拟器) DNS服务器(推荐Linux+dnsmasq) 隐形代理(推荐Windows+Burp) 详细配置步骤 1. Burp配置隐形代理 打开Burp Suite 进入Proxy -> Options 添加新的代理监听器 选择"Invisible"(隐形)模式 设置监听端口(通常为8080) 2. 搭建DNS服务器(以dnsmasq为例) 安装dnsmasq(Linux系统): 编辑配置文件 /etc/dnsmasq.conf : 将192.168.1.10替换为Burp所在机器的IP地址 重启dnsmasq服务: 3. 客户端证书安装 iOS设备: 安装Burp证书 进入"设置"->"通用"->"关于本机"->"证书信任设置" 针对根证书启用完全信任 Android 7以下: 常规方法安装Burp证书 Android 7及以上: 将Burp的cer证书转换为pem格式: 计算证书哈希值: 重命名证书文件为"哈希值.0"(如9a5ba575.0) 将证书复制到系统证书目录: 4. 客户端网络设置 设置DNS服务器地址为自建DNS服务器IP 确保不修改Burp所在机器的DNS设置(避免死循环) 注意事项 该方法不适用于以下情况: 使用HTTP DNS请求的APP 直接使用IP地址通信的APP 对于上述特殊情况,可考虑IP层劫持: 在路由器上设置静态路由 在Burp机器网卡上绑定多个IP地址 虚拟机使用建议: 避免同时使用安卓模拟器和VMware虚拟机 推荐使用安卓7以下版本的模拟器(避免证书安装问题) 开始抓包 完成以上配置后: 启动APP 在Burp中查看Proxy -> HTTP history 所有APP请求应已成功捕获 补充说明 对于更高级的防御机制,可能需要结合其他技术手段,如: 逆向分析APP的证书校验逻辑 使用Xposed框架或Frida进行运行时hook 修改APP的network_ security_ config.xml文件 此方法已在多种场景下验证有效,但具体实施可能因APP和系统版本差异而需要适当调整。