安卓无法抓包——将Burp证书导入安卓系统CA
最近在测试app时发现有些app必须安装在较高版本的安卓系统上面,但是在较高的系统上却无法抓包。
问题原因:https://android-developers.googleblog.com/2016/07/changes-to-trusted-certificate.html
从android Nougat开始,Android更改了对用户安装证书的默认信任行为。默认情况下app不会信任用户安装的CA,除非app有明确说明,否则应用程序将只会信任系统级别的CA。
例如修改res/xml/network_security_config.xml为如下:
将burp证书导入到安卓系统CA
:exclamation:为了便于区分命令的不同,做如下规定
若命令执行是在cmd 或者 bash 命令行的前方将不添加符号 如:
若命令执行是在adb shell 则在命令行前方添加$ 如:
1.导出&转换burp CA
导出DER格式的证书
Android喜欢PEM格式证书,并且文件名为subject_hash_old值并以.0结尾。
使用openssl将DER转换成PEM,然后输出subject_hash_old并重命名该文件(注意:如果你使用的openssl <1.0,那么将是subject_hash,而不是“old”):
2.将证书复制到设备(有rec条件建议直接用rec复制到系统目录)
我们可以使用adb来复制证书,但由于必须将其复制到/system文件系统,所以需要将它重新挂载为可写。首先要切换到root权限(手机需要root)
进入adb shell将文件移动到/system/etc/security/cacerts,并将文件权限修改为644:
重启设备即可查看到证书