Clase 079 — Pivoting y reenvío de puertos

Parte: 3 — Hacking ético y pentesting: metodología · Fuente: Offensive Security - "Metasploit Unleashed"; Peter Kim - "The Hacker Playbook 3" ⏱️ Duración estimada: 140 min · Nivel: Experto


🎯 Objetivo

El alumno aprenderá a usar un host comprometido como punto de apoyo (pivote) para alcanzar redes internas segmentadas que no son accesibles directamente desde la máquina atacante, dominando túneles SSH, proxychains, el pivoting integrado de Metasploit y herramientas modernas como chisel y ligolo-ng, en un laboratorio propio con topología multi-red.

📚 Resultados de aprendizaje

Al finalizar, el alumno podrá:

  1. Configurar túneles SSH de reenvío local, remoto y dinámico según el escenario de red.
  2. Encaminar herramientas de escaneo y explotación a través de un proxy SOCKS con proxychains.
  3. Configurar autoroute y un proxy SOCKS dentro de Metasploit para pivotar sobre una sesión Meterpreter.
  4. Desplegar un túnel con chisel o ligolo-ng cuando SSH no está disponible en el pivote.
  5. Diagramar la topología completa de un escenario de doble pivote para un informe de pentest.
  6. Explicar por qué la segmentación de red es la contramedida principal frente al pivoting.

🗺️ Temas

# Tema Por qué importa
1 Local port forwarding (ssh -L) Expone un servicio interno específico en la máquina atacante
2 Remote port forwarding (ssh -R) Útil cuando el pivote no puede iniciar conexiones salientes hacia el atacante
3 Dynamic forwarding / proxy SOCKS (ssh -D) Un solo túnel da acceso a toda una subred interna
4 proxychains Permite encaminar herramientas como nmap a través del pivote
5 Metasploit autoroute + socks_proxy Pivoting integrado sobre una sesión Meterpreter existente
6 chisel / ligolo-ng Túneles sobre HTTP(S) cuando SSH no está disponible en el pivote
7 Doble pivote Encadena dos saltos para alcanzar redes doblemente segmentadas
8 Segmentación como contramedida Limita el alcance real de un pivote aunque el primer host caiga

📖 Definiciones y características

🧰 Herramientas y preparación

🧪 Laboratorio guiado

El pivoting extiende deliberadamente tu acceso hacia redes que suelen estar segmentadas por diseño de seguridad. Practica esto solo dentro de tu laboratorio propio o del alcance explícitamente autorizado en las reglas de engagement de un pentest contratado. Alcanzar una red no incluida en el alcance firmado es una violación grave del contrato y puede constituir delito.

  1. Con acceso SSH al pivote (10.10.10.5) y una subred interna objetivo 172.16.0.0/24, levanta un túnel dinámico: ssh -D 1080 -N usuario@10.10.10.5.
  2. Escanea la red interna a través de proxychains: proxychains4 nmap -sT -Pn -p 22,80,445 172.16.0.10.
  3. Expón un servicio interno específico con local forwarding: ssh -L 8080:172.16.0.10:80 -N usuario@10.10.10.5 y verifica con curl http://127.0.0.1:8080.
  4. Sobre una sesión Meterpreter activa en el pivote, configura autoroute desde Metasploit: use post/multi/manage/autoroute, set SESSION 1, set SUBNET 172.16.0.0, run.
  5. Levanta el proxy SOCKS integrado de Metasploit: use auxiliary/server/socks_proxy, set SRVPORT 1080, set VERSION 4a, run -j.
  6. Si el pivote no tiene SSH disponible (por ejemplo, es Windows sin cliente SSH), levanta un túnel con chisel: en Kali, ./chisel server -p 8000 --reverse; en el pivote, .\chisel.exe client 10.10.10.5:8000 R:socks.
  7. Configura proxychains para apuntar al puerto SOCKS de chisel o de Metasploit y repite el escaneo de la red interna.
  8. Como alternativa moderna, despliega ligolo-ng: ejecuta el proxy en Kali, crea la interfaz con ip tuntap add user root mode tun ligolo, súbela con ip link set ligolo up, ejecuta el agent en el pivote y añade la ruta hacia la subred interna con ip route add 172.16.0.0/24 dev ligolo.
  9. Con la interfaz ligolo-ng activa, ejecuta un escaneo SYN directo (nmap -sS 172.16.0.0/24) y compáralo contra el escaneo -sT realizado antes por proxychains.
  10. Captura tráfico con Wireshark en el segmento del pivote durante uno de los túneles para observar cómo se ve encapsulado el tráfico interno.
  11. Diagrama la topología completa: atacante → pivote → subred interna, señalando cada túnel usado y el puerto correspondiente.

