27个恶意npm包被用于网络钓鱼基础设施以窃取登录凭证

网络安全研究人员披露了一场被描述为“持续且有针对性”的网络钓鱼活动,该活动向 npm 注册表发布了超过二十个包,以实现凭证窃取。

据 Socket 报道,此活动涉及使用六个不同的 npm 别名上传了 27 个 npm 包,主要针对美国及其盟国的关键基础设施邻近组织中的销售和商务人员。

“一次为期五个月的行动将 27 个 npm 包转化为持久的浏览器运行诱饵托管,模仿文档共享门户和 Microsoft 登录页面,针对制造业、工业自动化、塑料和医疗行业的 25 家组织进行凭证窃取,”研究员 Nicholas Anderson 与 Kirill Boychenko

said

以下列出这些包的名称 -

  • adril7123
  • ardril712
  • arrdril712
  • androidvoues
  • assetslush
  • axerification
  • erification
  • erificatsion
  • errification
  • eruification
  • hgfiuythdjfhgff
  • homiersla
  • houimlogs22
  • iuythdjfghgff
  • iuythdjfhgff
  • iuythdjfhgffdf
  • iuythdjfhgffs
  • iuythdjfhgffyg
  • jwoiesk11
  • modules9382
  • onedrive-verification
  • sarrdril712
  • scriptstierium11
  • secure-docs-app
  • sync365
  • ttetrification
  • vampuleerl

该活动并不要求用户安装这些包,而是将 npm 与包内容分发网络(CDN)重新利用为托管基础设施,直接在钓鱼页面中嵌入客户端 HTML 与 JavaScript 诱饵,冒充安全文档共享服务,随后将受害者重定向至预填邮箱地址的 Microsoft 登录页面。

使用包 CDN 的优势在于能够将合法的分发服务转化为抗封禁的基础设施,并且攻击者可轻松切换发布者别名与包名,即使库被下架也能继续行动。

这些包在客户端加入了多种检测机制以削弱分析工作,包括过滤机器人、规避沙箱、以及要求鼠标或触摸输入后才将受害者送至攻击者控制的凭证收集基础设施。JavaScript 代码亦经过混淆或高度压缩,以增加自动化检测难度。

另一关键的反分析控制是使用蜜罐表单字段,这些字段对真实用户不可见,但爬虫很可能填入,从而形成第二层防御,阻止攻击进一步进行。

Socket 表示,这些包中嵌入的域名与已知的中间人(AitM)钓鱼基础设施 Evilginx 关联。

这并非 npm 首次被改造成钓鱼基础设施。2025 年十月,软件供应链安全公司曾披露名为 Beamglea 的活动,威胁者上传了 175 个恶意包用于凭证收集。最新的攻击波被评估为与 Beamglea 不同。

“此活动遵循相同的核心作战手法,但交付机制不同,”Socket 说明。“这些包不再仅仅提供最小的重定向脚本,而是交付一个自包含、在浏览器执行的钓鱼流程,以嵌入式 HTML 与 JavaScript 包的形式在页面上下文加载时运行。”

进一步调查发现,这些钓鱼包硬编码了 25 个电子邮件地址,针对的对象包括奥地利、比利时、加拿大、法国、德国、意大利、葡萄牙、西班牙、瑞典、台湾、土耳其、英国和美国的制造、工业自动化、塑料及聚合物供应链、医疗行业的账户经理、销售和业务拓展人员。

目前尚不清楚攻击者如何获取这些电子邮件地址。由于许多受害公司会参加诸如 Interpack 与 K‑Fair 等国际贸易展,研究人员推测攻击者可能从这些展会名单以及公开网络情报中收集信息。

为降低威胁风险,建议强制依赖验证、记录非开发上下文的异常 CDN 请求、部署抗网络钓鱼的多因素认证(MFA),并监控可疑的登录后事件。

Socket 还指出,近期在 npm、PyPI、NuGet Gallery 与 Go 模块索引中观测到破坏性恶意软件的稳步上升,这类恶意软件利用延迟执行与远程控制的“自毁开关”,通过 wget、curl 等标准工具在运行时获取可执行代码,以规避早期检测。

研究员 Kush Pandya

said
:“这些包并非加密磁盘或盲目删除文件,而是进行外科式操作,只删除对开发者关键的 Git 仓库、源码目录、配置文件以及 CI 构建产出。它们往往把删除逻辑嵌入到看似正常的代码路径,并依赖标准生命周期钩子执行,这意味着恶意代码可能根本不需要被显式导入或调用。”