一个叫MALFEX的npm恶意活动,正在盯上Windows开发者。远程控制工具、信息窃取器、隐藏下载器,全都打包进了看起来人畜无害的依赖包里。

攻击用了8个恶意包和3条独立的投递路径。其中一条路径,是把一个Windows可执行文件伪装成PNG图片;另一条,则把加密程序藏在真实图片数据的末尾。

打开网易新闻 查看精彩图片

操作者从2023年8月就开始发布这些包。截至2026年10月1日,这8个恶意包在npm上累计被下载了40,767次,仅前一周就有3,017次。

需要说清楚的是:这些数字代表的是包的触达范围,不是确认的感染数量。下载量里可能包含重复安装、依赖拉取,以及那些根本跑不起来Windows载荷的系统。

三条路径,三种藏法

Checkmarx的研究人员在10月5日的报告中识别出了这个活动。他们把12个包关联到同一个操作者,其中4个是干净的包,用来做掩护。

MALFEX这个名字出现在发布者账号、仓库记录和包文档里,连图片的解密密钥都带着同样的品牌标识。

第一条投递路径用了3个包,在安装前或安装后运行隐藏脚本。这些脚本会去拉取一个以image/png形式提供的文件,把它存成Windows可执行文件,然后启动它。

尽管标着图片的标签,下载下来的其实是一个Microsoft IExpress归档,而不是普通PNG。归档里面,一个经过签名的AutoIt解释器运行着加密脚本。

经过XOR、RC4和LZNT1压缩等好几步解码,最终露出的是Overlord RAT。代码分析显示,里面有把RAT注入到已签名Windows进程的指令,同时让Explorer看起来像是它的父进程。研究人员在运行时测试中,并没有观察到这次注入。

第二条路径的玩法不一样。一条由3个包组成的链条,会去拉取一张真正的PNG,加密的可执行数据被附加在图片结束标记之后。

恶意软件把这段数据提取出来,用AES解密。接着一个Go下载器去取回movinlike——一个64 MB的Node.js信息窃取器,打包成了Windows可执行文件。

这条链条是在包被加载时运行的,不是通过安装脚本。这个区别很关键:禁用npm生命周期脚本,拦不住它。

远程控制、账号窃取和隐藏下载

Overlord支持屏幕截图、键盘记录、剪贴板收集、文件搜索、远程命令,还有一个隐藏桌面。

它的加载器会创建一个计划任务,每5分钟运行一次,还带着一个倒填到2020年的开始日期。只检查注册表启动项,会漏掉这种持久化方式。

这个RAT可以从加密的Solana交易备注里获取服务器地址。不过,被分析的样本里并没有配置Solana地址或服务器列表,研究人员也没有看到命令与控制流量。

这是一项被支持的能力,不能证明在测试的感染中区块链控制真的启用了。movinlike窃取器瞄准的是Discord令牌、浏览器cookie和保存的密码、Telegram会话,以及加密货币钱包。

它会修改Discord启动脚本,收集账号信息,把窃取到的文件压缩成块,发送到一个Discord webhook。此前关于StegaBin多阶段凭证窃取的报道,已经说明了为什么开发者包的安装过程值得严密的安全检查。

第三条路径,把一个下载器藏进了一个ASCII艺术包里。一个特定的字体值会触发下载,而一长串空格则把恶意代码推到可见编辑器窗口之外。

下载错误会被静默忽略。它最新被分析的载荷已经拿不到了,Checkmarx也没有找到证据,把这个独立的下载器和movinlike联系起来。

还有三个包能装

在Checkmarx10月1日的快照里,仍有3个恶意包可以安装。其中两个没有恶意软件公告,另一个公告只覆盖了4个恶意版本中的2个。

只依赖公告feed的团队,因此可能会漏掉已知的坏代码。这些发现描述的是报告所记录的日期检查结果,不是一次新的注册表状态检查。

开发者应该检查依赖树、lockfile、包缓存和Windows端点。如果装过受影响的包,隔离主机、保留证据、清除持久化,然后在一台干净的系统上修改暴露过的密码。

结束Telegram会话,把暴露的加密货币资金转移到新钱包。屏蔽全部8个恶意包及其具体的下载路径,但不要一刀切地屏蔽共享托管服务。

光删包,并不能撤销已经被窃取的会话或已经装上的恶意软件。此前关于伪造npm安装提示和SAP npm包被入侵的报道,都印证了信任包安装活动的风险。

Unit 42的npm威胁态势分析,为这些供应链风险提供了更广的背景。安全团队还应该审查账号活动,在开发者重新安装受影响的依赖之前,把恶意副本从内部注册表里清掉。

失陷指标(IoCs)

这些版本范围被明确标记为恶意;Checkmarx指出,function-flag@2.3.4不是恶意的。

在URL和主机方面,Checkmarx的载荷版本表对两个45.89.30.194路径、191.96.81.101路径,以及51.137.158.178/download,用的是hxxp[:]而不是hxxps[:]。两种协议变体都在来源里列出。报告还警告不要整体屏蔽共享服务域名,要用具体的恶意路径。

所有SHA-256哈希都按发布原样复现。Checkmarx指出,movinlike可以很容易被重新构建,所以防御方应该把哈希检查和文件、任务、网络证据结合起来。那个签名的AutoIt解释器是合法软件;单看它的哈希,并不能在这个活动背景之外确立感染。

主机痕迹和持久化方面,这些路径和任务细节都记录在来源的主机痕迹与持久化章节里。

还有一组支持归因的指标。需要注意的是,IP地址和域名是内部数据。