硬核解析:新型木马内存窃取令牌,打开Steam即被盗
你遇到的以下几个问题,都会在本篇得到答案:
账户被盗,但是手机Steam里并没有多的设备
账户被盗,没有异地IP登录记录
确认没有键盘钩子和steam二维码覆盖,但依然被盗号
本文分两部分:
普通用户只需要看前半,了解是怎么做到盗号的。
后半篇面向技术爱好者,解释了盗号技术细节。
上一篇我们说盗号木马通过降低steam版本来获得ssfn认证文件实现绕过令牌盗号。
本篇会介绍新版steam的认证又是如何实现盗号的。
我们先看演示,仅凭一个偷来的令牌就能在一台新电脑上登录成功(无需手机令牌、邮件)。
首先,此木马通过某种方式入侵了你的电脑,比如小红车,修改器等,它的目的是等待你打开steam,从内存获取steam令牌。
而这个令牌不是旧版的ssfn,新版steam更改了认证方式,藏在local.vdf中,但是此文件是经过多种因子加密的,复制该文件到其他电脑会无效

盗号木马把目标转向了内存,巧的是,steam的令牌在内存中是没有混淆的,可以直接获取。

获取之后,还需要用户名

至此信息收集完毕,木马把用户名+令牌发送到服务器。盗号者根据这两个数据就能生成local.vdf等必要文件,然后直接启动steam就完成了登录

而且不会在在手机令牌里留下记录,也不会触发邮件。
我在几次测试中,异地ip不同电脑登录,盗号者的电脑都不会显示在令牌里。(不清楚是不是延迟显示)

这种从内存窃取令牌的木马,仅需要启动steam,获取令牌+用户名即可完成盗号,过程迅速,而且没有诱导进行二次登录等操作,玩家难以察觉。
至于怎么防御呢?——只能杀毒
接下来是技术细节部分,不感兴趣的同学可以直接跳到文末总结
新版steam的认证需要三个关联文件:
local.vdf:存放加密过的登录令牌
config.vdf:主要配置文件,记住各种网络配置
loginusers.vdf:记录登录过的账户(账户名、SteamID、是否记住密码)

而这个登录令牌是我们获取的关键
这个令牌保存在local.vdf里面,是被加密的,算法未知不可直接逆向。
所以思路就转到了从内存中读取,根据公开信息,Steam使用的令牌是标准的JWT,所以假如V社没有做混淆处理,在内存里存放的令牌会是以"eyA"开头且有三个点隔开的字符长串。
(至于为什么eyA开头,因为JWT的头部是{ "typ": "JWT"XXXX,,bast64编码后就是eyAxxxx),看不懂直接跳过

拿到了令牌后,我们可以用python直接按照JWT标准解析内容,得到令牌内的关键信息如图圈中的所示

那有了这些我们也不知道local.vdf加密规则,其实是可以知道的,有大佬逆向出来了,加密规则为:DPAPI 加密 + CRC32 账号名作为键 + entropy 绑定账号名。
DPAPI即用windows上的用户密码进行加密,这也就是前面说的不能直接复制授权文件local.vdf的主要原因。
但是还有config和loginuser的写入规则我们还不知道。但无妨,大佬做了工具了,使用steam-eya,传入用户名和令牌可以直接生成前面这三个文件

steam-eya开源工具:https://github.com/kWAYTV/steam-eya
至此,整个令牌盗取分析完毕
省流总结
1,木马通过小红车等方式入侵了你的电脑
2,等待你打开steam,一旦打开(不管是自动登录、密码还是扫码登录,只要成功进入steam商店),立即检测内存,从内存获得令牌
3,木马把 用户名+令牌 上传到服务器
4,盗号者利用令牌生成凭证文件,使得可以免手机令牌完成自动登录
参考资料
“赛博花柳”借Wallpaper Engine入侵——剖析Steam盗号产业链-技术文章-火绒安全
https://www.huorong.cn/document/tech/vir_report/1823
360论坛-数十款游戏被捆绑Steam盗号木马(帖子详情)
https://m.bbs.360.cn/detail.html?id=16157350
鸣谢:感谢小黑盒@(°ー°〃) 指路新型木马,推了360和火绒的分析文章,让我少走很多分析的弯路
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