抓取微信小程序數(shù)據(jù)包的三種方法

前言

做安全測試的都會遇到測試某微信小程序,而微信小程序基本都是基于HTTPS的,所以抓取HTTPS數(shù)據(jù)包就是最關(guān)鍵的一步。最近幾天折騰了一下,整理了比較簡單、方便的三種方法。

條件

抓取微信小程序數(shù)據(jù)包的關(guān)鍵點,就是SSL證書綁定的問題。
在安卓系統(tǒng)7.0以下的版本,不管微信是什么版本,都會信任系統(tǒng)提供的證書,而現(xiàn)在微信版本已經(jīng)到了7.0.15 且安裝老版本也會強制用戶升級,且微信只信任系統(tǒng)及自身內(nèi)置的證書。
具體如下

安卓系統(tǒng)7.0以下:微信的任意版本,都會信任用戶提供的證書
安卓系統(tǒng)7.0以上:微信7.0以下版本,微信會信任用戶提供的證書
安卓系統(tǒng)7.0以上:微信7.0以上版本,微信只信任系統(tǒng)及自身內(nèi)置的證書

IOS不做探討。
實驗環(huán)境
Redmi Note 4X 手機(未ROOT)

Android 手機:MIUI 11.0.2
Android 內(nèi)核版本:7.0
微信:WeChat 7.0.15

MuMu 模擬器 版本:1.9.15

Android 內(nèi)核版本:6.0.1
微信:WeChat 7.0.10
VirtualXposed :0.15.1

XPosed 和 JustTrustMe 抓包

簡介:XPosed 是一個框架,用來改變系統(tǒng)的某些關(guān)鍵操作。JustTrustMe 用來禁用、繞過SSL 證書驗證。

使用這種方法進行抓包的時候要求安卓手機必須需要ROOT。
所以我這里采用網(wǎng)易MuMu模擬器。
官網(wǎng)直接下載MAC版本,安裝。Android 內(nèi)核版本為6.0.1。

image.png

先安裝XPosed,下載地址為:https://repo.xposed.info/module/de.robv.android.xposed.installer

image.png

Android 版本5.0 以上點擊該鏈接。

image.png

來到該頁面。點擊apk下載并安裝到網(wǎng)易MuMu模擬器。

image.png

安裝Xposed框架。

image.png

注意這里設(shè)置MuMu開啟ROOT權(quán)限。否則安裝不成功。

image.png

勾選"開啟ROOT權(quán)限"。解決"Failed to get root access"錯誤。

image.png

下載安裝以后。

image.png

點擊"允許",之后重啟設(shè)備。

image.png
image.png

顯示Xposed框架成功激活。

接下來下載安裝JustTrustMe。github直接下載后拖進MuMu模擬器即可。
在Xposed install 中選擇模塊,勾選"JustTrustMe"

image.png

重啟設(shè)備后即可抓取微信小程序數(shù)據(jù)包。
配置手動代理。

image.png

burpsuite添加Proxy。即可抓取數(shù)據(jù)包。

image.png

VirtualXposed 和 JustTrustMe 抓包

簡介:和上一種方法原理一樣。都是利用的Xposed框架和JustTrustMe模塊。只不過可以在非ROOT環(huán)境下運行。這是因為VirtualXposed是基于VirtualApp和epic在非ROOT環(huán)境下運行Xposed框架的實現(xiàn)。

我這里選擇安裝在紅米非ROOT的安卓手機上。

image.png

VirtualXposed 下載地址 https://github.com/android-hacker/VirtualXposed/releases
我這里下載的是0.15.1版本。

image.png

安裝完成顯示Xposed框架為激活狀態(tài)。
接著下載JustTrustMe,從github下載后,再將JustTrustMe克隆安裝在VirtualXposed中,并啟用JustTrustMe模塊。

image.png
image.png

重啟設(shè)備。再將需要抓取數(shù)據(jù)包的app(微信)克隆到VirtualXposed中。

image.png
image.png

打開微信的小程序。
并在手機的網(wǎng)絡(luò)上配置代理。burpsuite抓包即可。


image.png
image.png

坑點
在VirtualXposed打開微信時,有可能提示"打開應(yīng)用 com.tencent.mm 失敗"。嘗試從老版本微信更新有可能解決該問題。

Burp CA抓包

簡介:在一臺已經(jīng)ROOT環(huán)境的設(shè)備上,如模擬器,把burp CA證書安裝在系統(tǒng)可信任證書中,來抓取微信小程序的數(shù)據(jù)包。條件是微信版本7.0以下。

先導(dǎo)出burp CA證書,以DER格式導(dǎo)出CA證書,保存為cacert.der。

image.png
image.png

Android使用PEM格式的證書,并且文件名為subject_hash_old值并以.0結(jié)尾,存儲在/system/etc/security/cacerts目錄下。我們需要使用openssl工具將DER轉(zhuǎn)換成PEM,然后輸出subject_hash_old并重命名該文件。
命令為

openssl x509 -inform DER -in cacert.der -out cacert.pem  
openssl x509 -inform PEM -subject_hash_old -in cacert.pem |head -1  
mv cacert.pem <hash>.0 

在MAC終端上依次運行以上命令。

image.png

本地就會輸出9a5ba575.0文件。

image.png

然后將該證書文件拷貝到MuMu模擬器的/system/etc/security/cacerts 目錄下。

image.png

配置網(wǎng)絡(luò)代理,burp即可抓取微信小程序數(shù)據(jù)包。

image.png

注意:這里測試的是微信 6.6.0版本(從PP助手的歷史版本下載來的)。測試微信7.0版本無法抓取HTTPS數(shù)據(jù)包。

總結(jié)

力所能及,沒有太復(fù)雜的流程,但這三種方法也并非完全的一勞永逸。

參考資料

聽說安卓微信 7.0 不能抓 https?
如何使用Xposed+JustTrustMe來突破SSL Pinning
如何在Android Nougat中正確配置Burp Suite?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容