前言
做安全测试的都会遇到测试某微信小程序,而微信小程序基本都是基于HTTPS的,所以抓取HTTPS数据包就是最关键的一步。最近几天折腾了一下,整理了比较简单、方便的三种方法。
条件
抓取微信小程序数据包的关键点,就是SSL证书绑定的问题。
在安卓系统7.0以下的版本,不管微信是什么版本,都会信任系统提供的证书,而现在微信版本已经到了7.0.15且安装老版本也会强制用户升级,且微信只信任系统及自身内置的证书。
具体如下
安卓系统7.0以下:微信的任意版本,都会信任用户提供的证书安卓系统7.0以上:微信7.0以下版本,微信会信任用户提供的证书安卓系统7.0以上:微信7.0以上版本,微信只信任系统及自身内置的证书
IOS不做探讨。
实验环境
RedmiNote4X手机(未ROOT)
Android手机:MIUI11.0.2Android内核版本:7.0微信:WeChat7.0.15
MuMu模拟器版本:1.9.15
Android内核版本:6.0.1微信:WeChat7.0.10VirtualXposed:0.15.1
XPosed和JustTrustMe抓包
简介:XPosed是一个框架,用来改变系统的某些关键操作。JustTrustMe用来禁用、绕过SSL证书验证。
使用这种方法进行抓包的时候要求安卓手机必须需要ROOT。
所以我这里采用网易MuMu模拟器。
官网直接下载MAC版本,安装。Android内核版本为6.0.1。
image.png
先安装XPosed,下载地址为:https://repo.xposed.info/module/de.robv.android.xposed.installer
image.png
Android版本5.0以上点击该链接。
image.png
来到该页面。点击apk下载并安装到网易MuMu模拟器。
image.png
安装Xposed框架。
image.png
注意这里设置MuMu开启ROOT权限。否则安装不成功。
image.png
勾选"开启ROOT权限"。解决"Failedtogetrootaccess"错误。
image.png
下载安装以后。
image.png
点击"允许",之后重启设备。
image.png
image.png
显示Xposed框架成功激活。
接下来下载安装JustTrustMe。github直接下载后拖进MuMu模拟器即可。
在Xposedinstall中选择模块,勾选"JustTrustMe"
image.png
重启设备后即可抓取微信小程序数据包。
配置手动代理。
image.png
burpsuite添加Proxy。即可抓取数据包。
image.png
VirtualXposed和JustTrustMe抓包
简介:和上一种方法原理一样。都是利用的Xposed框架和JustTrustMe模块。只不过可以在非ROOT环境下运行。这是因为VirtualXposed是基于VirtualApp和epic在非ROOT环境下运行Xposed框架的实现。
我这里选择安装在红米非ROOT的安卓手机上。
image.png
VirtualXposed下载地址https://github.com/android-hacker/VirtualXposed/releases
我这里下载的是0.15.1版本。
image.png
安装完成显示Xposed框架为激活状态。
接着下载JustTrustMe,从github下载后,再将JustTrustMe克隆安装在VirtualXposed中,并启用JustTrustMe模块。
image.png
image.png
重启设备。再将需要抓取数据包的app(微信)克隆到VirtualXposed中。
image.png
image.png
打开微信的小程序。
并在手机的网络上配置代理。burpsuite抓包即可。
image.png
image.png
坑点:
在VirtualXposed打开微信时,有可能提示"打开应用com.tencent.mm失败"。尝试从老版本微信更新有可能解决该问题。
BurpCA抓包
简介:在一台已经ROOT环境的设备上,如模拟器,把burpCA证书安装在系统可信任证书中,来抓取微信小程序的数据包。条件是微信版本7.0以下。
先导出burpCA证书,以DER格式导出CA证书,保存为cacert.der。
image.png
image.png
Android使用PEM格式的证书,并且文件名为subject_hash_old值并以.0结尾,存储在/system/etc/security/cacerts目录下。我们需要使用openssl工具将DER转换成PEM,然后输出subject_hash_old并重命名该文件。
命令为
opensslx509-informDER-incacert.der-outcacert.pemopensslx509-informPEM-subject_hash_old-incacert.pem|head-1mvcacert.pem<hash>.0
在MAC终端上依次运行以上命令。
image.png
本地就会输出9a5ba575.0文件。
image.png
然后将该证书文件拷贝到MuMu模拟器的/system/etc/security/cacerts目录下。
image.png
配置网络代理,burp即可抓取微信小程序数据包。
image.png
注意:这里测试的是微信6.6.0版本(从PP助手的历史版本下载来的)。测试微信7.0版本无法抓取HTTPS数据包。
总结
力所能及,没有太复杂的流程,但这三种方法也并非完全的一劳永逸。