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

image

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

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

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

第一种方案:





    
            
            
    




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

第二种方案:





    
        
            
            
        
    

这种方式只有在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 的数据包

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

你可能感兴趣的:(Android 7 后如何免 ROOT 抓取 HTTPS 数据包?)