Inicio > Hacking, Networking, Services - Software > Preservando el Anonimato y Extendiendo su Uso – Utilizando OnionCat para Simplificar el Acceso a Hidden Services – Parte XVI

Preservando el Anonimato y Extendiendo su Uso – Utilizando OnionCat para Simplificar el Acceso a Hidden Services – Parte XVI

OnionCat es una herramienta que permite utilizar servicios basados en IP tales como servidores web, servidores de correo electrónico, etc. utilizando las ventajas que trae consigo el uso de una red anónima como TOR (sin embargo, OnionCat también puede ser utilizado con otras redes tales como I2P que se verá más adelante). El objetivo de OnionCat es el de crear una capa de transporte de paquetes IP transparente por encima de los hidden services registrados en TOR para permitir que otros usuarios accedan de forma remota (y anónima) a distintos tipos de servicios, sin conocer la dirección real de dichos servicios, tal como se ha visto en entradas anteriores, los hidden services en TOR tienen asociada una dirección virtual que no es resoluble por los medios convencionales (por medio de consultas a servidores DNS) estas direcciones virtuales son resueltas directamente por la red de TOR y tienen el sufijo “.onion” que los identifica como hidden services.

OnionCat permite transmitir cualquier tipo de paquete IP de forma transparente sobre las bases que provee la red de TOR y la localización de hidden services, frecuentemente se suele relacionar a OnionCat como una VPN point-to-multipoint entre hidden services existentes en la red de TOR, de hecho, desde el punto de vista técnico, OnionCat es una VPN que se apoya en los servicios de anonimato que prestan algunas redes anónimas tales como TOR e I2P.

Los elementos principales de cualquier VPN son el trafico que transportan y el circuito virtual de las máquinas que se encuentran conectadas, TOR tiene su propio circuito virtual privado, que como ya se ha indicado a lo largo de esta serie, se conforma por 3 nodos de los cuales dos de ellos corresponden al nodo de recepción de la solicitud y al nodo de salida respectivamente, en este caso OnionCat solicita a TOR la construcción de dicho circuito y posteriormente envía y recibe paquetes IP sobre dicho circuito.

Ahora bien, OnionCat se encuentra soportada por un lado por el sistema operativo en el cual se ejecuta (para funciones de red y establecimiento de la interfaz VPN) y por otro lado por la red de TOR (hidden services) estos son los “pilares” (por llamarlo de alguna forma) de OnionCat para su correcto funcionamiento, esto trae consigo algunos problemas cuya resolución es apoyada por IPv6, por esta razón se suele utilizar IPv6 para acceder a hidden services de TOR por medio de OnionCat, se indica el funcionamiento de OnionCat en detalle a continuación.

Cómo funciona OnionCat y por que utilizar IPv6 para acceder a Hidden Services

Como ya se ha indicado, los hidden services de TOR utilizan direcciones *.onion que solamente tienen un valor dentro de la red de TOR, la cual se encarga de localizar el servicio de forma correcta, la resolución de dichos servicios se realiza en TOR en la capa de transporte (capa 4, ver modelo OSI para tener clara la arquitectura de red y de servicios TCP/IP), estas direcciones tienen un espacio de dirección reservado de 80 bits. Por otro lado se encuentra la VPN que es creada por OnionCat para tratar los paquetes IP, esta es creada en la capa de enlace (capa 3) dado este escenarios el problema que se levanta es la discrepancia de capas, dado que cada una tiene su propio mecanismo de direccionamiento, mientras que los hidden services utilizan un espacio de dirección de 80 bits la capa de enlace utiliza direcciones IP. Es aquí donde entra en juego IPv6 ya que el espacio de direcciones que utiliza IPv6 es de 128 bits, espacio lo suficientemente amplio para realizar transformaciones de direcciones *.onion a IPv6 y viceversa, de esta forma si un paquete IPv6 llega desde el sistema operativo, Onioncat intentará extraer los primeros 80 bits de la dirección del destino y los traduce a una URL *.onion y 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 al circuito virtual de TOR, mientras tanto, en el otro extremo del circuito virtual, OnionCat recibe los paquetes desde TOR y los redirecciona al sistema operativo, desde el punto de vista del sistema operativo no existe ninguna diferencia si los paquetes llegan desde la interfaz física o la interfaz virtual de OnionCat, va a hacer lo que siempre hace con los paquetes que le llegan.

Instalación, Configuración y Uso de OnionCat

Antes de comenzar instalar OnionCat es necesario tener instalado TOR (algo que a este punto se da por sentado) y posteriormente configurar un hidden service que será el punto de acceso de OnionCat. Como ya se ha dicho anteriormente OnionCat es en realidad una VPN de acceso publico que esta conformada por hidden services publicados en la red de TOR, por este motivo, antes de poder configurar adecuadamente OnionCat, es necesario configurar un Hidden service en TOR que apunte al puerto donde se encontrará en ejecución OnionCat (por defecto es el 8060).

