同盾小程序指纹破解

本着技术学习与研究的目的,所以就不将完整的破解代码发出。维护网络安全人人有责

背景

周末参加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盾小程序设备指纹并不能像其所说的那样,能够唯一标识设备。至少在设备维度还是做不到的。

维护网络安全,人人有责