AI对抗AI:检测利用AI技术隐藏的网络钓鱼攻击

微软威胁情报团队发现并阻止了一场利用AI生成代码隐藏恶意负载的网络钓鱼活动,攻击者使用SVG文件嵌入混淆的业务术语,通过多层转换重构恶意功能,展现了AI在网络攻击中的新型应用方式。

网络钓鱼活动战术与负载分析

8月18日,微软威胁情报检测到一场利用被入侵的小型企业电子邮件账户分发恶意网络钓鱼邮件的活动,旨在窃取用户凭证。攻击者采用了自寻址电子邮件策略,即发件人和收件人地址相同,实际目标隐藏在密送字段中,这种做法试图绕过基本检测启发式规则。

邮件内容伪装成文件共享通知,包含消息: 图1. 网络钓鱼邮件示例

邮件附件名为"23mb – PDF- 6 pages.svg",虽然文件扩展名表明是SVG文件,但被设计成看起来像合法的PDF文档。SVG文件(可缩放矢量图形)对攻击者具有吸引力,因为它们是基于文本且可编写脚本的,允许直接在文件中嵌入JavaScript和其他动态内容。

当打开SVG文件时,会将用户重定向到一个网页,提示用户完成验证码安全验证——这是建立信任和延迟怀疑的常见社交工程策略。虽然由于活动被检测和阻止,我们对此事件的可见性仅限于初始登录页面,但该活动很可能会在验证码之后呈现虚假登录页面以获取凭证。

图2. 安全验证提示

对SVG代码的分析发现,它使用了一种独特的方法来混淆其内容和行为。与通常用于混淆网络钓鱼内容的加密混淆不同,该活动中的SVG代码使用业务相关语言来伪装其恶意活动。具体通过两种方式实现:

首先,SVG代码的开头被构造成看起来像合法的业务分析仪表板。它包含所谓的"业务绩效仪表板"元素,包括图表条和月份标签。然而,通过将其不透明度设置为零并将填充设置为透明,这些元素对用户完全不可见。这种策略旨在误导任何随意检查文件的人,使其看起来SVG的唯一目的是可视化业务数据。实际上,这是一个诱饵。

图3. 包含诱饵业务绩效图表的SVG代码

其次,负载功能也通过创造性地使用业务术语进行隐藏。在文件中,攻击者使用一长串业务相关术语对恶意负载进行编码。诸如"revenue"、“operations”、“risk"或"shares"等词语被连接成SVG内不可见<text>元素的隐藏数据分属性。

图4. 业务相关术语序列

这些术语随后被嵌入的JavaScript使用,通过几个转换步骤系统地处理业务相关词语。攻击者不是直接包含恶意代码,而是通过将这些业务术语的对或序列映射到特定字符或指令来编码负载。随着脚本运行,它解码序列,从看似无害的业务元数据中重构隐藏功能。这种混淆功能包括将用户的浏览器重定向到初始网络钓鱼登录页面、触发浏览器指纹识别和启动会话跟踪。

图5. 将业务术语转换为可处理的恶意代码

使用AI分析活动

鉴于用于混淆SVG负载功能的独特方法,我们假设攻击者可能使用了AI来协助。我们要求Security Copilot分析SVG文件的内容,以评估它是否由AI或LLM生成。Security Copilot的分析表明,代码很可能是合成的,并且可能由LLM或使用LLM的工具生成。Security Copilot确定该代码表现出的复杂性和冗长程度在手动编写的脚本中很少见,表明它是由AI模型而非人工制作的。

Security Copilot提供了五个关键指标来支持其结论:

  • 过度描述性和冗余命名:函数和变量名称遵循描述性英语术语与随机十六进制字符串连接的固定模式。这种命名约定是AI/LLM生成代码的典型特征。
  • 模块化和过度设计的代码结构:代码结构高度模块化,具有清晰的关注点分离和类似逻辑块的重复使用。这种系统方法是AI/LLM输出的特征。
  • 通用注释:注释冗长、通用,并使用正式的业务语言,这是AI生成文档的标志。
  • 公式化的混淆技术:混淆技术的实现方式既彻底又公式化,符合AI/LLM代码生成的风格。
  • 不寻常地使用CDATA和XML声明:SVG代码同时包含XML声明和CDATA包装的脚本,这更典型于旨在"技术上正确"或模仿文档示例的LLM生成代码。

使用AI检测活动

虽然使用AI混淆网络钓鱼负载可能看起来是攻击者复杂性的重大飞跃,但重要的是要理解AI并不会从根本上改变安全系统依赖以检测网络钓鱼威胁的核心工件。AI生成的代码可能更复杂或语法更完善,但它仍在与人工制作的攻击相同的行为和基础设施边界内运行。

Microsoft Defender for Office 365使用经过训练检测网络钓鱼的AI和机器学习模型,这些模型设计用于识别跨多个维度的模式——不仅仅是负载本身。这些包括:

  • 攻击基础设施
  • 战术、技术和程序
  • 冒充策略
  • 消息上下文和传递模式

这些信号在很大程度上不受负载是由人类还是LLM编写的影响。事实上,AI生成的混淆通常会引入合成工件,如冗长的命名、冗余逻辑或不自然的编码方案,这些本身可能成为新的检测信号。

尽管使用了AI来混淆SVG负载,但该活动通过基础设施分析、行为指标和消息上下文的组合被Microsoft Defender for Office 365的检测系统阻止,这些都不受AI使用的影响。用于检测此活动的信号包括:

  • 使用带密送收件人的自寻址电子邮件
  • 可疑的文件类型/名称
  • 重定向到恶意基础设施
  • 普遍使用代码混淆
  • 可疑的网络行为

建议

虽然此活动范围有限且被有效阻止,但类似技术正被越来越多的威胁行为者利用。分享我们的发现使组织能够识别和减轻这些新兴威胁。微软威胁情报推荐以下缓解措施:

  • 查看我们为Exchange Online Protection和Microsoft Defender for Office 365推荐的设置
  • 配置Microsoft Defender for Office 365以在点击时重新检查链接
  • 在Defender for Office 365中开启零小时自动清除
  • 鼓励用户使用支持Microsoft Defender SmartScreen的浏览器
  • 在Microsoft Defender Antivirus中开启云提供的保护
  • 配置具有增强安全性的Microsoft Entra
  • 试点和部署抗网络钓鱼身份验证方法
  • 实施Entra ID条件访问认证强度

Microsoft Defender XDR检测

Microsoft Defender XDR客户可以参考下面的适用检测列表。Microsoft Defender XDR协调端点、身份、电子邮件、应用程序之间的检测、预防、调查和响应,以提供针对此类威胁的集成保护。

具有配置访问权限的客户还可以使用Microsoft Defender中的Microsoft Security Copilot来调查和响应事件、搜寻威胁并使用相关威胁情报保护其组织。

搜寻查询

Microsoft Sentinel

Microsoft Sentinel客户可以使用TI映射分析自动匹配此博客文章中提到的恶意域指标与其工作区中的数据。如果当前未部署TI Map分析,客户可以从Microsoft Sentinel内容中心安装威胁情报解决方案,以在其Sentinel工作区中部署分析规则。

以下是使用Sentinel高级安全信息模型函数在Microsoft第一方和第三方数据源中搜寻威胁的查询。

使用ASIM检测网络域危害指标

以下查询检查ASIM网络会话解析器支持的数据源中的IP地址和域IOC:

1
2
3
4
5
6
7
8
//Domain list- _Im_NetworkSession
let lookback = 30d;
let ioc_ip_addr = dynamic([]);
let ioc_domains = dynamic(["kmnl.cpfcenters.de"]);
_Im_NetworkSession(starttime=todatetime(ago(lookback)), endtime=now())
| where DstDomain has_any (ioc_domains)
| summarize imNWS_mintime=min(TimeGenerated), imNWS_maxtime=max(TimeGenerated),
  EventCount=count() by SrcIpAddr, DstIpAddr, DstDomain, Dvc, EventProduct, EventVendor

使用ASIM检测域和URL危害指标

以下查询检查ASIM Web会话解析器支持的数据源中的域和URL IOC:

1
2
3
// Domain list - _Im_WebSession
let ioc_domains = dynamic(["kmnl.cpfcenters.de”]);  
_Im_WebSession (url_has_any = ioc_domains)

危害指标

指标 类型 描述 首次发现 最后发现
kmnl[.]cpfcenters[.]de 托管网络钓鱼内容的域 08/18/2025 08/18/2025
23mb – PDF- 6 Pages[.]svg 文件名 SVG附件的文件名 08/18/2025 08/18/2025
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计