当前位置: 首页 > news >正文

真机抓包实战:Burp Suite配置Android/iOS代理与HTTPS解密

1. 项目概述:为什么要在真机上抓包?

做安全测试或者逆向分析,抓包是第一步,也是最基础的一步。很多朋友习惯在模拟器里操作,觉得方便,但模拟器终究是模拟器,它和真机的环境差异巨大。很多APP,特别是涉及金融支付、社交、电商的,都做了非常严格的运行环境检测,在模拟器里要么直接闪退,要么核心功能被禁用,你根本抓不到想要的数据流。更别提微信小程序了,它的运行环境高度依赖微信客户端,在模拟器里调试的局限性更大。

所以,真机抓包是绕不开的“硬骨头”。这次要聊的,就是如何用安全圈最经典的Burp Suite,在Android和iOS两大移动平台的真实设备上,完成对APP和微信小程序的流量捕获。这不仅仅是配置个代理那么简单,里面涉及到证书安装、系统信任、网络配置、以及应对各种反抓包机制的技巧。我遇到过太多坑,从证书不被信任导致HTTPS流量全是乱码,到APP检测到代理直接拒绝连接,每一步都可能让你卡住半天。接下来,我会把整个流程掰开揉碎,从原理到实操,尤其是那些容易踩坑的细节,都详细过一遍。

2. 核心原理与前置准备

在开始动手之前,必须搞清楚几个核心概念,不然配置错了都不知道问题出在哪。

2.1 抓包的本质:中间人代理

无论是Burp Suite、Fiddler还是Charles,其抓取HTTPS流量的核心原理都是“中间人攻击”。简单来说,你的手机不再直接连接目标服务器,而是先把所有网络请求发送到你电脑上运行的抓包工具(即代理服务器),由抓包工具转发请求给服务器,并将服务器的响应先截获再返回给手机。

为了实现这个,需要两步:

  1. 流量转向:让手机的流量经过你的电脑。这通过为手机配置Wi-Fi代理来实现。
  2. HTTPS解密:普通的HTTP流量是明文的,可以直接查看。但如今几乎全是HTTPS(加密的),抓包工具需要“冒充”目标服务器,与手机建立SSL/TLS连接,同时再以客户端的身份与真实服务器建立另一个SSL/TLS连接。这就要求手机必须信任抓包工具颁发的“假”证书。

2.2 工具与环境准备清单

工欲善其事,必先利其器。以下是必须准备好的东西,少一样都可能进行不下去。

1. 软件工具

  • Burp Suite:主角。推荐使用Professional版,Community版功能受限较多。确保已安装并可以正常运行。
  • 一台电脑:作为代理服务器。Windows、macOS、Linux均可,但需要与手机在同一局域网。
  • 一部Android手机:建议系统版本在Android 7.0以上,但低于Android 7.0和高于Android 7.0的配置方法有重大区别,后面会详述。
  • 一部iOS手机:系统版本建议在iOS 10以上。需要能访问App Store以下载证书描述文件。

2. 网络环境

  • 稳定的局域网:电脑和手机必须连接在同一个Wi-Fi网络下。切记,不要使用任何公共Wi-Fi或需要网页认证的Wi-Fi(如酒店、机场网络),这类网络通常会干扰或禁止代理设置,导致连接失败。最稳妥的方式是使用你自己的路由器,或者用电脑开一个热点给手机连接。

3. 关键信息获取

  • 电脑的局域网IP地址:这是手机代理要指向的地址。
    • Windows:在命令提示符输入ipconfig,查看“无线局域网适配器 WLAN”或“以太网适配器”下的IPv4 地址
    • macOS/Linux:在终端输入ifconfigip addr,找到对应网口的inet地址。
  • Burp Suite代理监听端口:默认是8080。你可以在Burp的Proxy->Options->Proxy Listeners中查看和修改。

准备好这些,我们就可以进入实战配置环节了。先从相对开放的Android系统开始。

3. Android真机抓包全流程解析

Android的抓包流程因系统版本产生了分水岭,核心区别在于证书的安装位置,这直接决定了系统是否信任你安装的证书,从而决定能否解密HTTPS流量。

3.1 配置Burp Suite代理监听

首先,确保Burp能正确接收来自手机的流量。

  1. 打开Burp Suite,进入Proxy->Options标签页。
  2. 找到Proxy Listeners部分,确保有一个监听器在运行(通常默认的127.0.0.1:8080就是)。我们需要让它监听来自局域网的连接。
  3. 点击默认监听器对应的Edit按钮。
  4. Binding标签页,将Bind to addressLoopback only改为All interfaces。这一步至关重要,它允许Burp接受来自任何网络接口(包括你的无线网卡)的连接,而不仅仅是本机回环地址。
  5. 点击OK保存。此时,Burp的代理服务器就已经在你的电脑IP:8080上监听了。

