攻防实战复盘
npm供应链投毒:一场伪装成AI插件的APT式攻击
2026年05月26日 · 周二
真实攻击复盘
高级
场景:2026年5月,某金融科技公司安全团队发现内部开发服务器异常外联。追踪溯源后,发现攻击源头来自一个已被植入后门的npm包,该包伪装成AI代码补全插件,潜伏期长达45天。
攻击 / 事件时间线
1
初始投毒与分发
攻击者在npm官方仓库上传恶意包
@ai-toolkit/assist-core,版本1.2.3。该包将恶意载荷隐藏在node_modules/.cache/目录下的一个PNG文件中,利用隐写术嵌入经过XOR加密的Shellcode。包的postinstall脚本被精心构造,仅在检测到cursor.so或github.copilot进程时才触发解密,绕过沙箱检测。npm隐写术XOR加密
2
供应链扩散与潜伏
通过SEO优化和GitHub Issues虚假好评,该包在开发者社区传播。一位受害公司的开发者因项目依赖引入该包,
postinstall脚本执行后,Shellcode通过进程镂空技术注入到node.exe进程中,建立持久化。攻击者利用Cobalt Strike的SMB Beacon进行内网通信,避开HTTP流量监控,潜伏期长达45天。进程镂空Cobalt StrikeSMB Beacon
3
横向移动与凭证窃取
攻击者利用Beacon收集到的Browser Cookies和Git Saved Credentials,登录到GitLab私有仓库。在CI/CD配置文件中发现硬编码的AWS Access Key,随后通过AWS CLI横向移动到S3存储桶,下载了包含生产环境数据库连接信息的配置文件。整个过程未触发任何EDR告警,因为攻击者完全复用了合法凭证。
Browser Cookies窃取GitLab APIAWS CLI
4
数据窃取与清除痕迹
攻击者通过rsync将S3中的数据(约12GB)分段传输至境外服务器,文件名伪装成
backup_20260526.log。在完成窃取后,攻击者删除了CI/CD管道中的历史记录,并利用sdelete工具覆写受感染服务器上的Beacon日志,企图掩盖入侵痕迹。rsyncsdelete日志清除
蓝队视角 · 发现与处置
SOC值班工程师通过Zeek流量分析平台发现异常:受害服务器在凌晨3点持续向一个非标准端口(TCP 8443)发起SMB连接,且目标IP位于东欧。溯源分析时,安全团队使用Sysmon Event ID 1(进程创建)和Event ID 11(文件创建),定位到
postinstall脚本的异常行为。通过YARA规则扫描所有npm包,捕获到隐写PNG文件的特征。最终,通过Velociraptor对全公司开发机执行取证快照,确认了5台受感染主机。处置措施包括:吊销所有相关凭证、重置GitLab访问令牌、隔离受感染主机并重建开发环境。涉及关键技术 / 工具
npm postinstall脚本投毒隐写术与进程镂空利用SMB Beacon进行隐蔽通信YARA规则扫描与Sysmon日志溯源
防护经验总结
- 在CI/CD管道中集成软件物料清单扫描工具,对所有引入的npm包进行
postinstall脚本检测和依赖分析,禁止执行未知脚本。 - 实施零信任架构:对开发环境的所有凭证实施最小权限原则,强制使用临时凭证(如AWS STS),并开启GitLab/AWS API调用的详细审计日志,监控异常的地理位置访问。
- 在终端部署进程行为监控策略:利用Sysmon监控
node.exe等进程的非标准子进程创建(如cmd.exe、powershell.exe),并对.cache目录下的文件创建事件建立告警规则。
#供应链攻击#npm投毒#APT#隐写术#进程镂空#Cobalt Strike#SMB Beacon#Sysmon
数据安全早知道 · 攻防实战专栏
⚠️ 免责声明
本文内容源自公开披露的安全事件或高仿真模拟场景,所有涉及的组织、系统、技术细节均经过脱敏处理,仅供安全学习与交流参考,不构成任何技术指导或合规建议。
数安早知道
🔗 数据安全与信息安全知识库 datasafe.website
— 点击上方链接访问知识库,获取更多安全资讯 —
夜雨聆风