Persistencia en el Registro de Windows: Cómo el Malware Sobrevive al Reboot
Guía completa de técnicas de persistencia via registro de Windows usadas por malware. Run keys, Services, AppInit_DLLs, Image File Execution Options, COM hijacking, y las estrategias de detección para cada técnica con Sysmon, Autoruns y reglas Sigma.
El problema de la persistencia
El malware necesita sobrevivir a los reinicios. Sin persistencia, un simple reinicio elimina el malware de la memoria y la infección termina. El registro de Windows es el mecanismo de persistencia más usado por dos razones: está profundamente integrado en el proceso de arranque del sistema, y ofrece docenas de ubicaciones donde configurar la ejecución automática de programas.
Este artículo cataloga las técnicas de persistencia via registro organizadas por privilegio requerido, prevalencia en malware real, y dificultad de detección.
Mapa de persistencia en el registro
Vista general por privilegio
| Privilegio requerido | Técnica | Clave de registro | Prevalencia |
|---|---|---|---|
| Ninguno (usuario) | HKCU Run keys | HKCU\...\Run | Muy alta |
| Ninguno | HKCU RunOnce | HKCU\...\RunOnce | Alta |
| Ninguno | COM hijacking (HKCU) | HKCU\Software\Classes\CLSID | Media |
| Ninguno | Startup folder (via registro) | HKCU\...\Explorer\Shell Folders | Media |
| Admin | HKLM Run keys | HKLM\...\Run | Alta |
| Admin | Services | HKLM\SYSTEM\CurrentControlSet\Services | Muy alta |
| Admin | Winlogon | HKLM\...\Winlogon\Shell | Media |
| Admin | AppInit_DLLs | HKLM\...\Windows\AppInit_DLLs | Baja (deprecated) |
| Admin | Image File Execution Options | HKLM\...\Image File Execution Options | Media |
| Admin | Boot Execute | HKLM\SYSTEM\...\Session Manager\BootExecute | Baja |
| SYSTEM | LSA Authentication/Notification | HKLM\SYSTEM\...\Lsa | Baja (APTs) |
Técnica 1: Run y RunOnce Keys (T1547.001)
Las claves más comunes
Auto-ejecucion al login de cualquier usuario (requiere admin):
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
Auto-ejecucion al login del usuario actual (sin admin):
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
Versiones 32-bit en sistemas 64-bit (WoW64):
HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
HKCU\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
Cómo funciona
Cada valor en estas claves contiene un nombre (arbitrario) y una ruta al ejecutable. Windows ejecuta todos los programas listados en estas claves al iniciar sesión:
[HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"WindowsUpdate"="C:\Users\user\AppData\Roaming\svchost.exe"
"SecurityCenter"="powershell.exe -ep bypass -w hidden -f C:\ProgramData\update.ps1"
"OneDriveSync"="rundll32.exe C:\Users\user\AppData\Local\Temp\payload.dll,DllMain"
Valores sospechosos
| Indicador | Sospecha |
|---|---|
Ruta a %APPDATA%, %TEMP%, %LOCALAPPDATA% | Alta (software legítimo se instala en Program Files) |
| Nombre que imita software legítimo ("WindowsUpdate", "SecurityCenter") | Alta |
Uso de rundll32.exe, regsvr32.exe, mshta.exe | Alta (LOLBins) |
PowerShell con -enc o -ep bypass | Muy alta |
| Ejecutable sin extensión o con extensión doble | Alta |
| Ruta con espacios sin comillas | Media (puede ser explotable, no necesariamente malicioso) |
RunOnce vs Run
- Run: ejecuta el programa en cada inicio de sesión. El valor persiste
- RunOnce: ejecuta el programa una vez y luego elimina el valor. Usado por malware para una ejecución "silenciosa" que no deja rastro permanente en el registro
Prevalencia en malware
Prácticamente todo malware commodity usa Run keys: Agent Tesla, Remcos, NanoCore, FormBook, RedLine, AsyncRAT, y miles más. Es la técnica de persistencia más básica y más común.
Técnica 2: Servicios de Windows (T1543.003)
Claves de registro
HKLM\SYSTEM\CurrentControlSet\Services\[nombre_servicio]
Cada servicio tiene subclaves que definen:
| Valor | Tipo | Significado |
|---|---|---|
ImagePath | REG_EXPAND_SZ | Ruta al ejecutable del servicio |
Start | REG_DWORD | 0=Boot, 1=System, 2=Automatic, 3=Manual, 4=Disabled |
Type | REG_DWORD | 1=Kernel driver, 16=Win32 own process, 32=Win32 shared |
DisplayName | REG_SZ | Nombre visible en services.msc |
Description | REG_SZ | Descripción del servicio |
ObjectName | REG_SZ | Cuenta bajo la que corre (LocalSystem, etc.) |
Cómo lo usa el malware
sc create MalwareService binPath= "C:\ProgramData\payload.exe" start= auto
O via registro directo:
[HKLM\SYSTEM\CurrentControlSet\Services\WindowsTelemetryService]
"ImagePath"="C:\\ProgramData\\telemetry.exe"
"Start"=dword:00000002
"Type"=dword:00000010
"DisplayName"="Windows Telemetry Service"
"Description"="Provides telemetry data collection for Windows diagnostics"
Detección
| Indicador | Método |
|---|---|
| Servicio con ImagePath en directorio no estándar | Autoruns, sc query |
| Servicio sin descripción o con descripción genérica | Autoruns |
| Servicio creado recientemente (comparar con baseline) | Sysmon Event ID 12/13 |
| Servicio con binario sin firma digital | Autoruns (verificar firma) |
| Event ID 7045 (servicio instalado) | Security Event Log |
| Event ID 4697 (servicio instalado, audit) | Security Event Log |
Técnica 3: COM Hijacking (T1546.015)
Concepto
COM (Component Object Model) es el sistema de componentes reutilizables de Windows. Cada objeto COM se identifica por un CLSID (Class ID) y está registrado en el registro con la ruta a su DLL de implementación.
COM hijacking funciona así:
- Identificar un CLSID de un objeto COM que Windows o una aplicación cargan automáticamente
- Registrar una DLL maliciosa para ese CLSID en HKCU (que tiene precedencia sobre HKLM)
- Cuando el sistema o la aplicación intenta instanciar el objeto COM, carga la DLL maliciosa
Por qué es sigiloso
- No modifica Run keys (no aparece en los checks más básicos)
- No crea servicios visibles
- La DLL se carga en el contexto de un proceso legítimo
- HKCU no requiere privilegios de administrador
- Muchos objetos COM se cargan silenciosamente en procesos comunes como
explorer.exe
CLSIDs comúnmente abusados
| CLSID | Objeto | Proceso que lo carga |
|---|---|---|
{BCDE0395-E52F-467C-8E3D-C4579291692E} | MMDeviceEnumerator | explorer.exe, svchost.exe |
{42aedc87-2188-41fd-b9a3-0c966feab6a6} | MruPidlList | explorer.exe |
{F3DA0DC7-AFD4-44A0-A49D-92C8B22A0227} | Copy/Move/Rename Extension | explorer.exe |
{fbeb8a05-beee-4442-804e-409d6c4515e9} | Shell Folder | explorer.exe |
{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7} | CAccPropServicesClass | Múltiples |
Ejemplo
; El CLSID existe en HKLM apuntando a una DLL legitima
[HKLM\SOFTWARE\Classes\CLSID\{BCDE0395-E52F-467C-8E3D-C4579291692E}\InProcServer32]
@="C:\\Windows\\System32\\MMDevAPI.dll"
; El malware crea la misma clave en HKCU (tiene precedencia)
[HKCU\SOFTWARE\Classes\CLSID\{BCDE0395-E52F-467C-8E3D-C4579291692E}\InProcServer32]
@="C:\\Users\\user\\AppData\\Roaming\\evil.dll"
Cuando explorer.exe carga el objeto COM, busca primero en HKCU, encuentra la DLL maliciosa y la carga.
Detección
- Sysmon Event ID 13: SetValue en
HKCU\Software\Classes\CLSID\(cualquier escritura aquí es sospechosa) - Autoruns: tab "Explorer" muestra COM objects registrados en HKCU
- Comparar CLSIDs registrados en HKCU con un baseline limpio
Técnica 4: Winlogon (T1547.004)
Claves clave
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
Valor por defecto: "explorer.exe"
Malware añade: "explorer.exe, C:\malware.exe"
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
Valor por defecto: "C:\Windows\system32\userinit.exe,"
Malware añade: "C:\Windows\system32\userinit.exe, C:\malware.exe"
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify
Subclaves que registran DLLs para eventos de Winlogon
Impacto
Modificar Winlogon\Shell es particularmente destructivo: si el valor es incorrecto, Windows no puede iniciar el escritorio (explorer.exe no se lanza). Algunos malware explotan esto como mecanismo de bloqueo de tipo "locker ransomware".
Técnica 5: Image File Execution Options (T1546.012)
Concepto
IFEO (Image File Execution Options) es un mecanismo legítimo de Windows para depuración: permite especificar un debugger que se ejecute automáticamente cuando un programa específico se lanza.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe
"Debugger"="C:\malware.exe"
Cuando el usuario ejecuta notepad.exe, Windows lanza C:\malware.exe notepad.exe en su lugar.
Uso malicioso
| Uso | Ejemplo |
|---|---|
| Reemplazar un programa legítimo | IFEO en taskmgr.exe para impedir que el usuario vea procesos |
| Persistencia sigilosa | IFEO en un programa que se ejecuta frecuentemente |
| Bloquear herramientas de seguridad | IFEO en MsMpEng.exe (Defender) apuntando a un binario vacío |
| Ejecución indirecta | IFEO en sethc.exe (Sticky Keys) para backdoor de accesibilidad |
Sticky Keys Backdoor
Técnica clásica de persistencia y backdoor:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe
"Debugger"="cmd.exe"
Presionar Shift 5 veces en la pantalla de login invoca sethc.exe, que ahora ejecuta cmd.exe con privilegios de SYSTEM. Acceso sin credenciales.
Variantes: utilman.exe (Win+U), osk.exe (teclado en pantalla), narrator.exe.
Técnica 6: AppInit_DLLs (T1546.010)
Clave de registro
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
"AppInit_DLLs"="C:\evil.dll"
"LoadAppInit_DLLs"=dword:00000001
Comportamiento
Cuando LoadAppInit_DLLs es 1, Windows carga la DLL especificada en AppInit_DLLs en cada proceso que carga user32.dll (prácticamente todos los procesos GUI).
Estado actual
Microsoft deprecó AppInit_DLLs en Windows 8+ y lo deshabilitó por defecto con Secure Boot activo. Sin embargo, en sistemas legacy o con Secure Boot deshabilitado, sigue funcional.
Herramientas de detección
Autoruns (Sysinternals)
La herramienta definitiva para auditar persistencia en Windows:
- Muestra más de 40 ubicaciones de auto-arranque
- Verifica firmas digitales de cada entrada
- Permite comparar con un estado anterior (baseline)
- Exporta resultados para análisis
- Versión CLI (
autorunsc.exe) para automatización
autorunsc.exe -accepteula -a * -c -h -s -v -vt > autoruns_output.csv
Flags: -a * (todas las ubicaciones), -c (CSV), -h (hashes), -s (verificar firmas), -v (VirusTotal), -vt (submit a VT).
Sysmon para registro
| Event ID | Evento | Filtro recomendado |
|---|---|---|
| 12 | RegistryEvent (CreateKey) | Claves en Run, Services, CLSID |
| 13 | RegistryEvent (SetValue) | Valores en Run, Winlogon, IFEO |
| 14 | RegistryEvent (RenameKey) | Rename de claves de persistencia |
Regla Sigma: Run key modification
title: Suspicious Run Key Modification
id: a1234567-b2c3-d4e5-f678-9abcdef01234
status: stable
logsource:
category: registry_set
product: windows
detection:
selection:
TargetObject|contains:
- '\CurrentVersion\Run\'
- '\CurrentVersion\RunOnce\'
filter_legit:
Details|contains:
- 'C:\Program Files'
- 'C:\Program Files (x86)'
- 'C:\Windows\System32'
condition: selection and not filter_legit
level: high
tags:
- attack.persistence
- attack.t1547.001
Mapeo MITRE ATT&CK
| Técnica | ID | Persistencia via registro |
|---|---|---|
| Boot or Logon Autostart Execution | T1547 | Técnica padre |
| Registry Run Keys / Startup Folder | T1547.001 | Run, RunOnce, Startup folder |
| Winlogon Helper DLL | T1547.004 | Winlogon Shell, Userinit, Notify |
| Create or Modify System Process: Windows Service | T1543.003 | Services key |
| Event Triggered Execution: COM Object Hijacking | T1546.015 | CLSID en HKCU |
| Event Triggered Execution: IFEO Injection | T1546.012 | Image File Execution Options |
| Event Triggered Execution: AppInit DLLs | T1546.010 | AppInit_DLLs |
Checklist de auditoría de persistencia
Para una auditoría rápida de un sistema Windows sospechoso:
- Ejecutar Autoruns y exportar a CSV. Comparar con un baseline limpio
- Verificar firmas digitales de todas las entradas. Entradas sin firma = investigar
- Revisar Run keys en HKCU y HKLM. Rutas fuera de Program Files = sospechoso
- Listar servicios recientes:
Get-WinEvent -FilterHashtable @{LogName='System'; Id=7045} | Select TimeCreated, Message - Verificar CLSID en HKCU:
reg query HKCU\SOFTWARE\Classes\CLSID /s. Cualquier entrada es sospechosa - Verificar IFEO:
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" /s /v Debugger - Verificar Winlogon:
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shelly/v Userinit
Fuentes y referencias
- Microsoft. "Run and RunOnce Registry Keys." Microsoft Docs.
- Microsoft. "Image File Execution Options." Microsoft Docs.
- Russinovich, M. "Autoruns for Windows." Sysinternals, Microsoft.
- Russinovich, M. et al. "Windows Internals Part 1." Microsoft Press, 2017.
- MITRE ATT&CK. "Boot or Logon Autostart Execution (T1547)." https://attack.mitre.org/techniques/T1547/
- MITRE ATT&CK. "Event Triggered Execution (T1546)." https://attack.mitre.org/techniques/T1546/
- Sikorski, M. & Honig, A. "Practical Malware Analysis." No Starch Press, 2012.
- Red Canary. "Persistence Techniques: Registry." 2024 Threat Detection Report.
- Elastic Security. "Persistence via Registry Detection Rules." Elastic SIEM.
- hasherezade. "PE-sieve and Hollows Hunter." https://github.com/hasherezade/
Preguntas frecuentes
Libros recomendados
Artículos relacionados
Windows API Calls Más Usadas por Malware: Guía de Referencia para Analistas
DLL Injection en Windows: Técnicas, Variantes y Detección
Scheduled Tasks y COM Hijacking: Persistencia Avanzada en Windows
Registro de Windows en Memoria: hivelist, printkey y Extraccion de Artefactos
Persistencia WMI y Event Subscription: Hunting en el SOC
De Alerta EDR a Informe Ejecutivo: Caso End-to-End Completo
Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.