展开抓取的正文(本地存档,已排版)
2026 年 2 月出现后,EvilTokens 迅速成为最广泛使用的钓鱼即服务(PhaaS)平台之一,为网络犯罪分子提供人工智能能力,用于定制钓鱼诱饵并分析受损邮箱以识别高价值目标。这一基于人工智能的网络犯罪平台促成了复杂的商业电子邮件妥协(BEC)活动,导致全球超过 10,000 家组织的 12,000 多个邮箱遭到入侵。
EvilTokens 使威胁行为者能够滥用设备代码认证流程、窃取令牌,并利用 AI 驱动的基础设施大规模 compromise 组织账户,同时自动化攻击链的多个环节。该工具包提供了大量预构建的钓鱼模板和着陆页,并配备 AI 助手以协助构建针对特定目标的电子邮件。
被盗令牌用于邮件外泄和持久化访问,通常通过创建恶意邮箱规则来隐藏通信内容。在某些情况下,令牌还可用于授予新设备访问受害者邮箱的权限,这是一种维持持久化访问的特别持久的方法。Microsoft Threat Intelligence 将开发和支持 EvilTokens 钓鱼工具包的威胁行为者标记为 Storm-2992。
在入侵后,EvilTokens 使威胁行为者能够利用 AI 助手筛选受害者邮箱活动,并根据可访问的邮件内容构建钓鱼消息。EvilTokens 还允许威胁行为者进行 Microsoft Graph 侦察,以绘制组织结构和权限图,从而在令牌有效期间维持持续访问并实现潜在的横向移动。虽然针对令牌的钓鱼并非新事物,但随着组织采用多因素认证(MFA),过去几年中此类攻击已变得更为普遍和工业化。
为逃避检测,EvilTokens 使用多阶段交付管道以绕过传统邮件网关和端点安全系统。目标通过欺诈性电子邮件被诱导,这些邮件使用了 44 种不同主题,包括发票和建议书请求(RFPs),或共享文件。这些邮件包含恶意 URL、PDF 附件和 HTML 文件。
利用 EvilTokens 的活动影响了各行各业组织,包括批发分销、建筑、金融服务、房地产、高等教育和医疗保健行业,其中观察到的受害者活动最高浓度出现在美国、加拿大、英国、澳大利亚、印度和法国。通过与合作伙伴合作,Microsoft Digital Crimes Unit (DCU) 协调破坏了用于运营 EvilTokens 服务的基础设施。
本博客提供了对 EvilTokens 平台和运营的全面、最新分析。我们分享了 EvilTokens 服务面板的具体示例以及对 EvilTokens 基础设施的详细分析。防御 EvilTokens 及类似的中间人(AiTM)钓鱼威胁需要结合技术控制与用户意识的分层方法。本博客还提供了 Microsoft Defender 的检测和狩猎指南,以及关于如何设置邮件流规则、实施防伪造保护并配置第三方连接器以防止伪造钓鱼消息到达用户邮箱的资源。
什么是设备代码钓鱼?
EvilTokens 的主要能力之一是其设备代码钓鱼流程,该流程滥用了 设备代码认证,这是一种专为界面有限的设备(如智能电视、打印机、Teams 设备和会议设备)设计的合法 OAuth 流程,这些设备无法支持标准交互式登录。在此模型中,用户会在尝试登录的设备上看到一个简短的代码,并被指示将该代码输入到另一台设备的浏览器中以完成认证。
虽然此流程对这些场景很有用,但它引入了安全权衡。由于认证在另一台设备上完成,发起请求的会话并未与用户的原始上下文强绑定。威胁行为者利用这一特性绕过传统 MFA 保护,将认证与源会话解耦。威胁行为者还使用社会工程学布局和技巧,将合法的设备代码流程批准伪装成其他所需事项。
设备代码钓鱼发生在威胁行为者介入此过程时。并非由合法设备请求访问,而是威胁行为者启动该流程,并通过钓鱼诱饵向用户提供代码。当用户输入代码时,他们无意中授权了威胁行为者的会话,从而在不暴露凭据的情况下获得账户访问权限。Microsoft 建议尽可能 阻止设备代码流程。如果您的组织使用需要设备代码流程的 Teams 设备,请将例外范围限定为特定的 Teams 设备资源账户,并从您的条件访问策略中排除“设备注册服务”资源。
2026 年 4 月,微软追踪到了一起与 EvilTokens 相关的网络钓鱼活动(链接),该活动利用自动化平台启动数千个独特的、短命轮询节点。这种方法使威胁行为者能够部署复杂的后端逻辑(Node.js),从而绕过传统的基于签名或模式的检测机制。该基础设施被用于攻击的整个过程,从生成动态设备代码到攻陷后的活动。
以下章节将探讨 EvilTokens 的运作方式、其客户面板提供的功能以及支持网络钓鱼活动的基础设施。我们还将追踪 EvilTokens 的攻击链,从诱饵交付和设备代码生成,经过防御规避、令牌窃取,直至攻陷后活动。
EvilTokens 平台与运营
分发与联盟支持
被追踪为 Storm-2992 的威胁行为者在行为者的 Telegram 频道上宣传并出售 EvilTokens 服务给网络犯罪分子。网络犯罪分子继续倾向于使用像 Telegram 这样的应用程序,这些应用提供匿名性、跨平台访问、文件共享以及向大量关注者广播公告的频道。威胁行为者利用 Telegram 来宣传其钓鱼工具包(phish kit)、发布更新、与订阅者协调并提供客户支持。

