Azure Active Directory 蛮力攻击

2022-01-12 13:12:31 浏览数 (1)

Azure AD 无缝单点登录

Azure AD 无缝单点登录 (SSO) 改进了使用 Azure AD 标识平台(例如 Microsoft 365)的服务的用户体验。配置无缝 SSO 后,登录到其加入域的计算机的用户会自动登录到 Azure AD .

无缝 SSO 功能使用Kerberos协议,这是 Windows 网络的标准身份验证方法。在无缝 SSO 配置过程中,会在本地 Active Directory (AD) 域中创建一个名为 AZUREADSSOACC 的计算机对象,并为其分配服务主体名称(SPN) “https://autologon. microsoftazuread-sso . com”。该名称和 AZUREADSSOACC 计算机对象的密码哈希将发送到 Azure AD。以下自动登录 windowstransport 端点接受 Kerberos 票证:

代码语言:javascript复制
https://自动登录。microsoftazuread-sso . com//winauth/trust/2005/windowstransport

无缝 SSO 自动发生,无需任何用户交互(参见图 1)。

典型的无缝 SSO 流程典型的无缝 SSO 流程
  1. 用户尝试访问 Azure AD。
  2. Azure AD 识别出用户的租户配置为使用无缝 SSO,并将用户的浏览器重定向到自动登录。
  3. 用户的浏览器尝试访问 Azure AD。
  4. Autologon 发送 Kerberos 身份验证质询。
  5. 用户的浏览器尝试以登录用户身份进行身份验证并请求票证授予票证 (TGT)。
  6. 本地 AD 将 TGT 发送到用户的浏览器。
  7. 用户的浏览器从本地 AD 请求自动登录访问,并提供 TGT 作为身份证明。
  8. 本地 AD 定位相应的计算机对象并创建服务票证 (ST),该票证使用 AZUREADSSOACC 计算机帐户的密码哈希进行加密。
  9. 用户的浏览器发出另一个自动登录请求,并在请求的 Authorization 标头中提供 ST。
  10. Autologon 使用 AZUREADSSOACC 计算机帐户的密码哈希解密 ST,为用户颁发 DesktopSSOToken 访问令牌,并通过对 Azure AD 的重定向请求将此令牌发送到用户的浏览器。DesktopSSOToken 是 Microsoft 加密的不透明 blob,因此实际内容未知。
  11. 用户的浏览器使用 DesktopSSOToken 作为安全断言标记语言 ( SAML ) 断言向 Azure AD 发出另一个请求。

协议中的缺陷

除了 windowstransport 身份验证端点外,还有一个用于用户名和密码身份验证的usernamemixed端点:

代码语言:javascript复制
https://自动登录。microsoftazuread-sso . com//winauth/trust/2005/usernamemixed

图 2 显示了用户名和密码登录过程。

自动登录用户名和密码登录过程自动登录用户名和密码登录过程
  1. 包含用户名和密码的 XML 文件被发送到 usernamemixed 端点

  1. 自动登录尝试使用提供的凭据向 Azure AD 进行身份验证。
  2. 如果身份验证成功,自动登录会发出一个包含 DesktopSSOToken 访问令牌的 XML 文件(参见图 4)。如果身份验证不成功,自动登录会生成一个错误(参见图 5)。

  1. 如果身份验证成功,则将 DesktopSSOToken 访问令牌发送到 Azure AD。

表 1 列出了可能返回的错误代码。并非所有错误代码都表示暴力尝试。例如,错误 AADSTS50053 表示用户名和密码正确,但帐户已被锁定。

错误代码

解释

AADSTS50034

用户不存在

AADSTS50053

用户存在且输入了正确的用户名和密码,但账户被锁定

AADSTS50056

用户存在但在 Azure AD 中没有密码

AADSTS50126

用户存在,但输入了错误的密码

AADSTS80014

用户存在,但已超过最大 Pass-through Authentication 时间

CTU 研究人员观察到,成功的身份验证事件会在步骤 4 中生成登录日志。但是,不会记录自动登录对 Azure AD 的身份验证(步骤 2)。这种遗漏允许威胁参与者利用 usernamemixed 端点进行未检测到的暴力攻击。

结论

威胁参与者可以利用自动登录用户名混合端点来执行暴力攻击。此活动不会记录在 Azure AD 登录日志中,因此不会被检测到。在本出版物中,检测暴力破解或密码喷射攻击的工具和对策基于登录日志事件。

CTU 分析表明自动登录服务是通过 Azure Active Directory 联合身份验证服务 (AD FS) 实现的。Microsoft AD FS文档建议禁用对 windowstransport 端点的 Internet 访问。但是,无缝 SSO 需要该访问权限。Microsoft表示只有在 Office 2013 2015 年 5 月更新之前的旧版 Office 客户端才需要 usernamemixed 端点。

这种利用不仅限于使用无缝 SSO 的组织。威胁参与者可以利用任何 Azure AD 或 Microsoft 365 组织中的自动登录用户名混合端点,包括使用直通身份验证 ( PTA ) 的组织。没有 Azure AD 密码的用户不受影响。

在本出版物中,没有已知的缓解技术来阻止使用自动登录 usernamemixed 端点。多因素身份验证 ( MFA ) 和条件访问 ( CA ) 不会阻止利用,因为它们是在成功身份验证后应用的。

0 人点赞