别被开源骗了!这3个npm包伪装成比特币库,底层却是远程控制木马

admin 2026-01-13 14:54:37 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档揭露NodeCordRAT恶意软件,通过伪装成比特币库的npm包进行供应链投毒。攻击者利用postinstall脚本植入载荷,并使用Discord作为C2服务器窃取凭证与Token。建议开发者严查postinstall脚本、锁定依赖版本并遵循最小权限原则,以防范此类隐蔽攻击。 综合评分: 85 文章分类: 恶意软件,威胁情报,供应链安全,安全意识,安全开发


cover_image

别被开源骗了!这3个 npm 包伪装成比特币库,底层却是远程控制木马

原创

Kit Chung

安全圈动向

2026年1月12日 07:56 广东

大家好,这年头,做开发最怕什么?不是需求变来变去,也不是上线前出 Bug,而是当你习惯性地敲下 npm install 时,你以为你装了个轮子,结果给黑客开了扇门。

最近,安全研究机构 Zscaler 曝光了一个代号为 NodeCordRAT 的恶意软件。这玩意儿简直是把“供应链投毒”玩出了新花样——它不仅通过 npm 包伪装成比特币开发库,还极其鸡贼地利用 Discord 作为命令控制(C2)服务器。

今天,咱们就扒一下,看看这帮黑客是怎么利用我们最熟悉的工具,搞出这套“连环计”的。

01 “李鬼”扮“李逵”:不仅是拼写错误那么简单

这次被揪出来的三个恶意包分别是 bitcoin-main-libbitcoin-lib-js 和 bip40

眼熟吗?如果你搞过区块链开发,肯定知道大名鼎鼎的 bitcoinjs 库以及 bip32bip39 这些标准协议。黑客就是利用了这种命名混淆(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

技术原理如下:

  1. 硬编码 Token:

    恶意代码里写死了 Discord Bot 的 Token。

  2. 利用 Webhook/API:

    它直接调用 Discord 的 REST API 接口。

  3. 指令交互:

  • !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 包伪装成比特币库,底层却是远程控制木马》

评论:0   参与:  0