你遇到的以下几个问题,都会在本篇得到答案:

账户被盗,但是手机Steam里并没有多的设备

账户被盗,没有异地IP登录记录

确认没有键盘钩子和steam二维码覆盖,但依然被盗号

本文分两部分:

普通用户只需要看前半,了解是怎么做到盗号的。

后半篇面向技术爱好者,解释了盗号技术细节。

上一篇我们说盗号木马通过降低steam版本来获得ssfn认证文件实现绕过令牌盗号。

本篇会介绍新版steam的认证又是如何实现盗号的。

我们先看演示,仅凭一个偷来的令牌就能在一台新电脑上登录成功(无需手机令牌、邮件)。
07401a09011d60fa8c9c5701d92af75a.gif

首先,此木马通过某种方式入侵了你的电脑,比如小红车,修改器等,它的目的是等待你打开steam,从内存获取steam令牌。

而这个令牌不是旧版的ssfn,新版steam更改了认证方式,藏在local.vdf中,但是此文件是经过多种因子加密的,复制该文件到其他电脑会无效

91069-uqt0ca9av8.png

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

26992-byq6j58wxnm.png

获取之后,还需要用户名

33422-rmekna5fkp.png

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

58286-smo93p6jwrq.png

而且不会在在手机令牌里留下记录,也不会触发邮件。

我在几次测试中,异地ip不同电脑登录,盗号者的电脑都不会显示在令牌里。(不清楚是不是延迟显示)

42955-3o7ccegbb1n.png

这种从内存窃取令牌的木马,仅需要启动steam,获取令牌+用户名即可完成盗号,过程迅速,而且没有诱导进行二次登录等操作,玩家难以察觉。

至于怎么防御呢?——只能杀毒


接下来是技术细节部分,不感兴趣的同学可以直接跳到文末总结

新版steam的认证需要三个关联文件:

local.vdf:存放加密过的登录令牌

config.vdf:主要配置文件,记住各种网络配置

loginusers.vdf:记录登录过的账户(账户名、SteamID、是否记住密码)

27471-p3gzunfra7d.png

而这个登录令牌是我们获取的关键

这个令牌保存在local.vdf里面,是被加密的,算法未知不可直接逆向。

所以思路就转到了从内存中读取,根据公开信息,Steam使用的令牌是标准的JWT,所以假如V社没有做混淆处理,在内存里存放的令牌会是以"eyA"开头且有三个点隔开的字符长串。

(至于为什么eyA开头,因为JWT的头部是{ "typ": "JWT"XXXX,,bast64编码后就是eyAxxxx),看不懂直接跳过

39772-lsttarq3d8c.png

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

55714-pkjglh35qgd.png

那有了这些我们也不知道local.vdf加密规则,其实是可以知道的,有大佬逆向出来了,加密规则为:DPAPI 加密 + CRC32 账号名作为键 + entropy 绑定账号名。

DPAPI即用windows上的用户密码进行加密,这也就是前面说的不能直接复制授权文件local.vdf的主要原因。

但是还有config和loginuser的写入规则我们还不知道。但无妨,大佬做了工具了,使用steam-eya,传入用户名和令牌可以直接生成前面这三个文件

31401-p3lqdsr95sp.png

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和火绒的分析文章,让我少走很多分析的弯路