安卓7.0+模拟器HTTPS抓包:Burp证书系统级安装与Mumu配置实战 1. 项目概述一次典型的移动端安全测试环境搭建今天想聊聊一个在移动应用安全测试中几乎每个从业者都会遇到但又常常被各种小问题卡住的经典场景如何在安卓7.0及以上版本的模拟器中配置Burp Suite进行HTTPS流量抓包。这个需求听起来简单不就是装个证书、配个代理吗但实际操作过的人都知道从安卓7.0开始系统对用户安装证书的信任策略收紧导致很多“老方法”失效尤其是在模拟器环境下网络配置、证书安装路径、系统权限环环相扣一步错就可能导致整个抓包流程失败。我最近在复现一个移动端应用的漏洞时就重新完整地走了一遍这个流程用的环境是Mumu模拟器和Burp Suite。整个过程下来感觉有必要把其中的关键步骤、踩过的坑以及一些确保成功的小技巧系统地记录下来这不仅仅是“能抓包”更是要“稳定、可靠地抓包”为后续的动态测试、参数篡改、漏洞挖掘打好基础。对于安全测试人员、移动应用开发者和对应用通信安全感兴趣的朋友来说掌握这套环境搭建方法是基本功。它让你能透视应用与服务器之间的数据交换无论是分析API接口、测试逻辑漏洞还是检查敏感信息传输都离不开它。下面我就以“Burp Mumu模拟器 安卓7.0”这个组合为例拆解整个配置过程的核心思路、实操细节和排错心法。2. 环境整体设计与核心思路解析2.1 为什么是Burp Mumu模拟器在移动端抓包领域工具链的选择很多比如Fiddler、Charles、Reqable等。我首选Burp Suite原因在于它不仅仅是一个抓包工具更是一个功能强大的Web应用安全测试平台。一旦代理设置成功后续的拦截、重放、扫描、Intruder爆破等功能都能无缝对接这对于安全测试的完整性至关重要。而选择Mumu模拟器网易MuMu模拟器则主要出于对安卓高版本兼容性和稳定性的考虑。Mumu对安卓7.0、8.0乃至更高版本的支持相对较好图形性能稳定且网络桥接模式配置清晰不像某些模拟器在主机与模拟器网络互通上存在玄学问题。这里有一个核心思路需要明确我们的目标是将模拟器内的所有网络流量特别是HTTPS导向运行在主机上的Burp代理并由Burp出示的证书完成HTTPS解密。这涉及到三个层面的配置主机Burp代理设置、模拟器网络代理设置、以及模拟器系统对Burp证书的信任。安卓7.0是一个分水岭在此版本之前用户将CA证书安装到“用户凭据”存储区大多数应用就会信任。但7.0之后应用默认不再信任用户安装的CA证书除非应用本身在网络安全配置中明确声明。因此我们的方案必须绕过或解决这个限制。2.2 核心方案选型系统级证书安装面对安卓7.0的证书信任限制通常有几种思路修改应用本身给目标APK添加网络安全性配置让其信任用户证书。但这需要反编译、重打包不适合测试第三方应用或快速测试。使用JustTrustMe等Xposed模块在已Root的模拟器中安装Xposed框架及JustTrustMe模块可以绕过证书固定SSL Pinning和系统证书信任验证。这是一个强大的方案但涉及Root和框架安装步骤较多且在高版本安卓上兼容性是个挑战。将Burp证书安装为系统证书这是最彻底、最通用的方法。在已Root的模拟器中将Burp的CA证书直接放入系统证书存储目录/system/etc/security/cacerts/系统会将其视为厂商预置证书所有应用包括那些设置了严格网络安全策略的应用都会无条件信任。对于追求稳定和通用性的渗透测试环境搭建我倾向于方案三。它一劳永逸配置成功后后续测试任何应用都无需再为证书问题烦恼。当然这需要模拟器具备Root权限。幸运的是像Mumu这类模拟器通常提供开启Root权限的选项这为我们实施该方案提供了可能。因此本次实践的核心路径确定为开启Mumu Root权限 → 从Burp导出证书 → 转换证书格式 → 推送至模拟器系统证书目录 → 配置模拟器代理指向Burp。3. 实操前的关键准备与要点解析3.1 环境与工具清单工欲善其事必先利其器。开始操作前请确保你已准备好以下环境主机你的电脑操作系统Windows 10/11 或 macOS。本文以Windows为例macOS思路一致路径和命令稍有不同。Burp SuiteProfessional或Community版均可。确保已安装并可以正常启动。建议使用相对较新的版本如2024.x。Java环境Burp Suite依赖Java确保已安装合适版本的JRE或JDK。ADB工具Android Debug Bridge。这是与模拟器或真机通信的桥梁。通常Android SDK里包含也可以单独下载。将其所在目录如platform-tools添加到系统的PATH环境变量中方便在任意命令行调用。OpenSSL工具用于证书格式转换。可以从官网下载Windows版或者使用Git Bash、WSL等自带OpenSSL的环境。模拟器网易MuMu模拟器建议从官网下载最新版本。安装时注意选择安装路径避免中文和空格。模拟器设置在模拟器设置中找到并开启“Root权限”。这是后续操作的关键前提。3.2 Burp Suite代理配置要点启动Burp Suite后第一件事是正确配置代理监听器Proxy Listener。进入Proxy-Options标签页。在Proxy Listeners部分确保有一个监听器在运行。默认通常是监听本机127.0.0.1的8080端口。检查其状态是否为“Running”。这里有个关键细节为了让模拟器能访问到主机的Burp代理监听地址不能只是127.0.0.1。因为127.0.0.1代表“本机”在模拟器看来它自己的本机不是你的物理主机。你需要将监听地址改为你的主机在局域网中的IP地址或者直接改为0.0.0.0表示监听所有网络接口。改为0.0.0.0更为简单通用。操作选中默认监听器点击“Edit”在“Bind to address”下拉框中选择“All interfaces”或直接输入0.0.0.0端口保持8080或其他你喜欢的端口确保没被占用。点击“OK”保存。此时Burp的代理服务就在主机的8080端口上对所有网络接口开放了。注意将监听器绑定到0.0.0.0意味着同一局域网内的其他设备也能连接到你的Burp代理会带来一定的安全风险。在测试完成后建议改回仅监听127.0.0.1或者直接关闭Burp。4. 分步实操从证书导出到系统植入4.1 第一步从Burp Suite导出CA证书要让模拟器信任Burp首先需要获取Burp的根证书CA Certificate。在主机浏览器中访问http://burp。是的就是这个地址。确保你的浏览器代理已设置为Burp通常首次使用Burp时会自动配置浏览器插件或系统代理如果没设置手动将浏览器代理指向127.0.0.1:8080。页面加载后点击“CA Certificate”按钮下载证书文件。默认会下载一个名为cacert.der的文件。这是一个DER格式的证书。我们需要将其转换为PEM格式并生成系统证书所需的特定文件名。将下载的cacert.der放到一个方便操作的目录比如D:\burp_cert。4.2 第二步转换证书格式与计算哈希安卓系统证书存储区要求证书文件以特定的哈希值加.0的扩展名命名。我们需要用OpenSSL来完成这个转换和计算。打开命令行终端CMD或PowerShell切换到证书所在目录。cd D:\burp_cert将DER格式证书转换为PEM格式openssl x509 -inform DER -in cacert.der -out cacert.pem执行后会生成cacert.pem文件。计算PEM证书的哈希值并以此命名openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -1这条命令会输出一个8位的十六进制字符串例如9a5ba575。这就是证书的哈希值。实操心得-subject_hash_old参数是关键。安卓系统使用的是旧式哈希算法。使用-subject_hash新算法生成的哈希可能不被系统识别导致证书安装无效。这是第一个容易踩的坑。将PEM证书重命名为哈希值加.0的形式copy cacert.pem 9a5ba575.0请将9a5ba575替换为你自己命令输出的实际哈希值。现在我们就得到了系统证书文件9a5ba575.0。4.3 第三步配置Mumu模拟器网络代理接下来需要让模拟器的网络流量走向Burp。启动Mumu模拟器并确保已在设置中开启了Root权限。查询主机的局域网IP地址。在Windows命令行输入ipconfig找到“无线局域网适配器 WLAN”或“以太网适配器”下的IPv4地址例如192.168.1.100。在Mumu模拟器内进入系统设置 - WLAN或网络和互联网 - 互联网。长按当前已连接的Wi-Fi网络通常叫“WiredSSID”或类似名称选择“修改网络”。在高级选项中将代理设置为“手动”。代理服务器主机名填写你主机的IP地址如192.168.1.100。代理服务器端口填写Burp代理监听的端口如8080。保存设置。此时模拟器的所有HTTP流量应该已经指向Burp了。你可以在Burp的Proxy - Intercept标签页看到拦截的请求如果Intercept是on的话。但HTTPS流量会因为证书不受信任而失败。4.4 第四步推送证书至系统存储核心步骤这是攻克安卓7.0限制的核心环节。我们需要将准备好的系统证书文件推送到模拟器的/system/etc/security/cacerts/目录。在主机上打开命令行使用ADB连接模拟器。首先检查设备是否连接adb devices你应该能看到一个设备列表例如127.0.0.1:7555 device。Mumu模拟器的默认ADB端口通常是7555。如果没看到设备可能需要手动连接adb connect 127.0.0.1:7555再次执行adb devices确认连接成功。由于要修改系统目录需要获取Root权限的ADB Shelladb shell su执行su后命令行提示符应该会从$变成#表示已获得超级用户权限。在推送前最好先 remount 系统分区为可读写状态mount -o rw,remount /system或者使用remount取决于系统环境。这一步是为了获得向/system目录写入文件的权限。关键操作推送证书文件。不要退出当前的adb shell。另开一个主机命令行窗口执行推送命令adb push D:\burp_cert\9a5ba575.0 /system/etc/security/cacerts/请替换你的证书文件路径和名称。回到第一个命令行窗口adb shell内进入证书目录查看是否推送成功并修改文件权限cd /system/etc/security/cacerts ls -l 9a5ba575.0 # 查看文件 chmod 644 9a5ba575.0 # 修改权限为644rw-r--r--这是系统证书的标准权限重启模拟器。你可以直接在模拟器界面重启或者在adb shell里执行reboot。重启是为了让系统加载新的证书。4.5 第五步验证与测试模拟器重启后进行最终验证。再次配置模拟器的Wi-Fi代理指向Burp步骤同4.3因为重启后代理设置可能丢失需要重设。在模拟器内打开浏览器访问一个HTTPS网站比如https://www.baidu.com。观察Burp Suite。如果一切配置正确你应该能在Proxy - HTTP history中看到完整的HTTPS请求和响应并且内容已被解密不再是乱码。你也可以在浏览器中看到正常的网页内容而不会出现证书警告。进一步测试打开你想要测试的目标App进行一些网络操作。在Burp的历史记录中你应该能看到该App发出的所有HTTP/HTTPS请求。至此一个支持抓取安卓7.0应用HTTPS流量的BurpMumu测试环境就搭建完成了。5. 常见问题、排查技巧与深度避坑指南即使按照步骤操作也可能会遇到各种问题。下面是我在实践中总结的常见故障点及排查思路。5.1 问题一ADB连接不上模拟器现象adb devices列表为空。排查确认Mumu模拟器已启动。确认Mumu的ADB端口。不同模拟器端口不同Mumu通常是7555。可以尝试adb connect 127.0.0.1:7555。检查主机是否安装了其他安卓工具如手机助手、其他模拟器导致ADB冲突。尝试关闭其他相关软件或者重启ADB服务adb kill-server然后adb start-server。在Mumu模拟器设置中检查是否有“ADB调试”选项并确保其开启。5.2 问题二证书已安装但HTTPS流量仍无法解密或报错现象Burp能抓到HTTPS请求但内容是乱码加密状态或者应用直接报网络错误、证书错误。排查证书哈希计算错误这是最常见的原因。务必使用openssl x509 ... -subject_hash_old命令计算哈希并使用其输出作为文件名。用-subject_hash算出来的大概率不行。证书权限错误确保在adb shell中使用chmod 644 证书文件名正确设置了权限。证书未生效推送证书并设置权限后必须重启模拟器。不重启系统不会读取新证书。应用使用了证书固定SSL Pinning这是另一个层面的安全机制。即使系统信任了Burp证书应用自身代码也会校验服务器证书是否与预设的证书或公钥匹配。此时系统级证书安装方案也会失效。解决方法通常是反编译应用修改校验逻辑或者使用Frida、Xposed如JustTrustMe模块等动态注入工具来绕过Pinning。这属于更高级的对抗不在本文基础环境搭建范畴内。代理设置问题确认模拟器的代理设置正确指向了主机的IP和Burp端口。可以尝试在模拟器浏览器访问http://burp如果能下载到证书说明代理通路是好的。5.3 问题三推送证书时提示“Read-only file system”或权限不足现象adb push失败或在adb shell内无法复制文件到/system/etc/security/cacerts。排查确保已成功执行su获得了root权限提示符为#。务必执行了mount -o rw,remount /system或remount命令将系统分区重新挂载为可读写。有些模拟器需要更具体的路径如mount -o rw,remount /system。部分定制过的模拟器系统可能对/system分区保护更严格。可以尝试将证书先推到/sdcard/然后在adb shell内用cat或cp命令复制过去# 在adb shell (#) 内操作 cat /sdcard/9a5ba575.0 /system/etc/security/cacerts/9a5ba575.0如果仍不行可以尝试在模拟器设置中寻找更彻底的“系统可写”选项或者更换一个对Root支持更完善的模拟器版本。5.4 问题四Burp抓不到任何包现象模拟器网络正常但Burp的HTTP history一片空白。排查检查Burp代理监听器确认Proxy Listeners中对应端口的监听器是“Running”状态且绑定地址是0.0.0.0或你的主机IP。检查主机防火墙Windows或macOS的防火墙可能会阻止外部连接来自模拟器访问Burp的监听端口。临时关闭防火墙测试或者添加一条入站规则允许对应端口如8080的TCP连接。检查模拟器代理配置确认模拟器Wi-Fi代理中填写的IP和端口完全正确。主机IP地址不能填127.0.0.1。尝试抓取HTTP流量在模拟器浏览器访问一个HTTP网站如http://neverssl.com。如果HTTP能抓到而HTTPS不能问题集中在证书上如果HTTP也抓不到问题集中在网络代理通路上。5.5 一个高效的排查流程当遇到问题时建议按以下顺序排查可以快速定位问题环节网络连通性测试在模拟器浏览器访问http://主机IP:Burp端口。如果能显示Burp的欢迎页面或证书下载页面证明从模拟器到Burp代理的网络通路是好的。否则检查代理设置、防火墙、Burp监听器。证书有效性测试完成上述步骤后访问一个普通的HTTPS网站如百度。如果Burp能解密说明系统证书安装成功。如果不能检查证书哈希、权限、重启。目标应用测试用目标App测试。如果普通浏览器HTTPS可解密但目标App报错很可能遇到了证书固定SSL Pinning。6. 进阶技巧与可持续化维护环境搭建好只是第一步如何高效、稳定地使用这个环境同样重要。6.1 证书的备份与复用你转换好的那个9a5ba575.0文件本质就是你的Burp CA证书的“系统身份证”。只要你的Burp不重装、不重置CA证书这个文件就可以一直复用。备份将这个.0文件妥善保存。以后在新模拟器、新测试环境中可以直接使用省去导出、转换、计算哈希的步骤。复用在新环境中只需要确保模拟器Root然后通过adb push和chmod命令将其放入系统证书目录即可。这尤其适合需要频繁创建、销毁模拟器快照的测试场景。6.2 应对复杂网络环境有时被测应用可能位于复杂的公司内网或者需要访问多个不同环境的服务器。Burp上游代理如果你的主机需要通过公司代理才能上网可以在Burp的User options - Connections - Upstream Proxy Servers中配置上游代理。这样Burp会将从模拟器截获的请求通过公司代理转发出去再将响应返回。模拟器DNS设置如果遇到域名解析问题可以在模拟器的Wi-Fi代理设置高级选项中手动指定DNS服务器如8.8.8.8。6.3 性能与稳定性优化关闭不必要的拦截长期测试时记得关闭Proxy - Intercept的拦截功能设置为Intercept is off否则所有请求都会被暂停影响应用正常使用和测试效率。需要拦截时再临时打开。管理历史记录长时间抓包会产生巨量历史记录可能拖慢Burp。定期到Proxy - HTTP history中点击“Filter”进行筛选或者直接清除当前历史。模拟器快照在Mumu模拟器完全配置好网络代理、系统证书且安装完常用测试工具后可以创建一个“干净”的快照。以后测试不同应用时可以基于这个快照创建新实例避免重复配置。这套BurpMumu系统证书的抓包方案经过多次实战检验稳定性很高。它解决了安卓高版本抓包的核心痛点为你进行深入的移动端安全测试扫清了基础障碍。剩下的就是如何利用Burp强大的功能去发现应用逻辑中的漏洞了。记住工具和环境是辅助最重要的永远是测试者的思路和对业务逻辑的理解。