HTTP Tunneling – Evadiendo los Firewall [Parte I]

Generalmente los sysadmin, ya sea por seguridad o  diversas politicas, restringen el uso de servicios como:  FTP, IRC, SSH,  entre otros, dentro de la red privada la cual es de su responsabilidad.  En algunas empresas y universidades se puede observar  este tipo de limitaciones,  que sumadas con la implementacion de un Servidor Proxy, hacen que el usuario final, solo pueda navegar en la red.

Una imagen vale mas que mil palabras:

Sin embargo, hay ocasiones en las cuales necesitamos hacer uso de algun puerto o servicio dentro de una red privada. Para poder conectarse de forma correcta, debemos encapsular todo el trafico de determinado protocolo  a traves del unico servicio el cual no esta filtrado: el servicio web, a este concepto es a lo que se denomina http tunneling:

HTTP Tunneling is a technique by which communications performed using various network protocols are encapsulated using the HTTP protocol, the network protocols in question usually belonging to the TCP/IP family of protocols. The HTTP protocol therefore acts as a wrapper for a covert channel that the network protocol being tunneled uses to communicate.

HTTP Tunnel software consists of client-server HTTP Tunneling applications that integrate with existing application software, permitting them to be used in conditions of restricted network connectivity including firewalled networks, networks behind proxy servers, and NATs.

The HTTP stream with its covert channel is termed an HTTP Tunnel.

Teniendo claro el concepto de HTTP Tunneling, podemos ir a la practica, para aplicar esta tecnica de evasion, necesitamos  un software que se encargue de hacer todo el proceso, por fortuna, existe una aplicacion libre que nos hace este trabajo,  los usuarios de Debian y Ubuntu pueden descargarlo desde los repositorios y para  las demas distribuciones pueden descargar las fuentes haciendo click aqui

apt-get install proxytunnel

Despues de instalar nuestra aplicacion, procederemos usarlo, siempre es recomendable leer el manual de cada aplicacion para conocer sus todas opciones, parametros  y modo de uso, de esta forma  evitaremos posibles errores “tontos” de sintaxis.

El modo de uso es el siguiente:

Proxytunnel -a puerto -p proxy:puerto -d host:puerto -v
Donde:
-a -> Indica que puerto quedara a la escucha de conexiones.
-p -> debemos poner alli la direccion del proxy con su respectivo puerto
-d -> Aqui ponemos el servidor y puerto de destino
-v -> Modo verbose

Ahora un ejemplo claro, supongamos que deseamos ingresar al irc de la comunidad DragonJAR, como todos saben el IRC trabaja en el puerto 6667, debido al firewall de la red interna no podemos acceder de forma normal, pero si lo podemos hacer, con ayuda de nuestra aplicacion asi:

Proxytunnel -a 2525 -p ip_proxy:puerto -d irc.chatx.net:6667 -v

Eso es todo, si queremos ahora solo tendremos que conectarnos al irc, con los siguientes datos:

servidor: localhost
puerto:2525

Despues de esto, muchos de ustedes estaran pensando, como podemos abrir el msn o mejor aun, como podemos hacer que todo el trafico pase por otra maquina y podamos navegar sin restricciones?? La respuesta a esta pregunta es,  todo esto se puede hacer siempre y cuando dispongamos de un servidor SSH(obviamente con cuenta en el)  afuera de nuestra red, en teoria, debemos conectarnos al servidor SSH y decirle  que sirva de pasarela, es decir, que a traves de el, pase todo  el trafico. ¿Y como lo hacemos?

  1. SSH: En este paso es donde puede variar mucho la situacion dependiendo de las restricciones que tenga la red interna de tu trabajo o universidad, si el puerto 22 no esta bloqueado, estas hecho puedes saltar al paso numero 2. Pero no te preocupes si en tu red privada esta bloqueado el puerto del SSH podemos hacer uso de nuestra herramienta proxytunnel:
  2. proxytunnel -a 1000 -p ip_proxy:puerto -d ip_servidor-SSH:22 -v -q
    Con esto ya podemos conectarnos al SSH.

  3. Ya estamos seguros  de que podemos conectarnos al servidor SSH, ya sea de forma directa o haciendo el tunel, ahora debemos conectarnos al SSH e indicarle que servira como pasarela
  4. Para aquellos que no necesitaron tunnel

    ssh usuario@ip_Server -D 2000
    Donde el 2000 es el puerto que hara el tunel SSH.

    Para los que necesitaron del tunel para poder conectarse al servidor

    ssh -p 1000 usuario@localhost -D 2000
    Hay que tener en cuenta que el 1000 se refiere al puerto del tunel, y el 2000 es el puerto que hara el tunnel SSH

  5. Con esto debemos tener nuestra configuracion y pasarela de forma correcta, lo unico que nos queda es ir a nuestras aplicaciones (msn, pidgin, thunderbird) y configurarlas para que usen el proxy con los datos:
  6. direccion_proxy= localhost
    puerto= 2000
    socks5

Con esta tecnica podemos evadir muchas restricciones, pero no las restricciones web, es decir, no  podemos navegar libremente, ya que estaremos condicionados a las reglas del proxy, si estabas pensando implementar esta tecnica para poder abrir el facebook, youtube, hi5,  o lo que sea desde tu trabajo o universidad, ps debo decirte que no servira de mucho. Pero tranquilos no se alarmen, para todo hay solucion, en la segunda parte de este articulo, les mostrare como podemos  saltar las reglas del proxy y navegar libremente sin restricciones.

5 thoughts on “HTTP Tunneling – Evadiendo los Firewall [Parte I]

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Generalmente los sysadmin, ya sea por seguridad o  diversas politicas, restringen el uso de servicios como:  FTP, IRC, SSH,  entre otros, dentro de la red privada la cual es de su responsabilidad.  En algunas empresas y uni…

  2. […] This post was mentioned on Twitter by Ricardo Donoso. Ricardo Donoso said: HTTP Tunneling – Evadiendo los Firewall [Parte I] http://bit.ly/13aFx8 […]

  3. […] En la entrada anterior, aprendimos a conectarnos a cualquier puerto desde una red interna gracias al http tunneling, con esa tecnica es posible evadir cualquier firewall y  conectarse a cualquier servidor externo, ya sea: FTP, SSH, IRC, TELNET, MESSENGER, ETC. ¿ Pero que pasaria si lo que necesitamos es saltarnos las reglas que tenga implementadas el servidor proxy? Es decir, navegar sin restriccion alguna, descargar torrents, abrir el facebook, hi5, hotmail, p0rn, etc. La respuesta a esa pregunta, es este articulo, si tenemos una cuenta SSH en un servidor externo, podemos hacer un tunel para salir atraves de ese equipo  a la internet. […]

  4. […] Ahora un ejemplo claro, supongamos que deseamos ingresar al irc de la comunidad DragonJAR, como todos saben el IRC trabaja en el puerto 6667, debido al firewall de la red interna no podemos acceder de forma normal, pero si lo podemos … View original here:  Rincón Informático […]

  5. ME PARECE SUPER…!!! PERO QUIERO SABER MAS SOBRE EL TEMA, DONDE PUEDO CONSEGUIR MAS INOFRMACION AL RESPECTO… GRACIAS.!