LLM 生成的 SVG 恶意载荷检测:攻击原理与邮件网关防御

基于微软威胁情报(2025-09)披露的攻击活动与公开技术分析整理

攻击背景:AI 进入钓鱼载荷生产链

2025 年 8-9 月,微软威胁情报团队披露了一起针对美国机构的凭证钓鱼活动:攻击者疑似使用大语言模型(LLM)生成恶意 SVG 文件,并通过邮件附件投递,成功绕过了部分传统邮件安全检测。微软在分析中指出,该活动「借助 LLM 技术,将恶意行为隐藏在 SVG 文件中,通过商业术语和人工合成的文件结构掩盖其真实意图」。

这一事件标志着 AI 工具已进入钓鱼攻击的载荷生产环节——不再只是辅助撰写话术,而是直接生成结构复杂、语法正确的恶意代码。过去制作一个能绕过检测又有效执行恶意功能的 SVG 需要前端与 XML 专业知识,现在攻击者只需向 LLM 描述需求即可批量产出,攻击门槛被显著拉低。

1. SVG 为何成为恶意载体

SVG(Scalable Vector Graphics,可缩放矢量图形)是基于 XML 的开放标准矢量图像格式(W3C 标准),与 JPG/PNG 等纯位图格式有本质区别:

微软对此的官方表述是:「SVG 文件以文本为基础且支持脚本,攻击者可嵌入 JavaScript 等动态内容,这使得交互式钓鱼载荷既能欺骗用户,又能绕过多数安全工具的检测。此外,SVG 格式支持隐藏元素、编码属性和延迟脚本执行等特性,使其成为规避静态分析和沙箱检测的理想载体。」

2. 攻击链拆解(微软披露样本)

2.1 投递:自寄自收 + BCC 规避

攻击者首先入侵一个小型企业邮箱账户,发送伪装成文件共享通知的钓鱼邮件。关键特征:

2.2 附件:伪装 PDF 的 SVG

附件命名为 23mb - PDF-6 pages.svg,视觉设计成标准 PDF 文档外观,诱骗用户打开。文件实际是 SVG,双击后在浏览器中渲染并执行内嵌脚本。

2.3 重定向:CAPTCHA 建立信任

脚本执行后先将用户重定向至伪装的验证码(CAPTCHA)页面,再跳转至伪造登录界面窃取凭证。中间加一道「人机验证」页面的目的:

2.4 混淆:商业术语双层伪装

该攻击最独特之处在于混淆手法:SVG 开头被设计成商业分析仪表盘样式,核心功能(重定向、浏览器指纹识别、会话跟踪)隐藏在冗长的商业术语中(营收、运营、风险、季度、增长、股份等)。微软安全副驾驶(Security Copilot)分析判定该代码「由于复杂性、冗余度及缺乏实际效用,不太可能是人工从头编写的」,LLM 生成特征包括:

  1. 函数与变量命名过度描述且重复;
  2. 高度模块化的过度工程化代码结构;
  3. 通用且冗长的注释内容;
  4. 使用商业术语实现公式化混淆;
  5. 包含模仿文档示例的 CDATA 与 XML 声明。

3. SVG 混淆技术原理

除商业术语混淆外,公开技术分析(FreeBuf,2025-04)归纳了邮件中 SVG 钓鱼附件的典型混淆手法:

3.1 CDATA 包裹 + 字符数组还原

恶意 JavaScript 内嵌于 <![CDATA[ ... ]]> 块中(不影响 XML 解析),代码将字符码点数组经 String.fromCharCode() 还原为字符串,再用 Function() 构造函数动态执行。以下为模拟示例(非真实样本):

<script type="application/ecmascript"><![CDATA[
var charCodes = [119,105,110,100,111,119,46,108,111,99,97,116,105,111,110,46,104,114,101,102,61,39,104,116,116,112,115,58,47,47,109,97,108,105,99,105,111,117,115,46,100,111,109,39];
var scriptStr = charCodes.map(c => String.fromCharCode(c)).join('');
Function(scriptStr)();  // 还原为 window.location.href='https://malicious.dom'
]]></script>

3.2 嵌套 Base64 解码

恶意 URL 分段 Base64 编码存放,运行时用 atob() 多次嵌套解码拼合。静态扫描看到的只是无意义的 base64 字符串,真正的 URL 只在运行时还原。

3.3 多阶段跳转 + 参数携带邮箱

还原出的首跳 URL 通常形如 https://documents.example520.com/KHDSABC?e=<用户邮箱>——子域名带 documents. 前缀模仿文件共享服务,路径随机化,查询参数携带收件人邮箱用于追踪与登录表单预填充。随后跳转至伪装的验证页(office365cloud=true 等参数),最终到达钓鱼登录页。多步链路使邮件网关难以解析、沙盒难以穿透。

4. 邮件网关检测要点

  1. 扩展名与 MIME 一致性校验:核对附件扩展名与 Content-Type 是否匹配;对声称 PDF 实为 SVG/HTML 的「类型混淆」附件直接标记。SVG 注册 MIME 为 image/svg+xml,若邮件以 application/octet-stream 携带 .svg 附件,需提高关注等级。
  2. 脚本标签扫描:对 SVG/HTML 类文本附件做内容解析,检测 <script><foreignObject>onload/onclick 事件属性、CDATA 块内的可执行代码。
  3. 动态解码模拟:对字符数组 + Function()/eval() 模式、嵌套 base64 + atob() 模式做模式匹配与解码模拟,还原出真实 URL 后再做信誉查询。
  4. 重定向链分析:将附件中还原的 URL 与已知钓鱼基础设施比对;关注「documents. 前缀子域 + 随机路径 + 邮箱参数」的组合特征。
  5. 自寄自收异常检测:对 From=To 且存在 BCC 的邮件提高警惕——正常业务邮件极少自寄自收。
  6. 沙箱交互增强:对含验证码/延时跳转的样本,沙箱应模拟点击、等待延时窗口,避免停留在中间页误判为良性。

5. 邮件网关防御配置建议

6. 趋势与展望

微软警告称:「虽然本次攻击范围有限且已被阻断,但同类技术正被更多威胁行为体采用。」2025 年以来,SVG 附件在钓鱼活动中的使用显著上升,且与 HTML smuggling、ClickFix 等既有手法组合使用。对邮件安全运营者而言,LLM 生成载荷意味着: