安卓7.0及以上系统如何抓取Https的包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓7.0及以上系统如何抓取Https的包相关的知识,希望对你有一定的参考价值。

参考技术A 最近在测试大精品4.9项目中发现一个有意思的问题:
(1)安卓系统 7.0 以下版本,不管大精品任意版本,都会信任系统提供的证书
(2)安卓系统 7.0 及以上版本,大精品4.8及以下版本,都会信任系统提供的证书
(3)安卓系统 7.0 及以上版本,大精品4.9 版本,大精品只信任它自己配置的证书列表[link]
通过查看资料以及本次大精品的需求是Targetsdk版本升级至26,定位到问题所在:
android7.0及以上的系统中,每个应用可以定义自己的可信CA证书。
默认情况下,应用只会信任系统预装的CA证书,而不会信任用户安装的CA证书。
而回想抓https包的过程,无论是fiddler还是Charles,想抓https,都必须手机安装对应的证书,
通过fiddler/Charles安装的证书恰恰正属于用户安装的CA证书,因此会被视作不安全的证书。
下面是我通过查看资料以及实践后,得到的一个解决办法,进行总结:
修改app中的android:networkSecurityConfig属性,具体为:
在AndroidManifest.xml中,添加android:networkSecurityConfig="@xml/network_security_config"
<?xml version="1.0" encoding="utf-8"?>
<manifest.......>
<application android:networkSecurityConfig="@xml/network_security_config" ....>
.....
</application>
</manifest>
添加配置文件res/xml/network_security_config.xml
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" overridePins="true" />
<certificates src="user" overridePins="true" />
</trust-anchors>
</base-config>
</network-security-config>
接下来,就是重新打包,再进行抓包就可以抓到HTTPS的包了。
如果有项目源码的话,可以直接进行修改,如果没有的话,可以通过将apk文件用apktool反编译apktool,拿到包内容后,修改配置文件,然后再重新签名打包就可以了。

fiddler抓取app的https的包

线上问题的排查有时候需要抓包,但是是https协议的,则需要安装证书

 

在Android 6.0 (API level 23)及以前,APP默认信任系统自带的CA证书以及用于导入的CA证书,Android 6.0 (API level 23)以后,APP默认只信任系统自带的CA证书,对于用户导入的不予理会。

也就是说目前只能使用6.0以下的安卓系统进行抓包了,当然也有其他办法,会比较麻烦一点

 

目录

1、设置fiddler

2、设置手机

3、抓包

 

1、设置fiddler

第一步:设置允许远程连接

参考https://www.cnblogs.com/weizhideweilai/p/9170233.html

第二步:打开https连接设置

 

 

2、设置手机

第一步:设置代理

参考https://www.cnblogs.com/weizhideweilai/p/9170233.html

第二步:重启fiddler,然后手机访问http://ip:8888,其中ip指的是电脑的ip,然后下载证书完成安装(手机需设置密码才能完成安装)

 

 

3、抓包

完成证书安装就可以开始抓取https的包了

安卓和ios的设置方法一样,具体可以实际操作试试

 

 

关注使用高版本手机抓取https的包,可参考博客https://www.52pojie.cn/thread-967606-1-1.html#

以上是关于安卓7.0及以上系统如何抓取Https的包的主要内容,如果未能解决你的问题,请参考以下文章

App逆向——安卓7以上如何安装抓取https的包

App逆向——安卓7以上如何安装抓取https的包

安卓7.0及以上版本抓包https失败解决方法

微信https抓包,不同安卓版本微信版本对证书的要求

微信7.0以上版本fiddlerCharles抓包报HTTPS证书信任问题通报

如何绕过安卓SSL证书的强校验