martes, 11 de noviembre de 2014

Crear un "ICMP tunnel" con Hans


En algunas ocasiones cuando estamos detrás de un firewall y este nos bloquea puertos, nos sentimos frustrados al no poder salir a Internet. A pesar que intentemos obtener acceso usando técnicas a nivel de capa de transporte como por ejemplo tuneles TCP, UDP y HTTP entre otros, el firewall en la mayoria de los casos va salir victorioso. Es aquí amigos, donde entra el milagroso protocolo ICMP conocido gracias al inmortal comando "ping", el cual permite enviar mensajes de peticiones y de respuesta de eco, usado a menudo para diagnostico en las redes IP.  En los mensajes ICMP, se encapsulan los datos de los demás protocolos en el payload del paquete para no ser detectados.

En los sistemas Linux y Unix  hay una serie de programas que nos permiten realizar conexiones para hacer bypass en los firewalls donde el trafico ICMP es permitido, sin importar que los puertos a nivel de capa de transporte sean bloqueados. Uno de esos programas se llama "Hans" el cual funciona en arquitectura cliente-servidor. En la pagina "http://code.gerade.org/hans/" se encuentran todas las caracteristicas y la descripción del software incluyendo el cídigo fuente.

Como es costumbre aquí en Nación Bit dejamos a dispossición un videotutorial dónde se describen los pasos de una forma sencilla para implentar el tunnel ICMP con Hans y así  poder lograr el tan anhelado acceso a internet:





lunes, 10 de noviembre de 2014

TCP over UDP Tunnel



No es que estemos obsesionados por los túneles y el anonimato pero en realidad…. ¡Sí que lo estamos! Hoy quiero compartirles una herramienta que nos permite crear túneles para el envío de paquetes TCP sobre mensajes UDP, siendo esto de gran utilidad cuando nos encontramos en redes de datos con restricciones o algunas limitaciones en el uso de protocolos muy comunes como lo es HTTP, FTP, SSH. etc. El nombre de esta herramienta es udptunnel y opera de la siguiente manera:

Se tiene dos computadoras, la primera (PC1) cuenta con acceso a la red sin restricción alguna y la segunda (PC2) tiene bloqueado el envío y recepción de paquetes ICMP y TCP dentro de la red.

              +------------+                  +------------+
(Internet)<---| Server PC1 |    TCP - ICMP    | Client PC2 |
              |22 SSH (TCP)| >===  BLOCK ===< |    SSH     |
              +------------+                  +------------+

En el lado del servidor (PC1) ejecutamos udptunnel especificando un puerto donde escuchará las peticiones UDP del PC2, para que luego se realice la conversión de esas peticiones UDP a TCP que serán re-enviados a un servicio TCP local en el servidor.
./udptunnel -s <PortUDP>

Al ejecutar udptunnel en el cliente (PC2) se crea un servidor TCP local donde hará forwarding al servicio especificado en (PC1) a partir de la sustracción de los payloads en los mensajes UDP para así crear paquetes TCP de igual manera que como se hizo en el servidor.
./udptunnel -c <PortTCPLocal> <IPaddresServer> <PortUDPServer> 127.0.0.1 <PortServiceTCPserver>

              +------------+                  +------------+
(Internet)<---| Server PC1 |                  | Client PC2 |
              |            |    TCP - ICMP    |            |
            ↑ | 22 SSH TCP | >===  BLOCK ===< |3000 SSH TCP| ↑
            | |            |                  |            | |       
            | | UDP<->TCP  |        UDP       |  UDP<->TCP | |
            ↓ | 4000 (UDP) | <=== ACCEPT ===> |    (UDP)   | ↓
              +------------+                  +------------+

En el siguiente video tutorial vamos a realizar una demostración de cómo lograr conectarnos a un servicio SSH y posteriormente acceder a internet mediante un proxy Socks5.
 
Distributed By Free Blogger Templates | Designed By Seo Blogger Templates