注意:有些电脑防火墙可能会阻止8080端口的入站连接。如果后续手机连接失败,请暂时关闭防火墙或添加一条允许8080端口的入站规则。

3.2 手机网络代理配置

接下来,告诉手机把流量发到你的电脑。

  1. 让手机连接上与电脑相同的Wi-Fi。
  2. 进入手机的设置->WLAN,长按当前连接的Wi-Fi网络,选择修改网络高级选项
  3. 代理设置为手动
  4. 代理服务器主机名填写你之前查到的电脑局域网IP
  5. 代理服务器端口填写8080(或你在Burp中设置的其他端口)。
  6. 保存设置。

此时,手机的所有(非系统级)HTTP流量应该已经流向Burp。你可以在Burp的Proxy->Intercept标签页,点击Intercept is on按钮,然后在手机浏览器访问一个HTTP网站(如http://neverssl.com),看看请求是否被截获。

3.3 安装并信任Burp CA证书

能抓到HTTP只是第一步,HTTPS才是重头戏。我们需要让手机信任Burp颁发的证书。

第一步:从Burp导出证书

  1. 在手机浏览器中访问http://burpsuitehttp://电脑IP:8080。注意是HTTP协议。
  2. 页面右上角会有一个CA Certificate的链接,点击它下载证书文件。文件通常名为cacert.der

第二步:安装证书(分版本操作)

这里是关键,根据你的Android系统版本选择路径:

  • Android 7.0 (Nougat) 及以下版本: 相对简单。下载证书后,系统通常会提示你为证书命名(如“Burp CA”),然后要求你设置锁屏密码(如果尚未设置)以完成安装。安装后,证书会被放置在受信任的凭据->用户标签页下。至此,大部分APP的HTTPS流量都可以被解密了。

  • Android 8.0 (Oreo) 及以上版本: 这是巨变。从Android 7.0开始,Google引入了“网络安全配置”和更严格的证书信任机制。默认情况下,用户安装的证书不再被APP信任,除非APP显式地在其配置中声明信任用户证书。 因此,对于高版本Android,我们有两种主流方法:

    • 方法A:将证书安装到系统级(需Root):这是最彻底的方法。需要将下载的.der证书文件转换为.pem格式,然后通过ADB命令或Root文件管理器将其放置到/system/etc/security/cacerts/目录下,并修改权限。完成后,证书会出现在受信任的凭据->系统标签页,所有APP都会信任它。但这需要手机已获取Root权限,对大多数用户门槛较高。
    • 方法B:使用低版本Android模拟器或旧手机:这是最实用的妥协方案。准备一台系统版本在Android 7.0以下的备用测试机,或者使用Android 7.0以下的模拟器镜像。在测试机上安装用户证书即可全局生效,非常适合进行常规的抓包测试和分析。
    • 方法C:针对特定APP配置(需可修改APK):如果你有APP的源码或能对其进行重打包,可以修改其网络安全配置,使其信任用户证书。这对普通抓包需求来说过于复杂。

实操心得:对于日常安全测试,我强烈建议备一部系统版本在Android 6.0的旧手机或模拟器专用。它能避开高版本的系统级证书限制,省去Root的麻烦和风险,通用性最强。对于必须在高版本真机上测试的情况(如测试最新系统兼容性),则可能需要结合Root或使用VirtualXposed等虚拟环境来绕过限制,但那又是另一个复杂课题了。

安装并信任证书后,再次用手机浏览器访问一个HTTPS网站(如https://www.baidu.com),然后在Burp的Proxy->HTTP history中查看,应该能看到明文请求和响应,而不是一堆乱码或Tunnel to字样。

4. iOS真机抓包全流程解析

iOS的抓包流程相对统一,但由于苹果的封闭性,证书安装和信任的步骤略有不同,且对微信小程序有特殊之处。

4.1 配置Burp监听与手机代理

这部分与Android类似:

  1. Burp Suite配置监听All interfaces,端口8080
  2. iOS手机连接同一Wi-Fi。
  3. 进入设置->无线局域网,点击当前Wi-Fi右侧的i信息图标。
  4. 滑动到最底部,找到配置代理,选择手动
  5. 服务器填写电脑IP,端口填写8080,保存。

4.2 安装并完全信任Burp CA证书

这是iOS抓包成功的关键,步骤比Android多一步“完全信任”。

  1. 在iOS的Safari浏览器中,访问http://电脑IP:8080
  2. 同样点击CA Certificate下载描述文件。系统会提示“已下载描述文件”。
  3. 进入设置->通用->VPN与设备管理(或描述文件),你会看到一个名为“PortSwigger CA”或类似的描述文件,点击它,然后选择安装。可能需要输入手机锁屏密码。
  4. 关键一步:启用完全信任。仅仅安装还不够,必须手动开启完全信任。
    • 进入设置->通用->关于本机
    • 滑动到最底部,点击证书信任设置
    • 在“针对根证书启用完全信任”列表中,找到你刚刚安装的“PortSwigger CA”证书,将其开关打开。
  5. 完成以上步骤后,用Safari访问一个HTTPS网站测试。如果Burp能解密流量,说明证书配置成功。

4.3 微信小程序抓包的特殊处理

微信小程序由于其沙盒机制和网络请求库的实现,抓包需要额外注意:

  1. 确保微信APP信任系统代理:iOS系统下,大部分APP默认会遵循系统的全局代理设置,微信通常也在此列。但为了确保万一,可以先测试微信内打开网页的流量是否能被Burp捕获。
  2. 处理证书绑定:一些小程序可能会使用证书绑定技术。如果配置正确后,小程序仍无法联网或报错,很可能就是它校验了服务器证书,而Burp的“假”证书无法通过校验。对于这种情况,常规的代理抓包可能失效,需要更高级的动态调试或逆向手段,这已超出基础抓包教程范围。
  3. 关注WebSocket流量:小程序大量使用WebSocket进行实时通信。在Burp的Proxy->Options中,确保Intercept WebSockets messages是勾选状态,然后在WebSockets history标签页可以查看这些消息。

注意事项:iOS系统升级后,有时会重置证书信任设置。如果某天突然抓不到HTTPS包了,记得第一时间回来检查设置->通用->关于本机->证书信任设置里的开关是否还开着。

5. 抓包实战中的高级技巧与问题排查

基础配置只是开始,实战中会遇到各种“妖魔鬼怪”。下面分享一些提升成功率和效率的技巧,以及常见问题的排查思路。

5.1 应对APP的代理检测与SSL Pinning

越来越多的APP,特别是金融类和大型互联网公司的产品,会采用各种反抓包技术:

  • 代理检测:APP启动时检测系统是否设置了代理。如果检测到,可能会拒绝发送网络请求或展示“网络环境不安全”的提示。
    • 应对方法
      1. 尝试使用透明代理模式(需要路由器支持或使用VPN软件将流量导入Burp),但这比较复杂。
      2. 使用基于Hook的绕过工具,如针对Android的JustTrustMe模块(需Xposed或LSPosed环境),或使用ProxyDroid等APP实现全局代理而不修改系统Wi-Fi设置。对于iOS,可以使用ShadowrocketSurge等网络工具配置代理,有时能绕过检测。
  • SSL证书绑定:APP内置了真正服务器的证书或公钥,在建立SSL连接时进行比对,如果发现证书不是它认识的(比如Burp的证书),就直接断开连接。
    • 应对方法:这是最难绕过的一类。通常需要逆向APP,找到进行证书校验的代码逻辑并修改它(俗称“砸壳”和“打补丁”),或者使用Frida、Xposed等动态注入框架,在运行时Hook掉证书验证的函数。这属于移动安全逆向的中高级范畴,需要一定的逆向工程基础。

5.2 精准过滤与高效分析

当所有流量都流向Burp时,HTTP history可能会被各种图片、脚本、统计上报请求淹没。如何快速找到目标?

  1. 使用Target Scope
    • 在Burp的Target->Scope标签页,添加你的目标域名或URL前缀。例如,添加*.targetapp.com
    • 然后,在Proxy->Options->Intercept Client Requests中,勾选And URL Is in target scope。这样,Burp就只会拦截你关心的目标请求,极大提升效率。
  2. 利用Filter
    • Proxy->HTTP history页面,顶部有强大的过滤器。你可以根据状态码、请求方法、文件类型、关键词等进行过滤。例如,过滤MIME typeJSONXML的,快速找到API接口。
  3. 关注/api//v1/等路径:现代APP的接口通常有规律的路径,多关注这些路径下的请求。

5.3 常见问题速查与解决

下面是一个快速排查问题清单,当你抓包失败时,可以按顺序检查:

问题现象可能原因解决方案
手机无法上网1. 电脑IP或端口填错。
2. 电脑防火墙阻止。
3. Burp代理未启动或未监听所有接口。
1. 核对IP和端口。
2. 关闭防火墙或放行端口。
3. 检查BurpProxy Listeners状态,确保绑定到All interfaces
HTTP请求可见,HTTPS全是Tunnel to或乱码1. 证书未安装。
2. 证书已安装但未受信任(Android高版本/ iOS未完全信任)。
3. APP使用了SSL Pinning。
1. 重新下载安装证书。
2. Android检查证书位置(用户/系统),iOS检查“证书信任设置”。
3. 尝试使用绕过SSL Pinning的工具。
部分APP无法联网或提示网络错误1. APP检测到代理并禁用。
2. 该APP使用了仅限系统证书的网络安全策略。
1. 尝试关闭手机Wi-Fi代理,使用透明代理或Hook方式。
2. 对于Android高版本,考虑Root后安装系统证书或使用低版本测试机。
Burp收不到任何手机流量1. 手机代理配置未保存或生效。
2. 电脑和手机不在同一网段。
3. 使用了需要网页认证的Wi-Fi。
1. 重启手机Wi-Fi或重启手机。
2. 确认电脑和手机IP前三位相同(如都是192.168.1.x)。
3. 换用路由器Wi-Fi或电脑开热点。
微信小程序页面白屏或请求失败1. 微信未走系统代理(可能性小)。
2. 小程序服务器使用了证书绑定。
1. 确认其他网页请求在Burp中可见。
2. 对于证书绑定,常规抓包方法可能无效,需研究逆向。

5.4 保持连接稳定的建议

  1. 固定电脑IP:在路由器设置中,为你电脑的MAC地址分配一个静态IP(DHCP保留地址),这样电脑IP就不会变,无需每次重新配置手机代理。
  2. 使用电脑移动热点:这是最稳定、干扰最少的方式。用电脑创建一个移动热点,让手机连接这个热点。此时电脑本身就是一个路由器,代理设置非常纯净。
  3. 适时关闭拦截:不需要的时候,记得把BurpProxy->Intercept的拦截功能关掉(Intercept is off),否则所有被拦截的请求都会挂起,导致APP卡死。

抓包本身是一项基础但极其重要的技能,是真机测试、漏洞挖掘、协议分析的起点。整个过程就像一场侦探游戏,你需要耐心地布置好“监控点”(代理),取得“监听许可”(安装证书),然后才能开始观察和分析“嫌疑人”(APP)的“通信记录”(网络流量)。每一次成功的配置和解密,都是对网络原理和安全机制更深一层的理解。遇到问题别灰心,按照上面的步骤和排查清单一步步来,大部分障碍都能被清除。最后记住,在合法授权的范围内进行测试,这是所有安全工作的前提。

http://www.jsqmd.com/news/1092254/

相关文章:

  • SQL Server 2019 Always On 高可用实战:从零到一的部署与排错指南
  • 总结这篇文章的初期阶段
  • 注册表锁技术深度解构:5个架构维度剖析IDM激活脚本的工程化实现
  • 大模型应用开发实战:语义缓存 — 降低 LLM 调用成本 70%
  • 规避部署报错,OpenClaw 纯英文路径与安全软件设置要点(含安装包)
  • 前端调试技巧完整指南
  • 如何在PPT演示中完美掌控时间:PPTTimer完整使用指南
  • 终极指南:如何用res-downloader轻松下载加密视频资源
  • Playwright Python自动化测试实战:跨浏览器测试与CI/CD集成指南
  • Cursor深度评测:连续使用3个月后,我决定离不开它了
  • unity 源码资源 humanoid资源 mixamo资源 太刀 物体边缘描边 抓娃娃机 科幻玩具枪 小石头 方向盘 小机关
  • 计算机网络体系结构-网络原理初识
  • ChanlunX通达信缠论插件:3步实现专业缠论分析自动化
  • DDD 与 Ontology 对比分析:代码建模与语义建模的异同
  • . 问题背景与现象
  • ChineseSubFinder:如何让字幕下载变得像呼吸一样简单?
  • 5步轻松优化Windows 11:使用Win11Debloat实现高效系统清理
  • AFE5851高集成模拟前端:16通道超声信号采集与LVDS接口设计详解
  • 变频器与伺服系统的噪声战争:01 焊机一启动,整条线为什么开始发疯?
  • GHelper终极秘籍:华硕笔记本性能优化的隐藏黑科技
  • NoFences:重塑Windows桌面秩序的开源智能分区工具
  • openEuler/uadk-bigdata:揭秘硬件加速如何让大数据处理效率提升40%的终极方案
  • OpenCV实战:cv2.findContours()在Python中的高级轮廓检测与场景应用
  • C语言指针解引用
  • 第87题 氮化镓(GaN)自支撑衬底氢化物气相外延(HVPE)裂纹与翘曲控制技术
  • JTS 求几何质心,外包矩形
  • TPA2016D2智能音频功放EVM评估与硬件设计实战指南
  • 购物管理系统源码 Java+SpringBoot+Vue 万字文档
  • 查询一个数据库和缓存中都不存在的key,每次请求都打到数据库,大量请求可能拖垃数据库。
  • 九大网盘直链解析工具:告别下载限速,一键获取真实下载地址