Az - Conditional Access Policies / MFA Bypass

Suporte ao HackTricks

Informações Básicas

As políticas de Acesso Condicional do Azure são regras configuradas no Microsoft Azure para impor controles de acesso a serviços e aplicativos do Azure com base em certas condições. Essas políticas ajudam as organizações a proteger seus recursos aplicando os controles de acesso corretos nas circunstâncias adequadas. As políticas de acesso condicional basicamente definem Quem pode acessar O Que de Onde e Como.

Aqui estão alguns exemplos:

  1. Política de Risco de Login: Esta 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 em comparação com seu padrão regular, como fazer login de um país diferente, o sistema pode solicitar autenticação adicional.

  2. Política de Conformidade de Dispositivo: Esta política pode restringir o acesso aos 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 pode ser permitido apenas a dispositivos que tenham software antivírus atualizado ou que estejam executando uma determinada versão do sistema operacional.

Bypasses de Políticas de Acesso Condicional

É possível que uma política de acesso condicional esteja verificando algumas informações que podem ser facilmente manipuladas, permitindo um bypass da política. E se, por exemplo, a política estiver configurando MFA, o atacante poderá contorná-la.

Plataformas de Dispositivo - Condição de Dispositivo

É possível definir uma condição com base na plataforma do dispositivo (Android, iOS, Windows, macOS), no entanto, isso é baseado no user-agent, então é bastante fácil de contornar. Mesmo fazendo todas as opções exigirem MFA, se você usar um user-agent que não é reconhecido, conseguirá contornar a MFA.

Localizações: Países, Faixas de IP - Condição de Dispositivo

Claro que, se isso estiver configurado na política condicional, um atacante poderia simplesmente usar uma VPN no país permitido ou tentar encontrar uma maneira de acessar de um endereço IP permitido para contornar essas condições.

Aplicativos Cliente do Office365

Você poderia indicar que, se os clientes acessarem aplicativos do Office 365 pelo navegador, eles precisam de MFA:

Para contornar isso, é possível fingir que você está fazendo login em um aplicativo a partir de um aplicativo de desktop (como no Microsoft Teams no exemplo a seguir), o que contornará a proteção:

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

<token>

Como o aplicativo Microsoft Teams tem muitas permissões, você poderá usar esse acesso.

Você pode encontrar o ID de mais aplicativos públicos com permissões pré-definidas do Office365 no banco de dados do roadtools:

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

Este ataque é especialmente interessante porque, por padrão, aplicativos públicos do Office365 terão permissões para acessar alguns dados.

Outros aplicativos

Por padrão, outros aplicativos criados por usuários não terão permissões e podem ser privados. No entanto, os usuários também podem criar aplicativos públicos concedendo-lhes algumas permissões.

Um cenário potencial onde uma política é definida para exigir MFA para acessar um aplicativo quando o usuário está usando um navegador (talvez porque seja um aplicativo web e, portanto, será a única maneira), se houver um aplicativo proxy - um aplicativo permitido para interagir com outros aplicativos em nome dos usuários -, o usuário poderia fazer login no aplicativo proxy e então, através deste aplicativo proxy, fazer login no aplicativo inicialmente protegido por MFA.

Verifique as técnicas Invoke-MFASweep e donkeytoken.

Outros Bypasses de MFA do Az

Toque de chamada

Uma opção de MFA do Azure é receber uma chamada no número de telefone configurado onde será solicitado ao usuário que envie o caractere #.

Como os caracteres são apenas tons, um atacante poderia comprometer a mensagem de correio de voz do número de telefone, configurar como mensagem o tom de # e então, ao solicitar o MFA, garantir que o telefone da vítima esteja ocupado (ligando para ele) para que a chamada do Azure seja redirecionada para o correio de voz.

Dispositivos Compatíveis

As políticas frequentemente pedem um dispositivo compatível ou MFA, então um atacante poderia registrar um dispositivo compatível, obter um token PRT e burlar assim o MFA.

Comece registrando um dispositivo compatível 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 esse tipo de ataque na seguinte página:

Ferramentas

Obtenha todas as políticas

roadrecon plugin policies

MFASweep é um script PowerShell que tenta fazer login em vários serviços da Microsoft usando um conjunto de credenciais fornecido e tentará identificar se o MFA está habilitado. Dependendo de como as políticas de acesso condicional e outras configurações de autenticação multifatorial estão configuradas, alguns protocolos podem acabar sendo deixados como fator único. Ele também possui uma verificação adicional para configurações de ADFS e pode tentar fazer login no servidor ADFS local se detectado.

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

Donkey token é um conjunto de funções que visa ajudar consultores de segurança que precisam validar Políticas de Acesso Condicional, testes para portais Microsoft com 2FA habilitado, etc..

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

Teste cada portal se é possível fazer login sem MFA:

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

Porque o portal Azure não é restrito, é possível coletar um token do endpoint do portal para acessar qualquer serviço detectado pela execução anterior. Neste caso, o 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 consiga 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

Suporte ao HackTricks

Last updated