OnionCat es… *.Onion!

El anonimato sigue existiendo, las herramientas para propocionarlo son cada vez más prolíferas, el ingenio sigue llevando la delantera. Nuestra función es clara: Ponérselo muy difícil al Gran Hermano. Seguir fuera de la matrix adelantándonos a cada movimiento de los sistemas obsoletos y coercitivos.

gatocebolla

El objetivo de OnionCat es crear una capa de transporte de paquetes IP transparente por encima de los hidden services registrados en TOR, permitiendo así acceder de forma anónima y remota a los distintos tipos de servicios, sin tener conocimiento de la dirección real. OnionCat es en realidad una VPN de acceso público que está constituida por hidden services publicados en la red de TOR.

La principal razón por la que se creó OnionCat fue para mitigar algunas restricciones que se encuentran asociadas a algunos protocolos de comunicación de TOR como el UDP o el ICMP. La necesidad era crear una capa más de red en IPv6. Los *.onion están íntimamente relacionados con la IPv6 por lo que si sabes el .onion conocerás la IPv6 ya que se realiza una traducción del dominio onion IPv6. Una vez establecido el enlace aporta seguridad ya que sabes que esa IP tiene que corresponder a ese *.onion evitando así colisiones como ataques de spoofing. Luego podemos utilizarlo a través de otra VPN que se crea dentro del tunel en IPv6 conectando a contra otro onioncat con IPv6 configurado, aportando una capa más de seguridad.

El uso de OnionCat permite solucionar problemáticas para el anonimato como los conocidos DNS Leaks. Ya que se construye una VPN transparente para manejar cualquier tipo de paquete IP sin alterar la funcionalidad de los servicios y sin afectar su anonimato.

Resumiendo OnionCat técnicamente es un programa que utilizando el hidden service de TOR traduce direcciones de 80bits (onion), que normalmente suelen ser los primeros 80bits en base32 de la cadena del hash SHA1 de la clave del servidor, a 128bits IPv6.

FUNCIONAMIENTO

La resolución de los hidden services que se realiza en TOR operan en la capa de transporte (capa 4), estas direcciones tienen un espacio reservado de 80 bits. Por otro lado se encuentra la VPN que es creada por OnionCat para tratar los paquetes IP, ésta es creada en la capa de enlace (capa 3). Para solucionar la discrepancia entre ambas capas se utiliza IPv6 cuyo espacio de direcciones es de 128 bits, espacio lo suficientemente amplio para realizar transformaciones de direcciones *.onion a IPv6 y viceversa.

Onioncat intentará extraer del paquete IPv6 que llegue a nuestro sistema operativo los primeros 80 bits de la dirección del destino y traducirla a una url *.onion. De tal forma que solicitará a TOR abrir un nuevo circuito virtual hacia el destino indicado en el paquete, posteriormente Onioncat se encargará de redireccionar todos los paquetes que le lleguen a TOR, mientras tanto, en el otro extremo del circuito virtual, OnionCat recibe los paquetes desde TOR y los redirecciona al sistema operativo.

INSTALACIÓN

Damos por hecho que tenemos Tor instalado en nuestro sistema, así como configurado un hidden service que apunte al puerto donde se encontrará en ejecución OnionCat (por defecto es el 8060).

Con este sencillo script cedido por ninguno la instalación se realiza de una forma muy sencilla \o/

$ cat GatoCebolla.sh
#!/bin/bash
apt-get -y install tor onioncat openvpn
sudo -u debian-tor mkdir /var/lib/tor/hidden-service/
echo 'HiddenServiceDir /var/lib/tor/hidden-service/
HiddenServicePort 8060 127.0.0.1:8060' >> /etc/tor/torrc
sed -i 's/#ENABLE/ENABLE/' /etc/default/onioncat
service tor restart
echo 'DAEMON_OPTS="-d 0 '$(cat /var/lib/tor/hidden-service/hostname)'"' >> /etc/default/onioncat
service onioncat restart

