Check the new version here

Popular channels

La otra forma Suplemento (detras del r...)

Introduccion a la tecnica 'http tunneling'

I - Introduccion

Con este documento pretendo introducir unas nociones muy basicas sobre
la tecnica 'http tunneling' .
No esta destinado para personas avanzadas o medias en la materia .
Recomiendo visitar las paginas citadas para poder tener una
informacion completa y detallada sobre el tema.
Ruego me perdonen los puristas del lenguaje por las bestialidades(como
tunel y derivados ) y el escaso esfuerzo por la traduccion correcta
aqui cometidos

II - Nociones Basicas

Tunneling
---------

Entiendo protocolo como la forma de comunicarse de dos o mas entidades
de sistemas diferentes , propongo este pequeño esquema :

ENTIDAD Entidad
A --------protocolo P (datos)---------- B

En este caso el protocolo P es propio al tipo de las entidades A y B.

El tunneling consiste en encapsular un protocolo dentro de otro.
Quizas os ayude la siguiente ilustracion :

ENTIDAD ENTIDAD
A ----Protocolo Z (protocolo P(datos))-- B


http tunneling
--------------

El protocolo http es de aplicacion y usa el protocolo tcp como transporte.
En circunstancias normales , cuando un cliente web visita una pagina,
se establecen una o mas conexiones tcp al puerto 80 (usualmente) del
servidor web , usando el protocolo HTTP
Ejemplo:

NAVEGADOR HTTP SERVIDOR WEB
NETSCAPE ------------------------------------- APACHE

El http tunneling consiste en encapsular cualquier protocolo que use el
tcp como transporte, puesto que es el que usa http
Esquemita tipico :

PASO 1 :

Datos de Protocolo P
Aplicacion -------------------------------------- CLIENTE 'TUNELIZADOR'

y a partir de ahi :

PASO 2:
HTTP
CLIENTE -------------------------------------- FALSO SERVIDOR WEB
TUNELIZADOR DESTUNELIZADOR

y finalmente :

PASO 3:
Protocolo P
FALSO SERVIDOR WEB ------------------------------ Datos de
DESTUNELIZADOR Aplicacion


En este ejemplo, escojemos dos aplicaciones A y B que se comunican
mediante el protocolo P que usa tcp para transporte.
En el primer paso, los datos de la aplicacion son enviados al cliente
tunelizador , quien encapsula esos datos dentro del protocolo http (
ver seccion 3-Implementacion). La aplicacion y el cliente tunelizador
no tienen porque estar en la misma maquina, basta con que sea
accesible
En el segundo paso, el cliente tunelizador envia una peticion standard
http al falso servidor WEB , este ultimo, la desencapsula y envia
los datos a la aplicacion destino, que como en el primer paso, no es
necesario que sea la misma maquina la que corra la aplicacion y el
falso servidor web.

Por sencillez, llamare CT al cliente tunelizador y SDT al serviddor
destunelizador, valga la redundancia.

Si por ejemplo , queremos tunelizar el protocolo SSH (secure shell),
tenemos el esquema siguiente :

ssh http ssh
Cliente SSH --------CT ----- SDT -------- Server SSH
Host A Host A Host B Host C

Nota:Bastaria con solo 2 hosts A y B , pero pueden participar hasta 4.


Configuraremos nuestre cliente SSH para que se conecte con nosotros
mismos , al puerto tcp en el que hayamos configurado el CT.
El CT enviara los datos al SDT usando el protocolo HTTP , para ello
podra utilizar si es necesario un proxy web (tema tratado en la
siguiente seccion) .
El Host B , SDT, enviara los datos desencapsulados al Host C ,
servidor de SSH.

De esta forma, el host A y el host C establecen una comunicacion SSH a
traves del tunnel virtual sobre http, siendo este tunnel 100 %
transparente para la aplicacion en cuestion , salvo en lo que a
direcciones se refiere, puesto que el cliente del host A ha conectado
consigo mismo y no directamente con C.

II - Y para que tanto lio ?

Seguramente os esteis preguntando porque se organiza tanto jaleo
Aunque el protocolo http use al tcp para el transporte , en muchas
ocasiones no es posible una comunicacion directa por tcp entre dos
maquinas
Es el caso por ejemplo de una red interna de una empresa o universidad
en la que la salida hacia internet esta limitada a un proxy unicamente
WEB
Ejemplo:

LAN http http SITE
INTERNA ----------- Proxy WEB SQUID ---------------- WEB

En este caso, en teoria, no es posible una conexion tcp desde la lan
interna hacia el exterior, la unica salida es via http

Es el unico caso real en el que veo muy necesaria la
utilizacion de la tecnica de http tunneling , si sabeis de algun otro
caso, no dudeis en mandarmelo y completare esta seccion


IV - Implementacion

