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

安卓APP抓包实战:MuMu模拟器12配置Burpsuite与HTTPS证书安装避坑指南

1. 项目概述:为什么需要抓包安卓APP?

在移动应用开发、安全测试或者逆向分析的过程中,我们经常需要知道一个安卓APP到底在和服务器“聊”些什么。它发送了什么请求?接收了什么数据?接口参数是如何构造的?这些信息对于调试API、分析业务逻辑、发现潜在的安全漏洞至关重要。这就是“抓包”的核心价值——像电话窃听一样,监听并记录客户端与服务器之间的网络通信。

市面上抓包工具很多,比如Fiddler、Charles、Wireshark,但在Web应用安全测试领域,Burpsuite以其强大的拦截、重放、扫描和自动化功能,成为了安全研究员和开发者的首选。然而,直接在物理安卓手机上配置Burpsuite代理和安装证书,步骤繁琐,且受手机系统版本、厂商定制限制,容易遇到各种“玄学”问题,比如证书无法安装、HTTPS流量抓不到等。

这时,安卓模拟器的优势就体现出来了。它运行在你的电脑上,环境完全可控,可以轻松设置网络代理,也能方便地安装和信任证书。MuMu模拟器12作为一款性能稳定、兼容性好的主流模拟器,成为了我们搭建这个可控测试环境的理想选择。本教程的目标,就是带你从零开始,在MuMu模拟器12上搭建Burpsuite抓包环境,并重点攻克最让人头疼的证书配置环节,让你能稳定、清晰地捕获到APP的HTTPS流量。

2. 环境准备与工具安装

工欲善其事,必先利其器。在开始抓包之前,我们需要准备好所有必要的软件,并确保它们处于正确的版本和配置状态。这一步的细致程度直接决定了后续操作的顺利与否。

2.1 Burpsuite的安装与基础配置

首先,你需要从PortSwigger官网下载Burpsuite Community Edition(社区版)。对于学习和大多数测试场景,社区版的功能已经足够强大。下载完成后,直接运行JAR文件即可启动。如果你没有Java环境,需要先安装JDK 8或更高版本。

启动Burpsuite后,首次运行会提示你创建临时项目或加载已有项目,选择“Temporary project”并点击“Next”,在下一个界面选择“Use Burp defaults”然后“Start Burp”即可。

接下来是关键的网络代理配置:

  1. 进入Proxy->Options选项卡。
  2. 在“Proxy Listeners”区域,确保有一个监听器在运行。默认会有一个监听127.0.0.1:8080的条目。如果没有,点击“Add”添加一个。
  3. 在添加或编辑监听器时,绑定地址选择“All interfaces”或者特定的本机IP(如192.168.x.x),端口可以保持8080,也可以换成其他未被占用的端口(如8081)。这里有一个重要细节:为了让模拟器能访问到,绑定地址不能仅仅是127.0.0.1,因为这是电脑本机的环回地址,模拟器作为一个“独立设备”无法直接访问。最好选择“All interfaces”或你电脑在局域网中的IP地址。
  4. 勾选“Running”复选框,启动监听。

注意:如果你的电脑开启了Windows防火墙,可能会弹出提示,询问是否允许Burpsuite通过防火墙进行通信,务必选择“允许”。

2.2 MuMu模拟器12的安装与网络设置

从网易MuMu模拟器官网下载并安装MuMu模拟器12。安装过程很简单,一路下一步即可。安装完成后启动模拟器。

为了让模拟器的网络流量经过Burpsuite,我们需要在模拟器内部设置代理:

  1. 打开模拟器,进入系统“设置”。
  2. 找到“WLAN”或“网络和互联网”设置(不同安卓版本路径略有差异)。
  3. 长按当前已连接的Wi-Fi网络(通常是“Wired Ethernet”或一个默认连接),选择“修改网络”。
  4. 在高级选项中,将代理设置为“手动”。
  5. 代理服务器主机名:这里不能填127.0.0.1localhost!因为这是模拟器自身的环回地址。需要填写你电脑的局域网IP地址。你可以在电脑的命令行中输入ipconfig(Windows)或ifconfig(Mac/Linux)来查看,通常是192.168.x.x这样的地址。
  6. 代理服务器端口:填写你在Burpsuite中设置的端口,例如8080
  7. 保存设置。

设置完成后,你可以在模拟器内打开浏览器,访问一个HTTP网站(注意是HTTP,不是HTTPS),同时在Burpsuite的Proxy->Intercept选项卡下,确保“Intercept is on”是打开状态。如果浏览器页面打不开,且Burpsuite的Intercept界面收到了请求,说明代理设置成功。如果没收到,请检查IP地址和端口是否正确,以及防火墙设置。