HiddenServiceDir /home/adastra/hidden_service_onioncat/

HiddenServicePort 8060 127.0.0.1:8060

Una vez se inicia TOR, automáticamente se creará la clave publica y la URL “onion” del servicio que se ha creado (el servicio OnionCat anónimo), esta ruta es importante ya que se tiene que definir en la ejecución de OnionCat una vez este se inicie.

Una vez iniciado TOR, se procede a instalar OnionCat, su procedimiento es simple, se puede descargar el “tarball” desde www.cypherpunk.at/ocat/download/ o se puede obtener el estado actual del proyecto descargado el código fuente desde el repositorio SVN.

>svn checkout http://www.cypherpunk.at/svn/onioncat/trunk onioncat

Independiente del mecanismo empleado, el proceso de compilación, construcción e instalación es el mismo

>./configure

>make

>make install

Una vez se encuentra instalado en la maquina local, las opciones disponibles son las siguientes

>ocat -h

onioncat 0.2.2.r553 (c) Bernhard R. Fischer (OnionCat mode)

usage: ocat [OPTIONS] <onion_hostname>

-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 <n> set debug level to n, default = 7

-f <config_file> 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 [<ip>:]<port> set ocat listen address and port, default = 127.0.0.1:8060

-L <log_file> log output to <log_file> (default = stderr)

-o <ipv6_addr> convert IPv6 address to onion url and exit

-p use TAP device instead of TUN

-P [<pid_file>] create pid file at location of <pid_file> (default = /var/run/ocat.pid)

-r run as root, i.e. do not change uid/gid

-R generate a random local onion URL

-s <port> set hidden service virtual port, default = 8060

-t [<ip>:]<port> set Tor SOCKS address and port, default = 127.0.0.1:9050

-T <tun_device> path to tun character device, default = “/dev/net/tun”

-u <user> change UID to user, default = “tor”

-4 enable IPv4 support (default = 0)

Las opciones anteriores son bastante claras, permiten definir el comportamiento de la herramienta a varios niveles, muchas de ellas tienen valores por defecto que pueden ser cambiados simplemente ingresando el valor adecuado, no obstante existe una opción que permite utilizar Garlicat que permite a OnionCat utilizar como circuito virtual una red I2P, dado que OnionCat ha sido pensado para TOR, todas las opciones funcionan por defecto con TOR, sin embargo con la opción -I puede cambiarse este comportamiento. En esta entrada no se hablará de I2P y Garlicat, no obstante en próximas entradas se cubrirá este tema en profundidad.

Primero es necesario consultar cual ha sido la URL “onion” que ha asignado TOR al hidden service declarado en el fichero de configuración torrc, para ello se consulta el directorio de dicho servicio (la opción HiddenServiceDir declarada anteriormente) el contenido de dicho fichero es:

>cat /home/adastra/hidden_service_onioncat/hostname

dia73oqf3zmsemey.onion

Esta ruta puede ser utilizada por el comando de OnionCat para retornar la dirección Ipv6

>ocat -i dia73oqf3zmsemey.onion

fd87:d87e:eb43:1a01:fdba:5de:5922:3098

Posteriormente se puede ejecutar OnionCar con la opción -B con el fin de iniciar el servicio en la maquina local, recordar que como se ha mencionado anteriormente, se abrirá el puerto 8060 (valor por defecto) sin embargo puede especificarse cualquier otro utilizando la opción -s, no obstante recordar también que el puerto que se utilice aquí debe ser también referenciado en el fichero de configuración de TOR donde se indique el hidden service.

>ocat -B -u adastra dia73oqf3zmsemey.onion

Thu, 06 Oct 2011 22:41:11.287 +0200 [0:main : info] onioncat 0.2.2.r553 (c) Bernhard R. Fischer (OnionCat mode)

Thu, 06 Oct 2011 22:41:11.298 +0200 [0:main : info] IPv6 address fd87:d87e:eb43:1a01:fdba:5de:5922:3098

Thu, 06 Oct 2011 22:41:11.298 +0200 [0:main : info] TUN/TAP device tun0

Thu, 06 Oct 2011 22:41:11.299 +0200 [0:main : info] running as root, changing uid/gid to adastra (uid 1000/gid 1000)

Thu, 06 Oct 2011 22:41:11.300 +0200 [2:cleaner : info] stats: … (not implemented yet)

Thu, 06 Oct 2011 22:41:11.301 +0200 [1:receiver : err] select encountered error: “Interrupted system call”, restarting

Thu, 06 Oct 2011 22:41:11.301 +0200 [0:main : info] starting packet forwarder

La ejecución del comando anterior ha dado como resultado la creación de una interfaz virtual TUN/TAP con el nombre de “tun0” esta interfaz virtual será la que se utilice para la conexión con otros hidden services en la red de TOR. Por otro lado, este comando se debe ejecutar con privilegios de ROOT, no obstante se debe especificar un usuario para asignarle el proceso que se esta creando, de esta forma, este servicio no se ejecutará con privilegios de ROOT que como siempre, se trata de una medida de seguridad muy recomendada.

Ahora para ver que todo ha quedado correctamente configurado, se consulta en primer lugar 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:eb43:1a01:fdba:5de:5922:3098/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)

Y se levanta

>ifconfig tun0 up

Finalmente, la tabla de rutas (route) debe contener una entrada que apunte al dispositivo tun0, consultar esto con el siguiente comando

>netstat -nr6

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 eth0

fe80::/64 :: U 256 0 0 ham0

fe80::/64 :: U 256 0 0 tun0

::/0 :: !n -1 1 1 lo

::1/128 :: Un 0 1 19 lo

fd87:d87e:eb43:1a01:fdba:5de:5922:3098/128 :: Un 0 1 0 lo

fe80::5642:49ff:fefa:c10d/128 :: Un 0 1 0 lo

fe80::c8c2:5dff:fe8e:ebc4/128 :: Un 0 1 0 lo

ff00::/8 :: U 256 0 0 eth0

ff00::/8 :: U 256 0 0 ham0

ff00::/8 :: U 256 0 0 tun0

::/0 :: !n -1 1 1 lo

Todo se encuentra configurado, ahora se debe probar, para ello es necesario realizar una conexión a un hidden service en la red de TOR que utilice OnionCat, actualmente la disponibilidad de algunos de estos servicios no es demasiado constante y posiblemente al momento de realizar la prueba con algunos de estos, la conexión no pueda establecerse dado que se encontrarán inactivos, no obstante se indican algunos de estos servicios para intentar establecer la conexión con ellos y probar que OnionCat ha quedado correctamente configurado.

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

Servicio de registro que permite a sus usuarios registrar sus propios servicios con el fin de poder ser encontrados por otros usuarios, se trata de un directorio de servicios disponibles en TOR que utilizan OnionCat

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

Servicio de IRC utilizando TOR y OnionCat

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

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

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

Servicio de SMTP/POP3 para envío y recepción de correos electrónicos.

Ahora bien, para probar si esta funcionando correctamente se realizan peticiones a dichas direcciones utilizando el comando PING6 por ejemplo el resultado de la ejecución del siguiente comando es la siguiente

>ping6 fd87:d87e:eb43:744:208d:5408:63a4:ac4f

PING fd87:d87e:eb43:744:208d:5408:63a4:ac4f(fd87:d87e:eb43:744:208d:5408:63a4:ac4f) 56 data bytes

64 bytes from fd87:d87e:eb43:744:208d:5408:63a4:ac4f: icmp_seq=3 ttl=64 time=1288 ms

64 bytes from fd87:d87e:eb43:744:208d:5408:63a4:ac4f: icmp_seq=4 ttl=64 time=1450 ms

64 bytes from fd87:d87e:eb43:744:208d:5408:63a4:ac4f: icmp_seq=5 ttl=64 time=1923 ms

^C

— fd87:d87e:eb43:744:208d:5408:63a4:ac4f ping statistics —

7 packets transmitted, 3 received, 57% packet loss, time 6026ms

rtt min/avg/max/mdev = 1288.505/1554.133/1923.535/269.438 ms, pipe 2

Anteriormente se inicio OCAT con la opción -B por lo tanto las trazas de la ejecución se deben enseñar por consola, algo similar a lo siguiente se podrá apreciar cuando se ejecuta el comando anterior

Thu, 06 Oct 2011 23:11:19.379 +0200 [4:connector : info] trying to connect to “a5ccbdkubbr2jlcp.onion” [fd87:d87e:eb43:744:208d:5408:63a4:ac4f] on 13

Thu, 06 Oct 2011 23:11:20.688 +0200 [4:connector : info] SOCKS connection successfully opened on fd 13

Thu, 06 Oct 2011 23:11:20.688 +0200 [4:connector : info] inserting peer fd 13 to active peer list

Cabe resaltar que la primera vez que se ejecuta el comando PING6 (o se realiza cualquier tipo de consulta con OnionCat) esta puede tardar cerca de 2 minutos, dado que OnionCat solicita a TOR que construya un circuito para inicializar la VPN, por lo tanto se debe tener un poco de paciencia.

Finalmente, aunque OnionCat ha sido inicialmente implementado para TOR, también soporta I2P cuando se ejecuta en modo GarliCat, sin embargo esto se verá con mayor detalle en las próximas entradas de esta serie.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: