Az - Conditional Access Policies / MFA Bypass

Apoya a HackTricks

Información Básica

Las políticas de acceso condicional de Azure son reglas establecidas en Microsoft Azure para hacer cumplir controles de acceso a servicios y aplicaciones de Azure basados en ciertas condiciones. Estas políticas ayudan a las organizaciones a asegurar sus recursos aplicando los controles de acceso correctos bajo las circunstancias adecuadas. Las políticas de acceso condicional definen Quién puede acceder a Qué desde Dónde y Cómo.

Aquí hay un par de ejemplos:

  1. Política de Riesgo de Inicio de Sesión: Esta política podría configurarse para requerir autenticación multifactor (MFA) cuando se detecta un riesgo de inicio de sesión. Por ejemplo, si el comportamiento de inicio de sesión de un usuario es inusual en comparación con su patrón regular, como iniciar sesión desde un país diferente, el sistema puede solicitar autenticación adicional.

  2. Política de Cumplimiento de Dispositivos: Esta política puede restringir el acceso a los servicios de Azure solo a dispositivos que cumplan con los estándares de seguridad de la organización. Por ejemplo, el acceso podría permitirse solo desde dispositivos que tengan software antivirus actualizado o que estén ejecutando una cierta versión del sistema operativo.

Bypasses de Políticas de Acceso Condicional

Es posible que una política de acceso condicional esté verificando alguna información que puede ser fácilmente manipulada, permitiendo un bypass de la política. Y si, por ejemplo, la política estaba configurando MFA, el atacante podrá eludirla.

Plataformas de Dispositivos - Condición de Dispositivo

Es posible establecer una condición basada en la plataforma del dispositivo (Android, iOS, Windows, macOS), sin embargo, esto se basa en el user-agent, por lo que es bastante fácil de eludir. Incluso haciendo que todas las opciones exijan MFA, si usas un user-agent que no reconoce, podrás eludir el MFA.

Ubicaciones: Países, rangos de IP - Condición de Dispositivo

Por supuesto, si esto está establecido en la política condicional, un atacante podría simplemente usar una VPN en el país permitido o intentar encontrar una manera de acceder desde una dirección IP permitida para eludir estas condiciones.

Aplicaciones Cliente de Office365

Podrías indicar que si los clientes acceden a las aplicaciones de Office 365 desde el navegador necesitan MFA:

Para eludir esto, es posible pretender que inicias sesión en una aplicación desde una aplicación de escritorio (como Microsoft Teams en el siguiente ejemplo) lo que eludirá la protección:

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

<token>

Como la aplicación de Microsoft Teams tiene muchos permisos, podrás utilizar ese acceso.

Puedes encontrar el ID de más aplicaciones públicas con permisos predefinidos de Office365 en la base de datos de roadtools:

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

Este ataque es especialmente interesante porque, por defecto, las aplicaciones públicas de Office365 tendrán permisos para acceder a algunos datos.

Otras aplicaciones

Por defecto, otras aplicaciones creadas por los usuarios no tendrán permisos y podrían ser privadas. Sin embargo, los usuarios también podrían crear aplicaciones públicas otorgándoles algunos permisos.

Un escenario potencial donde se establece una política para requerir MFA para acceder a una aplicación cuando el usuario está utilizando un navegador (quizás porque es una aplicación web y, por lo tanto, será la única forma), si hay una aplicación proxy -una aplicación permitida para interactuar con otras aplicaciones en nombre de los usuarios-, el usuario podría iniciar sesión en la aplicación proxy y luego, a través de esta aplicación proxy, iniciar sesión en la aplicación inicialmente protegida por MFA.

Consulta las técnicas de Invoke-MFASweep y donkeytoken.

Otros Bypass de MFA de Az

Tono de llamada

Una opción de Azure MFA es recibir una llamada en el número de teléfono configurado donde se le pedirá al usuario que envíe el carácter #.

Como los caracteres son solo tonos, un atacante podría comprometer el mensaje de buzón de voz del número de teléfono, configurar como mensaje el tono de # y luego, al solicitar el MFA, asegurarse de que el teléfono de la víctima esté ocupado (llamándolo) para que la llamada de Azure se redirija al buzón de voz.

Dispositivos compatibles

Las políticas a menudo piden un dispositivo compatible o MFA, por lo que un atacante podría registrar un dispositivo compatible, obtener un token PRT y eludir de esta manera el MFA.

Comienza registrando un dispositivo compatible en Intune, luego obtén el PRT con:

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

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

Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken

<token returned>

Encuentra más información sobre este tipo de ataque en la siguiente página:

Herramientas

Obtén todas las políticas

roadrecon plugin policies

MFASweep es un script de PowerShell que intenta iniciar sesión en varios servicios de Microsoft utilizando un conjunto de credenciales proporcionado y tratará de identificar si MFA está habilitado. Dependiendo de cómo estén configuradas las políticas de acceso condicional y otros ajustes de autenticación multifactor, algunos protocolos pueden terminar siendo de un solo factor. También tiene una verificación adicional para configuraciones de ADFS y puede intentar iniciar sesión en el servidor ADFS local si se detecta.

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

Donkey token es un conjunto de funciones que tienen como objetivo ayudar a los consultores de seguridad que necesitan validar las Políticas de Acceso Condicional, pruebas para portales de Microsoft habilitados para 2FA, etc.

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

Prueba cada portal si es posible iniciar sesión sin MFA:

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

Porque el portal Azure no está restringido, es posible obtener un token del endpoint del portal para acceder a cualquier servicio detectado por la ejecución anterior. En este caso, se identificó Sharepoint, y se solicita un token para acceder a él:

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

Suponiendo que el token tiene el permiso Sites.Read.All (de Sharepoint), incluso si no puedes acceder a Sharepoint desde la web debido a MFA, es posible usar el token para acceder a los archivos con el token generado:

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

Referencias

Apoya a HackTricks

Last updated