2.3 导出与准备Burpsuite证书

要让模拟器信任Burpsuite,从而解密HTTPS流量,必须将Burpsuite的CA证书安装到模拟器的系统信任证书库中。第一步是导出证书。

  1. 在电脑浏览器中,访问http://burpsuite或你设置的代理IP和端口,例如http://192.168.1.100:8080
  2. 页面右上角有一个“CA Certificate”按钮,点击它下载证书文件cacert.der。这是一个DER格式的证书文件。
  3. 安卓系统通常需要PEM或CRT格式的证书。我们需要转换一下。将下载的cacert.der文件重命名为cacert.cer(或者保持原样,但后续命令需对应修改)。
  4. 打开命令行工具,使用OpenSSL进行转换(如果你没有OpenSSL,可以搜索在线转换工具,但注意证书安全):
    openssl x509 -inform DER -in cacert.der -out cacert.pem
    这条命令将DER格式转换为PEM格式。得到cacert.pem文件。
  5. 为了在安卓上安装,我们还需要将PEM文件再次转换为DER格式(但这次是带有BEGIN CERTIFICATE头的),或者直接重命名为.crt后缀。最简单的方法是直接将cacert.pem文件重命名为cacert.crt

现在,我们得到了一个cacert.crt文件,这就是需要安装到模拟器中的证书。将这个文件通过拖拽的方式,从电脑桌面复制到MuMu模拟器的共享文件夹中,或者使用模拟器自带的“文件传输”功能上传到模拟器的/sdcard/Download/目录下,方便在模拟器内找到它。

3. 证书安装的深度避坑指南

这是整个流程中最关键、最容易失败的一环。安卓系统从7.0(API 24)开始,引入了名为“网络安全配置”的机制,APP默认不再信任用户安装的CA证书,只信任系统预装的证书。这意味着,即使你把Burpsuite的证书成功安装到了“用户凭据”中,很多现代APP(特别是targetSdkVersion >= 24的)依然会忽略它,导致HTTPS流量无法解密,你看到的只是一堆TLS握手失败的记录。

MuMu模拟器12默认的安卓版本通常较高(例如安卓9、11),因此我们必须采用系统级安装方法。

3.1 常规方法(用户证书)及其局限性

首先,我们看一下常规操作,了解为什么它可能不行:

  1. 在模拟器中,进入“设置” -> “安全” -> “加密与凭据” -> “安装证书”。
  2. 选择“CA证书”,系统会警告此操作有风险,点击“仍然安装”。
  3. 从文件管理器(如刚刚存放证书的Download目录)中找到cacert.crt文件,点击安装。
  4. 为证书命名,例如“PortSwigger CA”,然后点击“确定”。

安装成功后,你可以在“用户凭据”列表中看到它。此时,用模拟器浏览器访问一些HTTPS网站,Burpsuite可能已经可以解密内容了。但是,这只是假象。很多原生APP、银行APP、大型互联网公司的APP,由于严格遵循了安卓的网络安全策略,会完全无视这张用户证书。你尝试抓它们的包,会发现要么连接失败,要么Burpsuite里看到的HTTPS请求是乱码或直接显示“Client SSL negotiation failed”。

3.2 系统级证书安装(Root环境)

要让所有APP,包括那些最“顽固”的,都信任我们的Burpsuite证书,必须将其放入系统的信任证书库。这需要模拟器具有Root权限。

第一步:获取MuMu模拟器12的Root权限幸运的是,MuMu模拟器12通常默认就开启了Root权限,或者可以非常方便地开启。

  1. 打开模拟器,进入“设置” -> “关于平板电脑”(或类似选项)。
  2. 连续点击“版本号”7次,开启“开发者选项”。
  3. 返回设置主菜单,进入新出现的“开发者选项”。
  4. 在其中找到“Root授权”或“开启Root权限”的开关,将其打开。不同版本位置可能不同,也可能在模拟器侧边栏的设置中找到“Root开关”。