Una vez instalado las opciones del GatoCebolla son las siguientes:

$ ocat -h onioncat 0.2.2.r553 (c) Bernhard R. Fischer (OnionCat mode) usage: ocat [OPTIONS] 
-a create connect log at “$HOME/.ocat/ocat_connect_log” (default = 0) 
-b daemonize (default = 1) 
-B do not daemonize (default = 0) 
-h display usage message 
-H ignore /etc/hosts while in GarliCat mode 
-C disable local controller interface 
-d set debug level to n, default = 7 
-f read config from config_file (default = /usr/local/etc/ocat.conf) 
-i convert onion hostname to IPv6 and exit 
-I GarliCat mode, use I2P instead of Tor 
-l [:] set ocat listen address and port, default = 127.0.0.1:8060 
-L log output to (default = stderr) 
-o convert IPv6 address to onion url and exit 
-p use TAP device instead of TUN 
-P [] create pid file at location of (default = /var/run/ocat.pid) 
-r run as root, i.e. do not change uid/gid 
-R generate a random local onion URL 
-s set hidden service virtual port, default = 8060 
-t [:] set Tor SOCKS address and port, default = 127.0.0.1:9050 
-T path to tun character device, default = “/dev/net/tun” 
-u change UID to user, default = “tor” 
-4 enable IPv4 support (default = 0)

CONFIGURACION

Vemos la url .onion asignada por TOR al hidden service:

$ cat /var/lib/tor/hidden-service/hostname

nevsdsww236o5o7n.onion

De tal forma que podemos ver como explicábamos anteriormente la dirección IPv6

$ ocat -B nevsdsww236o5o7n.onion

Thu, 27 Nov 2014 13:14:09.046 +0100 [0:main : debug] *init* thread 0 
Thu, 27 Nov 2014 13:14:09.046 +0100 [0:main : debug] thread detached 
Thu, 27 Nov 2014 13:14:09.046 +0100 [0:main : debug] argv[2] = "nevsdsww236o5o7n.onion" fd87:d87e:eb43:692b:21ca:d6f5:3c23:bbed

Ejecutamos el GatoCebolla con la opción -B con el fin de iniciar el servicio en la maquina local, se abrirá el puerto 8060 por defecto.

Creamos una interfaz virtual TUN/TAP con el nombre de “tun0” la cual será la que se utilice para la conexión con otros hidden services en TOR.

$ ocat -B nevsdsww236o5o7n.onion

Consultamos la interfaz de red:

$ ifconfig tun0


tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
inet6 addr: fd87:d87e:eb23:692b:23ca:d6f5:3c23:bbed/48 Scope:Global UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

tun-ipv6 Link encap:UNSPEC direcciónHW 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 Direc. inet:10.0.0.6 P-t-P:10.0.0.5 Másc:255.255.255.255 ACTIVO PUNTO A PUNTO FUNCIONANDO NOARP MULTICAST MTU:1500 Métrica:1 Paquetes RX:1139 errores:0 perdidos:0 overruns:0 frame:0 Paquetes TX:1682 errores:0 perdidos:0 overruns:0 carrier:0 colisiones:0 long.colaTX:100 Bytes RX:88891 (88.8 KB) TX bytes:114182 (114.1 KB)

Levantamos tun0:

$ ifconfig tun0 up 

La tabla de rutas debe contener una entrada que apunte al dispositivo tun0:

$ netstat -nr6 || $ route -n6

Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If fd87:d87e:eb43::/48 :: U 256 0 0 tun0 fe80::/64 :: U 256 0 0 wlan0 fe80::/64 :: U 256 0 0 tun0 fe80::/64 :: U 256 0 0 usb0 ::/0 :: !n -1 1 1641 lo ::1/128 :: Un 0 1 0 lo fd87:d87e:eb43:692b:21ca:d6f5:3c23:bbed/128 :: Un 0 1 0 lo fe80::222:faff:fe35:e4b6/128 :: Un 0 1 0 lo fe80::dcbb:faff:fedc:5982/128 :: Un 0 1 0 lo ff00::/8 :: U 256 0 0 wlan0 ff00::/8 :: U 256 0 0 tun0 ff00::/8 :: U 256 0 0 usb0 ::/0 :: !n -1 1 1641 lo

