Az - Conditional Access Policies & MFA Bypass
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
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:
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.
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 versión específica del sistema operativo.
Es posible que una política de acceso condicional esté verificando 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.
Al configurar una política de acceso condicional, es necesario indicar los usuarios afectados y los recursos objetivo (como todas las aplicaciones en la nube).
También es necesario configurar las condiciones que activarán la política:
Red: IP, rangos de IP y ubicaciones geográficas
Puede ser eludida usando una VPN o Proxy para conectarse a un país o logrando iniciar sesión desde una dirección IP permitida
Riesgos de Microsoft: Riesgo del usuario, riesgo de inicio de sesión, riesgo interno
Plataformas de dispositivos: Cualquier dispositivo o seleccionar Android, iOS, Windows phone, Windows, macOS, Linux
Si “Cualquier dispositivo” no está seleccionado pero todas las otras opciones están seleccionadas, es posible eludirlo usando un user-agent aleatorio no relacionado con esas plataformas
Aplicaciones cliente: Las opciones son “Navegador”, “Aplicaciones móviles y clientes de escritorio”, “Clientes de Exchange ActiveSync” y “Otros clientes”
Para eludir el inicio de sesión con una opción no seleccionada
Filtro para dispositivos: Es posible generar una regla relacionada con el dispositivo utilizado
Flujos de autenticación: Las opciones son “Flujo de código de dispositivo” y “Transferencia de autenticación”
Esto no afectará a un atacante a menos que esté tratando de abusar de alguno de esos protocolos en un intento de phishing para acceder a la cuenta de la víctima
Los posibles resultados son: Bloquear o Conceder acceso con condiciones potenciales como requerir MFA, que el dispositivo sea conforme…
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 fácil de eludir. Incluso haciendo que todas las opciones exijan MFA, si usas un user-agent que no es reconocido, podrás eludir el MFA o el bloqueo:
Simplemente haciendo que el navegador envíe un user-agent desconocido (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
) es suficiente para no activar esta condición.
Puedes cambiar el user agent manualmente en las herramientas de desarrollador:
O usar una extensión de navegador como esta.
Si esto está configurado 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.
Es posible configurar políticas de acceso condicional para bloquear o forzar, por ejemplo, MFA cuando un usuario intenta acceder a una aplicación específica:
Para intentar eludir esta protección, deberías ver si puedes iniciar sesión solo en cualquier aplicación. La herramienta AzureAppsSweep tiene decenas de IDs de aplicación codificados y intentará iniciar sesión en ellas y te informará e incluso te dará el token si tiene éxito.
Para probar IDs de aplicación específicos en recursos específicos, también podrías usar una herramienta como:
Además, también es posible proteger el método de inicio de sesión (por ejemplo, si estás intentando iniciar sesión desde el navegador o desde una aplicación de escritorio). La herramienta Invoke-MFASweep realiza algunas verificaciones para intentar eludir estas protecciones también.
La herramienta donkeytoken también podría usarse para propósitos similares, aunque parece no estar mantenida.
La herramienta ROPCI también se puede utilizar para probar estas protecciones y ver si es posible eludir los MFA o bloqueos, pero esta herramienta funciona desde una perspectiva whitebox. Primero necesitas descargar la lista de aplicaciones permitidas en el inquilino y luego intentará iniciar sesión en ellas.
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.
Las políticas a menudo requieren 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:
Encuentra más información sobre este tipo de ataque en la siguiente página:
Este script obtiene algunas credenciales de usuario y verifica si puede iniciar sesión en algunas aplicaciones.
Esto es útil para ver si no se requiere MFA para iniciar sesión en algunas aplicaciones que podrías abusar más tarde para escalar privilegios.
Obtiene todas las políticas.
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.
Esta herramienta ha ayudado a identificar bypasses de MFA y luego abusar de APIs en múltiples inquilinos de AAD en producción, donde los clientes de AAD creían que tenían MFA aplicado, pero la autenticación basada en ROPC tuvo éxito.
Necesitas tener permisos para listar todas las aplicaciones para poder generar la lista de las aplicaciones a las que hacer brute-force.
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.
Prueba cada portal si es posible iniciar sesión sin MFA:
Porque el portal de Azure no está restringido, es posible recolectar 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:
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:
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)