Hunting de Movimiento Lateral: Detectar PsExec, WMI, RDP y Pass-the-Hash
Como detectar movimiento lateral en una red corporativa. Tecnicas de hunting para PsExec, WMI remoto, RDP, Pass-the-Hash, Pass-the-Ticket y SMB lateral movement con consultas practicas para SIEM y EDR.
Que es el Movimiento Lateral
El movimiento lateral (MITRE ATT&CK Tactic TA0008) es el conjunto de tecnicas que un adversario usa para moverse de un sistema comprometido a otros sistemas dentro de la red. Es una de las fases mas criticas del ciclo de ataque: sin movimiento lateral, un atacante queda confinado al sistema inicial de compromiso y no puede alcanzar sus objetivos (datos sensibles, domain controllers, sistemas criticos).
Para el threat hunter, detectar movimiento lateral es de alto valor porque indica que el adversario ya tiene presencia en la red y esta expandiendo su acceso. Detectarlo a tiempo puede contener el compromiso antes de que alcance activos criticos.
PsExec y Variantes (T1021.002, T1569.002)
PsExec, de Sysinternals, permite ejecutar procesos en sistemas remotos usando SMB y el Service Control Manager (SCM). Es una herramienta legitima de administracion, pero tambien es una de las favoritas de los adversarios para movimiento lateral.
Como funciona PsExec
- Se conecta al host remoto via SMB (puerto 445)
- Copia un ejecutable al share ADMIN$ del host remoto
- Crea un servicio Windows remoto que ejecuta el binario
- El servicio ejecuta el comando y devuelve la salida
Artefactos detectables
En el host origen (Sysmon Event ID 1):
Image: *\PsExec.exe o *\PsExec64.exe
CommandLine: parametros con \\hostname y -s, -d, -c
En el host destino:
- Sysmon Event ID 1: creacion de PSEXESVC.exe (o nombre personalizado con -r)
- Sysmon Event ID 11: creacion del ejecutable en C:\Windows (copia temporal)
- Sysmon Event ID 13: creacion de servicio en el registro
- Windows Event ID 7045: instalacion de nuevo servicio (System log)
- Windows Event ID 4624: logon tipo 3 (Network) con la cuenta usada
En la red (Zeek):
- conn.log: conexion TCP al puerto 445 entre hosts internos
- smb_mapping.log: acceso al share ADMIN$ o C$
Consulta de hunting
# Sysmon: instalacion de servicio PSEXESVC (o variante)
event.code: "7045" AND
winlog.event_data.ServiceName: (*PSEXESVC* OR *csexec* OR *paexec*) AND
winlog.event_data.ServiceFileName: (*ADMIN$* OR *\\Windows\\*)
# Alternativa: cualquier servicio nuevo creado desde linea de comandos
event.code: "7045" AND
NOT winlog.event_data.ServiceName: (conocido1 OR conocido2)
Variantes de PsExec
Los adversarios suelen usar variantes para evadir deteccion por nombre:
- PAExec: alternativa open source, misma mecanica
- CSExec: variante en C# que permite nombre de servicio personalizado
- Impacket psexec.py: implementacion en Python, no copia PsExec.exe al host remoto
- Impacket smbexec.py: usa un bat file temporal en lugar de un servicio persistente
- Impacket atexec.py: usa tareas programadas en lugar de servicios
Todas estas variantes generan artefactos similares: logon tipo 3, acceso a shares administrativos y creacion de servicios o tareas programadas.
WMI Remoto (T1047)
Windows Management Instrumentation permite ejecutar comandos en hosts remotos mediante el servicio WMI.
Como funciona
- El adversario usa WMIC o PowerShell con Invoke-WmiMethod
- Se conecta al servicio WMI del host remoto (DCOM, puerto 135 + puerto dinamico)
- Ejecuta un comando mediante Win32_Process.Create
Artefactos detectables
En el host destino (Sysmon Event ID 1):
ParentImage: *\WmiPrvSE.exe
Image: cmd.exe, powershell.exe, o cualquier otro proceso
La cadena clave es: WmiPrvSE.exe lanzando procesos hijos.
WmiPrvSE.exe es el proceso host de WMI y lanza los comandos
remotos como procesos hijos.
En el host origen:
- Sysmon Event ID 1: ejecucion de wmic.exe con /node: parametro
- Sysmon Event ID 3: conexion al puerto 135 del host destino
Windows Event Logs (destino):
- Event ID 4624: logon tipo 3 (Network)
- Event ID 4648: logon explicito con credenciales
Consulta de hunting
# Procesos lanzados por WmiPrvSE (ejecucion remota WMI)
event.code: "1" AND
process.parent.name: "WmiPrvSE.exe" AND
process.name: ("cmd.exe" OR "powershell.exe" OR "mshta.exe" OR "regsvr32.exe")
# Splunk: WMI remoto
index=sysmon EventCode=1 ParentImage="*WmiPrvSE.exe"
| where NOT match(Image, "(?i)(WmiPrvSE|WerFault|WMIADAP)")
| stats count by Computer, User, Image, CommandLine
| sort -count
Remote Desktop Protocol (T1021.001)
RDP es la herramienta de administracion remota mas comun en entornos Windows. Los adversarios la usan porque proporciona una interfaz grafica completa, permite transferencia de archivos y es un protocolo esperado en la red.
Artefactos detectables
Windows Security Events:
- Event ID 4624: logon tipo 10 (RemoteInteractive) con IP origen
- Event ID 4778: sesion reconectada (si el adversario reconecta una sesion existente)
- Event ID 4779: sesion desconectada
Sysmon (host destino):
- Event ID 1: mstsc.exe en el host origen (si es visible)
- Event ID 3: conexion entrante al puerto 3389
Zeek:
- conn.log: conexiones TCP al puerto 3389 entre hosts internos
Indicadores de RDP anomalo
El RDP legitimo tiene patrones predecibles. El RDP malicioso se diferencia por:
Anomalias de RDP a buscar:
- Sesiones RDP desde hosts que normalmente no usan RDP
- RDP a servidores que no requieren acceso grafico remoto
- Sesiones RDP fuera del horario laboral habitual
- RDP con cuentas de servicio o cuentas privilegiadas sin justificacion
- RDP desde un host a muchos hosts en poco tiempo (lateral spread)
- RDP usando puerto no estandar (redirigido)
Consulta de hunting
# Logons RDP (tipo 10) con analisis de patrones
event.code: "4624" AND
winlog.event_data.LogonType: "10" AND
NOT source.ip: (known_admin_ip1 OR known_admin_ip2)
| stats count by source.ip, user.name, host.name
| sort -count
Pass-the-Hash (T1550.002)
Pass-the-Hash (PtH) permite autenticarse en un sistema remoto usando el hash NTLM de la contrasena, sin conocer la contrasena en texto claro. Es una de las tecnicas de movimiento lateral mas peligrosas porque no requiere cracking.
Como funciona
- El adversario obtiene el hash NTLM de una cuenta (via Mimikatz, dumping de SAM)
- Usa el hash para autenticarse via NTLM en otro host (sin necesidad del password)
- El protocolo NTLM acepta el hash como credencial valida
Artefactos detectables
La deteccion de PtH es indirecta porque el protocolo funciona como esperado. Los indicadores son:
Windows Security Events:
- Event ID 4624: logon tipo 3 (Network) con LogonProcess: NtLmSsp y AuthenticationPackage: NTLM
- El campo SubjectLogonId es diferente de la sesion interactiva del usuario
- Event ID 4776: validacion de credenciales NTLM
Indicadores de sospecha:
Buscar Event ID 4624 donde:
- LogonType es 3 (Network)
- AuthenticationPackage es NTLM (no Kerberos)
- La cuenta que se autentica es una cuenta privilegiada
- El host origen no es la estacion de trabajo habitual de esa cuenta
- El dominio de LogonProcess es el dominio local, no el dominio AD
La dificultad con PtH es que genera eventos identicos a un logon NTLM legitimo. La deteccion depende de saber que cuentas deberian autenticarse via NTLM vs Kerberos y desde que hosts.
Pass-the-Ticket (T1550.003)
Similar a PtH pero usando tickets Kerberos robados (TGT o TGS) en lugar de hashes NTLM.
Artefactos detectables
Windows Security Events:
- Event ID 4768: peticion de TGT (KRB_AS_REQ) desde un host inusual para esa cuenta
- Event ID 4769: peticion de TGS donde el campo Account Name no coincide con el host que solicita el ticket
Indicadores de Golden Ticket:
- Event ID 4769 con un ticket TGT que tiene lifetime inusualmente largo
- TGT emitido sin un Event ID 4768 previo correspondiente (el ticket fue creado, no solicitado)
Consulta de hunting
# Kerberos TGS requests desde hosts anomalos
event.code: "4769" AND
NOT source.ip: (known_dc_ip) AND
winlog.event_data.ServiceName: "krbtgt"
SMB Lateral Movement
Independientemente de la herramienta usada (PsExec, WMI, manual), el movimiento lateral via SMB genera patrones detectables en los logs de acceso a shares.
Windows Event IDs relevantes
- 5140: Share accessed (un recurso compartido fue accedido)
- 5145: Detailed file share access (acceso detallado con nombres de archivo)
Consulta de hunting
# Acceso a shares administrativos desde hosts no autorizados
event.code: "5140" AND
winlog.event_data.ShareName: ("\\\\*\\ADMIN$" OR "\\\\*\\C$" OR "\\\\*\\IPC$") AND
NOT source.ip: (authorized_admin_workstations)
Patron de lateral spread
Un indicador claro de movimiento lateral es un host que accede a shares administrativos en multiples hosts en un periodo corto:
Buscar en Event ID 5140 donde:
- Un mismo source IP accede a ADMIN$ o C$ en mas de 3
hosts distintos en 1 hora
- Agrupar por SourceAddress, contar destinos unicos
- Ordenar de mayor a menor
PowerShell Remoting (T1021.006)
PowerShell Remoting (WinRM, puerto 5985/5986) permite ejecucion remota de comandos PowerShell.
Artefactos detectables
En el host destino (Sysmon Event ID 1):
ParentImage: *\wsmprovhost.exe
Image: powershell.exe
wsmprovhost.exe es el host process de WinRM. Todo proceso
lanzado como hijo de wsmprovhost es ejecucion remota via
PowerShell Remoting.
Windows Event Logs:
- Event ID 4624: logon tipo 3 con proceso WinRM
- PowerShell Event ID 4103/4104: transcripcion de los comandos ejecutados (si esta habilitada)
- WinRM Event ID 91: inicio de sesion remota
Consulta de hunting
# Ejecucion remota via PowerShell Remoting
event.code: "1" AND
process.parent.name: "wsmprovhost.exe"
| stats count by host.name, user.name, process.command_line
Estrategia Integral de Hunting para Movimiento Lateral
Paso 1: Mapear la actividad legitima
Antes de buscar movimiento lateral malicioso, documenta el movimiento lateral legitimo:
- Que cuentas usan RDP y a que servidores
- Que herramientas de administracion remota usa IT (SCCM, WMI, PowerShell Remoting)
- Que patrones de acceso SMB son normales (backups, scripts de despliegue)
- En que horarios se realizan tareas de administracion remota
Paso 2: Identificar anomalias
Con el baseline definido, busca desviaciones:
- Cuentas accediendo a hosts fuera de su scope
- Herramientas de administracion remota usadas por usuarios no administrativos
- Patrones de acceso secuencial (host A accede a B, luego B accede a C)
- Horarios fuera de lo normal
- Uso de NTLM cuando deberia ser Kerberos
Paso 3: Correlacionar fuentes
Un unico evento de movimiento lateral raramente es conclusivo. La correlacion con multiples fuentes aumenta la confianza:
- Sysmon en endpoint: proceso padre, linea de comandos, usuario
- Windows Security: logon events, tipo de autenticacion
- Zeek: conexiones SMB/RDP/WMI a nivel de red
- Active Directory: cambios de grupo, creacion de cuentas
Paso 4: Buscar progresion
El movimiento lateral malicioso suele seguir una progresion: endpoint de usuario, servidor de aplicacion, domain controller. Busca cadenas de acceso que progresen en nivel de privilegio o criticidad de los sistemas.
Conclusion
El movimiento lateral es una de las fases del ataque donde la deteccion proactiva marca mayor diferencia. Los adversarios necesitan moverse lateralmente para alcanzar sus objetivos, y cada salto genera artefactos detectables en los logs de endpoint, autenticacion y red.
La clave no es monitorizar cada herramienta individual, sino entender los patrones de acceso legitimos y detectar las desviaciones. Un baseline solido de "quien accede a que, cuando y como" es mas valioso que mil reglas de deteccion sin contexto.
Preguntas frecuentes
Libros recomendados
Artículos relacionados
Hunting de Acceso a Credenciales: LSASS, Kerberoasting, Password Spraying y DCSync
Threat Hunting con Sysmon en Windows: Eventos Clave y Consultas Practicas
Hunting de Mecanismos de Persistencia: Registry, Scheduled Tasks, Services y WMI
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.