Endurecimiento

Persistencia en Windows: 10 Tecnicas Documentadas y sus Contramedidas

Por Equipe Basilisk ·

Catalogo defensivo de 10 mecanismos de persistencia en Windows con consultas KQL listas para hunting y medidas de hardening replicables en cualquier SOC.

La persistencia no es la parte glamorosa de un compromiso, pero es la que separa al adversario que pierde acceso en el primer reinicio del que vuelve tres semanas despues, cuando el equipo ya olvido la alerta. En Basilisk OffSec corremos ejercicios contra clientes donde mas del 70% de las detecciones que terminaron en caso real comenzaron con mecanismos triviales: claves Run, scheduled tasks con nombres pintorescos, servicios con rutas sin comillas. El objetivo de este catalogo no es ensenar a esconder implantes, sino documentar diez tecnicas reales que vemos cada semana y entregar consultas KQL que tu Defender XDR o Sentinel pueden ejecutar manana por la manana.

La primera familia que importa cubrir es la de las claves de registro de ejecucion automatica. HKCU\Software\Microsoft\Windows\CurrentVersion\Run sigue siendo el T1547.001 mas explotado en campanas commodity, no porque los atacantes sean perezosos, sino porque funciona en cualquier perfil sin necesidad de privilegio. Una consulta simple como DeviceRegistryEvents | where RegistryKey has "CurrentVersion\\Run" and InitiatingProcessFileName !in ("explorer.exe","msiexec.exe") ya captura el 80% de los casos cuando haces baseline por hostname. Para entender el contexto ofensivo de estas rutas, conviene revisar Initial Access Simulado: Macros, LNK e ISO en un Lab Windows 11 Aislado porque la mayoria de los macros que vemos en laboratorio termina escribiendo exactamente en esas claves.

Las Scheduled Tasks (T1053.005) son la segunda tecnica mas abusada y la mas subnotificada. El problema no es detectar la creacion de la tarea, sino filtrar el ruido: un Windows 11 corporativo crea en promedio 40 tareas legitimas en ciclos de update. La consulta que mejor nos ha servido es DeviceProcessEvents | where FileName == "schtasks.exe" and ProcessCommandLine has_any ("/create","/change") | where InitiatingProcessParentFileName !in (~"msiexec.exe",~"trustedinstaller.exe") combinada con enriquecimiento via Get-ScheduledTask filtrando Author vacio o autor sin firma. En paralelo, monitorear el evento 4698 en Security log y revisar TaskCache\Tree en el registro captura tareas ocultas que no aparecen en schtasks /query.

Los servicios Windows (T1543.003) siguen siendo el vector preferido cuando el atacante ya tiene SYSTEM. Aqui el foco del blue team debe estar en tres senales: creacion de servicio apuntando a binario sin firmar, ImagePath en directorios mundialmente escribibles como ProgramData o Public, y el clasico unquoted service path. Una buena caceria empieza con DeviceEvents | where ActionType == "ServiceInstalled" | where FolderPath !startswith "C:\\Windows\\" and FolderPath !startswith "C:\\Program Files". Para no confundir con instalaciones legitimas, haz join con la tabla de certificados y descarta todo lo que tiene signer corporativo conocido. Este patron resuena con lo que cubrimos en Hunting de Living-off-the-Land Binaries en Windows con KQL sobre deteccion baseline-driven.

WMI Event Subscription (T1546.003) es donde la cosa se pone seria. Es silenciosa, sobrevive al reinicio y rara vez aparece en playbooks junior. La receta: monitorear __EventFilter, __EventConsumer y __FilterToConsumerBinding en la clase root\subscription. En Defender, DeviceEvents | where ActionType == "WmiBindEventFilterToConsumer" funciona, pero en ambientes sin MDE necesitas Sysmon con los eventos 19, 20 y 21 habilitados. Combinalo con Get-WmiObject -Namespace root\subscription -Class __EventConsumer ejecutandose semanalmente como compliance check. Tecnicas de movimiento lateral que terminan en persistencia WMI estan bien ilustradas en Movimiento Lateral en Lab: SMB, WMI y WinRM con Foco en Deteccion.

El COM hijacking (T1546.015) explota la precedencia de HKCU sobre HKLM en CLSIDs. El atacante registra un InProcServer32 en HKCU apuntando a una DLL controlada, y cualquier proceso que cargue ese CLSID en sesion de usuario ejecuta el codigo. Para cazar, enfocate en escrituras inesperadas en HKCU\Software\Classes\CLSID\*\InProcServer32 donde el valor por defecto no termina en DLL firmada por Microsoft. AppInit_DLLs (T1546.010) e Image File Execution Options (T1546.012) entran en la misma categoria de abuso de registry-based execution flow y merecen consultas dedicadas. Quien quiera entender por que la evasion moderna sigue pasando por aqui debe leer Evasion de EDR para Investigacion: Direct Syscalls Explicados sin Romantizar.

Startup folder, Logon Scripts (T1037), BITS Jobs (T1197) y Print Processors (T1547.012) cierran la lista practica. BITS merece atencion especial porque sobrevive al logoff y puede descargar payloads usando proceso confiable: bitsadmin /list /allusers /verbose como check semanal ya captura el 95% de los casos. Los Print Processors volvieron al mapa despues de PrintNightmare y el monitoreo del registro HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments es barato. Para correlacionar esto con el ciclo ofensivo completo, Adversary Emulation con Caldera y MITRE ATT&CK en Laboratorio Corporativo y Purple Team en la Practica: Construyendo Ciclo de Feedback Red vs Blue muestran como transformar estas detecciones en ejercicios continuos con el red team.

El takeaway practico: apila las diez consultas anteriores en una watchlist unica en Sentinel, configura baseline de 14 dias por host antes de alertar y revisa los hits en ventana semanal de threat hunting. La persistencia no se detecta con una regla brillante, se detecta con disciplina de revision. Empieza manana ejecutando las dos primeras consultas (Run keys y schtasks) en tu ambiente de produccion en modo solo-lectura, cuenta cuantos hits tienes, y descubriras que ya existe persistencia legitima que nadie documento. Ese es el punto de partida real del programa.

Nenhum comentário ainda

Seja o primeiro a comentar.

Deixe seu comentário

Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

Entrar com Canverly