Onioncat redes VPN sobre i2p/Tor

  • 0

Onioncat redes VPN sobre i2p/Tor

oc_switch

¿Que es OnionCat?

OnionCat es un adaptador VPN que permite conectar dos computadoras o redes a través de túneles VPN. Existen aplicaciones que permiten crear redes VPN entre iguales, tales como openvpn, ssh, etc, en el caso de OnionCat es diferente por que estas redes se crean usando redes anónimas como pueden ser i2p o Tor.

En este caso la comunicación de esta VPN se establece previo al circuito de tor o i2p, donde cada punto final de la red, está precedido por 3 nodos de la red de tor (en el caso de usar tor). Lo que vendrían a ser un total de 6 nodos 3 por cada punto, además añade una capa más de cifrado haciendo que el spoofing sea prácticamente imposible.

OnionCat utiliza los hiddens services de tor. Asocia la interfaz virtual tun/tap al hidden service de OnionCat utilizando para ello ip6. OnionCat asignará una ip versión 6 automáticamente basándose en el hostname del hidden service de la máquinaque inicie la conectividad. Los hidden services de TOR usan direciones *.onion para localizar estos servicios cuya longitud es de 80 bits, mientras ip6 utiliza direcciones de 128 bits, siendo los 128 bits de este último suficientes como para transformar las direcciones de ipv6 a .onion y viceversa.

Dicho de manera mas clara, el sistema primero tiene acceso a Internet. Luego se conecta a Tot o i2p de manera segura y anónima y sobre esa capa lanza la VPN que se conecta al destino. Todo esto hace imposible que si alguien “pincha el cable” pueda interpretar el trafico que pasa por ese cable haciendo la comunicación muy segura.

Figura 1: Esquema de conexión de OnionCat.

Figura 1: Esquema de conexión de OnionCat.

¿Para que puede servir OnionCat?

Puedes ser una opción muy interesante si se quiere por ejemplo securizar una comunicación sobre la red de tor o i2p sin que los participantes revelen su ubicación. Si por ejemplo se usa Internet para realizar esta comunicación las Ips de los participantes son publicas, es mas, un tercero podría conocer el trafico que se envía y recibe entre los participantes. Si se usa algún sistema de VPN los administradores de esas VPNs conocen las IPs de los integrantes. En cambio con el sistema OnionCat se garantiza el anonimato de todos los participantes e incluso del trafico que se intercambia entre ellos.

A nivel empresarial puede ser una solución económica frente a soluciones de vpns de pago y no implica realizar complicadas configuraciones en redes y/o firewalls.

¿Como instalamos y configuramos OnionCat?

OnionCat esta pensado para ejecutarse sobre sistemas unix, pero puede instalarse y ejecutarse sobre windows con el emulador cygwin

apt-get install onioncat
ocat -i $(`cat /tor/lib/hidden_service_onioncat/hostname`)
ifconfig tun0 

Tras ejecutar el comando “ocat -i $(`cat /tor/lib/hidden_service_onioncat/hostname`)” este debería levantar una interface tun0 que será la que inicie la conexión contra los hidden services de TOR.

Presentación en la 25c3: OnionCat — A Tor-based Anonymous VPN


  • 0

VPN y túnel ssh para navegar sin censura

VPN Virtual Private Network

La redes privadas virtuales no son más que conexiones de internet que van cifradas y con algunos sistemas de verificación e integridad sobre la conexión. Estas redes son utilizadas por las compañías que quieren mantener la confidencialidad de sus comunicaciones en una WAN. Por ejemplo imaginemos una empresa que necesita comunicaciones seguras entre dos sedes de la misma distintas, una en una ciudad y otra en otra, la única manera que tendría de conectar los servicios telemáticos de las dos sedes sería mediante internet.

¿Que por qué querría una empresa cifrar su tráfico?
Pues bien sencillo, hoy en día se utilizan muchos dispositivos móviles con acceso a puntos de redes inalámbricos, hoy en día más que nunca cualquiera podría estar escuchando su tráfico, en TeamSec pensamos que no importa la confianza en el entorno empresarial en cuanto a la seguridad. Ya sea su compañero de trabajo o su jefe, el 75% de los ataques en sedes de compañías se han producido dentro de la infraestructura informática de la empresa, ya fuese fuga de información, daños, etc. No es que seamos paranoicos, son recomendaciones basadas en hechos probados.

Vpn
El protocolo estándar de de VPN es IPSEC, pero existen otros protocolos PPPT, L2F, L2TP, SSL/TLS, SSH, etc. Cada uno con sus ventajas y desventajas.

Que nos ofrece una VPN:

Integridad de los datos- La encriptación de los datos es tan importante como que no sean cambiados o alterados durante su circulación. Por ejemplo, IPsec incluye  un mecanismo para asegurar que la parte encriptada del paquete, el encabezado completo y los datos del paquete IP o datagramas IP, no han sido alterados. Si se detectase alguna modificación, el paquete es descartado. Esta integridad de los datos también involucra autenticar el remote peer, esto es, la otra parte de la comunicación, que deberá  compartir su clave pública para completar el protocolo, como por ejemplo un certificado ssl.

Autenticación del origen de los datos- Verificar la identidad de la fuente de los datos que se están enviando es tan importante como los que se están recibiendo, puesto que siempre podemos estar expuestos a ataques del tipo spoofing que suplantarían nuestro tráfico.
Anti Replay Es la habilidad de detectar y rechazar paquetes que son reproducidos o copiados, y sirve para evitar el spoofing.

