基于 Device Code Flow 的新型技术实现 FIDO 环境下的钓鱼攻击

admin 2025年5月26日13:54:18评论5 views字数 2529阅读8分25秒阅读模式

【翻译】Phishing despite FIDO, leveraging a novel technique based on the Device Code Flow 

概述

这是一种利用已知 Device Code 钓鱼方法的新型技术。当受害者打开钓鱼链接时,它会动态启动流程,并立即将受害者重定向到认证页面。无头浏览器 (headless browser) 在后台自动将生成的 Device Code 直接输入网页。这种方法突破了 10 分钟令牌有效期的限制,并消除了受害者手动执行这些步骤的需要,将攻击效率提升到了一个新的水平。Device Code 钓鱼特别危险的地方在于它能够绕过 FIDO 的钓鱼保护机制。此外,受害者与他们预期的原始网站进行交互,使得基于可疑 URL 检测攻击变得不可能。

绕过 FIDO

如果在认证过程中使用 FIDO,通常会假设用户对钓鱼攻击具有抵抗力。然而,如果将 FIDO 与 Device Code Flow(OAuth 2.0 Device Authorization Grant)结合使用,认证过程就不再具有钓鱼抵抗性。

由于 Device Code Flow 的特性,用户在一个设备上进行认证,而令牌实际上被颁发到另一个设备。FIDO 机制无法在带外通道 (out-of-band channel) 上强制执行钓鱼抵抗。

使用 Device Code Flow 进行钓鱼攻击并不是什么新鲜事。但在非 FIDO 时代,通过 Device Code Flow 或通过 SMS、Push 或语音认证进行钓鱼攻击并没有太大区别。现在,当您将 FIDO 作为唯一的认证方法时,降级攻击无法被利用,可能不太明显的是钓鱼抵抗性仍然可能被破坏。

Azure Entra 示例

尽管这是一个普遍存在的问题,只要该协议与 FIDO 结合使用就会出现,但我将以 Azure Entra 作为具体示例进行描述。

假设您在租户中使用 FIDO 认证方法。您通过认证强度策略配置了条件访问策略,以强制对每个应用程序进行 FIDO 认证。您可能认为这种配置使认证过程具有钓鱼抵抗性?!但这是错误的!攻击者可以利用 Device Code Flow 来钓鱼获取令牌,从而绕过钓鱼抵抗性。

深入阅读参考

我不会详细介绍 Device Code Flow 的技术细节,因为已经有其他优秀的博客文章详细介绍了这个主题。为了更深入的理解,我建议阅读介绍一种新的钓鱼技术来入侵 Office 365 账户

现有攻击模型

我经常看到博客描述 Device Code Flow 钓鱼技术时对攻击者存在某些限制。假设的攻击模型通常遵循以下步骤:

  1. 攻击者启动 Device Code Flow 并收到用户代码
  2. 攻击者将代码和设备代码 URL 发送给受害者
  3. 受害者打开设备代码 URL 并输入用户代码
  4. 受害者完成认证
  5. 攻击者获得认证

这种攻击模型的后果是,一旦代码生成,攻击者只有 10 分钟的时间说服受害者打开 URL 并输入代码。我同意这对攻击者来说不是一件容易的事。此外,说服受害者手动输入代码通常比简单地要求他们打开 URL 更可疑,这使得攻击更具挑战性。

新型攻击模型

让我们来看一个消除上述限制的新型且更复杂的攻击模型:

  1. 攻击者向受害者发送一个 URL
  2. 受害者打开该 URL
  3. 当 URL 被打开时,启动一个无头浏览器,执行以下自动化步骤:
    • 使用<tenant><clientId>启动 Device Code Flow
    • 打开设备代码网页并输入相应的用户代码
    • 设备代码网页转发到交互式认证的 URL
    • 将交互式认证的 URL 作为重定向返回给受害者
  4. 受害者被重定向到认证 URL
  5. 受害者完成认证
  6. 攻击者获得认证

使用这种攻击模型,受害者只需要点击一个 URL。由于 Device Code Flow 仅在受害者点击 URL 时启动,10 分钟的时间限制不再影响成功率。此外,它消除了说服受害者手动输入代码的需要,这无疑降低了可疑性。

比普通中间人钓鱼更危险

实际上,Device Code Flow 钓鱼比中间人攻击 (Attacker in the Middle, AitM) 钓鱼更危险,因为受害者使用的是他们预期的原始网站。因此,他们无法基于可疑 URL 检测到自己正在受到攻击。此外,由于会话仍然活跃,受害者可能不需要进行交互式认证。因此,受害者几乎没有时间意识到这是不合法的。更不用说 Device Code Flow 正在破坏 FIDO 的钓鱼抵抗性!

概念验证

我编写了上述"新型攻击模型"的概念验证 (Proof of Concept, POC),可以在这里找到:https://github.com/denniskniep/DeviceCodePhishing。

  • 这是一个利用 Device Code Flow 的钓鱼服务器
  • 能够绕过 FIDO,即使 FIDO 是受害者唯一可用的认证方法
  • 新方法:受害者访问钓鱼 URL 并立即被重定向到认证页面(无需受害者手动输入代码)
  • 受害者在原始网页上完成认证(不涉及可疑 URL)

您可以在此演示视频中看到它的实际效果

目前,该工具只能用于针对 Microsoft Azure Entra 用户。然而,该技术本身并不局限于特定供应商。

缓解措施

在我看来,唯一的缓解措施是停用 Device Code Flow!对于 Azure Entra,您可以实施阻止 Device Code Flow 的条件访问策略

获取令牌后的下一步

一旦成功获取令牌,您可以将其与其他攻击工具一起使用,例如:

  • https://github.com/dafthack/GraphRunner
  • https://github.com/f-bader/TokenTacticsV2?tab=readme-ov-file#azure-json-web-token-jwt-manipulation-toolset
  • https://github.com/secureworks/family-of-client-ids-research

更多链接

  • Microsoft 威胁情报也对此进行了报告:Storm-2372 进行设备代码钓鱼活动
  • 官方 Microsoft 文档
  • squarephish(使用普通攻击模型)
  • 关于 Storm-2372 的博客(使用普通攻击模型)
  • Device Code 钓鱼 - 深入探讨
  • IETF - 跨设备安全
  • OAuth 2.0 设备授权许可

原文始发于微信公众号(securitainment):基于 Device Code Flow 的新型技术实现 FIDO 环境下的钓鱼攻击

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月26日13:54:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   基于 Device Code Flow 的新型技术实现 FIDO 环境下的钓鱼攻击http://cn-sec.com/archives/4017750.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息