当安全工具盯着恶意流量时,真正的威胁正披着合法服务的外衣悄悄潜入。最近针对巴基斯坦政府雇员的一次攻击,把"藏木于林"玩到了极致——微软的开发工具、Discord的消息通道、BunnyCDN的内容分发网络,全成了攻击者的帮凶。
JoeReverser的分析师在沙盒测试后,给这次攻击的恶意文档打了满分100分。更麻烦的是,多引擎检测率最低只有52%,这意味着近半数安全工具会放行。
攻击是怎么被发现的
目标锁定的是旁遮普安全城市管理局(PSCA)和PPIC3的工作人员。攻击者冒充内部顾问,邮件里提到一个叫"Safe Jail Project"的政府项目——用机构内部熟悉的名称建立信任,是钓鱼的老套路,但屡试不爽。
同一封邮件塞了两个附件。第一个是Word文档"CAD Reprot.doc",故意把"Report"拼错,这是威胁组织惯用的标记手法。第二个是PDF文件"ANPR Reprot.pdf",打开后弹出一个假的Adobe Reader错误提示,诱导用户下载恶意文件。
两个附件都从BunnyCDN拉取载荷。用正规CDN做跳板,流量看起来就像普通的网站访问,边界安全设备很难区分。
Joe Sandbox用三个Web ID(1903908、1903907、1901906)完整复现了攻击链,从邮件到最终PDF的每个环节都被记录在案。
五个让安全团队头疼的设计
这次攻击不是简单的"点一下中木马",而是一场精心编排的多阶段渗透。拆解来看,每个技术选择都有明确的规避意图。
① VBA stomping:让杀毒软件"看"不到代码
Word文档用了VBA stomping技术——把宏的源代码完全删除,只保留编译后的p-code。杀毒软件扫描Word文档时,通常检查的是可读代码区域,这里一片空白,自然不报警。但文档打开后,隐藏的编译代码照样执行。
这是老技术,但对付依赖特征码的传统杀毒引擎依然有效。
② 双附件策略:分散检测注意力
一个邮件放两个恶意附件,不只是为了增加成功率。安全系统往往对单个邮件的附件数量、类型做关联分析,两个不同格式的文件可能触发不同的检测模块,而模块之间的信息未必实时共享。攻击者赌的是:总有一个能溜过去。
PDF的假错误提示更是心理战术——用户看到"Adobe Reader无法显示此文档",第一反应是点"修复"或"下载更新",而不是怀疑邮件本身。
③ BunnyCDN:把恶意流量洗白
两个附件都从BunnyCDN下载下一阶段载荷。CDN的IP段通常在白名单里,流量加密后,防火墙看不到内容,只能看到"用户在访问一个正规CDN节点"。
这比直接用C2服务器聪明得多——封禁CDN域名会影响正常业务,安全团队不敢轻易动手。
④ VS Code隧道:微软的基础设施成了"隐身衣"
攻击最精巧的设计在这里。载荷代码(code.exe)落地执行后,不走常规的C2通道,而是接入微软VS Code的隧道服务。
这是微软给开发者提供的合法功能,让远程机器通过安全隧道连接本地开发环境。攻击者劫持这个机制后,受害机器与攻击者的通信流量全部走微软的服务器,TLS证书也是微软的。
从网络监控的角度看,这就是"一个开发者在用VS Code远程工作"。除非企业明确禁用VS Code隧道功能,否则很难从流量特征上识别异常。
⑤ Discord Webhook:把入侵通知变成普通消息
每次有新机器沦陷,攻击者会收到即时通知。通知通道用的是Discord的Webhook——一个普通到不能再普通的即时通讯功能。
企业网络监控工具盯着的是异常DNS解析、可疑IP连接、罕见端口通信。Discord的流量?太常见了,游戏玩家、远程团队都在用,直接放行。
检测数据暴露的残酷现实
这次攻击的检测率分布,反映了防御方的尴尬处境:
Suricata、Sigma、YARA规则集和ReversingLabs的检出率是52%,VirusTotal多引擎扫描是56%。刚过一半的识别率,意味着在真实环境中,大量终端会毫无阻拦地执行恶意代码。
JoeReverser的沙盒分析给出了95%的置信度判定:攻击目的是建立持久化远程访问。这个置信度不是猜测,是基于完整行为链的统计结论——文档打开后的进程创建、网络连接、文件写入、注册表修改,全部指向同一个目标。
Malpedia中没有匹配到已知恶意软件家族。确认这是定制工具集,专门为这次目标开发。没有历史特征,基于威胁情报的防御手段直接失效。
为什么偏偏是政府项目名义
"Safe Jail Project"这个名称的选择值得玩味。PSCA和PPIC3本身就是安全城市相关机构,内部人员对这类项目名称有天然熟悉感。攻击者不需要知道项目的具体细节,只要名字像真的,就足以让收件人放下警惕。
冒充内部顾问而非外部供应商,进一步压缩了核实空间。政府机构的组织架构复杂,基层员工很难确认"这个顾问是不是真的存在"。
这种"机构内部信任链"的劫持,比伪造银行、快递等外部机构更难防范——后者员工受过培训会警惕,前者恰恰是日常工作的沟通对象。
技术防御的边界在哪里
这次攻击暴露了几个结构性难题:
第一,合法服务的滥用无法通过简单封禁解决。VS Code隧道、Discord、BunnyCDN都是正常业务需要的工具,一刀切会影响生产力,不切又留下通道。
第二,宏文档的检测依赖静态分析,而VBA stomping专门破坏静态分析的前提。动态沙盒能发现问题,但沙盒的覆盖率和时效性始终是瓶颈。
第三,多阶段载荷的关联检测需要数据打通。邮件网关、终端EDR、网络NDR各自看到片段,拼不成完整攻击链,就无法在关键节点阻断。
JoeReverser的满分评级(100/100)和95%置信度判定,说明在完整可见的攻击链面前,判断恶意并不困难。困难的是在日常运营中,获得这种"完整可见性"的成本太高。
数据收束:一次攻击背后的数字
旁遮普安全城市管理局和PPIC3的工作人员收到钓鱼邮件;两个恶意附件共享BunnyCDN基础设施;VS Code隧道服务被劫持为隐蔽C2通道;Discord Webhook承担入侵通知功能;检测率52%-56%意味着近半数安全工具放行;沙盒分析置信度95%确认持久化远程访问意图;Malpedia零匹配确认定制工具集;三个Web ID完整记录攻击链;100/100的恶意行为评分。
这些数字勾勒出一个趋势:攻击者不再追求技术上的"零日漏洞",而是把精力放在"滥用已有信任"上——对机构名称的信任、对知名服务的信任、对安全工具检测能力的信任。防御的重心,或许也该从"找漏洞"转向"验证信任"。
热门跟贴