✍️ Ejercicios

  1. Explica con un ejemplo concreto la diferencia entre -L, -R y -D en un túnel SSH.
  2. Escanea un host de la subred interna con proxychains y nmap, y justifica por qué debes usar -sT -Pn en lugar de un escaneo SYN.
  3. Configura autoroute en Metasploit y verifica la ruta activa con el comando route print dentro de msfconsole.
  4. Levanta un proxy SOCKS con chisel en modo --reverse y encamina una petición curl a través de él usando proxychains.
  5. Diseña (en diagrama) un escenario de doble pivote de dos saltos hacia un objetivo final, indicando qué herramienta usarías en cada salto y por qué.
  6. Compara ligolo-ng frente a proxychains y explica en qué escenario elegirías cada una.

📝 Reto verificable

Reto: alcanza un servicio en la subred interna de tu laboratorio que no es accesible directamente desde Kali, exclusivamente a través de un pivote, usando al menos dos técnicas distintas (por ejemplo, SSH dinámico y chisel, o autoroute y ligolo-ng).

Criterio de aceptación: el alumno demuestra acceso al servicio interno (respuesta HTTP, banner de servicio o resultado de escaneo) inalcanzable sin el túnel, documenta el método exacto usado en cada caso y adjunta un diagrama de la topología atacante-pivote-objetivo.

⚠️ Errores comunes

Síntoma / mensaje Causa y cómo arreglar
nmap con SYN scan falla a través de proxychains proxychains solo soporta conexiones TCP completas (connect); usar siempre -sT -Pn
El proxy SOCKS no responde El túnel se cayó o el puerto configurado en proxychains4.conf no coincide con el del túnel activo; verificar el listener con netstat
autoroute no encamina el tráfico La SESSION especificada es incorrecta o la subred está mal escrita; revisar con route print en msfconsole
chisel no logra conectar Firewall saliente bloqueando el puerto; usar --reverse y un puerto comúnmente permitido como 443
ligolo-ng no crea la interfaz TUN Falta el privilegio de administrador/root en la máquina atacante para crear la interfaz de red
Rendimiento muy bajo en doble pivote Latencia acumulada de dos túneles anidados; reducir el número de puertos escaneados y evitar paralelismo excesivo

❓ Preguntas frecuentes

❓ ¿Por qué un escaneo nmap con proxychains necesita las banderas -sT y -Pn? Porque proxychains solo puede encaminar conexiones TCP de tipo connect (establecidas a nivel de aplicación), no paquetes SYN crudos; además, el ping ICMP previo tampoco se transmite por el proxy, así que hay que omitirlo con -Pn.

❓ ¿Cuándo conviene usar remote forwarding (-R) en lugar de local (-L)? Cuando el pivote tiene un firewall saliente restrictivo que impide iniciar conexiones nuevas hacia el atacante, pero sí permite exponer un puerto local que reenvíe hacia una escucha que el atacante ya preparó.

❓ ¿Chisel o un túnel SSH tradicional? SSH es la opción natural si el pivote ya lo tiene disponible y es Linux. Chisel es preferible cuando no hay cliente SSH (por ejemplo, un pivote Windows), cuando solo se permite tráfico HTTP/HTTPS saliente, o cuando se necesita atravesar un proxy corporativo.

❓ ¿Cómo detecta un equipo defensivo el pivoting? Mediante segmentación real de red con firewalls internos, sistemas de detección de tráfico anómalo entre segmentos (NDR), monitoreo de conexiones salientes inusuales desde servidores internos, y auditoría de túneles SSH o procesos desconocidos como chisel ejecutándose en hosts críticos.

❓ ¿ligolo-ng reemplaza completamente a proxychains? En muchos escenarios sí, porque al trabajar a nivel de interfaz de red permite usar cualquier herramienta sin las limitaciones de un proxy SOCKS; sin embargo, proxychains sigue siendo útil cuando no se puede o no se quiere crear una interfaz TUN en la máquina atacante.

🔗 Referencias

📥 Material descargable

⬅️ Clase anterior

Clase 078 — Movimiento lateral en la red

➡️ Siguiente clase

Clase 080 — Cracking de contraseñas con John y Hashcat