文章总结: 文档揭露NodeCordRAT恶意软件,通过伪装成比特币库的npm包进行供应链投毒。攻击者利用postinstall脚本植入载荷,并使用Discord作为C2服务器窃取凭证与Token。建议开发者严查postinstall脚本、锁定依赖版本并遵循最小权限原则,以防范此类隐蔽攻击。 综合评分: 85 文章分类: 恶意软件,威胁情报,供应链安全,安全意识,安全开发
别被开源骗了!这3个 npm 包伪装成比特币库,底层却是远程控制木马
原创
Kit Chung
安全圈动向
2026年1月12日 07:56 广东
大家好,这年头,做开发最怕什么?不是需求变来变去,也不是上线前出 Bug,而是当你习惯性地敲下 npm install 时,你以为你装了个轮子,结果给黑客开了扇门。
最近,安全研究机构 Zscaler 曝光了一个代号为 NodeCordRAT 的恶意软件。这玩意儿简直是把“供应链投毒”玩出了新花样——它不仅通过 npm 包伪装成比特币开发库,还极其鸡贼地利用 Discord 作为命令控制(C2)服务器。
今天,咱们就扒一下,看看这帮黑客是怎么利用我们最熟悉的工具,搞出这套“连环计”的。
01 “李鬼”扮“李逵”:不仅是拼写错误那么简单
这次被揪出来的三个恶意包分别是 bitcoin-main-lib、bitcoin-lib-js 和 bip40。
眼熟吗?如果你搞过区块链开发,肯定知道大名鼎鼎的 bitcoinjs 库以及 bip32、bip39 这些标准协议。黑客就是利用了这种命名混淆(Typosquatting)策略。
那个上传者叫 “wenmoonx”(这名字一听就是个老币圈韭菜了,”When Moon?”),他赌的就是你会手滑,或者在搜索时没看清。
但这里有个技术细节值得注意:这并不是简单的单个包投毒,而是一个“套娃”式攻击。
-
诱饵层:
bitcoin-main-lib和bitcoin-lib-js。这两个包本身代码看起来可能没啥大毛病,甚至可能真的提供了一些比特币相关的功能来掩人耳目。 -
触发层:
当你安装这两个诱饵包时,它们内部的
package.json文件里藏了一个postinstall脚本。 -
载荷层:
这个脚本会自动下载并安装
bip40——这才是真正的万恶之源,里面藏着 NodeCordRAT 的核心代码。
老铁划重点:
postinstall脚本一直是 npm 生态里最大的安全隐患之一。它允许包在安装完成后自动执行 shell 命令。虽然本意是用来构建二进制文件或清理环境,但现在基本成了黑客的“御用后门”。
02 核心拆解:NodeCordRAT 的“寄生”艺术
为什么叫它 NodeCordRAT?因为它是用 Node.js 写的,且利用 Discord 通信。
一旦 bip40 落地,恶意代码就会立即运行。它首先会做一个环境指纹识别(Fingerprinting),给你的机器生成一个唯一 ID。最可怕的是,它是全平台通杀的——不管你是 Windows、Linux 还是 macOS,只要你有 Node 环境,它就能跑。
它是怎么偷东西的?
这货的目标非常明确,专攻“值钱”的数据:
-
Google Chrome 凭证:
你的保存密码、Cookie。
-
API Tokens:
作为开发者,你的 AWS Key、GitHub Token 可能就在环境变量里。
-
加密钱包助记词:
专门扫描 MetaMask 等钱包的本地文件。
03 隐蔽的 C2 通道:为什么是 Discord?
这是整个攻击中最“骚”的部分。
传统的木马,通常会连接一个黑客自己搭建的服务器 IP。这种流量在企业防火墙眼里,就像黑夜里的萤火虫,分分钟被拦截。
但 NodeCordRAT 并没有连接什么奇怪的 IP,它连接的是 discord.com。
技术原理如下:
-
硬编码 Token:
恶意代码里写死了 Discord Bot 的 Token。
-
利用 Webhook/API:
它直接调用 Discord 的 REST API 接口。
-
指令交互:
-
!run利用 Node.js 的
exec函数,在你的服务器上执行任意 Shell 命令。这意味着黑客可以直接把你服务器当矿机,或者作为跳板攻击内网。 -
!screenshot直接调用系统截图工具,生成 PNG。
-
!sendfile把你本地的敏感文件(比如
id_rsa)打包。
然后,这些数据会被封装成 HTTP 请求,发送到 /channels/{id}/messages 接口。
这对防御方来说是个巨大的头痛点。 因为绝大多数公司的防火墙都不会封锁 Discord(毕竟大家还要用它来沟通技术社区),而且流量全是 HTTPS 加密的,不仅看起来合法,连内容都难以审计。
04 我们该怎么办?
虽然这三个包在 2025 年 11 月已经被 npm 下架了,但这种攻击手法只会越来越多。作为技术人员,我们得长点心:
-
严查
postinstall:在引入不熟悉的第三方库时,务必检查
package.json里的 scripts 字段。如果看到莫名其妙的curl或wget操作,直接拉黑。 -
锁定依赖版本:
使用
package-lock.json或yarn.lock,防止依赖树中的子依赖被偷偷篡改。 -
最小权限原则:
CI/CD 环境或生产服务器,别给太高的系统权限,能用非 root 用户跑服务就坚决不用 root。
-
网络白名单:
虽然有点麻烦,但对于高敏环境,限制服务器只能访问必要的 API 端点(而不是放行整个互联网),是阻断 C2 连接的最终手段。
最后
技术本身是中立的,但人心不是。Node.js 的强大生态给了我们要啥有啥的便利,也给了黑客可乘之机。
下次当你打出 npm install 的时候,不妨多问自己一句:“这行代码后面,真的只有代码吗?”
我是你的技术老铁,关注我,带你看透技术背后的那些坑与路。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全圈动向 Kit Chung《别被开源骗了!这3个 npm 包伪装成比特币库,底层却是远程控制木马》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论