图 1. EvilTokens Telegram 机器人
EvilTokens 钓鱼工具包的初始购买价格为 1,500 美元,每月订阅费为 500 美元,以继续访问工具包和控制面板。该工具包提供其他产品,包括 Antibot 重定向器、B2B Sender、Office 365 Capture Link 和简单邮件传输协议(SMTP)发送器。这些产品中的每一个都有为期 30 天的额外费用。

图 2. EvilTokens Telegram 商店机器人
客户面板与活动配置
EvilTokens 面板提供了支持网络钓鱼活动的核心组件,包括预构建模板、常见诱饵格式的附件文件、域名和托管配置、重定向逻辑以及受害者追踪。
登录后,EvilTokens 订阅者会看到一个包含各种选项的仪表板。首先,订阅者被要求选择部署方法(Cloudflare Workers/Bunny 或 PHP Hosting),然后从部署选项列表中进行选择,包括捕获模式(Capture Mode)、布局与模板(Layout & Template)、代码显示样式、页面语言、CAPTCHA、AI 模式和捕获文本。这些选项允许订阅者高度定制其部署方法。

图 3. EvilTokens 平台欢迎页面
订阅者获得多种设置和额外指导,用于管理捕获的令牌。一旦捕获了令牌,EvilTokens 为其订阅者提供对受害者电子邮件账户的完全访问权限,以及管理员检测、令牌自动刷新功能,并通过 Telegram 使用关键字警报对收件箱进行自动扫描。

图 4. EvilTokens 平台管理捕获令牌的选项
该工具包提供其他产品,详细信息列于“必备工具”(Essential Tools)下。在这里,订阅者获得产品信息,并提供下载或获取产品的链接以及视频教程。订阅者甚至有机会通过向他人推荐该服务而获得加密货币奖励。

图 5. EvilTokens 必备工具页面
该平台提供 44 种不同的主题,用于自定义电子邮件模板和着陆页,包括文本和颜色。

图 6. EvilTokens 模板主题
EvilTokens 钓鱼邮件
EvilTokens 为订阅者提供个性化诱饵,利用 AI 创建针对目标角色的定向钓鱼邮件,包括使用各种主题以增加用户互动的可能性。使用的主题包括文档签署服务、Microsoft 云服务、第三方服务(云身份、文件托管、支付/发票)以及其他 miscellaneous 服务,如语音邮件和电子传真。
此外,Huntress 的研究人员注意到 EvilTokens 邮件中包含的内容有:建筑投标提案、商业合作协议、员工薪酬/福利以及密码过期通知等。
EvilTokens 钓鱼序列
攻击链始于用户与嵌入在高压力诱饵(例如,“需要操作:密码即将过期”)中的恶意附件或 URL 进行交互时。