Comprobamos que se realizan peticiones correctamente lanzando un ping a la IPv6 de algún servicio que conozcamos con el comando ping6:

$ ping6 de la IPv6 en cuestión

PING fd87:d87e:eb43:692b:21ca:d6f5:3c23:bbed(fd87:d87e:eb43:692b:21ca:d6f5:3c23:bbed) 56 data bytes 64 bytes from fd87:d87e:eb43:692b:21ca:d6f5:3c23:bbed: icmp_seq=1 ttl=64 time=0.026 ms 64 bytes from fd87:d87e:eb43:692b:21ca:d6f5:3c23:bbed: icmp_seq=2 ttl=64 time=0.031 ms 64 bytes from fd87:d87e:eb43:692b:21ca:d6f5:3c23:bbed: icmp_seq=3 ttl=64 time=0.041 ms 64 bytes from fd87:d87e:eb43:692b:21ca:d6f5:3c23:bbed: icmp_seq=4 ttl=64

Cuando se ejecuta por primera vez el comando PING6 (u otro tipo de consulta con OnionCat) éste puede tardar unos minutos, ya que OnionCat solicita a TOR que construya un circuito para inicializar la VPN. Keep Calm :)

Algunos de los Servicios que podemos encontrar en OnionCat que se suponen que están funcionando permanentemente son: (Puedes probar a realizar un ping6 a alguna de estas direcciones).

Servicio web que muestra proveedores del GatoCebolla. Está pensado para que los proveedores de servicios Onioncat sean encontrados fácilmente por los demás usuarios. Puedes navegar por esta página y encontrar servicios de ocat. Se trata de un directorio de servicios disponibles que utilizan OnionCat:

dot.aio (fd87:d87e:eb43:f683:64ac:73f9:61ac:9a00)

Servicio de IRC utilizando TOR y OnionCat. En esta misma dirección se encuentra en el puerto 1337 «OnionCat Radio»:

irc.onion.aio (fd87:d87e:eb43:2243:5f84:5b12:7bb5:bbc2)

Servicio que lo único que hace es responder a peticiones “echo” (pings)

ping.onion.aio (fd87:d87e:eb43:f947:ad24:ec81:8abe:753e)

Servicio de correo electrónico SMTP /POP3. En estos momentos no existe un servicio automático para el registro de direcciones electrónicas pero si se está interesado se puede enviar un correo electrónico a onionmail@onion.aio con el fin de obtener una cuenta.

mail.onion.aio (fd87:d87e:eb43:744:208d:5408:63a4:ac4f)

Be Free ;)

Compartir

3 Comentarios

  1. Hola y enhorabuena por elBinario en conjunto , es genial y puedo decir que gracias a que existes , hoy por hoy ,soy un zoquete igual pero me muevo con muchísima mas facilidad con el ordenador y no siempre gana el y consigue mi abandono como pasaba antes de conoceros,
    bueno dicho esto, que hay queda y que ya tenia ganas de descargarlo, voy a por mi consulta.
    podríais repetir todo el proceso para que sea capaz de poder realizarlo. primer paso,a que refieres con hidden service y como se configura, despues y por acabar si .si soy capaz de ejecutar claro ,donde hay que empezar poniendo lo del scrip,
    imagino que en algún apartado de pc,que no me atrevo a buscar sin un poco de orientación, posteriormente intentare seguir los pasos de profesional que indicas y ya respondere con una cordial gratificación, un saludo y gracias.

Deja una respuesta

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax