攻防实战复盘
npm供应链投毒实战复盘
2026年07月09日 · 周四
真实攻击复盘 高级
场景:2026年5月,某金融科技公司安全团队发现内部开发服务器频繁外联异常IP。经排查,一名开发者引入的npm包中嵌入了恶意代码,触发供应链攻击。
攻击 / 事件时间线
1
初始入侵
攻击者向npm官方仓库上传了名为lodash-utils的恶意包,版本号为1.0.1。该包名称与知名工具库lodash高度相似,利用typosquatting(域名抢注)诱导开发者误下载。包内package.json的postinstall脚本被篡改,在安装时自动执行恶意载荷。载荷首先从远程C2服务器(jq.freevip44.top)下载第二阶段payload,通过PowerShell反射加载,实现持久化。

该恶意包在发布后72小时内被下载超过3000次,目标企业的一名前端开发者在执行npm install时无意中引入了该依赖。

npmPowerShellC2服务器
2
持久化与横向移动
恶意载荷成功执行后,在受害者系统注册为计划任务,每15分钟回连C2。攻击者通过该通道部署了Cobalt Strike Beacon,利用Mimikatz抓取本地管理员凭据。随后,攻击者扫描内网SMB共享,利用PsExec横向扩散至测试服务器和GitLab代码仓库,窃取了包含API密钥和数据库连接字符串的配置文件。
Cobalt StrikeMimikatzPsExec
3
数据窃取与告警触发
攻击者在GitLab仓库中发现了硬编码的AWS S3访问密钥,直接通过AWS CLI将包含客户PII数据的存储桶(bucket)内容打包下载。同时,攻击者尝试将窃取的数据上传至第三方云存储服务(MEGA),触发了公司部署的Sysmon网络连接事件(Event ID 3),目标域名被标记为高信誉威胁。
AWS CLISysmonMEGA
蓝队视角 · 发现与处置
SOC分析师在SIEM(Splunk)中监控到Sysmon日志异常:一台开发服务器频繁连接未知海外IP,且进程链为npm -> PowerShell -> rundll32.exe。分析师立即将主机隔离,提取恶意npm包样本进行逆向分析,确认其为供应链投毒。随后,安全团队扫描全网所有npm依赖,发现另有5台主机受影响。通过YARA规则(rule: npm_typosquatting_lodash)对全量npm包进行校验,封禁了恶意包的下载源,并轮换所有泄露的API密钥和数据库密码。
涉及关键技术 / 工具
Typosquatting投毒Cobalt Strike横向移动Sysmon日志监控与YARA规则
防护经验总结
  • 启用npm依赖锁定文件(package-lock.json)并强制使用私有仓库镜像,阻断外部恶意包引入。
  • 在CI/CD流水线中集成依赖扫描工具(如Socket.dev或Snyk),自动检测typosquatting和可疑postinstall脚本。
  • 对开发者终端实施最小权限原则,禁用本地管理员权限,并部署EDR(如CrowdStrike)监控异常进程链。
#供应链攻击#npm#横向移动#Sysmon
数据安全早知道 · 攻防实战专栏
⚠️ 免责声明
本文内容源自公开披露的安全事件或高仿真模拟场景,所有涉及的组织、系统、技术细节均经过脱敏处理,仅供安全学习与交流参考,不构成任何技术指导或合规建议。
数安早知道
🔗 数据安全与信息安全知识库 datasafe.website
— 点击上方链接访问知识库,获取更多安全资讯 —