Android 7.0以上Burpsuite无法抓取HTTPS包?

发布于 2021-10-11  150 次阅读


为什么使用Burpsuite抓取Android 7.0的HTTPS的包会一直提示”该证书并非来自可信的授权中心”?原因是从Android 7.0(API 24)开始到Android 8.1(API 27),Android默认不再信任用户添加的CA证书,除非App有明确说明,否则应用程序将只会信任系统级别的CA证书。

所以在对App进行渗透测试的时候,如果按照之前文章BurpSuite 在渗透测试中几种常用的代理设置中使用的导入抓包工具的证书到手机后再通过sdk安装证书的方法,App则可能不再信任Burpsuite、Charles、Fiddler等抓包工具的证书了,结果系统可能会一直提示“该证书并非来自可信的授权中心”而导致抓取HTTPS包时会失败。

这里以夜神模拟器为例,演示下Burpsuite如何抓取Android 7及以上版本手机的HTTPS包。

一、准备

1. openssl工具

2. Burpsuite、Filddler或者其他抓包工具导出的证书

二、证书转换

这里由于Kali系统里自带了openssl工具,所以为了方便,该步骤将Burpsuite的证书1.cer放入kali系统内进行证书转换演示,实际上也可自行安装openssl工具在本机中进行证书转换。

使用openssl的x509指令进行cer证书转pem证书,并用md5方式显示pem证书的hash值。

#1. 证书转换,已经是pem格式的证书不需要执行这一步

openssl x509 -inform DER -in xxx.cer -out cacert.pem

#2. 进行MD5的hash显示

#openssl版本在1.0以上的版本的执行下面这一句

openssl x509 -inform PEM -subject_hash_old -in cacert.pem

#openssl版本在1.0以下的版本的执行下面这一句

openssl x509 -inform PEM -subject_hash -in cacert.pem

ps:查看openssl版本命令:openssl version

#3. 将pem证书重命名

系统级证书的命名规则为:<Certificate_Hash>.<Number>,其中Certificate_Hash表示证书文件的hash值,Number是为了防止证书文件的 hash值一致而增加的后缀。

将第二条指令输出的类似9a5ba575的hash值进行复制,之后使用下面命令重命名pem证书:

mv cacert.pem 9a5ba575.0

三、导入证书

系统级别的受信任证书以特殊格式存储在/system/etc/security/cacerts文件夹中,所以需要将转换完成的证书导入进手机系统目录该位置。

拷贝证书至/system/etc/security/cacerts之后,重启手机就可以使证书生效了,如下图所示可以看到Burpsuite工具的证书在系统级别里显示:

另外,使用夜神模拟器的时候,打开浏览器可能会遇到提示“该网站的安全证书有问题”不停的跳出的问题,可以使用下面的解决办法:

首先,我们使用鼠标左键,在弹出安全警告的提示框中点击继续按钮,直到点击没有此窗口为止。

然后在点击到没有的时候,点击右上角设置按钮(如图所示,三个小点),进入其中;

在跳出的界面,找到隐私和安全下拉框下的“显示安全警告”选项,在红框位置点击鼠标左键取消打勾后返回,这一步之后浏览任何网站都不会跳出此种安全警告了。

本站文章由渡缘人原创,如若转载请注明原文及出处:
https://www.hygrey.com/burpsuite-can-not-capture-https-packet-in-Android7.html

万物皆有裂痕,那正是光照进来的地方
最后更新于 2021-10-14