第二步:将证书推送至系统证书目录系统CA证书存放在/system/etc/security/cacerts/目录下,并且每个证书文件有特定的命名规则:必须是<hash>.<number>的格式,其中hash是证书主题的哈希值(旧算法),number通常为0。

  1. 在模拟器内安装一个终端应用,比如“Termux”,或者使用ADB(Android Debug Bridge)连接模拟器。MuMu模拟器通常会在安装目录下提供adb.exe工具。
  2. 打开电脑的命令行,导航到MuMu安装目录,连接ADB:
    adb connect 127.0.0.1:7555
    (7555是MuMu模拟器常见的ADB端口,如果不对,可以在模拟器设置中查看)
  3. 连接成功后,依次执行以下命令:
    adb root # 获取root权限 adb remount # 重新挂载系统分区为可读写(关键!)
    adb remount命令可能在某些系统上失败。如果失败,可以尝试:
    adb shell su mount -o rw,remount /system exit exit
  4. 计算证书哈希值。首先将cacert.pem文件放到ADB所在目录,然后:
    openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -1
    这条命令会输出一个8位的十六进制字符串,例如9a5ba575
  5. 将证书文件推送到系统目录,并重命名:
    adb push cacert.pem /system/etc/security/cacerts/ adb shell cd /system/etc/security/cacerts mv cacert.pem 9a5ba575.0 # 将`9a5ba575`替换为你上一步得到的哈希值 chmod 644 9a5ba575.0 # 修改文件权限为644(rw-r--r--) chown root:root 9a5ba575.0 # 修改文件所有者为root exit
  6. 重启模拟器。重启后,Burpsuite的证书就已经成为系统信任的根证书了。

实操心得adb remount是关键。如果这一步不成功,系统分区就是只读的,无法写入证书。MuMu模拟器有时需要特定的启动参数或在多开器中设置“开启Root”才能成功remount。如果实在不行,可以搜索“Magisk模块方式安装系统证书”,这是另一种更强大的方法,但步骤更复杂。

3.3 针对高版本安卓(Android 10+)的额外配置

安卓10及以上版本进一步收紧了网络安全。即使证书安装到了系统目录,APP仍然可以通过在AndroidManifest.xml中配置networkSecurityConfig来明确声明不信任用户证书。作为测试者,我们有时需要“说服”APP信任我们的证书。

一种常见的方法是使用“证书锁定解除”工具,但这需要更深入的逆向工程。对于抓包测试,一个更简单粗暴但经常有效的方法是:修改APK的包名并重打包。因为很多APP的证书锁定(Certificate Pinning)实现是检查特定域名或证书,但有时其逻辑与包名绑定不深。不过,这已属于逆向工程范畴,本教程不展开。

对于我们可控的测试环境(比如测试自己开发的APP),最根本的解决方案是在APP的networkSecurityConfig中明确信任用户安装的证书。这需要在开发阶段完成。

4. 完整抓包流程与实战演示

环境配置妥当后,让我们进行一次完整的实战抓包。假设我们要分析一个新闻类APP的数据流。

4.1 配置Burpsuite代理与拦截

  1. 确保Burpsuite的代理监听器正在运行(Proxy -> Options,监听器状态为Running)。
  2. 在Proxy -> Intercept选项卡,确保“Intercept is on”是关闭状态。我们初期先不拦截,只做流量记录。
  3. 切换到Proxy -> HTTP history选项卡。这里会记录所有流经代理的HTTP/HTTPS请求。

4.2 在模拟器中操作目标APP

  1. 在MuMu模拟器中安装目标APP。
  2. 确保模拟器的Wi-Fi代理设置正确指向Burpsuite(主机:电脑IP,端口:8080)。
  3. 打开APP,进行一些常规操作,比如刷新首页、点击新闻分类、查看新闻详情等。

4.3 分析捕获的流量

回到Burpsuite的HTTP history界面,你应该能看到大量的请求记录。

  • 筛选目标:在Filter栏中,你可以输入APP的域名或关键词来筛选请求,避免被其他无关流量干扰。
  • 查看请求与响应:点击任意一条记录,下方会分栏显示原始的HTTP请求(Raw, Headers, Params等)和服务器返回的响应(Raw, Headers, Hex等)。
  • HTTPS解密成功标志:如果证书配置成功,你看到的HTTPS请求的Host会是真实的域名,请求参数和响应体(如JSON数据)都是明文可读的。如果证书有问题,你可能会看到“Client SSL negotiation failed”的提示,或者请求的Host是乱码、IP地址。
  • 重放与篡改:这是Burpsuite的核心功能之一。右键点击任何一个请求,选择“Send to Repeater”。在Repeater选项卡中,你可以任意修改这个请求的参数、头部、方法,然后点击“Send”重新发送,观察服务器返回的不同响应,这对于测试接口漏洞(如SQL注入、越权)非常有用。
  • 扫描:右键请求,还可以选择“Do an active scan”,让Burpsuite自动对该请求相关的功能进行安全漏洞扫描。

