← Blog

ProxyChains — Encadenado de Proxies y Pivoting

Enrutado de herramientas a través de proxies SOCKS/HTTP con proxychains: configuración de la ProxyList, dynamic_chain, resolución DNS y pivoting hacia redes internas.

1. Operational Scope & Technical Objective

proxychains envuelve cualquier binario y redirige su tráfico a través de una cadena de proxies SOCKS4/5 o HTTP definida en proxychains.conf. Su uso ofensivo estándar es el pivoting: con un túnel SOCKS ya montado (SSH -D, Meterpreter, sshuttle), proxychains permite que herramientas que no soportan SOCKS de forma nativa (nmap, xfreerdp, curl, smbclient) alcancen la red interna del objetivo. La correcta configuración de la cadena (dynamic_chain, proxy_dns) decide si el tráfico realmente sale por donde se quiere y si las resoluciones DNS no filtran el objetivo.

2. High-Impact Syntax & Command Cheatsheet

# Sintaxis base
proxychains <comando>
proxychains curl https://example.com
#  la herramienta se ejecuta "dentro" del proxy; todo su tráfico sale por la cadena

# Configuración mínima en /etc/proxychains.conf (o ~/.proxychains/proxychains.conf)
#  Añadir los proxies al final del fichero:
[ProxyList]
socks5  127.0.0.1 1080      # SOCKS5 (p. ej. túnel SSH -D)
http    192.168.1.1 8080    # proxy HTTP
#  Orden de la cadena = orden de la lista

# Modos de cadena (arriba del fichero):
#   dynamic_chain  -> usa los proxies que responden; salta los caídos (recomendado)
#   strict_chain   -> usa TODOS en orden; si uno cae, la operación falla
#   random_chain   -> orden aleatorio (menos predecible, más lento)

# Resolución DNS
#   proxy_dns      -> resuelve el DNS a través del proxy (evita filtrar los dominios objetivo)
#   Con proxy_dns desactivado, el DNS local revela qué dominios consultas

3. Real-World Offensive/Defensive Scenarios

Pivoting a red interna vía túnel SSH. Con ssh -D 1080 jumpuser@server (o Meterpreter portfwd), la ProxyList apunta a socks5 127.0.0.1 1080 y cualquier herramienta alcanza los hosts internos:

proxychains nmap -sT -Pn -p 445 10.10.10.0/24   # -sT: connect() es lo único que funciona vía SOCKS
proxychains xfreerdp /u:admin /v:10.10.10.50 +clipboard
proxychains smbclient -L //10.10.10.50 -U admin

Evasión de control de egress. Enrutar el tráfico de un binario por un proxy en el extranjero (o por la cadena del objetivo) enmascara la IP de origen. proxy_dns evita que las consultas DNS locales revelen el destino, un detalle que los analistas usan para detectar pivoting.

Defensa. El pivoting deja rastros que el Blue Team debe cazar: conexiones SOCKS inesperadas desde un host que no debería tenerlas, y tráfico connect() hacia puertos internos (nmap -sT) que el tráfico normal no genera. Restringir el egress por defecto (deny-all con excepciones) limita qué puertos y protocolos pueden salir a través de cualquier proxy. Además, los binarios suelen ignorar proxychains si se compilan estáticamente o usan sockets propios: no es un control infalible, solo un enrutador.