某云无感滑块逆向之“大爷,饶了我吧!”(上)

查看 52|回复 9
作者:xhtdtk   
访问的网站突然加了一个无感滑块验证,在论坛上羡慕各种大神,拿让我这个在B站学了三节课的新手试一下某云的无感滑块逆向。
有时候会遇到一个无限debugger,可以使用一个简单的hook绕开。


01.png (16.64 KB, 下载次数: 0)
下载附件
2024-11-5 18:27 上传

然后出现了滑块验证。


02.png (25.03 KB, 下载次数: 0)
下载附件
2024-11-5 18:30 上传

逆向的时候遇见了非常好玩的事情,对某个数据进行AES的CBC模式解密之后,能看到来自技术人员的求饶。


03.png (32.05 KB, 下载次数: 0)
下载附件
2024-11-5 18:36 上传

接下来进入正篇,刚刚说了我是学了三节课的菜鸟,所以不会反混淆,但是也有一点逆向经验,以及一颗能熬的心。
本篇只对拖动滑块前的两个请求进行
【思路分享】
(某云滑块一共四次请求,拖动滑块前有两个,拖动滑块后有两个)
第一次请求相关
提交的表单数据如下
[Python] 纯文本查看 复制代码AccessKeyId: LTAI5tSEBwYMwVKAQGpxmvTd
SignatureMethod: HMAC-SHA1
SignatureVersion: 1.0
Format: JSON
Timestamp: 2024-11-05T10:33:31Z
Version: 2023-03-05
Action: InitCaptchaV2
SceneId: 19x5u7lo
Language: cn
Mode: embed
UserUserId: D9g3+lrRzZ8T0CvauHYne4QnyywTl98nhVI/Rceo1Mw=
UserId: HpadJlQnz2zSKcSmjXBaqQvjYUvP4jMJIk/ZwGNDNiM=
UserCertifyId: 2f6a1fa717308028012217640e3131
DeviceData: B8kAFSTg1Uiv5Amb0r4KQ4WIVebi0ot81zj1u0f8Vr5Ki36qy158XuCDxWhRK0IWMGWSo3AtVXd3rszU5ODdz94rtLyqUgkAUFoR3lXqDDtz6/cAFhLWItpLwHl5uSWg/mLyb14Sodiow/JcRfGJUXmuhtfWgqwNW4HBzCQldtw=
SignatureNonce: e090d980-dd99-4a4b-87a4-90ddd1cdc347
Signature: Frv0uyTBf0vzfq1hTpg4t7J0WDE=
其中大部分数据都是固定值,小部分数据由起始页返回,需要找的数据有两个,分别是SignatureNonce、Signature。
直接搜索SignatureNonce、Signature,在一个feilin开头的js文件找到匹配项。


04.png (62.53 KB, 下载次数: 0)
下载附件
2024-11-5 18:54 上传

断点之后刷新,但是直接跳过,难道不是这里生成的。经过反复推敲才知道,这个feilin开头的js文件,居然由6-8个版本,虽然大部分代码不一样,但是功能一样,一些关键的特征也不会变,比如图上的signature。
可惜的是,经过不断的重复,signature是真的不在那里生成的,而是在AliyunCaptcha.js,欲哭无泪,浪费那么多时间。
休息片刻之后,突然想起提交的表单数据里有SignatureMethod: HMAC-SHA1,那就说明signature和HMAC-SHA1相关,搜索SHA1果然有大发现。


06.png (56.26 KB, 下载次数: 0)
下载附件
2024-11-5 19:57 上传

继续找到_createHelper的方法断点。


07.png (32.39 KB, 下载次数: 0)
下载附件
2024-11-5 19:59 上传

终于找到了数据,通过查看堆栈来找到基础数据,加密方式,除了有HMAC-SHA1加密(需要找到key,一般是固定的),还有AES—CBC的加密(需要找到key和iv,一般是固定的)。
使用python来尝试第一次请求。


08.png (225.32 KB, 下载次数: 0)
下载附件
2024-11-5 20:03 上传

第二次请求相关
提交的表单数据如下
[Python] 纯文本查看 复制代码AccessKeyId: LTAI5tGjnK9uu9GbT9GQw72p
Version: 2020-10-15
SignatureMethod: HMAC-SHA1
SignatureVersion: 1.0
Format: JSON
Action: Log2
Data: 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
SignatureNonce: 9ea46881-0579-483f-87eb-35dbcf94d9b5
Signature: 89CXr7eI7QxXFFbUBXAdQVO3uaw=
这次要找的数据为Data,SignatureNonce,Signature。
如果跟第一次请求一样的话,需要先找到Data,根据Data生成Signature,而SignatureNonce通过第一次请求的特征,很快就找到了,舒服。
通过第一次请求后,我发现基础数据之间都很喜欢用"#"进行连接,因此也是我们进入feilin首先搜索的特征,搜索后发现数量不多,让我们每个都上断点。


09.png (53.64 KB, 下载次数: 0)
下载附件
2024-11-5 20:11 上传

断点之后成功找到Data是如何生成的,但是这也太复杂了,居然要经过两重加密AES-CBC加密,一重base64编码才能生成,而且基础数据怎么又有好像AES-CBC加密的数据。
不过,对于我来说,这些都是能熬过去的,通过一次次对比,分出固定值与非固定值,非固定值通过堆栈找到生成的方法,如果是AES-CBC加密需要再确认key和iv是不是固定的,如果是HMAC-SHA1加密就确认key是不是相同的,我靠居然还有异域加密,但所有的这些都需要找到一个至关重要的key才能开始。
他就藏在第一次请求的响应内容的deviceconfig那里,由于我太过聚精会神,导致我都忘记了,真是费时间费精力。
deviceconfig是base64进行过编码的,直接进行解码都是乱七八糟的内容,说明又是一个AES-CBC的加密,输出为base64,于是返回AliyunCaptcha.js里终于找到key和iv。
使用python来尝试第一、二次两个请求。


10.png (149.26 KB, 下载次数: 0)
下载附件
2024-11-5 20:28 上传

尾声
以为写这个思路要写很长的篇幅,发现只要断点成功根本就不需要技术,只要你会断点,在固定的代码里面找到你想要的数据只不过是时间问题。
同时,我的方法太笨了,居然是在js相处中慢慢熟悉才能获取数据,在这里赐教各位大佬hook以及反混淆的精髓,能提供地址给我学习那就更好了。

下载次数, 数据

star0angel   

大佬这么牛逼还这么谦虚
lookfeiji   

不错,跟着思路学学
52pojiema   

能给搞个轨迹玩玩嘛滑动前轨迹和滑动轨迹大佬
zwmfyy   

佩服大佬,学习了!
2733369   

学习了!
goodrain   

哈哈,幽默
jimyhejimmy   

这标题取得...
AuroraVerses   

学习了!
anorith   

这标题好有趣
您需要登录后才可以回帖 登录 | 立即注册

返回顶部