LegacyHive: El error del servicio de perfil de usuario de Windows que carga el archivo hive de registro de otro usuario
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
LegacyHive es una vulnerabilidad de escalada de privilegios locales sin corregir en el Windows User Profile Service (ProfSvc). Un atacante puede usar una combinación de envenenamiento del registro, enlaces simbólicos del administrador de objetos y una condición de carrera TOCTOU a través de oplocks para obligar a un servicio a nivel de SISTEMA a cargar un hive de registro del usuario objetivo. Esto permite que un usuario con bajos privilegios obtenga acceso no autorizado a datos del registro sensibles o, potencialmente, logre una completa compromisión del SISTEMA.
Investigación
El investigador Nightmare-Eclipse desarrolló una prueba de concepto (PoC) que explota la discrepancia entre las operaciones de archivos a nivel de SISTEMA y el enrutamiento controlado por el usuario. La investigación demuestra cómo modificar el valor del registro Local AppData puede redirigir el servicio al espacio de nombres del administrador de objetos NT. Utilizando un bloqueo oportunista (oplock) en un archivo señuelo, el atacante puede intercambiar un enlace simbólico en el momento exacto en que el servicio intenta cargar el hive.
Mitigación
Microsoft debe implementar la canonización de rutas para asegurar que las rutas resueltas permanezcan dentro del directorio legítimo del perfil de usuario y rechazar prefijos de dispositivo/administrador de objetos. Además, los desarrolladores deben usar protección de reanálisis (FILE_FLAG_OPEN_REPARSE_POINT) y realizar E/S dentro del contexto de seguridad del usuario en lugar del contexto del SISTEMA para prevenir escenarios de confusión de delegación.
Respuesta
Los defensores deben monitorear de inmediato para detectar cargas inusuales del registro (RegLoadKey) para cuentas que no han iniciado sesión de forma interactiva y observar la creación de directorios de objetos bajo BaseNamedObjectsRestricted. Se deben usar herramientas de control de aplicaciones como WDAC o AppLocker para prevenir la ejecución de binarios sin firmar. Una vez que Microsoft lance un parche oficial, debe ser priorizado para su implementación en todas las instalaciones de escritorio y servidor de Windows.
Flujo de Ataque
Detecciones
Posible Comportamiento de Explotación LegacyHive (vía registro_event)
Ver
Posible Comportamiento de Explotación LegacyHive (vía file_event)
Ver
Posible Comportamiento de Explotación LegacyHive (vía cmdline)
Ver
Probable Uso de Hacktools de Windows [Parte 3] (vía file_event)
Ver
Probable Uso de Hacktools de Windows [Parte 3] (vía cmdline)
Ver
Detección de Ataque de Escalada de Privilegios LegacyHive [Evento de Registro de Windows]
Ver
Detectar Intento de Explotación de LegacyHive a través de CreateProcessWithLogonW y Notepad en Estado Suspendido [Creación de Procesos de Windows]
Ver
Resumen Ejecutivo
- ID de Caso de Prueba: TC-20240522-K9P2L
- TTPs: T1068, T1548
-
Resumen de la Lógica de la Regla de Detección: Detecta intentos de explotar la vulnerabilidad LegacyHive monitoreando
notepad.exesiendo lanzado con elpatrón de API CreateProcessWithLogonW en la línea de comandos.Lenguaje/Formato de la Regla de Detección: - Detection Rule Language/Format: yaml
- Entorno de Seguridad Objetivo: Windows OS, Logs de Eventos de Windows (Creación de Procesos), EDR/SIEM.
- Puntuación de Resiliencia (1-5): 2
-
Justificación: La regla depende en gran medida de una cadena específica (
patrón de API CreateProcessWithLogonW en la línea de comandos.) que aparece en elcampo CommandLine. Un adversario puede omitir esto fácilmente utilizando diferentes llamadas API que logran el mismo resultado o utilizando diferentes nombres de proceso en lugar defield. An adversary can easily bypass this by using different API calls that achieve the same result or by using different process names instead ofnotepad.exe. - Hallazgos Clave: La detección es altamente específica para una sola implementación de exploit y es extremadamente frágil contra pequeñas variaciones en el vector de ataque.
-
Recomendación: Ampliar la detección para monitorear variantes sospechosas de
CreateProcessen múltiples binarios comunes (por ejemplo,calc.exe,cmd.exe) y monitorear las anomalías del Servicio de Perfil de Usuario (ProfSvc).
Entorno de Simulación y Contexto
-
TTPs Bajo Prueba:
- T1068: Explotación para Escalada de Privilegios
- T1548: Abuso de Mecanismos de Escalada de Privilegios
-
Contexto y Relevancia de TTP: El exploit LegacyHive se basa en coaccionar un servicio a nivel de SISTEMA para realizar acciones en nombre de un usuario. Utilizando
patrón de API CreateProcessWithLogonW en la línea de comandos.para iniciar un proceso en estado suspendido, un atacante puede manipular el entorno para cargar un hive de registro malicioso. Monitorear los artefactos específicos de la línea de comandos de esta llamada API está destinado a captar la fase de explotación. -
Entorno Objetivo:
- OS: Windows 10/11 o Windows Server 2019/2022
- Registro: Sysmon (ID de Evento 1) o Log de Eventos de Seguridad de Windows (ID de Evento 4688) con Auditoría de Línea de Comando habilitada.
- Pila de Seguridad: SIEM (por ejemplo, Splunk, Microsoft Sentinel)
Telemetría y Comprobación Previa de Línea de Base
Racional: Antes de simular el ataque, debemos confirmar que el host objetivo está configurado para generar los registros necesarios, que estos registros son ingeridos por el SIEM y que la regla de detección no se activa ante actividad benigna. Sin esta validación, cualquier resultado de prueba es poco confiable.
-
1. Instrucciones de Configuración de Telemetría:
-
- Asegúrese de que «Auditar Creación de Proceso» esté habilitado a través de la Política de Grupo (Configuración del Equipo > Configuraciones de Windows > Configuraciones de Seguridad > Configuración de Política de Auditoría Avanzada > Seguimiento Detallado).
-
- Asegúrese de que «Incluir línea de comando en eventos de creación de proceso» esté habilitado (a través del Registro:
HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesSystemAuditProcessCreationIncludeCmdLine).
- Asegúrese de que «Incluir línea de comando en eventos de creación de proceso» esté habilitado (a través del Registro:
-
- Instale Sysmon y asegúrese de que el ID de Evento 1 (Creación de Proceso) se esté recopilando.
-
-
2. Ingestión y Validación de Línea de Base:
-
Acción (Telemetría Benigna): Inicie una instancia estándar de Notepad para asegurarse de que el registro de creación de procesos esté funcional sin activar la detección del exploit.
Start-Process "notepad.exe" -
Consulta de Validación (Ingestión):
DeviceProcessEvents | donde FileName =~ "notepad.exe" | donde ProcessCommandLine !contiene "CreateProcessWithLogonW"
-
Ejecución de Simulación
Prerequisito: La Comprobación Previa de Línea de Base de Telemetría debe haber pasado.
Racional: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente las TTPs identificadas y buscan generar exactamente la telemetría esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a diagnósticos erróneos.
-
Narrativa del Ataque y Comandos: El atacante busca explotar la vulnerabilidad LegacyHive para escalar privilegios a SISTEMA. Para hacer esto, utilizan un script que llama a la
patrón de API CreateProcessWithLogonW en la línea de comandos.API de Windows. El objetivo es lanzarnotepad.exeen estado suspendido. La simulación usa un envoltorio PowerShell para imitar el patrón de argumento de línea de comandos que la regla de detección está buscando, específicamente apuntando a la cadenapatrón de API CreateProcessWithLogonW en la línea de comandos.dentro del contexto de ejecución denotepad.exe. -
Script de Prueba de Regresión:
# Simulación del intento de explotación de LegacyHive a través de inyección de artefacto de línea de comandos # Nota: Este script simula el patrón de cadena de línea de comando para pruebas de detección. $targetProcess = "notepad.exe" $fakeArgument = "CreateProcessWithLogonW" Write-Host "[+] Iniciando simulación del intento de explotación de LegacyHive..." # Usamos cmd /c para asegurar que la cadena de línea de comando se pase explícitamente # y aparezca en la telemetría de creación de procesos. Start-Process "cmd.exe" -ArgumentList "/c $targetProcess $fakeArgument" Write-Host "[+] Comando de simulación enviado. Revise el SIEM para notepad.exe con CreateProcessWithLogonW en la línea de comandos." -
Comandos de Limpieza:
# Terminar cualquier proceso de notepad o cmd que quede de la simulación Stop-Process -Name "notepad" -ErrorAction SilentlyContinue Stop-Process -Name "cmd" -ErrorAction SilentlyContinue