Az - Conditional Access Policies / MFA Bypass

学习和练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) 学习和练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

支持 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(可能因为它是一个Web应用程序,因此这是唯一的方式),如果有一个代理应用程序——一个允许代表用户与其他应用程序交互的应用程序,用户可以登录代理应用程序,然后通过这个代理应用程序登录到最初受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>

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

Az - Pass the PRT

工具

获取所有策略

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 portal 没有受到限制,可以从门户端点收集令牌以访问之前执行检测到的任何服务。在这种情况下,检测到 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

参考资料

学习和练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) 学习和练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks

Last updated