Las organizaciones continúan implementando servicios basados en la nube, un cambio que ha llevado a una adopción más amplia de entornos de identidad híbridos que conectan Active Directory on-premises con Microsoft Entra ID (anteriormente Azure AD). Para gestionar dispositivos en estos entornos de identidad híbridos, Microsoft Intune (Intune) se ha convertido en una de las soluciones de gestión de dispositivos más populares. Dado que esta plataforma empresarial de confianza se puede integrar fácilmente con los dispositivos y servicios de Active Directory on-premises, es un objetivo principal para que los atacantes la utilicen indebidamente para realizar movimientos laterales y ejecutar código.
Esta investigación proporcionará información general sobre Intune, cómo se utiliza dentro de las organizaciones y mostrará cómo utilizar esta plataforma basada en la nube para implementar aplicaciones personalizadas de Windows con el fin de lograr la ejecución de código en los dispositivos de los usuarios. Además, esta investigación incluye la publicación de nuevas reglas de Microsoft Sentinel para ayudar a los responsables de la seguridad a detectar el uso de Intune para el movimiento lateral y ofrecer orientación sobre el refuerzo de la defensa de la plataforma Intune.
Andy Robbins escribió una excelente entrada de blog en 2020 titulada “Death from Above: Lateral Movement from Azure to On-Prem AD”, en la que explica cómo utilizar Intune de forma indebida para implementar un script de PowerShell en hosts de destino, junto con directrices defensivas para protegerse contra ese escenario de ataque. Nuestra investigación de X-Force se basa en la investigación de Robbins y muestra cómo ejecutar código específico con el uso de aplicaciones de Windows y cómo realizar activaciones ad hoc para que los hosts de Windows descarguen y ejecuten esas aplicaciones. Esta investigación también incluye reglas de Microsoft Sentinel recién creadas para detectar el uso indebido de Intune con el fin de facilitar el movimiento lateral y directrices de refuerzo para la plataforma Intune.
Chris Thompson presentó una herramienta llamada Maestro en DEF CON 32 Demo Labs que se puede utilizar para realizar reconocimientos de usuarios y dispositivos a través de Intune, junto con la ejecución de comandos a través de scripts de Intune PowerShell o aplicaciones de Windows desde un marco C2. ¡No se pierda esta herramienta y la investigación de Chris! La siguiente investigación de X-Force difiere, ya que muestra cómo llevar a cabo esta actividad de movimiento lateral a través de la interfaz web de Microsoft Intune y cómo empaquetar varios archivos para implementarlos como parte de una aplicación Windows personalizada para la ejecución de código. Además, esta investigación de X-Force incluye más formas de activar la ejecución de scripts de Intune PowerShell y aplicaciones Windows, junto con el lanzamiento de la lógica de reglas de detección de Microsoft Sentinel para detectar la actividad de movimiento lateral que abusa de Intune.
Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.
Muchas empresas han comenzado a adoptar un entorno de identidad híbrido, lo que significa la conexión de un entorno de Active Directory on-premises con Microsoft Entra ID (antes Azure AD). Esto permite a las organizaciones ser más flexibles y eficientes, lo que incluye una mejor gestión de los dispositivos de los usuarios y el acceso de estos a las aplicaciones basadas en la nube. Concretamente, cuando los dispositivos se unen de forma híbrida, son visibles y se pueden gestionar tanto en Active Directory on-premises como en Microsoft Entra ID. Debido a esta configuración, el compromiso de las soluciones de gestión de dispositivos basadas en la nube puede facilitar el movimiento lateral a dispositivos on-premises, como estaciones de trabajo de usuarios que están unidas de forma híbrida.
Microsoft Intune es una solución de gestión de dispositivos basada en la nube que se puede utilizar para gestionar la configuración de los dispositivos conectados a Azure, como los dispositivos híbridos. En las secciones siguientes se destaca cómo las organizaciones pueden utilizar y gestionar Intune.
Microsoft ofrece varias soluciones para gestionar dispositivos dentro de una empresa. A continuación se enumeran algunas de esas soluciones:
Los principales casos de uso estratégico para que las organizaciones utilicen Microsoft Intune son:
Microsoft proporciona documentación detallada sobre los diferentes roles disponibles en Intune, junto con los privilegios de cada uno de ellos. Los dos roles privilegiados dentro de Intune que permiten la creación de scripts de PowerShell o aplicaciones de Windows son el de administrador Global y el de administrador de servicios de Intune (también conocido como administrador de Intune).
Hay varias opciones para ejecutar código en hosts de Windows a través de Microsoft Intune. Se pueden implementar scripts de PowerShell para permitir la ejecución de código mediante la ejecución directa de comandos dentro del script. Otros tipos de ejecución de código en dispositivos Windows incluyen la implementación de aplicaciones. A continuación se enumeran algunos de los tipos de aplicaciones más destacados:
Los archivos de registro son escritos por la extensión de gestión de Intune en C:\ProgramData\Microsoft\IntuneManagementExtension\Logs. Estos registros pueden ser útiles para ver cuándo un dispositivo se ha conectado a Intune y si se han ejecutado scripts de PowerShell o aplicaciones de Windows.
Cuando Intune ejecuta un script de PowerShell, crea una copia temporal del script en el disco en C:\Program Files (x86)\Microsoft Intune Management Extension\Policies\Scripts y, a continuación, almacena los resultados del script en C:\Program Files ( x86)\Microsoft Intune Management Extension\Policies\Results. Una vez completado el script, se eliminan el script temporal y los resultados.
Cuando Intune ejecuta una aplicación de Windows, la aplicación se implementa y se ejecuta desde C:\Windows\IMECache\[UNIQUE_GUID]. Una vez que la aplicación ha terminado de ejecutarse, se elimina el directorio.
Existen varias técnicas de movimiento lateral que son bien conocidas por los proveedores de productos de seguridad y los profesionales de la seguridad defensiva, y que cuentan con documentación fácilmente disponible en el marco MITRE ATT&CK. Estas técnicas de movimiento lateral de Windows se benefician principalmente de los protocolos y servicios administrativos que pueden ejecutar programas o scripts. Algunas de las técnicas comunes de movimiento lateral utilizadas por los actores de amenazas y los profesionales de la seguridad ofensiva incluyen el uso de Windows Management Instrumentation (WMI), tareas programadas, servicios y el modelo de objetos componentes distribuidos (DCOM) para ejecutar programas o scripts. Desde el punto de vista de la seguridad operativa, es fundamental encontrar una técnica única que pueda ejecutar scripts y programas desde un software de confianza. Estas técnicas pueden mezclarse con la actividad típica de la empresa y ser ignoradas por los equipos de seguridad defensiva.
Si ha comprometido a un usuario de Azure con los permisos adecuados que se muestran en la sección Acceso basado en roles de Microsoft Intune, puede ejecutar código en cualquier host de Windows que tenga instalado el agente de Intune mediante la implementación de scripts de PowerShell o una aplicación de Windows. Esto se puede utilizar como un disparador de ejecución de movimiento lateral sigiloso y único que se origina en software empresarial de confianza.
El escenario que se muestra en la siguiente sección supone que se ha obtenido acceso privilegiado dentro del centro de administración de Intune. Además, como parte de este escenario, el objetivo es obtener acceso interactivo de comando y control (C2) a través de un beacon Cobalt Strike en un host de destino mientras se utiliza Intune como desencadenante de ejecución de movimiento lateral.
Intune utiliza grupos de Entra ID para controlar dónde se ejecutan los scripts o las aplicaciones. Por lo tanto, si un host o un grupo de hosts que está segmentando aún no son miembros de un grupo, deberá crear uno para ellos para poder controlar dónde se ejecuta su script o aplicación. Normalmente, en entornos de identidad híbridos, puede ver los dispositivos asociados a un usuario en Entra ID. Esto le permitirá crear una lista de hosts seleccionados. Esta información también se puede recuperar mediante herramientas y scripts automatizados, como ROADtools.
Si necesita crear un nuevo grupo de Microsoft Entra ID para asignar sus hosts de destino, seleccione “Grupos” > “Nuevo grupo” en el centro de administración de Intune.
Puede elegir entre seleccionar hosts o usuarios de destino, como se muestra en las respectivas capturas de pantalla a continuación. En este caso, estamos creando un grupo para dirigirnos al host WIN-8675309.
Se mostrará un resumen de su grupo y, a continuación, podrá crearlo.
Hay varias formas de realizar una activación ad hoc inmediata de su script de PowerShell o aplicación de Windows implementada desde Intune. Entre ellas se incluyen:
Como alternativa, puede esperar a que el dispositivo se reinicie por sí solo o a que el agente de Intune del host compruebe en Intune si hay nuevos scripts de PowerShell o aplicaciones de Windows.
La implementación de una aplicación de Windows en lugar de un script de PowerShell es un método alternativo para ejecutar código. Este método es más flexible, ya que permite empaquetar varios archivos que el agente de Intune implementa y ejecuta en un host de destino. Esto resulta beneficioso desde la perspectiva de un atacante para la implementación de cargas útiles, como la implementación de una carga útil de carga lateral DLL que requiere varios archivos. A continuación se detalla el proceso de implementación de una carga útil de carga lateral DLL Dism.exe a través de una aplicación de Windows de Intune.
Utilice la herramienta de preparación de contenido Win32 de Microsoft para empaquetar los archivos de carga útil en un archivo .intunewin . Se trata de un formato de archivo comprimido que permite la implementación segura de una aplicación. Puede encontrar detalles sobre cómo funciona este empaquetado en esta entrada de blog. En este ejemplo, tenemos un directorio que contiene un archivo ejecutable y un archivo DLL. Utilizamos la herramienta de preparación de contenido Win32 para empaquetar esos archivos en un archivo .intunewin .
El archivo .intunewin de salida se escribirá en el directorio de salida que haya especificado. En este caso, hemos empaquetado Dism.exe y DismCore.dll en el archivo Dism.intunewin .
Ahora que ya ha creado el paquete de aplicaciones de Windows, puede continuar con su implementación. En el centro de administración de Intune, vaya a “Aplicaciones” > “Aplicaciones de Windows” > “Añadir”.
Seleccione “Aplicación de Windows (Win32)” en el menú desplegable:
Cargue el archivo .intunewin creado anteriormente y rellene la información de su aplicación.
A continuación, añada un comando install , que en este caso será el ejecutable (Dism.exe). Para el comando uninstall , puede introducir cualquier cosa. Además, hemos elegido ejecutar esta aplicación como “Sistema” y, para el comportamiento de reinicio del dispositivo, hemos seleccionado “Sin acción específica”. Al elegir “Sistema”, esto significa que se ejecutará como la cuenta NT AUTHORITY\SYSTEM .
Las reglas de detección se utilizan para impedir la instalación de una aplicación cuando ya existe. Por lo tanto, si el resultado de una regla de detección es correcto, no se instalará una aplicación. Como queremos que nuestra aplicación se ejecute pase lo que pase, hemos subido un script de PowerShell en este caso que intenta ejecutar un binario inexistente. De esta forma, el script de detección siempre fallará, lo que significa que la aplicación no está presente, y la instalación continuará.
Omita las secciones “Dependencias” y “Sustitución” y añada el grupo con sus hosts de destino dentro de la sección “Asignaciones”:
Después de crear la aplicación de Windows, la verá en el centro de administración de Intune y la columna "Asignado" debería decir "Sí". Esto significa que la aplicación de Windows se ha asignado a los grupos que especificó y está esperando a ser implementada y ejecutada.
Para realizar la activación ad hoc del agente de Intune en el host de destino, reiniciaremos el servicio "IntuneManagementExtension". El host de destino puede tardar hasta cinco minutos después de reiniciar el servicio en descargar y ejecutar su aplicación de Windows desde Intune. Si el host de destino no ha descargado y ejecutado su aplicación de Windows después de cinco minutos, es posible que haya que reiniciar el servicio de nuevo. Otros métodos para realizar la activación ad-hoc se encuentran en la sección Activación ad-hoc.
Una vez que se haya reiniciado el servicio, puede monitorizar AgentExecutor.log e IntuneManagementExtension.log dentro del directorioC:\ProgramData\Microsoft\IntuneManagementExtension\Logs en el host de destino. Una vez que la fecha de última modificación en el AgentExecutor.log se haya actualizado, el agente de Intune debería haber descargado y ejecutado la aplicación de Windows. Además, puede monitorizar el directorio C:\Windows\IMECache para ver cuándo se han descargado los archivos de su aplicación. Se creará una subcarpeta con un GUID único.
En este punto, la aplicación ha sido implementada y ejecutada, y hemos obtenido una baliza Cobalt Strike en el host objetivo de WIN-8675309.
En esta sección se esbozarán varias consideraciones defensivas para aumentar el endurecimiento de la configuración y las capacidades de detección de Intune frente a los escenarios de ataque descritos en esta investigación.
Para crear reglas de detección o búsqueda de amenazas para actividades de movimiento lateral que abusan de Intune, primero debe habilitar la información de registro de auditoría. En el centro de administración de Intune, seleccione "Administración de inquilinos" > "Configuración de diagnóstico" > "Añadir configuración de diagnóstico":
Seleccione "AuditLogs" y "OperationalLogs" y, a continuación, elija enviar sus registros a un área de trabajo de Log Analytics:
Empezará a ver cómo los esquemas de IntuneAuditLogs e IntuneOperationalLogs empiezan a aparecer dentro de su espacio de trabajo de Log Analytics.
Después de empezar a recibir registros de Intune en su espacio de trabajo de Log Analytics, puede usar ese espacio de trabajo en una instancia Sentinel de Microsoft para empezar a crear reglas de análisis y de búsqueda de amenazas, que se detallarán en la siguiente sección.
Actualmente no hay reglas analíticas disponibles públicamente para que Microsoft Sentinel detecte los escenarios de ataque de Intune descritos en esta investigación. Por lo tanto, en las siguientes secciones se proporcionan varias piezas de lógica de reglas que se pueden aplicar como reglas analíticas programadas dentro de Microsoft Sentinel para los siguientes escenarios de ataque dentro de Intune:
Para cada una de estas reglas analíticas, se recomienda realizar pruebas y ajustes adecuados en su entorno. Las consultas KQL resaltadas a continuación pueden copiarse y pegarse desde este repositorio KQL-Queries.
La lógica de reglas enlazada a continuación alertará cada vez que un usuario haya creado un script PowerShell o una aplicación para su implementación.
CreatedPSScriptOrWindowsApp.kql
En las capturas de pantalla siguientes se muestra un ejemplo de activación de esta regla en Microsoft Sentinel.
La lógica de reglas vinculada a continuación devuelve cualquier usuario que haya creado y eliminado un script de PowerShell en un plazo de 24 horas. Esto podría ser una prueba de que un atacante intenta cubrir sus huellas tras implementar un guion de PowerShell.
En las capturas de pantalla siguientes se muestra un ejemplo de activación de esta regla en Microsoft Sentinel:
La lógica de reglas vinculada a continuación devuelve cualquier usuario que haya creado y eliminado una aplicación de Windows en un plazo de 24 horas. Esto podría ser una prueba de que un atacante intentó encubrir sus huellas tras implementar una aplicación de Windows.
CreatedAndDeletedWindowsApp.kql
En las capturas de pantalla siguientes se muestra un ejemplo de activación de esta regla en Microsoft Sentinel:
La lógica de reglas vinculada a continuación devuelve a los usuarios que han creado un script de PowerShell o una aplicación de Windows y también han emitido un reinicio del dispositivo en un plazo de 24 horas.
CreatedPSScriptOrWindowsAppForcedRestart.kql
En las capturas de pantalla siguientes se muestra un ejemplo de activación de esta regla en Microsoft Sentinel:
La lógica de la regla que se muestra a continuación devuelve todos los usuarios que hayan creado un script PowerShell o una aplicación Windows y que también hayan emitido una sincronización de dispositivos en un plazo de 24 horas.
CreatedPSScriptOrWindowsAppForcedSync.kql
En las capturas de pantalla siguientes se muestra un ejemplo de activación de esta regla en Microsoft Sentinel:
Se pueden crear políticas de aprobación para que un miembro de un grupo específico tenga que aprobar cualquier nueva implementación de scripts o aplicaciones. La aplicación de estas políticas junto con las reglas de detección descritas anteriormente puede reforzar significativamente la posición de seguridad de su instancia de Intune.
Vaya a "Administración de inquilinos" > "Aprobación de múltiples administradores" > "Políticas de acceso" > "Crear".
Complete la información requerida, como el nombre de la política de acceso, la descripción y el tipo de perfil. Para el tipo de perfil, seleccione "Script".
Añada uno o varios grupos que serán responsables de aprobar cualquier nueva implementación de scripts.
Después de crear su política, la verá rellenada en la pestaña "Políticas de acceso".
Ahora que se aplica la política, cuando un usuario intente crear un nuevo script, recibirá el siguiente mensaje. Tras enviar la solicitud con justificación empresarial, un aprobador de un grupo especificado deberá permitir que el script se implemente.
Los mismos pasos previamente descritos también pueden realizarse para requerir aprobación para cualquier implementación de aplicación. Asegúrese de elegir “Aplicación” en el menú desplegable Tipo de perfil al crear la política de acceso.
Puede ver un resumen de nuestra política que hemos creado que incluye el tipo de perfil de “Aplicación”.
Ahora que la política está aplicada, cuando un usuario intente crear una nueva aplicación, recibirá el siguiente mensaje. Tras enviar la solicitud con una justificación empresarial, un aprobador de un grupo de aprobación especificado deberá aprobarla antes de que la aplicación se implemente.
Microsoft tiene una guía de buenas prácticas de Microsoft Entra ID que destaca orientación detallada sobre cómo proteger su configuración de Microsoft Entra ID. Algunas de las recomendaciones más importantes relacionadas con el abuso de roles privilegiados en Microsoft Intune son:
La adopción de una arquitectura de identidad híbrida y el uso de servicios basados en la nube siguen aumentando. Las organizaciones dependen de estos servicios basados en la nube para gestionar su infraestructura empresarial, lo que incluye la gestión de endpoints de usuario y dispositivos personales que se conectan a Office 365 y otros servicios basados en la nube. Como tal, ser capaz de detectar adecuadamente el uso indebido de servicios basados en la nube como Microsoft Intune se ha vuelto más crítico que nunca. X-Force pretende que esta investigación destaque e inspire una investigación más profunda sobre la defensa de otros servicios críticos basados en la nube que pueden ser abusados por actores de amenazas para el movimiento lateral y la ejecución de código.
Un agradecimiento especial a las siguientes personas por dar su feedback sobre esta investigación y proporcionar una revisión del contenido de las entradas de blog: