千家信息网

如何在Android Nougat中正确配置Burp Suite

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这期内容当中小编将会给大家带来有关如何在Android Nougat中正确配置Burp Suite,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我测试一个新的And
千家信息网最后更新 2026年10月31日如何在Android Nougat中正确配置Burp Suite

这期内容当中小编将会给大家带来有关如何在Android Nougat中正确配置Burp Suite,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

我测试一个新的Android app时,遇到了一些关于Burp Suite无法正常工作的问题。为了解决这个问题我花了整整一下午的时间,并决定将我的解决方案分享出来。

背景

此前我已经在Genymotion VM或我的旧版Nexus Tablet,做过不少Android相关的测试。一直以来我都遵循Portswigger的说明文档,本地运行Burp Suite,并安装User Cert,配置一个WiFi代理。

然而,当我对这个特定app(需要API level 24 (Android 7.0 - "Nougat"))测试时,突然发现Burp无法正常工作。我回顾了我的配置步骤,并没有发现遗漏的地方,但在Burp中只看到"connection reset(连接重置)"错误:


在经过我几个小时的折腾后,我终于找出了问题所在。在进一步探讨之前,我向大家推荐两篇优秀的文章,这也是帮我解决该问题的关键信息:

  • https://serializethoughts.com/2016/09/10/905/

  • https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html

从Nougat开始,Android更改了对用户安装证书的默认信任行为。这意味着,从sdcard安装Burp CA将无法拦截应用流量。除非另有说明,否则应用程序将只会信任系统级别的CA。

这里有两种方法可以帮我们绕过它:

  • 将Burp CA作为系统级CA安装在设备上。这是我认为最简单的解决方法,但需要一个已经root的设备。还免去了设置锁屏PIN码的的麻烦:)

  • 修改manifest清单文件并重新打包应用程序。 操作步骤相对繁琐,但不需要root权限。

注意:我在Windows 10上使用Burp Suite Pro完成了这些操作,使用的是Android 7.1(API25)Genymotion VM,但这些步骤应适用于任何设置。

将Burp CA作为系统级CA安装在设备上

对我来说,我认为最简单的解决方案就是将Burp CA安装到系统可信证书中。你可以通过Settings -> Security -> Trusted Credentials来查看所有与Android设备捆绑在一起的系统CA。在浏览器捆绑中你也能看到类似的CA。

Android的受信任CA以特殊格式存储在/system/etc/security/cacerts 。如果我们有root权限,可以对这个位置进行写入放入Burp CA(经过一些修改后)。

导出并转换Burp CA

第一步是以正确的格式获取Burp CA。使用Burp Suite,以DER格式导出CA证书。我将它保存为cacert.der


Android喜欢PEM格式证书,并且文件名为subject_hash_old值并以.0结尾。

注意:如果你使用的OpenSSL <1.0,那么将是subject_hash,而不是"old"

使用openssl将DER转换成PEM,然后输出subject_hash_old并重命名该文件:

openssl x509 -inform DER -in cacert.der -out cacert.pem  openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1  mv cacert.pem .0

例如,我的证书:


将证书复制到设备

我们可以使用adb来复制证书,但由于必须将其复制到/system文件系统,所以我们需要将它重新挂载为可写。作为root用户,adb remount非常简单。

adb root  adb remount  adb push .0 /sdcard/

进入adb shell将文件移动到/system/etc/security/cacerts,并将文件权限修改为644:

mv /sdcard/.0 /system/etc/security/cacerts/  chmod 644 /system/etc/security/cacerts/.0

最后,我们通过adb reboot命令重启设备。


重启设备后,我们浏览到Settings -> Security -> Trusted Credentials应该能看到新的"Portswigger CA"已成为系统信任的CA。


现在我们就可以设置代理并通过Burp来拦截所有的应用流量了:)

修改并重新打包应用程序

如果你没有root权限或不想修改系统可信证书,则你也可以将Burp CA作为用户证书安装,然后通过修改特定的APK来实现MitM。

从Nougat开始,应用默认会忽略用户安装的证书。通过查看启动应用时的logcat输出信息可以验证这一点:


