Laozeng's Blog

A man is not old until regrets take the place of dreams.

Android和iOS HTTPS代理抓包配置tips

laozeng's Avatar 2020-08-14 教程

  1. 1. 高版本iOS证书问题
  2. 2. 高版本Android证书问题
    1. 2.1. 导入自己生成的证书
    2. 2.2. 导入burp证书

高版本的手机系统有个很安全(讨厌)的特性,在安全测试中经常碰到的抓包问题:1、iOS导入证书后还是没法抓HTTPS,要怎么设置?2、Android明明安装证书了,还是不起作用?

高版本iOS证书问题

问题: 升级到iOS高版本,设备安装burp证书后,但似乎证书依然没有生效,无法正常抓包。

解决:

打开“通用-关于关机-证书信任设置”,里面还有个证书开关,安装证书后默认是不打开的,需要手动打开:

高版本Android证书问题

问题:Android 7后,系统默认已经不信任用户证书,即使安装了burp证书,HTTPS抓包还是报错。

解决:需要将burp证书或自己生成的证书设置为Android系统证书。前提:Android设备需要root。

导入自己生成的证书

  1. 生成证书:
1
openssl req -x509 -days 730 -nodes -newkey rsa:2048 -outform der -keyout server.key -out ca.der -extensions v3_ca
  1. 转换私钥格式:
1
2
3
openssl rsa -in server.key -inform pem -out server.key.der -outform der

openssl pkcs8 -topk8 -in server.key.der -inform der -out server.key.pkcs8.der -outform der -nocrypt
  1. 转换证书公钥:
1
openssl x509 -inform der -in ca.der -out ca.pem
  1. 生成Android系统的证书格式:
1
2
3
4
5
openssl x509 -inform PEM -subject_hash_old -in ca.pem | head -1
# 这里会返回一串数字,如7798de04
cp ca.pem 7798de04.0
# 将新证书名字后缀为.0
openssl x509 -inform PEM -text -in ca.pem -out /dev/null>> 7798de04.0

这里有个坑:

1
openssl x509 -inform PEM -text -in ca.pem -out /dev/null>> 7798de04.0

需要检查这条命令是否成功,前后cat 7798de04.0 文件看看内容是否有增加,前后文件不变说明命令失败了。PS.本人Debian和Kali下操作都没生效,导致导入Android系统证书依然没生效。在windows环境,安装openssl操作反而成功了。

  1. Android的系统证书已经生成,如上述的798de04.0文件,把文件放到Android手机以下目录(手机需要root)
1
Android/system/etc/security/cacerts/

重启设备即可生效。

  1. 具体命令:
1
2
3
4
5
6
7
8
9
# PC端adb命令直接推送文件到手机,需另行配置adb
adb push 7798de04.0 /data/tmp
su root
# 重新挂早system目录,读写权限
mount -o remount,rw /system
cp /data/tmp/7798de04.0 /system/etc/security/cacerts/
# 设置权限
chmod 644 /system/etc/security/cacerts/7798de04.0
chmod 644 /system/etc/security/cacerts/7798de04.0
  1. 重启设备,查看设备信任的凭据,系统标签找到自己的证书说明成功:
  1. burp导入证书:

证书选择默认:ca.der,私钥选择:server.key.pkcs8.der

导入burp证书

  1. burp先导出DER格式证书,如:burp1.7.31.der。需要先转换下格式,后续步骤都类似。

  2. 转换为crt格式证书:

1
openssl x509 -inform DER -in burp1.7.31.der -out burp1.7.31.crt
  1. 接下来跟前面步骤4同理
1
2
3
4
openssl x509 -inform PEM -subject_hash_old -in burp1.7.31.crt | head -1
cp ca.pem 7798de04.0
# 将新证书名字后缀为.0
openssl x509 -inform PEM -text -in burp1.7.31.crt -out /dev/null>> 7798de04.0

不在赘述。

  1. 导入Android后可以看到burp的证书已经是系统证书了:
This article was last updated on days ago, and the information described in the article may have changed.