Az - Conditional Access Policies / MFA Bypass

支持 HackTricks

基本信息

Azure 条件访问策略是在 Microsoft Azure 中设置的规则,用于根据某些 条件 强制执行对 Azure 服务和应用程序的访问控制。这些策略帮助组织通过在适当的情况下应用正确的访问控制来保护其资源。 条件访问策略基本上 定义 可以从 哪里如何 访问 什么

以下是几个示例:

  1. 登录风险策略:此策略可以设置为在检测到登录风险时要求多因素身份验证 (MFA)。例如,如果用户的登录行为与其常规模式相比不寻常,例如从不同国家登录,系统可以提示进行额外的身份验证。

  2. 设备合规性策略:此策略可以限制对 Azure 服务的访问,仅限于符合组织安全标准的设备。例如,只有在设备上安装了最新的防病毒软件或运行特定操作系统版本的情况下,才允许访问。

条件访问策略绕过

条件访问策略 检查一些可以轻易篡改的信息,从而允许绕过该策略。例如,如果该策略配置了 MFA,攻击者将能够绕过它。

设备平台 - 设备条件

可以基于 设备平台(Android、iOS、Windows、macOS)设置条件,但这基于 用户代理,因此很容易绕过。即使 强制所有选项启用 MFA,如果使用 未被识别的用户代理,也将能够绕过 MFA。

位置:国家、IP 范围 - 设备条件

当然,如果在条件策略中设置了这一点,攻击者可以使用 VPN允许的国家 中,或尝试找到从 允许的 IP 地址 访问的方法来绕过这些条件。

Office365 客户端应用

您可以指示如果客户端 从浏览器访问 Office 365 应用,则需要 MFA

要绕过此限制,可以假装您是从桌面应用程序(例如以下示例中的 Microsoft Teams)登录应用,这将绕过保护:

roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokrns-stdout

<token>

由于 Microsoft Teams 应用程序具有很多权限,您将能够使用该访问权限。

您可以在 roadtools 数据库中找到具有预定义 Office365 权限的更多公共应用程序的 ID

SELECT appId, displayName FROM ApplicationRefs WHERE publicCLient = 1 ORDER BY displayName ASC

这个攻击特别有趣,因为默认情况下,公共 Office365 应用程序将具有访问某些数据的权限。

其他应用

默认情况下,用户创建的其他应用将没有权限,并且可能是私有的。 然而,用户也可以创建 公共 应用 授予它们一些 权限

一个潜在的场景是,当用户使用 浏览器 访问一个 应用 时,策略被设置为 要求 MFA(也许因为它是一个网络应用,因此这是唯一的方式),如果存在一个 代理应用 - 一个被允许 代表用户与其他应用交互的应用 - 用户可以 登录代理应用,然后通过这个代理应用 登录到最初受 MFA 保护的应用

查看 Invoke-MFASweepdonkeytoken 技术。

其他 Az MFA 绕过

振铃

一个 Azure MFA 选项是 接收在配置的电话号码上的电话,在电话中会要求用户 发送字符 #

由于字符只是 音调,攻击者可以 破坏 该电话号码的 语音邮件 消息,将 音调 # 配置为消息,然后在请求 MFA 时确保 受害者的电话正在忙(拨打它),这样 Azure 的电话就会被重定向到语音邮件。

合规设备

策略通常要求合规设备或 MFA,因此 攻击者可以注册一个合规设备,获取 PRT 令牌并 以此方式绕过 MFA

首先在 Intune 中注册一个 合规设备,然后使用以下命令 获取 PRT

$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials

$prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce

Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken

<token returned>

在以下页面中找到有关此类攻击的更多信息:

工具

获取所有策略

roadrecon plugin policies

MFASweep 是一个 PowerShell 脚本,尝试使用提供的凭据 登录到各种 Microsoft 服务,并尝试识别 MFA 是否已启用。根据条件访问策略和其他多因素身份验证设置的配置,某些协议可能最终只使用单因素身份验证。它还对 ADFS 配置进行了额外检查,并可以尝试登录到检测到的本地 ADFS 服务器。

Invoke-MFASweep -Username <username> -Password <pass>

Donkey token 是一组旨在帮助安全顾问验证条件访问策略、测试启用 2FA 的 Microsoft 门户等的功能。

Import-Module 'C:\Users\Administrador\Desktop\Azure\Modulos ps1\donkeytoken' -Force

测试每个门户,以确定是否可以在没有 MFA 的情况下登录

Test-MFA -credential $cred -Verbose -Debug -InformationAction Continue

因为Azure 门户不受限制的,因此可以从门户端点收集令牌以访问之前执行检测到的任何服务。在这种情况下,识别出了Sharepoint,并请求访问它的令牌:

$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token

假设令牌具有 Sites.Read.All(来自 Sharepoint)的权限,即使由于 MFA 您无法通过网络访问 Sharepoint,仍然可以使用该令牌访问使用生成的令牌的文件:

$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl

参考

支持 HackTricks

Last updated