同盾小程式指紋破解

本著技術學習與研究的目的,所以就不將完整的破解程式碼發出。維護網路安全人人有責

背景

周末參加Hackathon大賽,聽說T盾小程式設備指紋能夠唯一標識設備,於是就分析了下1.5.6版本的設備指紋js文件。

思路

其實有很多人在破解安全公司的JS文件時,都習慣於先反混淆,這就導致了會花費大量時間再反混淆上。但其實就我逆向極驗、頂象、同盾的經驗來說,目前市面上的大多數安全公司的混淆能力,都達不到需要反混淆才能看明白的地步。所以我總結的方法如下:

(1)學習基本語法。這樣我們就能快速找到關鍵參數或函數(例如小程式獲取設備資訊wx.打頭的特徵)

(2)靜態分析。觀察有沒有沒有完全混淆的關鍵字,是不是我們關注的關鍵字?

(3)動態調試。在靜態分析的基礎上,針對特定點進行調試。

(4)嘗試將反覆出現的關鍵字進行部分還原。

(5)對關鍵參數生成的函數進行溯源。

(6)耐心分析,直至理清楚整體思路。

部分關鍵程式碼展示

image.png

參數解析

partner:同盾
app_name:測試小程式名稱
t:時間戳與NFC開關狀態
id:客戶端Openid
v:小程式指紋版本
b:常規系統參數(語言、螢幕大小、許可權、機型等)
c:針對b參進行hash128
d:陀螺儀資訊
e:網路資訊
f:canvas文件資訊(存儲至繪製圖形,存儲至臨時文件夾)
g:針對以上資訊一部分加密處理
h:針對以上資訊一部分加密處理

最終參數

最終明文參數:key:partner value:tongdun
最終明文參數:key:app_name value:tongdun_web
最終明文參數:key:t value:``1603525414486``^^``1603525417141``^^{``"W10"``:{``"errMsg"``:``"getHCEState:fail function cannot run on service"``}}
最終明文參數:key:id value:013x0e0w3H2gbV2MC91w3NtmTz4x0e0V^^-
最終明文參數:key:v value:WNTElH/5Y1auzB70e5Jhop==
最終明文參數:key:a value:-
最終明文參數:key:b value:{``"language"``:``"zh_CN"``,``"wifiEnabled"``:``true``,``"safeArea"``:{``"bottom"``:``862``,``"height"``:``818``,``"top"``:``44``,``"width"``:``414``,``"left"``:``0``,``"right"``:``414``},``"bluetoothEnabled"``:``true``,``"locationAuthorized"``:``true``,``"deviceOrientation"``:``"portrait"``,``"notificationSoundAuthorized"``:``true``,``"screenHeight"``:``896``,``"windowHeight"``:``808``,``"version"``:``"7.0.14"``,``"fontSizeSetting"``:``17``,``"system"``:``"iOS 13.5.1"``,``"notificationAuthorized"``:``true``,``"statusBarHeight"``:``44``,``"pixelRatio"``:``2``,``"windowWidth"``:``414``,``"notificationBadgeAuthorized"``:``true``,``"locationEnabled"``:``true``,``"model"``:``"iPhone XR<iPhone11,8>"``,``"batteryLevel"``:``63``,``"screenWidth"``:``414``,``"screenTop"``:``88``,``"microphoneAuthorized"``:``true``,``"cameraAuthorized"``:``true``,``"albumAuthorized"``:``true``,``"notificationAlertAuthorized"``:``true``,``"brand"``:``"iPhone"``,``"platform"``:``"ios"``,``"SDKVersion"``:``"2.12.2"``}^^wifi^^``false``^^[``"facial"``]^^``0.5458558797836304
最終明文參數:key:c value:[]^^-^^-
最終明文參數:key:d value:[{``"x"``:-``0.01``,``"y"``:-``0.01``,``"z"``:-``1``},{``"x"``:-``0.01``,``"y"``:-``0.01``,``"z"``:-``0.99``},{``"x"``:-``0.01``,``"y"``:-``0.01``,``"z"``:-``1``},{``"x"``:-``0.01``,``"y"``:-``0.01``,``"z"``:-``0.99``},{``"x"``:-``0.01``,``"y"``:-``0.01``,``"z"``:-``0.99``}]^^[{``"direction"``:``70.64``,``"accuracy"``:``14.36``}]
最終明文參數:key:e value:{``"SSID"``:``"ABCDEFG"``,``"autoJoined"``:``true``,``"signalStrength"``:``0.46473270654678345``,``"justJoined"``:``false``,``"BSSID"``:``"aa:bb:cc:dd:ee:ff"``,``"secure"``:``true``}
最終明文參數:key:f value:-
最終密文參數:key:g value:c9cbdf8136533ae5f7255bede0b2547f
最終密文參數:key:h value:b7aee97b6dbba8061e080239656d5ee7

結論

目前T盾小程式設備指紋並不能像其所說的那樣,能夠唯一標識設備。至少在設備維度還是做不到的。

維護網路安全,人人有責