图 7. EvilTokens 钓鱼邮件示例
当用户点击恶意链接或附件时,会被重定向到一个运行后台自动化脚本的网页。该脚本实时与 Microsoft 身份提供商进行交互以生成实时设备代码。随后,该代码会显示在用户的屏幕上,并附带“复制代码”按钮以及“继续”或“使用 Microsoft 继续”按钮;点击这些按钮后,会将用户重定向到官方的 microsoft.com/devicelogin 门户。

图 8. 生成的设备代码示例
在向用户展示代码并打开合法的 microsoft.com/devicelogin URL 后,脚本会进入轮询状态,使用 checkStatus() 函数实时监控 15 分钟的时间窗口。每三到五秒(通过 setInterval),脚本就会向威胁行为者的 /state 端点发送请求。它会发送秘密会话标识符代码以验证用户是否已经完成了身份验证。当目标用户在真实的 Microsoft 网站上输入代码时,循环会返回“待定”状态。

图 9. Microsoft 设备代码登录门户示例
为了最大限度地减少用户操作并提高成功率,威胁行为者的脚本通常会自动将生成的设备代码复制到用户的剪贴板。当用户到达官方登录页面时,他们会粘贴该代码。如果用户没有活跃的会话,系统会提示其提供密码和多因素认证(MFA)。如果用户已经处于登录状态,只需粘贴代码并确认请求,即可在后台立即验证威胁行为者的会话。
最后阶段会根据威胁行为者的具体目标而有所不同。在某些情况下,在入侵发生后的 10 分钟内,威胁行为者会注册新设备以生成主刷新令牌(PRT),从而实现长期持久化访问。在其他场景中,他们会等待数小时后再创建恶意的收件箱规则或窃取敏感电子邮件数据,以避免立即被检测到。
EvilTokens 赋予了威胁行为者进行网络钓鱼并执行其无法单独完成的操作的能力,使其能够在 EvilTokens 工具的辅助下大规模对用户进行网络钓鱼,并在其方便时执行其他操作。
防御规避
EvilTokens 使用多阶段交付管道,旨在绕过传统的电子邮件网关和端点安全系统。交付给用户的钓鱼页面在复杂性和规避技术方面各不相同,操作员会根据所使用的工具添加自定义层。流行的技术包括但不限于图片链接(指向 URL 的图片)、多阶段重定向方案以及包含多阶段交付的附件。
着陆页面的规避手段包括伪造的 CAPTCHA 检查/验证服务,这些服务要求在显示钓鱼内容之前进行用户交互。为了进一步规避自动化的 URL 扫描器和沙箱,威胁行为者有时不会直接链接到最终的钓鱼网站。相反,他们通过被入侵的合法域名和高信誉的“无服务器”平台使用一系列重定向。我们观察到严重依赖滥用 Vercel(.vercel.app)、Cloudflare Workers(.workers.dev)和 AWS Lambda 来托管重定向逻辑。通过使用这些域名,钓鱼流量会与合法的云企业流量混合在一起,从而规避简单的域名黑名单触发器。
后入侵账户访问
一旦获取了身份验证令牌,威胁行为者就可以专注于旨在维持和扩大访问权限并提取数据的后入侵活动。这种访问权限可用于向组织内部发送进一步电子邮件以及向外部联系人发送邮件,使攻击者能够冒充看似可信的联系人发送钓鱼邮件。在观察到的一个事件中,攻击进展到了通过 Microsoft Office 创建收件箱规则来窃取电子邮件数据和实现账户持久化。这涉及筛选被入侵用户并选择目标:
- 高价值目标识别: 利用 EvilTokens 的人工智能能力,威胁行为者审查并筛选出被入侵用户池中的高价值目标——特别是那些担任财务、行政或管理职务的人员。
- 加速侦察: 在获得 Microsoft Graph 进行侦察的访问权限后,一旦令牌安全获取,威胁行为者就会通过编程方式绘制内部组织结构,并立即识别敏感权限。
- 针对性金融窃取: 最具侵入性的活动保留给拥有财务权限的用户。对于这些特定配置文件,威胁行为者会对电子邮件通信进行深入侦察,搜索高价值目标和敏感信息,如电汇详情、待处理发票和高管往来信函。
缓解和保护指南
为了针对上述设备代码钓鱼活动加固网络,防御人员可以实施以下措施:
- 仅在必要时允许设备代码流。Microsoft 建议 尽可能阻止设备代码流。在必要时,请在您的条件访问策略中配置 Microsoft Entra ID 的 设备代码流。
- 教育用户了解常见的网络钓鱼技术。登录提示应清楚标识正在验证的应用程序。自 2021 年以来,Microsoft Azure 交互会提示用户确认(“取消”或“继续”)他们是否正在登录到预期的应用程序,而这是网络钓鱼登录中经常缺失的选项。请警惕任何包含可疑链接的"[外部]"消息。不要从不熟悉的发送者处登录资源。了解如何保护自己免受网络钓鱼攻击。
- 配置 反网络钓鱼策略。反网络钓鱼策略通过检测伪造的发送者、冒充企图以及其他欺骗性电子邮件技术来防止网络钓鱼攻击。
- 在 Defender for Office 365 中配置 安全链接 (Safe Links)。安全链接扫描可保护您的组织免受用于网络钓鱼和其他攻击的恶意链接侵害。安全链接还可以启用来自 Defender 的高置信度设备代码网络钓鱼警报。
- 如果检测到可疑的设备代码网络钓鱼活动,请遵循 响应受损电子邮件账户 的指南。此外,通过调用 revokeSign-inSessions 撤销用户的刷新令牌。考虑 设置条件访问策略以强制重新验证(针对用户)。(近期活动的观察表明,标准会话撤销通常仅使刷新令牌无效,而现有的访问令牌在长达一小时的时间内保持有效。鉴于此类威胁的操作性特点,攻击者经常利用这一时间窗口;因此,我们建议暂时禁用受损账户以确保立即遏制,尽管这可能会导致短暂的业务中断)。
- 将 高级网络钓鱼阈值 提高至 2 或 3。
- 在 Microsoft Defender for Office 365 中启用 零小时自动清除 (ZAP),以隔离已发送的邮件,响应新获取的情报,并追溯性地中和已投递到邮箱的恶意网络钓鱼、垃圾邮件或恶意软件消息。
- 鼓励用户使用 Microsoft Edge 及其他支持 Microsoft Defender SmartScreen 的 Web 浏览器,该功能可识别并阻止恶意网站,包括网络钓鱼网站、诈骗网站以及托管恶意软件的网站。
- 创建可疑收件箱规则创建的警报,以便快速识别和分类业务电子邮件欺诈 (BEC) 和网络钓鱼活动的证据。此剧本有助于防御人员调查任何与威胁行为者配置的可疑收件箱操作规则相关的事件,并采取推荐的操作来修复攻击并保护网络。
Microsoft 建议采用以下最佳实践,以进一步帮助改善组织抵御网络钓鱼和其他凭证窃取攻击的防御能力:
- 实施登录风险策略 以自动化应对高风险登录。登录风险代表身份所有者未授权特定身份验证请求的概率。可以通过在条件访问策略中添加登录风险条件来实施基于登录风险的策略,该条件会评估特定用户或组的风险级别。根据风险级别(高/中/低),可以配置策略以阻止访问或强制多因素认证。
- 要求 使用多因素认证 (MFA)。实施 MFA 仍然是身份安全的关键支柱,对于阻止各种威胁非常有效。
- 利用 防钓鱼认证方法,例如 FIDO 令牌,或使用带通行密钥的 Microsoft Authenticator。避免使用基于电话的 MFA 方法,以规避与 SIM 劫持相关的风险。
- 通过 条件访问阻止 Microsoft Entra 中的旧版认证。旧版认证协议无法强制执行 MFA,因为旧版 MFA(每用户 MFA 提示)容易遭到滥用。
- 将组织的身份管理集中到单一平台。如果您的组织是混合环境,请将本地目录与云目录集成。如果您的组织使用第三方进行身份管理,请确保这些数据在 SIEM 中记录或连接到 Microsoft Entra,以便从中心位置全面监控恶意身份访问。将所有身份数据集中的额外好处是促进 单点登录 (SSO) 的实施,为用户提供更无缝的认证过程,并配置 Entra ID 的机器学习模型以在所有身份数据上运行,从而更快、更容易地学习合法访问与恶意访问之间的区别。建议在此过程中 同步所有用户账户,但排除管理员和高权限账户,以在发生泄露时维护本地环境与云环境之间的边界。
- 如果有迹象(例如警报)表明用户的刷新令牌已受损,请禁用设备并撤销所有现有刷新令牌。禁用设备可阻止 PRT 工作,而撤销刷新令牌可阻止任何使用 PRT 发出的刷新令牌继续工作。响应与受损身份相关的警报时,请遵循 Microsoft 的令牌窃取剧本 中的步骤。
- 通过凭据卫生保护账户:践行 最小权限原则,并审计 Entra ID 环境中的特权账户活动,以减缓和阻止威胁行为者。
- 启用 网络保护 和 Web 保护,以防止应用程序或用户访问互联网上的恶意域名和其他恶意内容。
Microsoft Defender XDR 检测
Microsoft Defender 客户可以参考以下适用检测列表。Microsoft Defender 协调端点、身份、电子邮件和应用程序的检测、预防、调查和响应,以提供针对此类威胁的集成保护。
拥有配置访问权限的客户还可以使用 Microsoft Defender 中的 Microsoft Security Copilot 来调查和响应事件、搜索威胁,并利用相关威胁情报保护其组织。
使用 Safe Links 和 Microsoft Entra ID Protection 可提升 Defender 对设备代码钓鱼的高置信度警报。
战术
观察到的活动
Microsoft Defender 覆盖范围
初始访问
设备代码认证
Microsoft Defender for Identity
– 异常 OAuth 设备代码认证活动
凭据访问
设备代码认证后的令牌窃取
Microsoft Defender for Identity
– 设备代码认证后异常的令牌交换
Microsoft Defender XDR
– 通过 OAuth 设备代码钓鱼导致的用户账户受损
– 可疑的 Azure 认证(可能涉及设备代码钓鱼)
持久性
异常设备代码认证后的设备注册
Microsoft Defender for Identity
– 可疑的 Entra 设备加入或注册
Microsoft Defender XDR
– 潜在设备代码钓鱼后的设备注册
发现
Microsoft Graph API 请求量异常(在设备代码流认证之后)
Microsoft Defender XDR
– 潜在设备代码钓鱼攻击后出现的 Microsoft Graph API 活动异常
– 潜在设备代码钓鱼攻击后出现的 Microsoft Graph API POST 活动异常
防御规避
潜在设备代码认证后创建的恶意收件箱规则
Microsoft Defender XDR
– 潜在设备代码钓鱼登录尝试后创建的可疑收件箱规则
Microsoft Security Copilot
Microsoft Security Copilot 已嵌入 Microsoft Defender,为安全团队提供 AI 驱动的功能,包括总结事件、分析文件和脚本、总结身份、使用引导式响应以及生成设备摘要、狩猎查询和事件报告。
客户还可以部署 AI 代理,其中包括以下 Microsoft Security Copilot 代理,以高效执行安全任务:
Security Copilot 也作为 独立体验 提供,客户可借此执行特定的安全相关任务,例如事件调查、用户分析和漏洞影响评估。此外,Security Copilot 还提供 开发场景,允许客户构建、测试、发布并集成 AI 代理和插件,以满足独特的安全需求。
威胁情报报告
Microsoft Defender XDR 客户可以使用以下 威胁分析 报告(需在 Defender 门户中拥有至少一个 Defender XDR 产品的许可)来获取有关本博客中讨论的恶意活动和技术的最新信息。这些报告提供情报、保护信息及建议的操作,以预防、缓解或应对客户环境中发现的关联威胁。
Microsoft Security Copilot 客户也可以使用 Security Copilot 独立门户,或在 Microsoft Defender 门户中的 嵌入体验 获取有关此威胁的更多信息。
狩猎查询
Microsoft Defender XDR 客户可以使用以下查询来检测可能的钓鱼尝试。若要探索长达 30 天的原始数据以检查网络中的事件,并定位超过一周的潜在 EvilTokens 相关指标,请前往 高级狩猎 页面 > 查询 选项卡,选择日历下拉菜单将查询更新为搜索 过去 30 天。
如果某个查询对可能的恶意或其他异常行为提供了高价值见解,您可以基于该查询创建自定义检测规则,并将这些见解作为自定义警报呈现。为此,请在高级狩猎页面运行查询并选择 创建检测规则。
可疑 URL 点击
此查询关联 Microsoft Defender for Office 365 信号和 Microsoft Entra ID 身份数据,以在 Microsoft Defender XDR 中找到相关的端点事件 BrowserLaunchedToOpen。该事件反映了在由 Microsoft Defender for Office 365 识别的鱼叉式钓鱼电子邮件中点击恶意 URL 的相关操作。
AlertInfo
| where ServiceSource =~ "Microsoft Defender for Office 365"
| join (
AlertEvidence
| where EntityType =="Url"
| project AlertId, RemoteUrl
)
on AlertId
| join (
AlertEvidence
| where EntityType =="MailMessage"
| project AlertId, NetworkMessageId
)
on AlertId
// 获取包含该 Url 的电子邮件的唯一 NetworkMessageId
| distinct RemoteUrl, NetworkMessageId
| join EmailEvents on NetworkMessageId
// 从电子邮件中获取收件人电子邮件地址和 ObjectId
| distinct RemoteUrl, NetworkMessageId, RecipientEmailAddress , RecipientObjectId
| join kind = inner IdentityInfo on $left.RecipientObjectId == $right.AccountObjectId
| distinct RemoteUrl, NetworkMessageId, RecipientEmailAddress , RecipientObjectId, OnPremSid
// 获取收件人设备上的 Url 点击事件。
| join kind = inner
(DeviceEvents
| where ActionType == "BrowserLaunchedToOpenUrl"| where isnotempty(RemoteUrl)
| project UrlDeviceClickTime = Timestamp , UrlClickedByUserSid = RemoteUrl,
InitiatingProcessAccountSid, DeviceName, DeviceId, InitiatingProcessFileName
)
on $left.OnPremSid == $right.InitiatingProcessAccountSid and $left.RemoteUrl == $right.UrlClickedByUserSid
| distinct UrlDeviceClickTime, RemoteUrl, NetworkMessageId, RecipientEmailAddress, RecipientObjectId,
OnPremSid, UrlClickedByUserSid, DeviceName, DeviceId, InitiatingProcessFileName
| sort by UrlDeviceClickTime desc
确定成功投递到收件箱/垃圾邮件文件夹的钓鱼电子邮件。
此查询识别已成功投递到收件箱或垃圾邮件文件夹的威胁。
EmailEvents
| where isnotempty(ThreatTypes) and DeliveryLocation in~ ("Inbox/folder","Junk folder")
| extend Name = tostring(split(SenderFromAddress, '@', 0)[0]), UPNSuffix = tostring(split(SenderFromAddress, '@', 1)[0])
| extend Account_0_Name = Name
| extend Account_0_UPNSuffix = UPNSuffix
| extend IP_0_Address = SenderIPv4
| extend MailBox_0_MailboxPrimaryAddress = RecipientEmailAddress
Microsoft Sentinel
Microsoft Sentinel 客户可以使用以下查询来检测网络钓鱼企图。这些查询可帮助客户保持警惕,保护其组织免受网络钓鱼攻击:
