Concatenar varios servidores proxy e integrarlos con Tor
Con herramientas de terminal es posible concatenar múltiples proxies (incluyendo a Tor) para anonimizar conexiones. A continuación se muestran ejemplos simples para conectar a tor desde proxies, los ejemplo son todos recurrentes, solo se diferencian en el orden y número de túneles enlazados. Entre otras cosas se mostrará como usando tor se realice la petición final mediante un proxy (útil cuando los nodos de salida son bloqueados en destino) o crear conexiones que intercalen proxies y la red Tor múltiples veces.
Una vez entendido el proceso, es trivial concatenar todos los saltos que se quieran para hacer más complejo el túnel. También es posible cambiar de tipo de proxy si es necesario, aunque Socks es actualmente la mejor forma de usar proxies. Se debe recordar que SOCKS5 es sólo un protocolo de transporte por encima de TCP/UDP pero por debajo de la capa de aplicación. Por lo tanto no hay cifrado inherente, eso se delega a la capa de aplicación, es decir, el protocolo que se use dentro del canal SOCKS tiene que proporcionarla (SSH, Tor, HTTPS, etc). Por tanto, recordemos que si se usan servidores proxy intermedios y la comunicación no es cifrada con el destino, estos podrán leer el tráfico de red sin problema.
Hosts y puertos usados para los ejemplos.
localhost:9050 # Tor en localhost (Servidor Socks 4/5). T.T.T.T:9100 # Tor en un servidor externo (Servidor Socks 4/5). A.A.A.A:1111 # Servidor Socks 4/5. B.B.B.B:2222 # Servidor Socks 4/5.
Genera un puerto XXXX que está conectado al servidor proxy A.A.A.A:1111 el cual redirecciona las peticiones a B.B.B.B:2222.
socat TCP-LISTEN:XXXX,bind=127.0.0.1,fork SOCKS4A:A.A.A.A:B.B.B.B:2222,socksport=1111 curl -v -x socks5h://localhost:XXXX destino.com # La IP que hace la petición es B.B.B.B.
Genera un puerto XXXX que está conectado a la red tor local y encamina sus peticiones de salida al servidor socks A.A.A:A:1111
socat TCP-LISTEN:XXXX,bind=127.0.0.1,fork SOCKS4A:localhost:A.A.A.A:1111,socksport=9050 curl -v -x socks5h://localhost:XXXX destino.com # La IP que hace la petición es A.A.A.A.
Genera un puerto XXXX que está conectado a un servidor proxy y reenvía el tráfico entrante a la red tor.
socat TCP-LISTEN:XXXX,bind=127.0.0.1,fork SOCKS4A:B.B.B.B:localhost:T.T.T.T:9100,socksport=2222 curl -v -x socks5h://localhost:XXXX destino.com # La IP que hace la petición es el nodo de salida de Tor.
Usar un proxy para entrada y salida de la red Tor: Proxy > Tor > Proxy > Destino.
# El puerto 22222 se conecta al proxy socks A.A.A.A que redirige a su vez las peticiones a la red Tor mediante T.T.T.T:9100 socat TCP-LISTEN:22222,bind=127.0.0.1,fork SOCKS4A:A.A.A.A:T.T.T.T:9100,socksport=1111 # E puerto 33333 se conecta mediante Tor (localhost:22222) a un servidor proxy B.B.B.B:2222 que será el que haga las peticiones. socat TCP-LISTEN:33333,bind=127.0.0.1,fork SOCKS4A:localhost:B.B.B.B:2222,socksport=22222 curl -v -x socks5h://localhost:33333 destino.com # la IP que hace la petición es B.B.B.B # localhost:3333 --> A.A.A.A --> Tor --> B.B.B.B --> Destino
Usar un proxy en medio de dos conexiones tor concatenadas: Tor > Proxy > Tor > Destino.
socat TCP-LISTEN:22222,bind=127.0.0.1,fork SOCKS4A:localhost:B.B.B.B:2222,socksport=9050 socat TCP-LISTEN:33333,bind=127.0.0.1,fork SOCKS4A:localhost:T.T.T.T:9100,socksport=22222 curl -v -x socks5h://localhost:33333 destino.com # la IP que hace la petición es el nodo Tor de salida en el circuito de T.T.T.T # localhost:3333 --> Tor --> B.B.B.B --> Tor --> Destino