Android抓包总结
字数 2281 2025-08-22 12:22:24

Android抓包技术全面指南

一、前言

本指南总结了Android平台抓包过程中遇到的各种问题及解决方案,涵盖HTTP/HTTPS协议抓包、SSL Pinning绕过、双向认证处理等技术要点,旨在为安全研究人员提供全面的抓包技术参考。

二、抓包工具介绍

常用抓包工具

  1. Fiddler:功能强大的HTTP/HTTPS抓包工具,支持代理设置和请求修改
  2. Burp Suite:专业的安全测试工具,支持拦截和修改HTTP/HTTPS请求
  3. Charles:Mac平台常用的抓包工具
  4. HttpCanary:移动端Fiddler,支持双向认证应用抓包
  5. Packet Capture:验证应用是否发送请求的实用工具
  6. tcpdump:命令行抓包工具,配合Wireshark分析
  7. Wireshark:强大的网络协议分析工具

工具选择建议

  • 常规HTTP/HTTPS抓包:Fiddler/Burp Suite
  • 非HTTP协议抓包:tcpdump + Wireshark
  • 移动端快速验证:HttpCanary/Packet Capture
  • 运营商特殊路由数据:可能需要iptables反向代理

三、Fiddler抓包配置

基础设置步骤

  1. 生成证书

    • 打开Fiddler → Tools → Options → HTTPS
    • 勾选"Decrypt HTTPS traffic"并生成证书
  2. 网络配置

    • 使用ipconfig查看电脑内网IP
    • 手机与电脑连接同一局域网
    • 手机WLAN设置手动代理:主机名=电脑IP,端口=8888
  3. 证书安装

    • 手机浏览器访问http://电脑IP:8888
    • 下载并安装"FiddlerRoot.certificate"

常见问题解决

  1. 无法连接代理

    • 关闭电脑防火墙
    • 修改注册表:HKEY_CURRENT_USER\Software\Microsoft\Fiddler2下创建DWORD值80(十进制)
    • 添加FiddlerScript规则:
      if (oSession.host.toLowerCase() == "webserver:8888") {
          oSession.host = "webserver:80";
      }
      
  2. 抓不到包

    • 可能是SSL Pinning机制阻止
    • 解决方案:使用Xposed+JustTrustMe绕过

请求拦截与修改

  1. 中断请求:在Fiddler左下角输入bpu baidu.com中断所有发向baidu.com的请求
  2. 修改请求:在拦截界面修改后点击"Run to Completion"发送

四、Burp Suite抓包配置

基础设置

  1. 代理配置

    • 设置监听端口(通常8080)
    • 确保手机代理设置与Burp一致
  2. 证书安装

    • 手机浏览器访问http://burp下载cacert.der证书
    • 将证书安装为系统证书(需root)

系统证书安装步骤

  1. 转换证书格式:

    openssl x509 -in cacert.der -inform DER -out cacert.pem -outform PEM
    
  2. 获取证书hash:

    openssl x509 -inform PEM -subject_hash -in cacert.pem
    
  3. 推送证书到系统:

    adb push 7bf17d07.0 /data/local/tmp
    adb shell
    su
    mount -o rw,remount /
    mv /data/local/tmp/7bf17d07.0 /system/etc/security/cacerts/7bf17d07.0
    
  4. 重启手机生效

五、HTTPS抓包原理与挑战

HTTPS工作原理

  1. 基于TLS协议,需要身份认证
  2. 客户端和服务器通过证书验证对方身份
  3. 数据传输前建立安全连接

抓包难点

  1. SSL Pinning:客户端锁定服务器证书
    • 校验方式:与本地证书(asset或res/raw目录)比对
  2. 双向认证:服务器也验证客户端证书
    • 需要提供有效的客户端证书

六、SSL Pinning绕过技术

常用方法

  1. Xposed+JustTrustMe

    • 安装Xposed框架
    • 启用JustTrustMe模块
    • 重启应用
  2. Frida脚本绕过

    • 准备Fiddler证书:cert-der.crt
    • 推送证书到设备:adb push cert-der.crt /data/local/tmp/
    • 使用Frida脚本重写SSLContext初始化逻辑

示例Frida脚本:

setTimeout(function(){
    Java.perform(function (){
        console.log("[.] Cert Pinning Bypass/Re-Pinning");
        var CertificateFactory = Java.use("java.security.cert.CertificateFactory");
        // ... 其他代码 ...
        SSLContext.init.overload("[Ljavax.net.ssl.KeyManager;", "[Ljavax.net.ssl.TrustManager;", "java.security.SecureRandom").implementation = function(a,b,c) {
            console.log("[o] App invoked javax.net.ssl.SSLContext.init...");
            SSLContext.init.overload("[Ljavax.net.ssl.KeyManager;", "[Ljavax.net.ssl.TrustManager;", "java.security.SecureRandom").call(this, a, tmf.getTrustManagers(), c);
            console.log("[+] SSLContext initialized with our custom TrustManager!");
        };
    });
});

执行命令:

frida -U -f it.app.mobile -l frida-android-repinning.js --no-pause

七、双向认证处理

识别双向认证

  1. 抓包时服务器返回400状态码
  2. 提示需要客户端证书

解决方案

  1. 获取客户端证书

    • 解压APK查找.p12/.pfx证书文件
    • 常见位置:/assets/res/raw目录
  2. 获取证书密码

    • 反编译APK分析证书加载代码
    • 查找"PKCS12"关键词定位证书加载位置
    • 逆向分析获取密码逻辑
  3. 证书转换与安装

    Fiddler配置

    # .p12转.pem
    openssl pkcs12 -in client.p12 -out ClientCertificate.pem -nodes
    # .pem转.cer
    x509 -outform der -in ClientCertificate.pem -out ClientCertificate.cer
    
    • 将ClientCertificate.cer放入<Fiddler安装路径>\Fiddler2

    Burp Suite配置

    • 在Proxy → Options → SSL Pass Through中添加客户端证书

八、TCP协议抓包分析

技术方案

  1. 使用tcpdump抓取原始数据包:

    tcpdump -i any -s 0 -w /sdcard/capture.pcap
    
  2. 使用Wireshark分析捕获的pcap文件

分析要点

  1. 识别应用特有的TCP协议结构
  2. 分析数据包格式和加密方式
  3. 可能需要逆向工程配合分析

九、抓包问题排查流程

  1. 检查代理设置

    • 确认IP和端口正确
    • 验证网络连通性
  2. 检查证书

    • 是否已安装正确证书
    • 是否为系统证书(Android 7+)
  3. 识别防护机制

    • SSL Pinning
    • 双向认证
    • 非HTTP协议
  4. 尝试绕过

    • JustTrustMe/Xposed
    • Frida脚本
    • 客户端证书安装
  5. 特殊场景

    • 运营商SDK可能要求SIM卡通信
    • 考虑反向代理方案

十、总结

Android抓包技术涉及多个层面的知识,从基础代理设置到高级的证书绕过技术。关键点包括:

  1. 正确配置抓包工具和代理
  2. 处理HTTPS特有的安全机制
  3. 掌握SSL Pinning和双向认证的绕过方法
  4. 了解非HTTP协议的分析方法

随着Android安全机制的不断加强,抓包技术也需要持续更新。建议安全研究人员掌握多种技术方案,并能够根据具体应用场景选择最合适的抓包策略。

