三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

告别抓包失败!保姆级教程:在夜神模拟器上用Fiddler抓取APP的HTTPS流量

告别抓包失败!保姆级教程:在夜神模拟器上用Fiddler抓取APP的HTTPS流量

夜神模拟器+Fiddler抓包全攻略:从零破解HTTPS流量捕获难题

移动应用开发与安全测试中,抓包分析是基本功。但当你兴冲冲地配置好Fiddler和夜神模拟器,却发现APP要么无法联网,要么HTTPS请求一片空白——这种挫败感我深有体会。本文将带你直击痛点,不仅解决常见抓包失败问题,更深入理解背后的技术原理。

1. 环境准备:避开初始配置的三大雷区

工欲善其事,必先利其器。在开始抓包前,需要确保基础环境配置无误。以下是新手最常踩坑的环节:

必备工具清单:

  • Fiddler Classic(最新版)
  • 夜神模拟器7.0+(建议关闭Hyper-V兼容模式)
  • Windows系统管理员权限

关键细节常被忽略:

  1. 防火墙设置:临时关闭Windows Defender防火墙或添加Fiddler为例外程序
  2. 代理冲突:检查是否已存在其他代理工具(如Charles、Burp Suite)
  3. IP地址验证:通过ipconfig获取的真实IPv4地址,而非127.0.0.1

注意:夜神模拟器建议使用Android 7.1内核版本,其对代理支持最稳定。若使用Android 9+内核,需额外处理证书系统分区问题。

2. Fiddler核心配置:HTTPS解密的正确姿势

Fiddler的HTTPS解密功能是其核心价值,但错误配置会导致流量无法捕获。不同于简单勾选选项,我们需要理解其工作原理:

HTTPS解密流程:

  1. Fiddler作为中间人代理,生成自签名CA证书
  2. 客户端安装该证书后信任Fiddler签发的站点证书
  3. Fiddler实时解密并重新加密流量

配置关键步骤:

# 快速验证Fiddler是否监听正确端口 netstat -ano | findstr 8888

必须勾选的选项:

  • Tools > Options > HTTPS > Capture HTTPS CONNECTs
  • Tools > Options > HTTPS > Decrypt HTTPS traffic
  • Connections > Allow remote computers to connect

常见错误代码及解决方案:

错误现象可能原因解决方案
无HTTPS流量证书未安装重新导出Fiddler证书
连接重置证书过期清除旧证书并重新生成
仅显示CONNECT未启用解密检查Decrypt HTTPS选项

3. 夜神模拟器深度配置:证书安装的隐藏路径

模拟器环境与真机存在显著差异,特别是在证书管理方面。以下是经过实战验证的配置方案:

证书安装双路径对比:

方法一:浏览器下载安装

  1. 模拟器访问http://[PC_IP]:8888
  2. 下载FiddlerRoot.cer
  3. 系统设置中手动安装证书

方法二:本地拖拽安装(推荐)

# 证书文件MD5校验脚本(确保传输完整) import hashlib with open('FiddlerRoot.cer', 'rb') as f: print(hashlib.md5(f.read()).hexdigest())

关键路径提示:

  • Android 7.1:设置 > 安全 > 从SD卡安装
  • Android 9+:需adb push到/system/etc/security/cacerts/

重要:安装后务必在"信任的凭据"中确认证书存在,且标记为"Fiddler"

4. 网络疑难排查:当抓包导致APP断网

这是最令人头疼的问题——配置代理后APP完全无法联网。以下是系统化的解决方案:

断网诊断流程图:

  1. 检查基础连接
    • 模拟器能否ping通主机IP
    • 主机防火墙是否放行8888端口
  2. 验证代理设置
    • 确保WLAN代理设置为手动
    • 端口与Fiddler监听端口一致
  3. 排查证书问题
    • 日期/时间是否准确
    • 是否误开证书固定(Certificate Pinning)

高级技巧:

  • 使用adb logcat查看APP网络错误日志
  • 对顽固APP尝试Xposed+JustTrustMe模块
  • 必要时使用Wireshark进行底层流量分析

5. 实战案例:抓取加密电商APP的完整流程

以某主流电商APP为例,演示完整抓包过程:

  1. 环境预热

    • 关闭APP的HTTPDNS功能
    • 清除APP数据强制重新握手
  2. 特殊处理

# 针对证书固定的应对命令 adb shell settings put global http_proxy 192.168.1.100:8888
  1. 流量分析技巧
    • 关注/api/v3等典型API路径
    • 使用Fiddler的AutoResponder模拟服务器响应
    • 对gzip压缩流量启用自动解压

在最近一次金融类APP测试中,发现其使用了双向SSL认证。解决方案是在FiddlerScript中添加:

// 在OnBeforeRequest回调中添加 if (oSession.HTTPMethodIs("CONNECT")) { oSession["x-ClientCert"] = "C:\\client.pfx;password"; }

6. 高阶安全防护应对策略

随着应用安全意识提升,越来越多的APP采用了高级防护措施:

对抗方案矩阵:

防护类型检测特征突破方法
SSL Pinning证书校验失败Frida脚本Hook验证逻辑
代理检测检测系统代理设置使用VPN模式透明代理
原生代码保护JNI调用网络库IDA分析so文件修改校验逻辑

一个有趣的发现:部分APP会检测WiFi的BSSID特征。解决方案是在模拟器设置中修改MAC地址:

<!-- 夜神模拟器配置文件路径 --> <Nox>/bin/BignoxVMS/nox.vbox

记得去年分析某社交APP时,其使用自定义加密协议。最终通过动态调试发现关键密钥存储在assets文件夹的图片元数据中——这提醒我们,抓包只是起点,真正的挑战在于协议逆向。

← 返回列表