Persistence (TA0003): Cómo el Malware Sobrevive al Reboot
Análisis completo de la táctica Persistence de MITRE ATT&CK (TA0003): 19 técnicas de persistencia que el malware usa para sobrevivir reinicios, actualizaciones y limpieza. Registry Run keys, scheduled tasks, servicios, WMI subscriptions, web shells, bootkits y más.
Persistence es cómo el malware asegura que su acceso sobreviva reinicios, parches y limpieza parcial
La táctica Persistence (TA0003) documenta las técnicas que los adversarios usan para mantener su acceso a un sistema comprometido a través de reinicios, cambios de credenciales y otras interrupciones. Sin persistencia, un simple reboot eliminaría el acceso del atacante. MITRE ATT&CK documenta 19 técnicas principales con más de 80 sub-técnicas, cubriendo desde registry keys hasta firmware implants.
Clasificación por nivel de privilegio
Persistencia sin privilegios (usuario estándar)
| Técnica | ID | Mecanismo | Detección |
|---|---|---|---|
| Registry Run Keys (HKCU) | T1547.001 | Clave en HKCU...\Run ejecuta al iniciar sesión | Sysmon 12/13, Autoruns |
| Startup Folder | T1547.001 | Acceso directo en %APPDATA%...\Startup | Sysmon 11, Autoruns |
| Logon Script (user) | T1037.001 | Script en UserInitMprLogonScript | Sysmon 12/13 |
| Scheduled Task (user) | T1053.005 | Tarea programada sin elevación | Event 4698 |
| Browser Extensions | T1176 | Extensión maliciosa de Chrome/Firefox | Inventario de extensiones |
| Office templates | T1137 | Normal.dotm o add-ins modificados | Monitorizar %APPDATA%\Microsoft |
| .bashrc / .profile (Linux) | T1546.004 | Comando ejecutado al abrir terminal | auditd, hash de dotfiles |
| XDG Autostart (Linux) | T1547.013 | Entrada desktop en ~/.config/autostart | Monitor de directorio |
| SSH authorized_keys | T1098.004 | Clave pública añadida | auditd en authorized_keys |
Persistencia con privilegios de administrador
| Técnica | ID | Mecanismo | Detección |
|---|---|---|---|
| Registry Run Keys (HKLM) | T1547.001 | Clave en HKLM...\Run, afecta a todos los usuarios | Sysmon 12/13, Autoruns |
| Windows Service | T1543.003 | Servicio registrado en SCM | Event 7045, Autoruns |
| Scheduled Task (SYSTEM) | T1053.005 | Tarea ejecutada como SYSTEM | Event 4698 con usuario SYSTEM |
| WMI Event Subscription | T1546.003 | Filter + Consumer + Binding | Sysmon 19/20/21 |
| DLL Search Order Hijacking | T1574.001 | DLL maliciosa en ruta prioritaria | Sysmon 7, verificar firmas |
| COM Hijacking | T1546.015 | CLSID apunta a DLL maliciosa | Sysmon 12/13 en CLSID |
| AppInit DLLs | T1546.010 | DLL cargada en cada proceso GUI | Sysmon 12/13, registro |
| Image File Execution Options | T1546.012 | Debugger redirige ejecución | Sysmon 12/13 |
| Systemd service (Linux) | T1543.002 | Unit file en /etc/systemd/system | auditd, systemctl list |
| Cron (root) | T1053.003 | Entrada en /etc/crontab o /var/spool/cron | auditd en archivos cron |
| Kernel modules (Linux) | T1547.006 | Modulo LKM cargado al boot | lsmod, modprobe monitoring |
Persistencia avanzada (nivel firmware/boot)
| Técnica | ID | Mecanismo | Detección |
|---|---|---|---|
| Bootkit | T1542.003 | Modificación del MBR/VBR | Medidas pre-boot, Secure Boot |
| UEFI firmware | T1542.001 | Implant en SPI flash | CHIPSEC, firmware integrity |
| Pre-OS Boot | T1542 | Modificar bootloader | Secure Boot + measured boot |
Las 5 técnicas de persistencia más frecuentes en detalle
1. T1547.001: Registry Run Keys / Startup Folder
La técnica más básica y más usada. El malware añade una entrada en el registro o un acceso directo en la carpeta de inicio para ejecutarse automáticamente al iniciar sesión.
Claves de registro principales:
User level (HKCU):
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
System level (HKLM, requiere admin):
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
Startup folders:
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup (usuario)
%ProgramData%\Microsoft\Windows\Start Menu\Programs\StartUp (todos)
Detección:
- Sysmon Event 12/13: creación/modificación de valores en claves Run
- Autoruns: lista todos los puntos de autostart
- Baseline: comparar con snapshot conocido
2. T1053.005: Scheduled Task
Tareas programadas para ejecutar código periódicamente o en eventos específicos.
Creación via CLI:
schtasks /create /tn "WindowsUpdate" /tr "C:\Users\Public\update.exe" /sc onlogon /ru SYSTEM
Creación via COM object (más sigiloso):
$service = New-Object -ComObject "Schedule.Service"
$service.Connect()
...
Detección:
- Event 4698: nueva tarea creada
- Sysmon Event 1: schtasks.exe con /create
- Revisar: tareas que ejecutan desde %TEMP%, %PUBLIC%, %APPDATA%
- Tareas con nombres que imitan servicios legítimos ("WindowsUpdate", "SystemHealth")
3. T1543.003: Windows Service
Registrar un servicio malicioso que se ejecuta al inicio del sistema.
sc create "WindowsHealthService" binPath= "C:\Windows\Temp\svc.exe" start= auto
sc description "WindowsHealthService" "Windows Health Monitoring Service"
Detección:
- Event 7045: nuevo servicio instalado
- Sysmon Event 12/13: claves de servicio en HKLM\SYSTEM\CurrentControlSet\Services
- Alertar sobre: servicios con binarios en rutas no estándar, sin firma digital, o con nombres genéricos
4. T1546.003: WMI Event Subscription
Persistencia "invisible" usando el subsistema WMI de Windows. Tres componentes:
1. Event Filter: define el trigger (ej: cada 60 segundos, o al iniciar sesión)
2. Event Consumer: define la acción (ej: ejecutar script PowerShell)
3. Filter-to-Consumer Binding: conecta el trigger con la acción
No crea archivos visibles, no aparece en Autoruns clásico, y sobrevive reinicios. Es la persistencia favorita de frameworks como Cobalt Strike y APTs como APT29.
Detección:
- Sysmon Event 19: WMI Event Filter creado
- Sysmon Event 20: WMI Event Consumer creado
- Sysmon Event 21: WMI Filter-to-Consumer Binding
- PowerShell:
Get-WMIObject -Namespace root\subscription -Class __EventFilter
5. T1505.003: Web Shell
Script malicioso instalado en un servidor web que proporciona acceso remoto via HTTP.
Ejemplos: China Chopper, P0wnyShell, WSO, web shells ASP/JSP/PHP minimalistas (una línea de código puede ser suficiente).
Ejemplo minimalista PHP (una línea):
<?php system($_GET['cmd']); ?>
El atacante accede via:
https://victima.com/uploads/shell.php?cmd=whoami
Detección:
- File integrity monitoring en directorios web
- Buscar archivos nuevos con funciones peligrosas (system, exec, eval, passthru)
- Monitorizar procesos hijo de IIS/Apache/Nginx (w3wp.exe → cmd.exe es anómalo)
- WAF: detectar patrones de ejecución de comandos en URLs
Persistencia en Linux: puntos clave
| Mecanismo | Archivo/Ubicación | Detección |
|---|---|---|
| Crontab | /etc/crontab, /var/spool/cron/ | auditd + hash baseline |
| Systemd service | /etc/systemd/system/*.service | systemctl list + auditd |
| .bashrc / .profile | ~/.bashrc, ~/.profile | Integrity monitoring |
| SSH authorized_keys | ~/.ssh/authorized_keys | auditd + baseline |
| LD_PRELOAD | /etc/ld.so.preload | Integrity monitoring |
| Kernel module | /etc/modules, /lib/modules/ | lsmod + signing |
| init.d scripts | /etc/init.d/ | Integrity monitoring |
| At jobs | /var/spool/at/ | auditd |
Detección: enfoque práctico
Herramientas esenciales
| Herramienta | Plataforma | Qué cubre |
|---|---|---|
| Autoruns (Sysinternals) | Windows | 30+ categorías de autostart |
| Sysmon | Windows | Events 12/13 (registro), 19/20/21 (WMI) |
| KAPE | Windows | Recolección forense de artefactos de persistencia |
| osquery | Multi | Queries SQL sobre scheduled tasks, services, cron |
| Velociraptor | Multi | Hunting de persistencia a escala |
| auditd | Linux | File monitoring + process tracking |
Regla general de detección
Toda persistencia tiene un denominador común: algo nuevo se crea que no existía antes. Una nueva clave de registro, un nuevo servicio, una nueva tarea, un nuevo archivo en Startup. La detección se basa en:
- Baseline: saber qué es normal en tus sistemas
- Monitoring: alertar cuando algo nuevo aparece fuera del baseline
- Hunting: buscar periódicamente persistencia en todos los endpoints
Conclusión
Persistence es la táctica que convierte un acceso temporal en un compromiso duradero. Registry Run keys, scheduled tasks y servicios concentran la mayoría de la persistencia real. Sysmon con configuración adecuada y Autoruns son las herramientas mínimas para detectarla. La siguiente táctica, Privilege Escalation, es cómo el atacante obtiene los permisos necesarios para las técnicas de persistencia más avanzadas.
Fuentes y referencias
- MITRE ATT&CK: Persistence (TA0003)
- Sysinternals: Autoruns documentation
- Sysmon: Configuration guide (SwiftOnSecurity/Olaf Hartong)
- Red Canary: "Persistence techniques ranked by prevalence" (2025)
- SANS: "Hunt Evil" poster (persistence artifacts)
Preguntas frecuentes
Artículos relacionados
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.