Descripción

El pivoting es la técnica de usar un agente comprometido como puente para acceder a segmentos de red a los que no se tiene acceso directo. JustC2 soporta pivoting a través de listeners internos (bind) y túneles.

Tipos de pivoting

Pivoting con listeners bind

Los listeners internos (BeaconTCP, BeaconSMB) permiten encadenar agentes:

Internet                DMZ                Red interna

[C2] ◄───HTTP───► [Agente A] ───TCP───► [Agente B]
                  (BeaconHTTP)           (BeaconTCP bind)
                  (pivote)                    │
                                         ───TCP───► [Agente C]
                                                    (BeaconTCP bind)

Flujo:

  1. El Agente A se conecta al C2 via HTTP (listener externo)
  2. El Agente B se ejecuta en la red interna con listener BeaconTCP (bind)
  3. Desde la consola del Agente A, se establece un link TCP al Agente B
  4. Las comunicaciones del Agente B se encapsulan a través del Agente A

Pivoting con SOCKS

Los túneles SOCKS permiten usar herramientas estándar a través del agente:

[Herramienta] → SOCKS5 → [C2:1080] → [Agente A] → [Red interna]

Ejemplo: Escanear la red interna con nmap:

# Crear túnel SOCKS5 a través del Agente A
# (desde el panel de Tunnels)

# Usar proxychains
proxychains nmap -sT -Pn 10.0.0.0/24 -p 22,445,3389

Pivoting multicapa

Es posible encadenar múltiples niveles de pivoting:

[C2] ◄──HTTP──► [Agente A] ──TCP──► [Agente B] ──SMB──► [Agente C]
                (DMZ)                (Red interna)        (Segmento crítico)

Cada salto añade latencia pero permite acceder a segmentos de red más profundos.

Registro de pivots

JustC2 mantiene un registro de pivots que muestra:

CampoDescripción
Pivot IDIdentificador del enlace
Pivot NameNombre descriptivo
Parent AgentAgente pivote (el que conecta)
Child AgentAgente enlazado (el que recibe)

Preparación

  1. Agente pivote — Un agente activo con listener externo (HTTP, DNS, GopherTCP)
  2. Agente target — Un agente con listener bind (BeaconTCP, BeaconSMB) ejecutándose en la red objetivo
  3. Acceso de red — El pivote debe poder alcanzar el puerto/pipe del agente target

Proceso

  1. Genera un payload con listener bind (BeaconTCP o BeaconSMB)
  2. Despliega el payload en el sistema de la red interna
  3. Desde la consola del agente pivote, ejecuta el comando de link:
    • Para TCP: especifica la IP y puerto del agente bind
    • Para SMB: especifica el hostname y nombre del pipe
  4. El agente pivote se conecta al agente bind
  5. El nuevo agente aparece en la tabla de sesiones

Consideraciones

  • Latencia — Cada nivel de pivoting añade latencia (los check-ins se encadenan)
  • Fiabilidad — Si el agente pivote se pierde, todos los agentes enlazados se desconectan
  • Ancho de banda — El tráfico de todos los agentes enlazados pasa por el pivote
  • Detección — El tráfico lateral (TCP/SMB) puede ser monitorizado por el blue team
  • Redundancia — Establece múltiples rutas de pivoting cuando sea posible

Buenas prácticas

  1. Establece pivotes a través de diferentes protocolos (TCP + SMB) para redundancia
  2. Usa SMB en redes Windows donde el tráfico del puerto 445 es habitual
  3. Minimiza el número de saltos para reducir latencia
  4. Documenta la topología de pivoting para el equipo
  5. Planifica rutas de escape antes de perder un pivote