Az - Conditional Access Policies / MFA Bypass

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o 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 determinadas condições. Essas políticas ajudam as organizações a proteger seus recursos aplicando os controles de acesso corretos nas circunstâncias certas. As políticas de acesso condicional basicamente definem Quem pode acessar O quê 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 do 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 partir de dispositivos que tenham software antivírus atualizado ou 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 estivesse configurando o MFA, o atacante poderá contorná-la.

Plataformas de Dispositivos - Condição do 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 com que todas as opções apliquem o MFA, se você usar um user-agent que não reconheça você poderá contornar o MFA.

Localizações: Países, Faixas de IP - Condição do 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 a partir 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 a partir do 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 o 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 possui muitas permissões, você poderá usar esse acesso.

Você pode encontrar o ID de mais aplicativos públicos com permissões predefinidas 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, as aplicações públicas do Office365 terão permissões para acessar alguns dados.

Outros aplicativos

Por padrão, outros aplicativos criados pelos 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 a eles 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 da web e, portanto, será a única maneira), se houver um aplicativo de proxy - um aplicativo permitido para interagir com outros aplicativos em nome dos usuários -, o usuário poderia fazer login no aplicativo de proxy e então, através deste aplicativo de 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 telefone

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

Como os caracteres são apenas tons, um atacante poderia comprometer a mensagem de caixa postal do número de telefone, configurar como mensagem o tom de # e então, ao solicitar o MFA, certificar-se de que o telefone das vítimas está ocupado (ligando para ele) para que a chamada do Azure seja redirecionada para a caixa postal.

Dispositivos Conformes

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

Comece registrando um dispositivo compatível no Intune, em seguida, 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:

pageAz - Pass the PRT

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á ativado. Dependendo de como as políticas de acesso condicional e outras configurações de autenticação multifator estiverem configuradas, alguns protocolos podem acabar sendo deixados como fator único. Ele também possui uma verificação adicional para configurações do 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 tem como objetivo ajudar consultores de segurança que precisam validar Políticas de Acesso Condicional, testar portais da Microsoft habilitados para 2FA, 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 obter 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

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización