
Abusando de los servicios de Azure a través de C2
Maestro es una herramienta de post-explotación diseñada para interactuar con Intune/EntraID desde un agente C2 en la estación de trabajo de un usuario sin requerir conocimiento de la contraseña del usuario, flujos de autenticación de Azure, manipulación de tokens ni consola de administración basada en web. Maestro facilita mucho la interacción con Intune y EntraID (y potencialmente otros servicios de Azure) desde C2, ya que el operador no necesita obtener la contraseña en claro del usuario, extraer cookies de token de actualización principal (PRT) del sistema, ejecutar herramientas adicionales o una sesión de navegador a través de un proxy SOCKS, ni lidiar con flujos de autenticación de Azure, tokens o políticas de acceso condicional para ejecutar acciones en Azure en nombre del usuario con sesión iniciada.
Maestro es esencialmente un envoltorio para solicitudes locales de cookies PRT y llamadas a la API de Microsoft Graph, con muchas funciones de calidad de vida añadidas para red teamers. Maestro habilita rutas de ataque entre on-prem y Azure. Por ejemplo, al ejecutar Maestro en la máquina de un administrador de Intune, puedes ejecutar scripts de PowerShell en cualquier dispositivo inscrito sin conocer nunca las credenciales del administrador, incluso si MFA, cumplimiento de dispositivos y un dispositivo híbrido unido son requeridos por políticas de acceso condicional.
Las funciones de movimiento lateral de Maestro se inspiraron en Death from Above: Lateral Movement from Azure to On-Prem AD de Andy Robbins (@_wald0).
Puedes leer más en esta publicación de blog introductoria sobre Maestro: https://specterops.io/blog/2024/10/31/maestro-abusing-intune-for-lateral-movement-over-c2/
Hay una compilación publicada en este repositorio con la configuración de compilación ReleasePlusMSAL. Ten en cuenta que esta configuración fusiona las dependencias de MSAL en el .exe pero aumenta significativamente el tamaño del binario resultante. Si no planeas usar el método -m 2 para solicitar tokens de acceso (SharpGetEntraToken mediante MSAL), puedes compilar una versión Release y el tamaño se reducirá significativamente.
A partir de febrero de 2025, Microsoft está implementando la aplicación obligatoria de MFA para la autenticación en Azure Portal y sus extensiones. El método predeterminado de solicitud de tokens de acceso mediante el flujo de código de autorización probablemente fallará en este caso, pero usar SharpGetEntraToken/MSAL (opción -m 2) y especificar un ID de cliente que no requiera MFA, como Azure PowerShell (1950a258-227b-4e31-a9cf-717495945fc2), debería seguir funcionando.
Maestro.exe <command> [subcommand] [options]
Todos los comandos y subcomandos tienen una página de ayuda generada con un analizador de línea de comandos personalizado para mantener el tamaño del binario al mínimo. Se puede acceder a las páginas de ayuda introduciendo cualquier comando de Maestro seguido de -h o --help.
Consulta la salida de la opción --help de cada comando para obtener la información de uso más actualizada.
Puedes encontrar ejemplos al final de este archivo.
Para la depuración, comparto un directorio en una máquina inscrita en Intune que sea accesible desde mi equipo host con Visual Studio, ejecuto el depurador remoto de Visual Studio, configuro una tarea posterior a la compilación para copiar los archivos de la solución al recurso compartido y configuro Visual Studio para depurar de forma remota en el sistema inscrito.
El tiempo que puedo dedicar a investigar, desarrollar y mejorar Maestro no sería posible sin el patrocinio de SpecterOps al proyecto, como parte de su compromiso con la transparencia y el apoyo al desarrollo de código abierto. Estoy inmensamente agradecido por su orientación y apoyo.
Algunas funciones de Maestro se inspiraron o se construyeron basándose en el trabajo de otras personas, incluyendo:
Si estás interesado en colaborar, contáctame en Twitter (@_Mayyhem) o en el Slack de BloodHoundGang.
Obtén un token de acceso para MS Graph usando MSAL y el ID de cliente de Azure PowerShell (aún no bloqueado por la MFA obligatoria):
.\Maestro.exe get access-token -m 2 -t mayyhem.onmicrosoft.com -c 1950a258-227b-4e31-a9cf-717495945fc2 -s https://graph.microsoft.com/.default
2025-02-06 21:09:24.701 UTC - [INFO] Execution started
2025-02-06 21:09:24.810 UTC - [INFO] MSAL DLL loaded and ready for use.
2025-02-06 21:09:24.810 UTC - [INFO] SharpGetEntraToken attempting to get an access token
2025-02-06 21:09:25.857 UTC - [INFO] SharpGetEntraToken got an access token:
eyJ0...tDOg
2025-02-06 21:09:25.982 UTC - [INFO] Completed execution in 00:00:01.3203797