SOC Prime Bias: Alta

26 Mar 2026 16:24

T1547.004 en MITRE ATT&CK: Ayudante de Winlogon Explicado

Author Photo
Ruslan Mikhalov Jefe de Investigación de Amenazas en SOC Prime linkedin icon Seguir
T1547.004 en MITRE ATT&CK: Ayudante de Winlogon Explicado
shield icon

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

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:

    1. Cree una carga maliciosa (por ejemplo, C:Tempevil.exe).
    2. Agregue un nuevo valor a HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShell apuntando a la carga útil.
    3. Verifique que el cambio tuvo efecto, luego cierre la sesión/inicie para lograr la ejecución.
  • 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."
    }