应急响应篇讲主机侧;这篇是供应链投毒事件复盘(2026 年 3 月,安全团队报告):样本分析、威胁情报、C2 定位。
0x01 事件概述
| 项 | 内容 |
|---|---|
| 事件 | Apifox 官方 CDN 上的埋点 JS 被投毒 |
| 受影响 | Apifox 桌面版(Electron)< 2.8.19 |
| 载体 | cdn.apifox.com/www/assets/js/apifox-app-event-tracking.min.js(34KB → 投毒后 77KB) |
| 危害 | 三阶段攻击链,窃取 SSH 私钥、Git 凭据、Shell 历史 |
| 放大器 | Electron 未严格启用 sandbox 且暴露 Node.js 接口——JS 直接获得文件读取/命令执行/网络通信能力 |
可怕之处:恶意代码跟着”合法更新”分发到每个客户端,不需要 0day。
0x02 第一步:样本已消失?去 Wayback 挖
第一个障碍:披露时 CDN 上的投毒文件已被替换,恶意链接全失效。
解法:**Internet Archive(Wayback Machine)**按投毒时间窗搜快照,拿到 2026-03-05 完整投毒版。结构:
- 前半 ~34KB:Apifox 合法的埋点代码(原样保留,掩护);
- 后半 ~43KB:以
_0x10e4()开头的高度混淆代码(恶意载荷)。
经验:投毒取证不必依赖攻击者基础设施存活,Web Archive 是被低估的样本库。
0x03 第二步:反混淆——AI 时代的标准作业
混淆五件套:字符串数组+旋转洗牌、RC4 字符串加密(运行时解密)、代理函数包装调用、十六进制常量、反调试自检(代码被格式化即死循环)。
人工硬啃成本极高,报告用AI 辅助反混淆与语义还原,关键情报:
| 项 | 值 |
|---|---|
| C2 | https://apifox.it.com/public/apifox-event.js |
| 滥用的合法接口 | api.apifox.com/api/v1/user |
| 轮询间隔 | 30 分钟 ~ 3 小时随机(避开流量基线) |
| 数据外传 | RSA 2048(PKCS8,256 字节块)加密 |
| 指纹缓存 | localStorage _rl_headers / _rl_mc |
0x04 第三步:C2 已下线?空间测绘 + 证书搜索
C2 域名 apifox.it.com 已不解析。思路:Quake 空间测绘搜证书 cert:"apifox.it.com" 直接命中存活资产:
- IP:
13.192.121.27(AWS 东京 EC2,nginx + Express); - 直接访问 IP 返回 404:C2 对未绑定域名的请求做了过滤;
- 绑定 hosts 访问返回 200 但响应体为空:C2 校验自定义 HTTP 头(反混淆挖出的
_rl_headers等字段),缺头不响应。
最后一步:按恶意代码的构造逻辑补齐请求头,C2 就返回了第二阶段载荷——“反混淆拿协议 → 测绘找基础设施 → 构造请求要样本”就此闭环。
0x05 可复用的方法论清单
可复用清单:样本没了先查 Wayback;字符串混淆交 AI 还原语义,重点取 C2/协议头/加密方案;域名死≠基础设施死,证书搜索(Quake/Censys/Shodan)是第一抓手;C2 校验自定义头不响应就按代码逐字段复刻;防守侧 Electron 必开 sandbox、收敛 Node 接口,第三方 JS 做哈希基线监控——体积翻倍就该告警。
相关旧文
- 应急响应实战与项目复盘
- AI Agent 渗透测试(AI 辅助分析)