针对 ASP.NET 开发人员的供应链攻击已经出现,该攻击涉及四个恶意 NuGet 包,旨在窃取登录凭据并在 Web 应用程序中植入持久后门。
这些软件包——NCryptYo、DOMOAuth2_、IRAOAuth2.0 和 SimpleWriter_——由用户名为“hamzazaheer”的威胁行为者于 2024 年 8 月 12 日至 21 日期间发布,它们累计下载量已超过 4,500 次。
攻击始于蓄意欺骗。NCryptYo 通过抢注广泛使用的 NCrypto 软件包的域名,将自己伪装成一个密码学库。
其 DLL 文件名 NCrypt.dll 模仿了 Windows 的原生 CNG 加密提供程序,其命名空间与 Microsoft 自己的加密 API 相对应。
关键在于,该软件包会在程序集加载时立即触发一个静态构造函数——在任何开发人员调用任何方法之前——在本地主机端口 7152 上静默部署一个隐藏的代理,该代理会将流量转发到外部的、由攻击者控制的服务器。
Socket.dev 的研究人员通过追踪所有四个软件包中的共享基础设施,确定了整个攻击活动。
他们注意到 DOMOAuth2_、IRAOAuth2.0 和 SimpleWriter_ 都包含一个字节相同的硬编码身份验证令牌,该令牌使用 GZip 压缩和自定义 Base64 替换进行编码,这证实了它们是由同一操作员构建的。
VirusTotal 分析显示,72 家安全厂商中只有 1 家标记了 NCrypt.dll,这表明混淆技术能够有效地使恶意软件躲避标准检测工具的检测。
一旦激活,DOMOAuth2_ 和 IRAOAuth2.0 会静默地收集 ASP.NET Identity 数据(用户帐户 ID、角色分配和权限映射),并通过本地代理将其路由到攻击者的服务器。
SimpleWriter_伪装成PDF转换工具,将攻击者控制的文件写入磁盘,并在不显示任何窗口的情况下运行隐藏进程。其真正目标不仅是开发人员的工作站,而是他们最终部署给最终用户的每一个生产应用程序。
JIT 钩子:核心感染机制
NCryptYo 使用一种称为 JIT 编译器劫持的技术来隐藏其真实行为,使其不被安全扫描器检测到。
.NET 运行时通常会在方法运行之前对其进行编译;此包用自己的钩子替换了该过程,因此恶意代码仅在执行时解密——使其对静态分析不可见。
该 DLL 受 .NET Reactor 混淆保护,并配有 14 天过期计时器和反调试检查。
内部嵌入了五个加密资源,其中最大的是一个 126 KB 的有效载荷,负责构建到攻击者外部服务器的隐藏代理隧道。
开发者在安装任何第三方库之前,应核实软件包名称、作者身份和下载历史记录,并注意不寻常的本地主机端口上的流量。
建议安全团队启用自动化 CI/CD 管道扫描,在任何软件包进入生产构建之前,检查是否存在混淆标记、静态构造函数滥用和嵌入式加密有效负载。