Android抓包技术全面指南 一、前言 本指南总结了Android平台抓包过程中遇到的各种问题及解决方案,涵盖HTTP/HTTPS协议抓包、SSL Pinning绕过、双向认证处理等技术要点,旨在为安全研究人员提供全面的抓包技术参考。 二、抓包工具介绍 常用抓包工具 Fiddler :功能强大的HTTP/HTTPS抓包工具,支持代理设置和请求修改 Burp Suite :专业的安全测试工具,支持拦截和修改HTTP/HTTPS请求 Charles :Mac平台常用的抓包工具 HttpCanary :移动端Fiddler,支持双向认证应用抓包 Packet Capture :验证应用是否发送请求的实用工具 tcpdump :命令行抓包工具,配合Wireshark分析 Wireshark :强大的网络协议分析工具 工具选择建议 常规HTTP/HTTPS抓包:Fiddler/Burp Suite 非HTTP协议抓包:tcpdump + Wireshark 移动端快速验证:HttpCanary/Packet Capture 运营商特殊路由数据:可能需要iptables反向代理 三、Fiddler抓包配置 基础设置步骤 生成证书 : 打开Fiddler → Tools → Options → HTTPS 勾选"Decrypt HTTPS traffic"并生成证书 网络配置 : 使用 ipconfig 查看电脑内网IP 手机与电脑连接同一局域网 手机WLAN设置手动代理:主机名=电脑IP,端口=8888 证书安装 : 手机浏览器访问 http://电脑IP:8888 下载并安装"FiddlerRoot.certificate" 常见问题解决 无法连接代理 : 关闭电脑防火墙 修改注册表: HKEY_CURRENT_USER\Software\Microsoft\Fiddler2 下创建DWORD值80(十进制) 添加FiddlerScript规则: 抓不到包 : 可能是SSL Pinning机制阻止 解决方案:使用Xposed+JustTrustMe绕过 请求拦截与修改 中断请求:在Fiddler左下角输入 bpu baidu.com 中断所有发向baidu.com的请求 修改请求:在拦截界面修改后点击"Run to Completion"发送 四、Burp Suite抓包配置 基础设置 代理配置 : 设置监听端口(通常8080) 确保手机代理设置与Burp一致 证书安装 : 手机浏览器访问 http://burp 下载cacert.der证书 将证书安装为系统证书(需root) 系统证书安装步骤 转换证书格式: 获取证书hash: 推送证书到系统: 重启手机生效 五、HTTPS抓包原理与挑战 HTTPS工作原理 基于TLS协议,需要身份认证 客户端和服务器通过证书验证对方身份 数据传输前建立安全连接 抓包难点 SSL Pinning :客户端锁定服务器证书 校验方式:与本地证书(asset或res/raw目录)比对 双向认证 :服务器也验证客户端证书 需要提供有效的客户端证书 六、SSL Pinning绕过技术 常用方法 Xposed+JustTrustMe : 安装Xposed框架 启用JustTrustMe模块 重启应用 Frida脚本绕过 : 准备Fiddler证书: cert-der.crt 推送证书到设备: adb push cert-der.crt /data/local/tmp/ 使用Frida脚本重写SSLContext初始化逻辑 示例Frida脚本: 执行命令: 七、双向认证处理 识别双向认证 抓包时服务器返回400状态码 提示需要客户端证书 解决方案 获取客户端证书 : 解压APK查找.p12/.pfx证书文件 常见位置: /assets 或 /res/raw 目录 获取证书密码 : 反编译APK分析证书加载代码 查找"PKCS12"关键词定位证书加载位置 逆向分析获取密码逻辑 证书转换与安装 : Fiddler配置 : 将ClientCertificate.cer放入 <Fiddler安装路径>\Fiddler2 Burp Suite配置 : 在Proxy → Options → SSL Pass Through中添加客户端证书 八、TCP协议抓包分析 技术方案 使用tcpdump抓取原始数据包: 使用Wireshark分析捕获的pcap文件 分析要点 识别应用特有的TCP协议结构 分析数据包格式和加密方式 可能需要逆向工程配合分析 九、抓包问题排查流程 检查代理设置 : 确认IP和端口正确 验证网络连通性 检查证书 : 是否已安装正确证书 是否为系统证书(Android 7+) 识别防护机制 : SSL Pinning 双向认证 非HTTP协议 尝试绕过 : JustTrustMe/Xposed Frida脚本 客户端证书安装 特殊场景 : 运营商SDK可能要求SIM卡通信 考虑反向代理方案 十、总结 Android抓包技术涉及多个层面的知识,从基础代理设置到高级的证书绕过技术。关键点包括: 正确配置抓包工具和代理 处理HTTPS特有的安全机制 掌握SSL Pinning和双向认证的绕过方法 了解非HTTP协议的分析方法 随着Android安全机制的不断加强,抓包技术也需要持续更新。建议安全研究人员掌握多种技术方案,并能够根据具体应用场景选择最合适的抓包策略。