问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

窃密木马借"壁纸引擎"传播,Steam "再中招"

创作时间:
作者:
@小白创作中心

窃密木马借"壁纸引擎"传播,Steam "再中招"

引用
1
来源
1.
https://www.huorong.cn/document/tech/vir_report/1649

近期,火绒安全实验室发现一种新型的Steam盗号木马,该木马通过捆绑在热门壁纸软件《Wallpaper Engine:壁纸引擎》中进行传播。用户在下载并打开壁纸时,木马会在后台悄悄运行,窃取用户的Steam账号信息。本文将详细分析该木马的技术细节和传播方式,并提供相应的防范建议。


火绒查杀图


执行流程图

一、样本分析

文件打开后是一个以 HTML 后缀伪装的 exe 文件 "删掉HTML后缀后打开.exe" ,该 exe 实际上是一个自解压压缩包,并会在启动时执行 wehelpe.exe 和 rE.exe:

  • rE.exe 是《Wallpaper Engine:壁纸引擎》的正常壁纸程序
  • wehelpe.exe 则是由易语言编写的 Steam 恶意盗号木马

前期准备

样本在开始盗号前,会先设立一系列相关操作保证盗号流程顺利进行,其中包括提升权限、持久化、强制重新登录等操作,具体细节如下:

  • 提权操作:获取 SE_DEBUG_NAME 权限,该权限允许跨进程操作,用于后续读取 Steam 内存
  • 驻留操作:对 wehelpe.exe 和 wallpaper64 设立开机自启动注册表来进行驻留
  • 强制重新登录操作:设置 Steam 下 AutoLoginUser 字符为 0 ,这样会迫使用户重新登录,刷新 token 时效

内存遍历 Steam 搜寻 Token

内存遍历 Steam 搜寻 Token 是以线程方式进行的,首先遍历搜寻 steam.exe 的进程号,如果不存在则以 steamchina.exe 进行代替:


遍历 Steam 进程

样本会根据前面获取到的 Steam 程序句柄,通过下图中的 search_from_steam_and_get_address(sub_4041A9)函数搜索 Steam 进程内存,获取 Token 标签出现的所有地址,存储在参数数组中并返回出现的次数:


定位 Token 标志

随后根据前面获取到的次数,循环遍历每个 Token 所在的地址,获取完整的字符串:


定位用户 Token

Steam 中 Token 解析

Steam 中的 Token 以标识符 { "typ": "JWT", "alg": "EdDSA" } 开头,并以 "."(2E) 连接 Token 主体和其它内容,它们都以 base64 形式存在于 Steam 进程的内存中。

其中,对于 Token 字段的解析如下:

  • "iss": 表示签发者(issuer),即颁发该令牌的实体。
  • "sub": 表示主题(subject),即令牌所代表的用户或实体。
  • "aud": 表示观众(audience),即令牌预期接收者。
  • "exp": 表示过期时间(expiration time),即令牌过期时间戳。
  • "nbf": 表示不生效时间(not before),即令牌生效时间戳,在此时间之前令牌无效。
  • "iat": 表示发布时间(issued at),即令牌发布时间戳。
  • "jti": 表示 JWT ID,即令牌唯一标识符。
  • "oat": 表示令牌签发时间(original issued at),即令牌最初签发时间戳。
  • "per": 表示权限(permissions),即令牌所具有的权限级别。
  • "ip_subject": 表示主题的 IP 地址,即主体的 IP 地址。
  • "ip_confirmer": 表示确认者的 IP 地址,即对令牌进行确认的实体IP 地址。

下图是本机测试 Steam 进程中提取的两种类型Token:

  • 一种是由 Steam 签发的用于用户与系统之间通信的 Token,"aud" 字段值 "client"、"web"、"renew"、"deriver" 表示可用于客户端应用程序、Web 应用程序、续订令牌、生成其它令牌等操作。
  • 另一种是用于机器之间通信的 Token,"aud" 字段值为 "machine",常用于不同服务之间通信。


Token 比较

数据上传

随后样本会解密出要接收数据的网址及一些分隔符,以 "<sub值>|xxxx|ey.txt|xxxx|<sub值>----Token 标识……" 的方式拼接以备上传:


拼接字符串

传输数据的行为是通过调用 com 组件的形式进行的,并根据参数来决定使用哪种传输协议,这里以 POST 协议传输给 121.62.21.160 地址(已失效):


传输数据

除了在 sub_402843(遍历 Steam 内存的函数)内传输数据外,在外层中,也会根据是否获取到用户 Token 来决定是否传输同样的内容给另一个 C2 139.155.239.174(已失效),判断的依据是查看 sub_402842 返回的是否为 "----"(未找到用户 Token 的标志):


传输数据

二、防范建议

  1. 在下载壁纸时,尽量选择正规可信的壁纸程序
  2. 保持火绒等安全软件的开启
  3. 及时更新病毒库以提高防御能力

本文原文来自火绒安全实验室

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号