Data Tunneling/Traffic Flow Confidentiality- Tunneling es el proceso de encapsular un paquete completo dentro de otro paquete y enviarlo sobre una red. El tunneling se utiliza cuando se quiere esconder la identidad del dispositivo que origina el tráfico. Lo que hace es encapsular el tráfico de los host que hay detrás de él modificando el encabezado de los datagramas IP de los mismos. De esta forma no solo se añade total confidencialidad al tráfico, sino que además esconde el origen de las conexiones. Muchas empresas ofrecen este servicio y es en el tunneling al que hace referencia en sus ofertas comerciales para la utilización de internet con privacidad.

 

Usando un servidor ssh propio para saltarse la censura de navegación de una forma sencilla:

Muchas veces se nos restringe el acceso a algún servicio/puerto ya sea porque las políticas de la red que estemos utilizando, por las limitaciones técnicas, firewalls, etc. También puede ser que hayamos viajado a algún país donde no este permitido el acceso a ciertas páginas como es el caso de  China  Wikipedia Lista de webs bloqueadas en China y muchos otros.

En este ejemplo vamos a ver lo fácil que es saltarse casi cualquier restricción en cuanto a conectividad una vez tenemos acceso ssh a una máquina. En este caso supondremos que hemos instalado un servidor ssh en nuestra casa, hemos configurado el router para abrir el puerto 443 y enrutarlo al 22 de nuestro servidor de ssh. ¿Porqué el 443? Bueno, este puerto está normalmente abierto ya que es la versión segura de http para la versión web (https) y no es tan evidente como el 80, otro puerto que sería muy raro que estuviese cerrado hacia afuera dentro de cualquier red. El caso es utilizar un puerto que normalmente no esté cerrado y esos dos son universales.

Normalmente al instalar el servidor ssh puede ser que nos pregunte o no las passphrases según la distribución linux que estemos utilizando.

En este caso vamos a generar nuestras propias claves privada y pública porque es una tarea recomendable el cambiarlas de vez en cuando.

ssh-keygen -t rsa

root@teamsec:~/.ssh$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/root/.ssh/id_rsa.
Your public key has been saved in /home/root/.ssh/id_rsa.pub.
The key fingerprint is:
a6:35:ef:c1:91:91:54:7e:eb:04:9b:8a:7e:fd:11:ec root@teamsec
The key’s randomart image is:

 

Vpnssh
Como no hemos introducido passphrase no genera una extraña imagen aleatoria, a partir de ella se genera la clave rsa

Ahora copiamos nuestra claves al directorio de claves de ssh para que las use como nuestra claves pública y privada.

cp id_rsa /etc/ssh_host_rsa_key
cp ida_rsa_pub /etc/ssh/ssh_host_rsa_key.pub

Una vez tenemos nuestro servidor ssh con sus claves, este ya puede iniciar el protocolo de comunicación cifrado.

Ahora, suponiendo que ya estamos en el extranjero, deseamos acceder a Facebook, pero por alguna razón el país donde estamos nos lo tiene prohibido, de hecho vamos a suponer también que la web de descarga del TorBoundle, nos es inaccesible, y no lo tenemos descargado. Así que vamos a crear un tunnel ssh que nos permitirá saltarnos esa restricción.

$ssh -p 443 -L 80:facebook.com:80 myhome.no-ip.org

Ahora abrimos el navegador y tecleamos en la barra de direcciones
http://localhost

Ya tendríamos acceso a Facebook, pero es engorroso si se quiere visitar más páginas.

Hilando más fino, usando nuestro propio proxy:

Hay 8 escenarios posibles de conexiones túneles ssh genialmente explicados por Vicent Navarro en su magnífico blog y de muy recomendable lectura.

Blog de Vicente Navarro, creando túneles tcpip, port forwarding con ssh, los 8 escenarios posibles usando openssh

Como no solo queremos entrar a Facebook,  vamos a decirle a nuestro tunnel que queremos conectarnos a un servicio de nuestros servidor ssh que nos deje navegar , en este caso usaremos privoxy, que tenemos instalamos en el servidor. Privoxy es  un proxy que corre en el puerto por defecto 8118 asi que ejecutamos:

ssh -p 443 -L 6666:localhost:8118 myhome.no-ip.org

Esto creará un tunnel contra el puerto 8118, que acepta peticiones de un navegador web, así que configuramos nuestro navegador en el puerto de escucha. (-L 6666 significa que nuestra máquina creará un tunnel ssh a través de ese puerto en local 6666, localhost:6666)
Ese será el proxy que debemos configurar en el navegador.
confignavegador
Recordar que se puede configurar privoxy para que utilice la red de TOR siempre y cuando hayamos añadido la linea correspondiente a su configuración. (forward-socks5 / 127.0.0.1:9050 .)

echo “forward-socks5 / 127.0.0.1:9050 .” >> /etc/privoxy/config

De esta forma, conseguimos dos cosas, evitar la censura y securizar la comunicación de el tráfico que generemos desde nuestra máquina hasta nuestra casa, ya que estará cifrado, haciendo muy difícil que se sepa que estamos haciendo a través de esa conexión, además virtualmente estaríamos visitando Facebook desde nuestra propia casa y desde nuestro país, porque así es como lo percibirían los servidores que visitemos de esta manera, excepto claro, si usamos la combinación tor+privoxy en nuestro servidor de ssh, para además añadir privacidad a nuestra navegación.

Como comentaba esta es una forma de portforwarding que funciona, sin utlizar socks y  sin complicadas configuraciones de enrutado de interfaces virtuales que nos exigiría un escenario de reenvío dinámico de puertos

Blog de Vicente Navarro, vpn con openssh

Pablo Martínez. TeamSec