移动安全测试实战:真机Burp抓包配置与HTTPS解密全攻略
1. 项目概述:为什么要在真机上用Burp抓包?
在移动应用安全测试和逆向分析领域,抓包是第一步,也是最关键的一步。很多刚入门的朋友可能习惯在模拟器里操作,觉得方便。但干了这么多年,我越来越倾向于直接在真机上进行抓包测试。原因很简单:真实环境才能暴露真实问题。模拟器里的网络环境、系统库、证书处理逻辑,甚至APP自身的网络请求策略,都可能和真机有微妙但关键的差异。你费半天劲在模拟器上配好了代理,抓到了包,结果一到用户手机上,发现请求根本走不通,或者证书不被信任,那前面的工作就白费了。
特别是当你需要测试微信小程序、或者一些对运行环境有强校验的APP时,真机抓包几乎是唯一的选择。微信小程序的网络请求封装在微信客户端内部,其证书校验逻辑和普通的浏览器或APP不同,在模拟器上复现微信环境本身就非常困难。而Burp Suite作为行业标杆的Web漏洞扫描和代理工具,其强大的拦截、修改、重放功能,在移动端测试中同样不可或缺。把Burp架设在你的电脑上,让手机流量经过它,你就能像分析网站一样,清晰地看到每一个API请求和响应,发现潜在的安全漏洞。
所以,这篇教程的核心,就是手把手带你完成从零开始,在Windows或macOS电脑上配置Burp Suite,并成功让Android和iOS真机的网络流量(包括普通APP和微信小程序)流经Burp进行抓包的全过程。我会把每一步的原理、可能遇到的坑以及我踩过之后总结的解决方案都讲清楚,目标是让你看完就能动手,动手就能成功。
2. 环境准备与核心工具解析
工欲善其事,必先利其器。在开始抓包之前,我们需要把环境和工具准备好。这个过程看似繁琐,但每一步都关系到后续操作的成败。
2.1 Burp Suite的安装与基础代理配置
首先,你需要一台电脑作为代理服务器。操作系统Windows或macOS均可,Linux也行,但考虑到图形化界面和驱动的通用性,前两者更友好。Burp Suite有社区版(免费)和专业版(收费),对于抓包这个核心功能,社区版完全够用。你可以从PortSwigger官网下载最新版本。
安装完成后,首次运行Burp,它会让你选择临时项目还是永久项目,这个随意,不影响核心功能。关键步骤在于配置代理监听器。
- 打开代理监听:进入
Proxy->Options标签页。你会看到一个Proxy Listeners列表。默认情况下,Burp会监听127.0.0.1(本地回环地址)的8080端口。这个配置只能抓取本机浏览器的流量,对手机无效。 - 添加或编辑监听器:我们需要让Burp监听电脑的局域网IP地址,这样同一网络下的手机才能找到它。点击默认监听器右边的
Edit,或者直接点击Add。- 绑定地址:这是最关键的一步。你不能只选
Loopback only。需要选择All interfaces或者从下拉列表中选择你电脑在局域网中的具体IP地址(如192.168.1.100)。我个人的习惯是选All interfaces,省事。 - 端口:可以沿用8080,也可以改成其他不常用的端口,比如8088、8888等,只要不和系统已有服务冲突就行。
- 证书:保持默认即可,Burp会使用它自生成的CA证书来对HTTPS流量进行解密。
- 绑定地址:这是最关键的一步。你不能只选
注意:很多新手在这一步会忽略防火墙。Windows Defender防火墙或第三方安全软件可能会阻止Burp对外的监听。当你配置好监听器后,如果手机连不上,请务必检查防火墙设置,确保对应端口(如8080)的入站规则是允许的。
配置完成后,Proxy Listeners列表中应该有一个状态为Running的监听器,其地址是你电脑的局域网IP,端口是你设置的端口。记下这个IP:端口组合,例如192.168.1.100:8080,下一步手机配置要用。
2.2 电脑与手机的网络环境搭建
要让手机流量走到电脑的Burp,前提是它们必须在同一个局域网内。最常见也最稳定的方式就是使用同一个Wi-Fi路由器。
- 将电脑和手机连接到同一个Wi-Fi:确保你的电脑(最好用有线连接,更稳定)和待测试的手机都连接到了同一个无线路由器下。
- 获取电脑的局域网IP地址:
- Windows:在命令提示符(cmd)中输入
ipconfig,找到你正在使用的网络适配器(通常是以太网或WLAN),下面的IPv4 地址就是你的局域网IP。 - macOS/Linux:在终端中输入
ifconfig或ip addr,找到对应的网卡查看inet地址。
- Windows:在命令提示符(cmd)中输入
- 验证网络连通性:在电脑上关闭防火墙或放行端口后,可以在手机浏览器里尝试访问
http://<电脑IP>:<Burp端口>。例如http://192.168.1.100:8080。如果能看到Burp Suite的欢迎页面(一个写着“Burp Suite Community Edition”的简单页面),说明网络通路是OK的。如果看不到,请检查电脑防火墙、Burp监听器配置以及Wi-Fi连接。
这里有个实操心得:尽量避免使用电脑开启的“移动热点”功能让手机连接。虽然这样也能组成局域网,但Windows或macOS自带的移动热点功能有时在网络转发和DNS处理上会有奇怪的问题,导致代理不稳定或某些域名无法解析。使用一个独立的路由器是最稳妥的方案。
3. Android真机抓包全流程详解
Android系统相对开放,抓包流程比较标准,但不同版本和厂商定制系统仍有细节差异。我们分步拆解。
3.1 配置手机代理
这是让手机流量转向Burp的关键一步。
- 进入手机的
设置->WLAN(或Wi-Fi)。 - 长按当前已连接的Wi-Fi网络,选择
修改网络或高级选项。 - 将代理设置为
手动。 - 代理服务器主机名:填写你电脑的局域网IP地址(如192.168.1.100)。
- 代理服务器端口:填写Burp中配置的端口(如8080)。
- 保存设置。
此时,手机所有的HTTP流量(非系统应用)都会尝试发送到你电脑的Burp。你可以打开手机浏览器,访问一个HTTP网站(注意是http,不是https),看看Burp的Proxy->HTTP history里有没有捕获到请求。如果能抓到,说明代理配置成功。
3.2 安装Burp的CA证书以解密HTTPS
现代APP和网站基本都使用HTTPS。如果只配置代理不安装证书,Burp只能看到一堆加密的乱码。Burp作为中间人(MitM),需要对HTTPS连接进行解密,这就需要手机信任Burp自己生成的CA证书。
- 从Burp导出证书:在电脑的Burp中,打开浏览器(确保浏览器代理已设置为Burp),访问
http://burpsuite或你电脑的IP端口地址http://<电脑IP>:<端口>。在页面右上角,点击CA Certificate链接,将证书文件(通常名为cacert.der)下载到电脑本地。 - 将证书传输到手机:你可以通过数据线、微信文件传输助手、QQ、或者局域网共享文件夹的方式,把这个证书文件发送到手机上。建议放在手机存储的根目录或Download文件夹,方便查找。
- 在Android手机上安装证书:
- Android 7.0 (Nougat) 及以下:相对简单。进入
设置->安全->从存储设备安装(或类似选项),找到你传输过来的.der或.cer文件,点击安装。系统会要求你为证书命名(如“Burp CA”),并可能需要你设置锁屏密码(如果之前没设过)。 - Android 8.0 (Oreo) 及以上:这是分水岭。由于网络安全配置的加强,用户安装的CA证书默认不再被APP信任(系统级信任和用户级信任分离)。你需要多一步操作: a. 按照上述路径安装证书到“用户凭据”。 b. 安装后,进入
设置->安全->加密与凭据->用户凭据,你应该能看到名为“Burp CA”的证书。但这还不够。 c. 为了让APP(特别是目标测试APP)信任这个证书,你通常需要将APP的网络安全配置(networkSecurityConfig)进行修改,或者将手机进行Root/刷入Magisk模块。对于测试人员,更实用的方法是:使用Android模拟器(如夜神、雷电)并安装老版本系统(如Android 7.1),或者使用已Root的真机。对于非Root手机,可以尝试用VirtualXposed、太极等免Root框架结合JustTrustMe模块来绕过证书校验,但这对于某些加固的APP可能失效。
- Android 7.0 (Nougat) 及以下:相对简单。进入
重要提示:在Android高版本上,即使安装了Burp证书,抓取像“抖音”、“淘宝”这类大型APP的包依然可能失败,因为它们使用了SSL Pinning(证书绑定)技术。对付SSL Pinning,需要更高级的反编译和Hook技术,这超出了基础抓包教程的范围,但你需要知道这个瓶颈的存在。
3.3 抓包实战与验证
完成代理和证书配置后,就可以开始抓包了。
- 确保Burp的
Proxy->Intercept是Intercept is on状态(如果你想手动拦截修改请求)或Intercept is off状态(如果你只想记录历史流量)。 - 在手机上打开任意APP,或者访问网页。
- 回到电脑的Burp,查看
Proxy->HTTP history标签页。你应该能看到源源不断的HTTP/HTTPS请求记录。 - 尝试抓取一个HTTPS请求(比如APP内的一个API调用)。如果请求详情是明文(你可以看到JSON、XML等参数),说明证书安装成功,HTTPS解密正常。如果显示的是
Client SSL handshake failed或一堆乱码,说明证书未被APP信任,需要按上述方法解决证书校验问题。
一个针对微信小程序的特殊技巧:微信小程序本质上运行在微信客户端内。抓小程序的包,其实就是抓微信客户端的包。因此,上述配置对微信同样有效。打开微信,进入一个小程序,进行操作,然后在Burp的历史记录里筛选Host包含小程序相关域名的请求即可。需要注意的是,微信自身也有较强的网络层保护,在高版本Android上也可能遇到证书校验问题,解决方法同上。
4. iOS真机抓包全流程详解
iOS系统以封闭和安全著称,其抓包流程与Android有显著不同,但逻辑清晰,一旦配置成功,非常稳定。
4.1 配置iOS设备的代理
这一步与Android类似。
- 进入
设置->无线局域网。 - 点击当前连接的Wi-Fi右侧的
i信息图标。 - 滑动到最底部,找到
配置代理,选择手动。 - 服务器:填写电脑的局域网IP地址。
- 端口:填写Burp的监听端口。
- 点击右上角
存储。
4.2 在iOS上安装Burp的CA证书
这是iOS抓包的核心难点,也是必须精确操作的一步。
- 导出并传输证书:同样从Burp的CA Certificate页面下载证书文件。但iOS要求证书必须是
.cer格式或.pem格式。Burp默认下载的是.der,但iOS也支持。将证书文件发送到iPhone上,可以通过邮件附件发送给自己,然后在iPhone的邮件App中点击下载;或者使用AirDrop隔空投送;也可以上传到iCloud Drive或任何你在iPhone上能访问的网盘。 - 安装描述文件:在iPhone上找到证书文件并点击它。系统会弹出提示,告诉你“此网站正尝试下载一个配置描述文件。您要允许吗?”,点击
允许。 - 在设置中完成安装:下载完成后,打开
设置应用,你应该能在顶部看到已下载描述文件的提示,点击进入。或者直接进入设置->通用->VPN与设备管理,在“已下载的描述文件”部分找到它。点击这个描述文件,然后点击右上角的安装。可能会要求你输入锁屏密码。 - 启用完全信任:这是最关键且最容易遗漏的一步。安装完描述文件后,证书并没有被完全信任。你需要进入
设置->通用->关于本机->证书信任设置。在这个列表里,找到你刚刚安装的名为“PortSwigger CA”或类似名称的根证书,将其开关打开(变为绿色)。系统会有一个严重警告,提示你信任此证书的风险,确认即可。
只有完成了“证书信任设置”里的启用,Burp的CA证书才能解密iOS系统中APP的HTTPS流量。很多人在iOS上抓包失败,问题都出在这一步。
4.3 iOS抓包特性与注意事项
- 系统级代理:iOS的代理设置是系统级的,意味着所有网络请求(包括Safari、App Store以及绝大多数第三方APP)都会走这个代理,比Android更统一。
- App Transport Security (ATS):iOS的ATS特性要求APP必须使用安全的HTTPS连接。这反而简化了我们的工作,因为几乎所有流量都是HTTPS,只要证书信任了,就能解密。
- SSL Pinning:和Android一样,一些安全意识强的iOS APP(如银行类、大型社交APP)也会使用SSL Pinning。在非越狱的iOS设备上,绕过SSL Pinning极其困难,通常需要越狱后使用工具如SSL Kill Switch 2等。对于常规测试,可以优先选择未启用证书绑定的APP进行练习。
- 抓包验证:配置完成后,打开iPhone的Safari浏览器,访问任意HTTPS网站(如
https://www.example.com)。在Burp的HTTP history中,你应该能看到清晰的请求和响应,而不是SSL错误。如果能抓到,说明配置成功。
针对微信小程序的iOS抓包:流程完全一致。配置好代理和证书后,打开微信并使用小程序,流量就会出现在Burp中。由于iOS系统的网络栈相对统一,成功率往往比Android高。
5. 微信小程序抓包专项突破
微信小程序因其运行环境的特殊性,抓包时需要一些额外的关注点。
5.1 小程序网络请求的特点
微信小程序的前端逻辑运行在微信的JavaScript引擎中,网络请求是通过微信客户端发起的。这意味着:
- 请求头:会带有微信特有的Header,如
Referer: https://servicewechat.com/...、User-Agent包含MicroMessenger等。 - 域名白名单:小程序开发时需要在后台配置服务器域名白名单。只有白名单内的域名才能发起网络请求。这有时会影响测试,因为你无法让小程序直接请求你搭建的测试服务器,除非你修改了小程序代码或能控制其服务器域名配置(通常只有开发者能做到)。
- 证书校验:微信客户端本身会进行严格的证书校验。在Android高版本上,如果未正确处理用户证书,会导致小程序内所有HTTPS请求失败。在iOS上,只要按照前述步骤完成了“完全信任”,通常没有问题。
5.2 抓包策略与问题排查
- 筛选流量:在Burp的
Proxy->HTTP history中,使用过滤器(Filter)功能,可以按域名筛选。小程序的请求域名通常与其业务相关,观察Host头即可找到。 - 处理证书错误:如果在Android上抓小程序包遇到
TLS handshake failure,根本原因还是Burp的CA证书未被微信信任。解决方案回归到3.2节:尝试使用低版本Android系统、Root后修改系统证书、或使用免Root框架配合绕过证书校验的模块。 - 注意WebSocket:一些实时性要求高的小程序会使用WebSocket。Burp默认可能无法很好地解析和显示WebSocket流量。你需要进入
Proxy->Options->Intercept WebSocket Messages勾选相关选项,并在WebSockets history标签页中查看。 - 模拟器与真机选择:对于小程序测试,真机远优于模拟器。微信官方对模拟器的支持有限,很多小程序功能在模拟器上无法正常运行或网络行为异常。
6. 常见问题、高级技巧与安全须知
即使按照教程一步步操作,你也可能会遇到各种“坑”。这里我总结了一些最常见的问题和进阶技巧。
6.1 抓包失败常见问题排查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 手机无法访问互联网 | 电脑代理设置错误;电脑防火墙阻止;Burp未运行。 | 1. 检查手机代理的IP和端口是否正确。 2. 暂时关闭电脑防火墙或添加入站规则。 3. 确认Burp的Proxy Listener处于Running状态。 |
| Burp能看到HTTP请求,但HTTPS请求全是乱码或SSL错误 | CA证书未在手机上安装或未被信任。 | 1.Android:确认证书已安装至“用户凭据”,并尝试解决高版本限制(Root/低版本模拟器)。 2.iOS:确认在“设置->通用->关于本机->证书信任设置”中启用了该根证书的完全信任。 |
| 特定APP(如银行、支付宝)无网络流量 | APP使用了SSL Pinning(证书绑定)。 | 需要逆向分析APP,使用Frida、Xposed等工具Hook掉证书校验逻辑。这属于进阶内容,需单独学习。 |
| 微信/小程序内网络错误 | 微信客户端自身的证书校验严格。 | Android:同“HTTPS请求乱码”解决方案。 iOS:确保证书完全信任。可尝试重启微信。 |
| 抓包延迟高或请求丢失 | 网络不稳定;Burp或电脑性能不足。 | 1. 确保电脑和手机连接同一5GHz Wi-Fi,或电脑使用有线连接。 2. 在Burp的 Project options->Misc中,可调整Streaming responses等选项,或升级电脑配置。 |
| 手机设置代理后,电脑Burp无任何请求 | 代理信息填写错误;手机网络未使用Wi-Fi(如使用了4G/5G)。 | 1. 仔细核对IP和端口。 2. 确保手机当前使用的是设置了代理的那个Wi-Fi,而不是移动数据。 |
6.2 提升效率的Burp实用技巧
- 范围设置(Target Scope):在
Target->Scope中,可以添加目标域名或IP范围。然后,在Proxy->Options->Intercept Client Requests中,勾选“And URL Is in target scope”。这样Burp只会拦截你关心的目标流量,避免被无关的APP更新、广告请求刷屏。 - 手机端证书安装捷径:除了下载文件传输,还有一个更快捷的方法:在手机浏览器(已设置代理)中直接访问
http://<电脑IP>:<端口>,然后点击页面上的CA Certificate链接。iOS设备会直接引导你安装描述文件;Android设备会下载证书文件,然后你手动去设置里安装。 - 使用Burp的移动端辅助工具:Burp Suite提供了
Burp Collaborator和Mobile Assistant等扩展,可以帮助检测盲注、SSRF等漏洞,在移动端测试中非常有用,值得探索。
6.3 法律与道德安全须知
最后,也是最重要的一点,必须强调安全测试的合法性。
- 仅用于授权测试:本文所述技术仅适用于你拥有合法测试权限的环境,例如:
- 对自己开发的APP进行安全自检。
- 参与厂商授权的众测或漏洞奖励计划。
- 在完全隔离的实验室环境中进行学习研究。
- 禁止用于非法目的:严禁对未授权的任何网站、APP、网络服务进行抓包、扫描、攻击等操作。这不仅是违法行为,也可能对他人系统造成损害,并带来严重的法律后果。
- 保护隐私数据:在测试过程中,可能会接触到一些数据。即使是授权测试,也应对这些数据严格保密,测试完成后及时清理。
抓包是安全分析的起点,是一把钥匙。希望这篇超详细的教程能帮你顺利打开移动端安全测试的大门。在实际操作中遇到的具体问题,往往需要结合具体情况分析,多搜索、多尝试、多思考,经验就是这样积累起来的。