Para implementar el cliente y el servidor de tunneles http , es de
obligada lectura el RFC del protocolo http, disponible en castellano
en : http://lucas.hispalinux.es (seccion Estandares)

Basicamente, consiste en encapsular los datos del cliente en las
peticiones POST . Para los datos provienentes del servidor , no
hay tal necesidad, puesto que puede devolver el tipo de datos que
quiera , siempre y cuando lo especifique.
Para detalles sobre la implementacion, la pagina web del ejemplo
comentado es una excelente fuente de informacion

V - Ejemplo de Implementacion : HttpTunnel por
Lars Brinkhoff - http://www.nocrew.org/software/httptunnel.html

Este software se distribuye gratuitamente bajo la licencia GPL
Este es un excelente ejemplo, puesto que esta estructurado de la forma
comentada anteiromente .
A fecha de hoy , estan disponibles el clasico tarbal (tar.gz),
paquetes .deb para debian y los binarios precompilados para
plataformas win9x y NT/2k
Los dos ejecutables que nos interesan son : hts y htc , servidor y
cliente respectivamente . No requieren muchos parametros , pero veamos
el ejemplo de una situacion tipica :

+ Host A : equipo de una LAN interna , se conecta a internet a traves
del host proxy.lan.interna , que es un proxy web (puerto 8080).
+ Host B : algunLugar.com , equipo de internet , rulando el servicio
de telnetd y en el cual tenemos una cuenta con la que acceder

En la maquina B , deberiamos ejecutar :
hts -F localhost:23 9000

Lo que conseguimos, es hacer que las conexiones http al puerto 9000
sean desencapsuladas y redirigdas al puerto 23 ( demonio de telnet) de
la misma maquina.

En la maquina A, podemos ejecutar :
htc -F 1001 -P proxy.lan.interna algunLugar.com:9000

El cliente se quedara a la esperade conexiones el puerto local 1001,
los datos recibidos seran encapsulados y enviados a algunLugar.com
,puerto 9000, usando el protocolo http.El cliente utilizara el proxy
proxy.lan.interna para comunicarse con el servidor algunLugar.com

Si todo ha ido bien, al conectarnos al puerto 1000, en el host A,
veremos el bonito login de la maquina B. (para conectarnos , bastaria
con ejecutar telnet localhost 1000 en el host A)

Es probable que tarde unos instantes en conectar e incluso que sea
necesario establecer otra conexion para lograrlo, recomiendo que
probeis primero sin proxy , ya que este ultimo puede dar algun
problemilla inciial.

Otro ejemplo es Htthost - http://www.htthost.com/, pero es de pago.
Introduce nociones nuevas como la introduccion de banners
publicitarios , etc ..

VI - Saludos y publicidad barata

La tecnica de http tunneling esta en vias de desarrollo para la
herramienta Aladino Pangea. Se trata de una herramienta de
administracion remota segura y eficaz de equipos Windows 9x/Nt..

Me gustaria saludar a toda la gente que conozco , aunque suene un poco
a comodin


Nota: este texto ha sido redactado usando Emacs (vi* sux XD ) a traves de
una conexion SSH tunelizada; en la universidad en la que estudio solo
disponemos de salida a internet a traves de un proxy web.Vamos , lo
que os quiero decir es que la historia funciona realmente

Autor : zgor . [email protected]

Lo reproduje en forma idéntica a como lo conseguí porque no tiene desperdicio
el texto es viejo pero es bueno como explicativo y da ideas bastante claras, seguramente hay muchos que saben mucho mas del tema que yo y están en condiciones de dar mejores soluciones pero por lo menos esto es algo para los que como yo la pilotean a los saltos


Algo del Soft necesario HTTPPort

Otro TCPGate

Otro mas HTTP-Tunnel

Y otro HTTP-Tunnel V2.9

Espero que sea de utilidad
0
7
0
7Comments
      maestrodeluz

      9 años wow, sigue funcando el httptunnel?
      Feliz dia robbies, digo mujeres!........
      e.o.c.

      0
      palermi2000

      hay gente perseguida en este mundo 😄

      ta bueno me gusto, la otra vez estaba escribiendo en mi blog sobre tun/tap y vtun,
      tal vez te interese http://vtun.sourceforge.net/

      0

      tengo speedy y fierbertel... como hago para usar los dos a la veZ?

      0
      Ichikata

      jajaja, buenisimo el chiste de apache 😛

      btw, muy buen aporte

      0
      orfeo

      No entiendo una garcha :S

      0
      maxtron

      al http tunneling me lo recomendaron hace bocha de tiempo para evadir la filtracion
      que hace mi Proveedor con el bittorrent ................. nunca le di pelota ni
      busque info.

      Me parece que es el momento para hacerlo ............ 😄

      Gracias

      0
      twoboeings

      APACHE = ?

      0