4.4 处理抓包中的常见现象

  1. 没有流量:检查模拟器代理设置、电脑防火墙、Burpsuite监听器是否绑定正确IP和端口。尝试在模拟器浏览器访问http://burp,应该能打开Burpsuite的欢迎页。
  2. 只有HTTP流量,没有HTTPS或HTTPS乱码:这是证书问题。请严格按照第3章的系统证书安装步骤检查。确认证书哈希、文件名、权限都正确无误。重启模拟器后,可以尝试访问https://portswigger.net/测试。
  3. 某个特定APP抓不到包:这个APP很可能使用了证书锁定(SSL Pinning)。它会在代码里硬编码服务器证书的公钥或哈希值,只信任这个特定的证书,而忽略系统CA。对付这种情况,需要反编译APP,修改其网络库代码或使用Frida、Xposed等动态插桩工具来绕过证书检查,这属于进阶内容。
  4. Burpsuite卡顿或无响应:如果流量非常大,Burpsuite的JAVA应用特性可能导致内存占用过高。可以在启动Burpsuite的批处理文件或命令行中增加JVM内存参数,例如java -Xmx2048m -jar burpsuite_community.jar

5. 高阶技巧与问题排查实录

掌握了基础抓包后,一些高阶技巧和深度排查方法能让你事半功倍。

5.1 精准过滤与流量搜索

面对海量请求,如何快速定位?

  • Scope设置:在Target -> Scope中,你可以定义目标范围。添加你的目标域名(如*.example.com),然后勾选“Use advanced scope control”。之后,在Proxy、Scanner等模块,都可以选择只显示在Scope范围内的项目,极大净化视野。
  • 搜索功能:在HTTP history界面,使用搜索框(快捷键Ctrl+F)。你可以搜索关键词、正则表达式,范围可以选择请求、响应、注释等。比如搜索“password”、“token”、“uid”,快速找到认证相关的接口。
  • Filter表达式:Filter功能非常强大。例如,MIME type == JSON可以过滤出所有JSON格式的响应;Response status == 200只看成功的请求;Request in scope只看目标范围内的。

5.2 处理WebSocket与gRPC流量

现代APP越来越多地使用WebSocket进行实时通信,或使用gRPC这类高性能RPC框架。Burpsuite对它们的支持情况如下:

  • WebSocket:Burpsuite专业版原生支持WebSocket消息的拦截、重放和修改。在Proxy -> Intercept选项卡,当有WebSocket连接建立时,你可以看到并拦截其消息。社区版不支持拦截,但可以在HTTP history中看到WebSocket的握手请求。
  • gRPC:gRPC基于HTTP/2,其负载是二进制的Protocol Buffers格式。Burpsuite可以捕获到HTTP/2的流量,但默认无法解析Protobuf内容,显示为二进制乱码。你需要安装如“Burp Suite Protobuf Decoder”这类扩展,并配置对应的.proto文件,才能实现消息的可读和可编辑。这是一个相对专业的领域。

5.3 模拟器与Burpsuite的进阶配合

  1. 多开器抓包:MuMu模拟器自带多开器,你可以同时运行多个模拟器实例。为每个实例设置不同的代理端口(如8081,8082),然后在Burpsuite中创建多个对应的监听器,就可以同时抓取多个APP或同一APP多个账号的流量,方便进行对比测试或并发测试。
  2. 手机代理到模拟器:有时需要在真机上测试,但不想配置手机。可以搭建一个Wi-Fi热点,将热点的代理指向运行Burpsuite的电脑,然后将手机连接到这个热点。这样手机流量也会经过Burpsuite。不过,手机上的证书安装同样需要按照系统证书的方式处理,且过程比模拟器更复杂。
  3. 利用Burpsuite扩展:Burpsuite强大的扩展生态(BApp Store)能极大增强其能力。例如,“Logger++”提供了更强大的流量记录和搜索功能;“Autorize”用于自动化越权测试;“Collaborator Everywhere”用于发现SSRF等盲注漏洞。在MuMu模拟器这个稳定环境中测试这些扩展,是非常好的学习方式。

5.4 疑难杂症排查清单

当你遇到抓包失败时,可以按照这个清单自上而下排查:

问题现象可能原因排查步骤
模拟器无法上网代理设置错误;电脑网络问题1. 关闭代理,看模拟器能否正常上网。
2. 检查电脑IP是否变更。
3. 在模拟器内ping电脑IP。
Burpsuite无任何流量代理未启动;防火墙阻挡;IP/端口错误1. 确认Proxy Listeners中对应条目Running已勾选。
2. 临时关闭电脑防火墙测试。
3. 在模拟器浏览器访问http://<电脑IP>:<端口>,应看到Burpsuite页面。
HTTPS流量无法解密(显示TLS错误)证书未安装或未受信任1. 确认证书已按系统证书方式安装(/system/etc/security/cacerts/)。
2. 重启模拟器。
3. 访问https://burpsuite.com测试。若仍失败,检查证书哈希和文件名。
特定APP无法抓包(其他APP正常)该APP使用了SSL Pinning1. 尝试低版本APK。
2. 使用Frida等工具绕过证书锁定(需Root)。
3. 尝试使用“虚拟大师”等可安装Xposed框架的模拟器环境。
请求响应缓慢或Burpsuite卡死流量过大;JVM内存不足1. 在Burpsuite中设置Scope,过滤无关流量。
2. 增加启动Burpsuite的JVM内存参数(-Xmx4096m)。
3. 关闭不需要的Burpsuite模块(如Scanner)。

最后,我个人在实际操作中的体会是,抓包环境的搭建,尤其是证书配置,是一个“细节决定成败”的过程。很多时候失败不是因为方法不对,而是某一步的细微差别,比如证书哈希计算错了、文件权限没改、或者模拟器没有真正以可读写方式挂载系统分区。耐心地按照步骤操作,并理解每一步背后的原理(比如为什么用户证书不行,为什么要用特定的哈希文件名),远比盲目复制命令更重要。一旦环境配通,MuMu模拟器12+Burpsuite这个组合就会变成一个极其强大的移动端分析沙箱,无论是开发调试还是安全测试,都能让你清晰地洞察应用内的一切网络交互。

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

相关文章:

  • C++哈夫曼树与编码:从原理到双版本实现详解
  • [智能体-572]:Link(智联)是腾讯微信官方开放的个人微信机器人通信协议,对外产品名称叫 ClawBot,是 2026 年腾讯推出、唯一合规的个人微信 Bot 通道。
  • Selenium与Java Web自动化测试实战:从环境搭建到企业级框架
  • Aleph Alpha推出Savanna:以代码训练模型,提升效率与可追溯性!
  • 【软考通关黄金窗口期】:2024下半年起多地取消“以考代评”资格,错过这次再等3年?
  • Termux全版本及附属包下载指南:从低版本aarch64适配到高版本功能扩展
  • MoE架构揭秘:总参数与活跃参数为何必须分开计算
  • CTF文件上传漏洞实战:MIME绕过与.htaccess利用详解
  • 深度解析Universal x86 Tuning Utility:硬件性能优化的完整技术方案
  • 告别黄牛票!5分钟配置大麦网自动化抢票神器终极指南
  • GPT-4的MoE架构与2%激活率:稀疏化推理的工程真相
  • 瑞萨RL78微控制器IAR工程配置与调试实战指南
  • OpenSSL在Mac Catalyst的集成:iOS应用跨macOS运行指南
  • Selenium自动化测试异常处理:从NoSuchElementException到健壮脚本的实战策略
  • Android 12 Letterbox模式:大屏适配的“优雅降级”方案
  • Python+OneClaw+Playwright构建统一自动化测试平台:架构设计与工程实践
  • 抖音无水印视频下载终极指南:三步获取高清原版内容
  • Mermaid Live Editor:3分钟学会创建专业图表的在线神器
  • 从零准备Java面试:我的三个月学习路线
  • Know Your Data:交互式数据探索如何重塑ML模型诊断范式
  • 【实战指南】STM32F103C8T6内部HSI时钟配置与性能调优
  • 终极字体库指南:如何一键获取15款最受欢迎的专业字体
  • NoSQL注入实战指南:从原理到防御的完整攻防手册
  • Midscene.js终极指南:5分钟掌握AI视觉驱动的跨平台UI自动化
  • Web安全中的重放攻击:原理、防御策略与实战代码实现
  • 内存迷宫中的致命陷阱——深入剖析Segmentation Fault的根源与应对
  • 从Blender到3D打印机:3MF格式插件如何简化你的创意实现
  • 基于MCP协议与Playwright的AI自动化测试实践指南
  • PVZ Toolkit终极指南:快速掌握植物大战僵尸修改器的完整功能
  • Chromatic深度解析:跨平台Chromium/V8通用修改器架构与实现