攻防实战复盘
npm投毒:镜像站供应链猎杀
2026年09月10日 · 周四
真实攻击复盘 高级
场景:某头部互联网企业安全团队于2026年8月监测到内部npm镜像源异常流量,追溯发现攻击者利用恶意npm包投毒供应链,目标直指该企业核心业务服务器。
攻击 / 事件时间线
1
初始投毒
攻击者注册了与热门库 `lodash` 高度相似的域名 `lodash.install`,并创建同名恶意npm包。该包在 `postinstall` 钩子中执行混淆脚本,通过`child_process` 调用系统命令,将环境变量、`/etc/hosts` 及内网IP段等信息Base64编码后,回传至攻击者控制的C2服务器 `cdn.lodash-install.com`。该包被发布至npm官方仓库及多个国内镜像源。
npmnode.js混淆脚本
2
潜伏扩散
恶意包通过搜索引擎优化和GitHub Issue植入等方式,诱导开发者安装。由于包名与官方包极为相似,部分开发者在安装依赖时未仔细核对版本号,导致恶意包被引入至内部项目。在持续一周的时间里,该恶意包被下载超过5000次,其中约30次来自目标企业内部IP,成功感染了3台开发机与1台构建服务器。
GitHubSEO投毒供应链攻击
3
横向移动
攻击者以构建服务器为跳板,利用窃取到的SSH密钥和运维平台的未修复漏洞(CVE-2026-4502)实现横向移动。通过内网扫描,定位到核心的订单数据库服务器。在移动过程中,攻击者使用 `fscan` 进行快速内网资产探测,并利用 `Mimikatz` 抓取管理员凭据,最终成功登录数据库服务器并建立计划任务维持权限。
SSH隧道Mimikatzfscan
4
数据窃取
攻击者在数据库服务器上部署了精简版 `sqlmap` 和自定义脚本,通过内网跳板连接至生产环境,以低频率、分批次的SQL查询方式,绕过基于阈值的告警规则。在三天内分六次窃取了约200万条用户手机号与加密密码哈希。数据被加密打包后,通过DNS隧道技术分段传输至外部服务器,以规避流量监控。
sqlmapDNS隧道自定义脚本
蓝队视角 · 发现与处置
SOC团队通过内部流量分析平台发现异常——构建服务器在凌晨3点向陌生域名发起大量DNS查询,且数据包大小异常。值班分析师立即提取样本,在沙箱中运行确认了恶意行为。随后,SOC启动应急响应:1)通过EDR隔离受感染的开发机和构建服务器;2)在防火墙上阻断C2域名通信;3)利用Sysmon日志追溯攻击者的完整攻击路径,确认数据泄露范围;4)紧急下线所有受影响服务的API密钥,并强制重置相关账号口令。整个处置过程在6小时内完成,成功阻止了后续的数据外传。
涉及关键技术 / 工具
依赖混淆攻击DNS隧道数据外传Sysmon进程树溯源
防护经验总结
  • 在内部搭建私有npm代理仓库(如Verdaccio),强制所有开发机使用,并配置白名单机制,仅允许经过安全扫描的公共包被拉取。
  • 启用EDR对`postinstall`脚本的实时监控,对执行系统命令或网络请求的node进程触发告警,并联动沙箱自动分析。
  • 对敏感数据库实施双因子认证和IP白名单策略,并对所有API查询启用审计日志,设置基于查询频率和数据量的实时告警规则。
#供应链攻击#npm投毒#数据泄露
数据安全早知道 · 攻防实战专栏
⚠️ 免责声明
本文内容源自公开披露的安全事件或高仿真模拟场景,所有涉及的组织、系统、技术细节均经过脱敏处理,仅供安全学习与交流参考,不构成任何技术指导或合规建议。
数安早知道
🔗 数据安全与信息安全知识库 datasafe.website
— 点击上方链接访问知识库,获取更多安全资讯 —