没有网络安全配置,该应用程序将只信任系统CA,并直接忽视用户安装的Burp证书。

想要解决这个问题,我们需要以下操作:

  • 拆解APK

  • 添加新的XML源来定义网络安全配置文件

  • 修改AndroidManifest.xml

  • 重新打包并自签名APK

拆解并修改APK

首先我们使用apktool来反汇编APK

apktool d TestApp.apk


接下来,通过在res/xml目录中创建文件network_security_config.xml来添加新的网络安全配置:

vim TestApp\res\xml\network_security_config.xml

配置需要明确指出,用户证书是可被接受和信任的。内容如下:

                                                                                  

最后,我们必须在AndroidManifest.xml中定义网络安全配置。在标签中,添加指向新XML文件的android:networkSecurityConfig属性:

重新打包并自签名APK

APK现在必须重建并签名才能安装。使用apktool b命令,将在dist/目录中创建一个新的APK:

apktool b TestApp

为了自签名应用程序,我们需要使用keytool来创建一个新的密钥库和密钥,然后使用jarsigner签名新的APK:

keytool -genkey -v -keystore test.keystore -storepass password -alias android -keypass password -keyalg RSA -keysize 2048 -validity 10000jarsigner.exe -verbose -keystore test.keystore -storepass password -keypass password TestApp\dist\TestApp.apk android


最后,使用adb来安装新的APK:

adb install TestApp\dist\TestApp.apk

现在,当我们启动应用程序时,logcat输出将标示正在使用的新的网络安全配置:


cheatsheet

安装系统CA

# Convert DER to PEMopenssl x509 -inform DER -in cacert.der -out cacert.pem# Get subject_hash_old (or subject_hash if OpenSSL < 1.0)openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1# Rename cacert.pem to .0mv cacert.pem 9a5ba575.0# Remount and copy cert to deviceadb root  adb remount  adb push 9a5ba575.0 /sdcard/  adb shell  vbox86p:/ # mv /sdcard/9a5ba575.0 /system/etc/security/cacerts/  vbox86p:/ # chmod 644 /system/etc/security/cacerts/9a5ba575.0  vbox86p:/ # reboot

修改APK

apktool d TestApp.apk  vim TestApp\res\xml\network_security_config.xml  #Content:                                                                                         vim TestApp\AndroidManifest.xml  # Add to  tag:        android:networkSecurityConfig="@xml/network_security_config"# Rebuild and self-signkeytool -genkey -v -keystore test.keystore -storepass password -alias android -keypass password -keyalg RSA -keysize 2048 -validity 10000apktool b TestAppjarsigner -keystore test.keystore -storepass password -keypass password TestApp\dist\TestApp.apk android# Install new APKadb install TestApp\dist\TestApp.apk# Install Burp CA to User Certsmv cacert.der cacert.cer  adb push burpca.cer /mnt/sdcard  Settings -> Security -> Install from SD Card

上述就是小编为大家分享的如何在Android Nougat中正确配置Burp Suite了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

证书 配置 系统 应用 文件 设备 应用程序 用户 程序 安全 网络 网络安全 问题 权限 格式 内容 步骤 测试 输出 信息 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 互联网科技活动banner 互联网科技官网 互联网最新的科技有限公司 科技类互联网 朗涯互联网科技 宜安科技 互联网金融 远拓互联网科技 天下捷融互联网科技 互联网科技大会案例 金融科技和互联网金融 广州慧亚互联网科技怎么样 注册互联网科技公司经营范围大全 佛山市拉法互联网科技有限公司 互联网科技如何创业 深圳无忧互联网科技 上海乐五互联网科技有限公司 互联网硬科技公司 兰石爱特工业互联网科技分公司 数字科技和互联网金融哪个好 重庆科技学院互联网 广州优美互联网科技 深圳国际航运科技和互联网 徐州市互联网科技有限公司 工业互联网展湾科技股份有限公司 山东星卡互联网科技有限公司官网 广东工业互联网大赛深圳学泰科技 互联网公司属于科技吗 互联网科技自媒体灵感 如何强化互联网金融科技
0