android7.0以上https抓包

 

Android 7 以上版本,绕过CA限制,抓取https

原文地址: https://www.jianshu.com/p/035f7d7a0f7e

环境

手机:小米5A
系统:MIUI 10
电脑:win10
抓包:mitmdump (可替换成其他抓包软件)
电脑需要安装:

  • mitmdump(可替换成任意抓包软件)
  • adb
  • openssl

背景

我需要抓取https请求,苹果手机可以毫无问题的抓取,而安卓就不可以。原因是安卓7之后对证书的策略进行变更,应用不再使用用户证书。

有两种方式绕过:

  • 在手机上安装系统证书
  • 修改app的manifest文件重新打包

这里我们只讲第一种方法, 所以我们需要把证书添加到系统证书中。

为此,我们需要一台已经root的小米手机。root教程在miui论坛中已经非常详细了。官方给出了详细的步骤和工具。

开始

假设到这里你已经有一台root成功的小米手机。

安卓受信任的CA证书以特定的格式存储在 /system/etc/security/cacerts 目录下。我们可以在adb shell中查看到:


 
image.png

证书处理

这里我们用到的是mitmproxy,它的证书存放在user/Administrator/.mitmproxy/ 目录下。pem为后缀的文件。

查看openssl版本

openssl version

如果是1.0以上的版本:

openssl x509 -inform DER -in cacert.der -out cacert.pem  
openssl x509 -inform PEM -subject_hash_old -in cacert.pem

如果是1.0以下的版本:

openssl x509 -inform DER -in cacert.der -out cacert.pem  
openssl x509 -inform PEM -subject_hash -in cacert.pem

上面的两条语句,如果已经是pem后缀的文件,可以直接执行第二条, cacert.pem就是你的证书文件。

第一行会输出一个类似这样的hash串:

7672ac4b

然后重命名证书

cp cacert.pem 7672ac4b.0  

复制证书到设备上

可以直接粘贴到手机中,也可以用adb复制过去,这里的7672ac4b换成前面你得到的那个hash串

adb root  
adb remount  
adb push 7672ac4b.0 /sdcard/  

复制到系统目录并修改权限

adb shell
su
mount -o rw,remount /system
mv /sdcard/<cert>.0 /system/etc/security/cacerts/  
chmod 644 /system/etc/security/cacerts/7672ac4b.0
reboot

验证

然后我们在手机中依次进入:设置→安全→信任证书→系统证书
此处就可以看到你安装的证书了。

测试

证书安装成功就没什么问题了:


 
image.png

可能遇到的问题

可问题:
remount of /system failed: Read-only file system
remount failed
解决方法:
adb root
adb disable-verity
adb reboot
adb remount
adb shell
mount -o rw,remount /system

参考文章:

Configuring Burp Suite with Android Nougat
Android 7 Nougat and certificate authorities



作者:WangLane
链接:https://www.jianshu.com/p/035f7d7a0f7e
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文地址:https://www.cnblogs.com/zhao907/p/13450548.html