Hunting de Mecanismos de Persistencia: Registry, Scheduled Tasks, Services y WMI
Guia de threat hunting para detectar mecanismos de persistencia en Windows. Cubre Run keys del registro, tareas programadas, servicios maliciosos, WMI Event Subscriptions, DLL hijacking y carpetas de inicio con consultas de deteccion.
Por Que Cazar Persistencia
La persistencia (MITRE ATT&CK Tactic TA0003) es la capacidad de un adversario de mantener acceso a un sistema comprometido a traves de reinicios, cambios de credenciales o interrupciones. Sin persistencia, un adversario pierde acceso cada vez que el sistema se reinicia.
Para el threat hunter, la persistencia tiene una propiedad muy valiosa: es estatica. A diferencia de la ejecucion en memoria (que desaparece con un reinicio) o el movimiento lateral (que es un evento puntual), la persistencia deja artefactos permanentes en disco o en la configuracion del sistema. Esto significa que se puede detectar buscando en cualquier momento, no solo durante la ejecucion.
Registry Run Keys (T1547.001)
Las claves Run del registro de Windows son el mecanismo de persistencia mas simple y mas usado. Un valor en una clave Run hace que Windows ejecute el programa especificado cada vez que un usuario inicia sesion (HKCU) o cada vez que el sistema arranca (HKLM).
Claves de registro criticas
Claves de autoarranque principales:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce
Claves adicionales usadas por adversarios:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
(valores Shell, Userinit, Notify)
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\
Shell Folders
HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\
User Shell Folders
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\
BootExecute
Hunting con Sysmon Event ID 13
Sysmon Event ID 13 (RegistryEvent - Value Set) registra cada modificacion de valores en el registro. Configurando Sysmon para monitorizar las claves de persistencia, se obtiene deteccion en tiempo real de nuevas entradas.
# Nuevas entradas en Run keys
event.code: "13" AND
registry.path: (
*CurrentVersion\\Run\\* OR
*CurrentVersion\\RunOnce\\* OR
*Winlogon\\Shell* OR
*Winlogon\\Userinit*
) AND
NOT registry.value: (known_legitimate_value1 OR known_legitimate_value2)
Hunting con Autoruns baseline
Sysinternals Autoruns captura todos los puntos de autoarranque del sistema. La estrategia de hunting es:
- Capturar un baseline con Autoruns en todos los endpoints (exportar a CSV)
- Programar capturas periodicas (semanal o diaria)
- Comparar cada captura con el baseline: las diferencias son candidatas a investigacion
- Priorizar entradas sin firma digital, en rutas no estandar o con hashes desconocidos
# Capturar autoruns en formato CSV
autorunsc64.exe -a * -c -h -s -v -vt > autoruns_baseline.csv
# Comparar con baseline anterior (PowerShell)
Compare-Object (Import-Csv baseline_old.csv) (Import-Csv baseline_new.csv) -Property "Image Path"
Scheduled Tasks (T1053.005)
Las tareas programadas permiten ejecutar comandos o programas en un horario definido o en respuesta a un evento. Los adversarios las usan para persistencia y ejecucion periodica de payloads.
Artefactos detectables
Windows Event Logs:
- Event ID 4698: nueva tarea programada creada (Security log)
- Event ID 4702: tarea programada actualizada
Sysmon:
- Event ID 1: ejecucion de schtasks.exe con parametro /create
- Event ID 11: creacion de archivo XML de tarea en C:\Windows\System32\Tasks\
Archivos en disco:
- Las tareas se almacenan como XML en
C:\Windows\System32\Tasks\ - Cada archivo contiene la definicion completa (trigger, accion, cuenta)
Consulta de hunting
# Creacion de tareas programadas sospechosas
event.code: "4698" AND
winlog.event_data.TaskContent: (
*powershell* OR *cmd.exe* OR *wscript* OR
*mshta* OR *rundll32* OR *regsvr32* OR
*certutil* OR *bitsadmin*
)
# Splunk: tareas nuevas que ejecutan scripts o LOLBins
index=wineventlog EventCode=4698
| spath input=TaskContent output=exec path="Task.Actions.Exec.Command"
| where match(exec, "(?i)(powershell|cmd|wscript|mshta|rundll32)")
| table _time, Computer, SubjectUserName, TaskName, exec
Indicadores de tareas sospechosas
Factores que hacen una tarea sospechosa:
- Ejecuta PowerShell, cmd.exe u otros interpretes
- La accion apunta a rutas temporales (%TEMP%, %APPDATA%)
- Se ejecuta con cuenta SYSTEM sin justificacion
- Nombre de la tarea imita una tarea legitima de Windows
- Trigger configurado para ejecutar en cada logon o cada pocos minutos
- Creada por un proceso no interactivo (no taskschd.msc)
- XML de la tarea contiene strings codificados o URLs
Servicios Windows (T1543.003)
Los adversarios pueden crear servicios Windows para ejecutar codigo con privilegios de SYSTEM de forma persistente. Los servicios se inician automaticamente con el sistema.
Artefactos detectables
Windows System Log:
- Event ID 7045: nuevo servicio instalado
Sysmon:
- Event ID 1: sc.exe con parametros create y binpath=
- Event ID 13: modificacion de claves de registro en HKLM\SYSTEM\CurrentControlSet\Services\
Consulta de hunting
# Nuevos servicios instalados
event.code: "7045" AND
NOT winlog.event_data.ServiceName: (
known_service_1 OR known_service_2 OR
WinDefend OR BITS OR wuauserv
)
Indicadores de servicios sospechosos
Factores que hacen un servicio sospechoso:
- ServiceFileName apunta a %TEMP%, %PUBLIC% o rutas inusuales
- ServiceFileName usa cmd.exe /c o powershell.exe como wrapper
- ServiceFileName contiene caracteres de ofuscacion
- ServiceType es "user mode service" con cuenta LocalSystem
- Nombre del servicio es corto o aleatorio
- El servicio no esta documentado en la CMDB
- Fue creado fuera del proceso normal de despliegue de software
Servicios creados por PsExec
PsExec y sus variantes crean servicios temporales para ejecutar comandos remotos. Estos servicios tienen nombres caracteristicos:
Nombres de servicio de herramientas de movimiento lateral:
- PSEXESVC (PsExec de Sysinternals)
- csexecsvc (CSExec)
- PAExec-[PID]-[hostname] (PAExec)
- [random 8 chars] (Impacket, CrackMapExec)
WMI Event Subscriptions (T1546.003)
WMI Event Subscriptions son un mecanismo de persistencia avanzado que ejecuta codigo en respuesta a eventos del sistema (logon, timer, cambio de proceso). Son mas dificiles de detectar que las Run keys porque no aparecen en Autoruns por defecto y requieren consultas WMI especificas.
Componentes de una WMI Event Subscription
Una subscription de WMI tiene tres componentes:
- Event Filter: define el trigger (cuando se ejecuta)
- Event Consumer: define la accion (que se ejecuta)
- Filter to Consumer Binding: conecta el filter con el consumer
Hunting de WMI subscriptions
Sysmon Event ID 19, 20, 21:
- ID 19: WmiEventFilter activity detected (filter creado)
- ID 20: WmiEventConsumer activity detected (consumer creado)
- ID 21: WmiEventConsumerToFilter activity detected (binding creado)
# WMI Event Subscriptions nuevas
event.code: ("19" OR "20" OR "21") AND
NOT winlog.event_data.Name: (known_wmi_subscription)
Consulta WMI directa (hunting en vivo):
# Listar Event Filters
Get-WMIObject -Namespace root\Subscription -Class __EventFilter
# Listar Event Consumers
Get-WMIObject -Namespace root\Subscription -Class __EventConsumer
# Listar Bindings
Get-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding
Consumer types usados por adversarios
CommandLineEventConsumer: ejecuta un comando
- Buscar: CommandLineTemplate con powershell, cmd, scripts
ActiveScriptEventConsumer: ejecuta VBScript o JScript
- Buscar: ScriptText conteniendo codigo
LogFileEventConsumer: escribe en un archivo de log
- Menos comun pero puede usarse para staging
DLL Hijacking y Sideloading (T1574.001, T1574.002)
El DLL hijacking/sideloading explota el orden de busqueda de DLLs de Windows. Si un adversario coloca una DLL maliciosa en un directorio que se busca antes que el directorio legitimo, el ejecutable cargara la DLL maliciosa.
Hunting de DLL sideloading
Sysmon Event ID 7 (Image Loaded):
# DLLs sin firma cargadas por ejecutables firmados
event.code: "7" AND
winlog.event_data.Signed: "false" AND
winlog.event_data.Image: (
*\\Program Files\\* OR *\\Windows\\*
) AND
winlog.event_data.ImageLoaded: (
*\\Temp\\* OR *\\AppData\\* OR *\\Users\\Public\\* OR
*\\ProgramData\\*
)
DLLs comunes objetivo de sideloading
Varios ejecutables legitimos firmados por Microsoft son conocidos por ser vulnerables a sideloading:
Ejecutables frecuentemente abusados:
- OneDrive (version.dll, secur32.dll)
- Teams (WINHTTP.dll)
- Notepad++ (SciLexer.dll)
- WinSCP (DragExt.dll)
- 7-Zip (7z.dll en ruta alternativa)
Buscar: Event ID 7 donde ImageLoaded es una de estas DLLs
pero se carga desde una ruta diferente a la habitual.
Startup Folder (T1547.001)
La carpeta de inicio ejecuta automaticamente los archivos que contiene cuando un usuario inicia sesion.
Rutas a monitorizar
Startup por usuario:
C:\Users\[usuario]\AppData\Roaming\Microsoft\Windows\
Start Menu\Programs\Startup\
Startup global (todos los usuarios):
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\
StartUp\
Hunting
Sysmon Event ID 11 (FileCreate):
# Archivos creados en carpetas de startup
event.code: "11" AND
file.path: (*Startup* AND (*Start Menu* OR *ProgramData*)) AND
file.extension: (exe OR dll OR lnk OR bat OR cmd OR vbs OR ps1 OR hta OR js)
Los archivos .lnk (accesos directos) son especialmente usados porque pueden apuntar a cualquier comando y no levantan sospecha visual.
Estrategia de Hunting Integral para Persistencia
Snapshot periodico
La mejor estrategia para persistencia es tomar snapshots periodicos y comparar:
- Capturar todos los puntos de persistencia con Autoruns (Run keys, servicios, tareas, WMI)
- Exportar a CSV centralizado
- Comparar con el snapshot anterior
- Investigar las diferencias
Hunting reactivo post-incidente
Cuando un incidente se confirma, la busqueda de persistencia es prioritaria:
- Revisar todas las Run keys del host comprometido
- Listar tareas programadas no estandar
- Verificar servicios instalados recientemente (Event ID 7045)
- Consultar WMI Event Subscriptions
- Revisar carpetas de startup
- Buscar DLLs sin firma en directorios de aplicaciones
Correlacion temporal
Correlacionar la creacion de persistencia con otros eventos:
- Un nuevo valor en Run key creado minutos despues de un logon tipo 3 sospechoso indica movimiento lateral seguido de persistencia
- Una tarea programada creada poco despues de la ejecucion de un documento de Office indica phishing exitoso
- Un servicio nuevo correlacionado con acceso a ADMIN$ via SMB indica PsExec o variante
Conclusion
La persistencia es la fase del ataque donde el hunter tiene mas ventaja. Los mecanismos de persistencia son artefactos estaticos que permanecen en el sistema hasta que se eliminan. A diferencia de la actividad en memoria o las comunicaciones de red, la persistencia se puede detectar en cualquier momento con un barrido del sistema.
La combinacion de monitoreo en tiempo real (Sysmon Event IDs 7, 11, 13, 19, 20, 21) con snapshots periodicos (Autoruns) proporciona una cobertura completa. El hunter que domina ambos enfoques puede detectar tanto la persistencia nueva (en cuanto se crea) como la persistencia historica (que ya existia antes de implementar el monitoreo).
Preguntas frecuentes
Libros recomendados
Artículos relacionados
Threat Hunting con Sysmon en Windows: Eventos Clave y Consultas Practicas
Hunting de Movimiento Lateral: Detectar PsExec, WMI, RDP y Pass-the-Hash
Hunting de Command and Control (C2): Beaconing, DNS Tunneling y Domain Fronting
Hipotesis de Hunting Basadas en ATT&CK: Guia Practica para Construirlas
Cobertura ATT&CK: DeTT&CT, Gap Analysis y Priorización de Detecciones
Construir un Programa de Detection Engineering: De Cero a Producción
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.