HackerNews

HackerNews
MALFEX npm 软件包 'imgdecode' 在 Windows 原生插件中隐藏 Shellcode 加载器

MALFEX npm 软件包 'imgdecode' 在 Windows 原生插件中隐藏 Shellcode 加载器

给文章评分:

网络安全研究人员发现了一个恶意 npm 软件包,它属于最近披露的名为 MALFEX 的软件供应链攻击活动的一部分。

该软件包名为"imgdecode",于 2026 年 9 月 30 日由一个名为"malfexteste8"的用户上传到软件包注册表。截至撰写时,它已被下载 979 次,且在 npm 上仍然可用。该软件包的最新版本为 1.0.3。

"npm 软件包 imgdecode 在一个编译的 Node.js 插件中隐藏了一个恶意加载器,"SafeDep 表示,"它的九行 JavaScript 文件加载一个 Windows 动态链接库(DLL)。当 Node.js 程序从 Windows 控制台调用 require('imgdecode') 时,该 DLL 会尝试从 GitHub 下载加密的 shellcode。它解密响应并将结果注入到一个新的 dllhost.exe 进程中。"

MALFEX 最初由 Checkmarx 和 CloudSEK 记录,是一个长期活动的名称,其中一名未知威胁行为者自 2023 年 8 月 6 日以来一直在 npm 上发布恶意软件包,目的是入侵 Windows 系统。这些软件包通过五个 npm 发布者账户发布:malfexkkj、malfex_user、malfexteste2、malfexteste3、malfexteste4。

在已识别的八个软件包中,三个被发现作为 Overlord RAT 的加载器,另外三个("cdn-img-fetch"、"img-to-native"和"native-runner")协同工作以下载并运行一个 Node.js 窃取器。第三条感染路径涉及使用 postinstall 钩子执行 JavaScript,以联系外部服务器并检索未指明的下一阶段二进制文件。

有趣的是,该活动背后的威胁行为者似乎在回应公开披露和 npm 移除,在两天内以"runhelper"和"imgbundle"的形式发布了"native-runner"和"img-to-native"的替代品。同一天,"imgdecode"的第一个版本被发布。事件时间线如下:

  • 2026 年 9 月 26 日——cdn-img-fetch、img-to-native 和 native-runner 1.0.0 发布
  • 2026 年 9 月 28 日 16:06 UTC——npm 移除 native-runner 和 img-to-native
  • 2026 年 9 月 30 日 03:29 UTC——imgbundle 1.0.0 发布,替代 img-to-native
  • 2026 年 9 月 30 日 03:37 UTC——runhelper 1.0.0 发布,替代 native-runner
  • 2026 年 9 月 30 日 16:13 UTC——runhelper 被取消发布
  • 2026 年 9 月 30 日 22:32 UTC——imgdecode 1.0.0 发布
  • 2026 年 9 月 30 日 23:07 UTC——imgdecode 1.0.1 发布
  • 2026 年 10 月 1 日 17:48 UTC——imgdecode 1.0.2 发布
  • 2026 年 10 月 7 日 23:06 UTC——npm 移除 imgbundle
  • 2026 年 10 月 8 日 13:03 UTC——npm 移除 cdn-img-fetch
  • 2026 年 10 月 11 日 22:09 UTC——imgdecode 1.0.3 发布

Node.js 窃取器链值得注意的是,这些软件包都没有安装钩子。相反,恶意代码在"native-runner"被加载时运行。该软件包将"img-to-native"列为其依赖项,而后者又将"img-to-native"列为依赖项。


这些软件包各自的确切功能如下:

  • cdn-img-fetch 从 GitHub 仓库("cavecrew/proj")下载"banner.png"并提取加密数据块。
  • img-to-native 使用密钥"malfexteam2027"解密该数据块,并将内容作为 Go 可执行文件写入磁盘("%APPDATA%\Microsoft\Windows\node_runtime_helper.exe")。
  • native-runner 执行该 Go 可执行文件,随后从"104.234.65[.]75:700"下载窃取器二进制文件("setup.exe",又称 movinlike)。

"Runhelper"宣传为用于"从 Node.js 项目启动原生二进制文件"的辅助工具,其功能与"native-runner"类似,旨在运行恶意代码。它的主要职责是定位一个 JPG 文件("cdn-img-fetch/.runtime/rt.jpg"),从中提取 shellcode,将其复制到可执行内存中,并使用 Koffi(一个 Node.js 的外部函数接口(FFI)模块)运行它。


"runhelper 被取消发布六小时后,运营者发布了带有编译 DLL 的 imgdecode 来运行 shellcode,"SafeDep 表示,"从 1.0.1 版本起,该 DLL 还会下载并解密有效载荷。1.0.1 和 1.0.2 版本在加载 DLL 之前仍会调用 require('imgbundle')。1.0.3 版本移除了该依赖项,不需要其他任何 MALFEX 软件包。"


与"runhelper"一样,"imgdecode"的 1.0.0 版本等待"imgbundle"在"cdn-img-fetch/.runtime/"位置写入文件,一旦可用,就读取其内容到内存中,并将其传递给原生 Node.js 插件以解码数据。


该插件是一个 64 位 Microsoft Visual C++(MSVC)DLL,它首先检查自己是否在开发者的终端中运行,然后继续从同一仓库("cavecrew/proj")获取一个 JPG 文件("banner.jpg"),使用密钥"nif-runtime-2027"解密嵌入的有效载荷,并最终将输出注入到"dllhost.exe"中。


"解密后,DLL 会检查明文的前几个字节,"SafeDep 解释道,"如果它们匹配 JPEG 或 PNG 签名,DLL 就会停止。推断:运营者可以通过提供解密后为图像的加密内容来关闭加载器。提供普通图像则通常会导致解密在此检查之前失败。"


尽管 GitHub 账户"cavecrew"已无法访问,但一张日期为 2026 年 10 月 6 日的图像文件的 Internet Archive 截图显示,它包含相同的基于 Go 的下载器,用于从"104.234.65[.]75:700"检索 Node.js 窃取器和远程访问工具("movinlike")。


该 Node.js 应用包含一个 .env 文件,其中包含一个命令与控制(C2)地址("104.234.65[.]75:7007")和一个 MALFEX 许可证密钥,表明使用了恶意软件构建器或许可系统来制作此类有效载荷。


该恶意软件运行反分析检查,审计虚拟机、沙箱以及 Process Monitor 和 Wireshark 等分析工具的存在,然后收集匹配助记词和特定扩展名(.kdbx、.pem、.ppk 和 .env)的文件,以及来自基于 Chromium 的网页浏览器、Discord、Telegram、加密货币钱包和游戏应用(Steam、Epic Games、Riot、Battle.net、Minecraft 和 Ubisoft)的数据。


它还可以建立与 C2 服务器的 WebSocket 连接,使其能够接受 shell 执行、文件传输、进程控制、剪贴板访问、截屏以及鼠标和键盘输入的命令。为实现持久化,它添加了一个 Registry Run 键,并创建一个名为"MicrosoftEdgeUpdateService"的计划任务。


安装了上述任何软件包的开发者应将其 Windows 系统视为可能已被入侵,隔离它们,检查持久化条目,轮换凭证,如果助记词存储在钱包中,则将资金转移到新钱包。




消息来源:thehackernews.com;
本文由 HackerNews.cc 翻译整理,封面来源于网络;
转载请注明“转自 HackerNews.cc”并附上原文
分享到:
hackernews

hackernews

该作者暂无简介