高版本的手机系统有个很安全(讨厌)的特性,在安全测试中经常碰到的抓包问题:1、iOS导入证书后还是没法抓HTTPS,要怎么设置?2、Android明明安装证书了,还是不起作用?
高版本iOS证书问题
问题: 升级到iOS高版本,设备安装burp证书后,但似乎证书依然没有生效,无法正常抓包。
解决:
打开“通用-关于关机-证书信任设置”,里面还有个证书开关,安装证书后默认是不打开的,需要手动打开:
高版本Android证书问题
问题:Android 7后,系统默认已经不信任用户证书,即使安装了burp证书,HTTPS抓包还是报错。
解决:需要将burp证书或自己生成的证书设置为Android系统证书。前提:Android设备需要root。
导入自己生成的证书
- 生成证书:
1 | openssl req -x509 -days 730 -nodes -newkey rsa:2048 -outform der -keyout server.key -out ca.der -extensions v3_ca |
- 转换私钥格式:
1 | openssl rsa -in server.key -inform pem -out server.key.der -outform der |
- 转换证书公钥:
1 | openssl x509 -inform der -in ca.der -out ca.pem |
- 生成Android系统的证书格式:
1 | openssl x509 -inform PEM -subject_hash_old -in ca.pem | head -1 |
这里有个坑:
1 | openssl x509 -inform PEM -text -in ca.pem -out /dev/null>> 7798de04.0 |
需要检查这条命令是否成功,前后cat 7798de04.0 文件看看内容是否有增加,前后文件不变说明命令失败了。PS.本人Debian和Kali下操作都没生效,导致导入Android系统证书依然没生效。在windows环境,安装openssl操作反而成功了。
- Android的系统证书已经生成,如上述的798de04.0文件,把文件放到Android手机以下目录(手机需要root)
1 | Android/system/etc/security/cacerts/ |
重启设备即可生效。
- 具体命令:
1 | # PC端adb命令直接推送文件到手机,需另行配置adb |
- 重启设备,查看设备信任的凭据,系统标签找到自己的证书说明成功:
- burp导入证书:
证书选择默认:ca.der,私钥选择:server.key.pkcs8.der
导入burp证书
burp先导出DER格式证书,如:burp1.7.31.der。需要先转换下格式,后续步骤都类似。
转换为crt格式证书:
1 | openssl x509 -inform DER -in burp1.7.31.der -out burp1.7.31.crt |
- 接下来跟前面步骤4同理
1 | openssl x509 -inform PEM -subject_hash_old -in burp1.7.31.crt | head -1 |
不在赘述。
- 导入Android后可以看到burp的证书已经是系统证书了: