Intermediothreat-huntingpersistenciawindowsregistroATT&CKdeteccion

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.

MalwareIntel Research··8 min lectura
Serie: Threat Hunting — Parte 7

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:

  1. Capturar un baseline con Autoruns en todos los endpoints (exportar a CSV)
  2. Programar capturas periodicas (semanal o diaria)
  3. Comparar cada captura con el baseline: las diferencias son candidatas a investigacion
  4. 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:

  1. Event Filter: define el trigger (cuando se ejecuta)
  2. Event Consumer: define la accion (que se ejecuta)
  3. 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:

  1. Capturar todos los puntos de persistencia con Autoruns (Run keys, servicios, tareas, WMI)
  2. Exportar a CSV centralizado
  3. Comparar con el snapshot anterior
  4. Investigar las diferencias

Hunting reactivo post-incidente

Cuando un incidente se confirma, la busqueda de persistencia es prioritaria:

  1. Revisar todas las Run keys del host comprometido
  2. Listar tareas programadas no estandar
  3. Verificar servicios instalados recientemente (Event ID 7045)
  4. Consultar WMI Event Subscriptions
  5. Revisar carpetas de startup
  6. 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

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.