美文网首页Android开发经验谈Android开发
Android 7 后如何免 ROOT 抓取 HTTPS 数据包

Android 7 后如何免 ROOT 抓取 HTTPS 数据包

作者: Android进阶小麦 | 来源:发表于2020-06-02 20:29 被阅读0次

Android 7.0 之后增加了对第三方证书的限制,也就是说 Android 6.0 及更低版本的系统上,默认是信任用户证书的,但 Android 6.0 以上的系统,则改成了不信任用户证书,而抓包工具(charles、fiddler等)提供的证书默认是安装在用户证书上的,所以证书都无法通过校验,也就无法抓取HTTPS请求了。

但是等等,有些小伙伴可能发现安卓系统是高于 6.0 的,有时也能抓取某些 APP 的HTTPS请求,这是为什么呢?

这是因为开发者在 APP 中做了如下配置:

第一种方案:

<!-- res/xml/network_security_config.xml -->
<?xml version="1.0" encoding="utf-8"?>

<network-security-config>
    <base-config cleartextTrafficPermitted="true">
            <certificates src="system"/>
            <certificates src="user"/>
    </base-config>
</network-security-config>

<!-- AndroidManifest.xml -->
<application
    android:networkSecurityConfig="@xml/network_security_config"
    >
</application>

老版本的微信(6.x)就是这样配置了信任用户证书的,所以在 Android 7.0 也可以抓公众号 HTTPS 的数据包

第二种方案:

<!-- res/xml/network_security_config.xml -->
<?xml version="1.0" encoding="utf-8"?>

<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificatessrc="system"/>
            <certificatessrc="user"/>
        </trust-anchors>
    </debug-overrides>
</network-security-config>

这种方式只有在android:debuggable为true时才生效, 缺点很明显,包上线了之后就不能再被抓包了

上面方案都是需要开发人员配合打包的,一般在测试环境可以用,但到了生产环境我们还想抓包怎么办呢?

其他方案:

  • 将设备root,将证书安装到system分区
  • 将设备root,利用Xposed框架,利用 JustTrustmeSSL-killer 等模块绕过客户端的 SSL Pinning 校验 (科普文章)

更优雅的方案

上面介绍的方案要么是需要开发配合的,要么是需要 root 手机的,有没有更优雅便捷的方案呢?答案是肯定的

virtualXposed 了解下

image

VirtualXposed 是基于VirtualApp 和 epic 在非ROOT环境下运行Xposed模块的实现(支持5.0~10.0),
也就是说它提供了一个虚拟环境,类似虚拟机,这个环境下是默认信任用户证书的,所以安装在这个环境的 APP 基本上都能抓包,
另外也能使用 Xposed 安装一些模块,实现更强大的功能。

这里我以抓取最新版微信 7.0.15 中小程序的数据包为例

设备: 华为 Honor 8X
Android 版本:10
微信版本:7.0.15

1. 下载 VirtualXposed

image

2. 打开后类似一个 Android 桌面启动程序, 我们可以看到已经有 Xposed 框架安装在上面了,并且也是激活的,当然这里我们不需管它

3. 长按虚拟桌面会出现添加应用选项,然后我们可以从系统已安装的 APP 中克隆一个或者从内部存储中直接安装 APK 包

image

这里需要注意下,因为微信有分 64位的版本和32位的版本,经过测试,目前 VirtualXposed 只支持安装 32 位的, 64位的打开会闪退,如果你遇到其他
APP 也出现打开闪退的情况可能就是这个原因,另外也可以尝试重启手机,看是否解决

微信 APP 32未版本可以直接到官网下载

image

4. 安装完微信,然后按照正常的抓包流程: 打开 fiddler——安装证书到手机端——开始抓取 VirtualXposed 中 APP 的数据包

还有更多的玩法,赶紧试试吧

作者:mocobk
链接:https://www.jianshu.com/p/554cc3133dad

相关文章

网友评论

    本文标题:Android 7 后如何免 ROOT 抓取 HTTPS 数据包

    本文链接:https://www.haomeiwen.com/subject/vfpuzhtx.html