Revista Tecnología

Servicios ocultos en TOR sobre IP: Creando un adaptador VPN anónimo con OnionCAT

Publicado el 20 abril 2017 por Debadastra @jdaanial

Cuando se habla de servicios ocultos en TOR, nos referimos típicamente a servicios tradicionales que funcionan únicamente por TCP, por ejemplo un servidor web, SSH, SMB o FTP, todo es posible. Crear un servicio oculto es tan simple como utilizar las directivas HiddenServiceDir y HiddenServicePort, las cuales se encargan de crear o leer un directorio dado en donde se encontrará la clave privada del servicio y para establecer el puerto del servicio en ejecución respectivamente. En realidad la creación de un servicio oculto tiene una dificultad mínima y cualquiera sin demasiados conocimientos puede hacerlo, sin embargo nos encontramos con que únicamente vamos a poder exponer un puerto por cada combinación de HiddenServiceDir y HiddenServicePort en el fichero de configuración de TOR (también conocido como “torrc”). Si queremos tener, por ejemplo, todos los servicios de un sistema disponibles en la deep web de TOR, tenemos que ir creando “pares” de ambas directivas por cada servicio que se quiera exponer. Esto con muchos servicios resulta tedioso y difícil de mantener, además de que las direcciones Onion no solamente no son fáciles de recordar, sino que además al no ser resolubles por medio de un servidor DNS o similar, pueden haber varias dificultades a la hora de acceder a éste tipo servicios utilizando ciertas herramientas. Estos son solamente algunos de los problemas que se suelen presentar a la hora de crear y acceder a un servicio oculto en TOR y desde luego, en ciertos casos, no resulta práctico. Ahora bien, tomando como referencia el funcionamiento de Freenet, en ocasiones resulta conveniente tener la posibilidad de crear grupos cerrados dentro de la propia red anónima para que sea posible el intercambio de información o incluso el acceso a servicios que únicamente pueden ser consultados por los miembros de dicho grupo. Esta característica no se encuentra disponible en TOR, sin embargo existe una alternativa bastante interesante de la que ya se ha hablado de forma muy superficial en éste blog y que merece la pena explicar en detalle, dicha alternativa es conocida como OnionCat.

OnionCat es una solución robusta y eficiente para afrontar los problemas mencionados anteriormente y que evidentemente se encuentran relacionados con la arquitectura de los servicios ocultos en TOR. OnionCAT permite crear un adaptador VPN sobre IPv6 que funciona en la capa de enlace (capa 3 en el modelo OSI) y la resolución de las direcciones ONION se lleva a cabo en la capa de transporte (capa 4 del modelo OSI), de ésta forma es posible tratar paquetes IP y facilitar el acceso a los servicios ocultos en redes anónimas tales como TOR o incluso I2P (modo GarliCAT).

OnionCAT se encarga de calcular y asignar de forma automática una dirección IPv6 única cuyo destino apunta a un servicio oculto de TOR, de ésta forma provee de un mecanismo único de enrutamiento, en donde los usuarios pueden comunicarse de forma transparente sobre direcciones IPv6 y acceder a prácticamente cualquier tipo de servicio basado en IP de forma anónima gracias a la arquitectura de TOR.

Para utilizar OnionCAT es necesario especificar la dirección onion de un servicio en ejecución y a continuación, la herramienta se encargará de generar una interfaz TUN con la que se podrá comenzar a trabajar. Uno o varios usuarios deben realizar el mismo procedimiento para poder interactuar por medio de sus correspondientes direcciones IPv6.
Cuando llega un paquete IPv6 a OnionCAT, éste intentará extraer los primeros 80 bits de la dirección del destino y traducirlos a una URL *.onion, para finalmente abrir un nuevo circuito de TOR hacia el destino indicado en el paquete. Se trata de un procedimiento que realiza de forma automática la herramienta, con lo cual no es necesario aplicar configuraciones complejas ni mucho menos, basta simplemente con instalar OnionCAT y configurar adecuadamente la instancia de TOR para que todo funcione correctamente. Es probable que la mejor forma de entender el funcionamiento de todo esto sea por medio de un ejemplo y es justo lo que se hará a continuación.

INSTALACIÓN DE ONIONCAT.

OnionCAT es una utilidad desarrollada en C, con lo cual como muchas herramientas en dicho lenguaje, tiene su correspondiente fichero “configure”, el cual se encarga de la compilación de los ficheros fuente para que posteriormente, se pueda ejecutar el comando “make”. OnionCAT se puede descargar desde aquí: https://www.cypherpunk.at/ocat/download/ y una vez descargada la última versión estable se debe ejecutar el script “configure” y luego “make & make install”. Finalmente, para verificar que ha quedado correctamente instalado en el sistema, basta con lanzar el comando “ocat”. Deberían de aparecer cada una de las opciones disponibles en ocat.

Servicios ocultos en TOR sobre IP: Creando un adaptador VPN anónimo con OnionCAT
Instalación de OnionCAT en el sistema.

A continuación, es necesario crear un servicio oculto en una instancia de TOR cuyo endpoint en la deep web sea el puerto 8060 y desemboque en la máquina local en el mismo puerto. El fichero “torrc” puede contener lo siguiente:

DataDirectory /home/adastra/tor_data_directory

SOCKSPort 9050

Log notice file /home/adastra/tor_data_directory/tor_log.log

HiddenServiceDir /home/adastra/ servicioOcultoOCat

HiddenServicePort 8060 127.0.0.1:8060

Es un contenido bastante simple, pero más que suficiente para proceder con el arranque de la instancia de TOR y luego, dejar que OnionCAT “haga su magia”.

Servicios ocultos en TOR sobre IP: Creando un adaptador VPN anónimo con OnionCAT

Bien, el servicio oculto está preparado en el puerto 8060, ahora solamente falta levantar OnionCAT por medio del comando “ocat” pasándole como argumento el contenido del fichero “/home/adastra/servicioOcultoOCat/hostname” que ha generado automáticamente TOR al momento de levantar la instancia (obviamente el directorio puede ser otro, basta simplemente con editar la directiva de configuración HiddenServiceDir). El siguiente comando permitirá generar una interfaz TUN con una dirección IPv6, que como veremos un poco más abajo, será la que nos permita acceder a otros servicios que utilicen también OnionCAT como si se encontrarán en la misma red.

Servicios ocultos en TOR sobre IP: Creando un adaptador VPN anónimo con OnionCAT

Hasta éste punto únicamente contamos con una dirección IPv6, la cual dará acceso a otras instancias de OnionCAT que se encuentren funcionando en la red de TOR, solamente es necesario compartir ésta dirección con aquellas personas con las que queremos conectarnos.

Para hacerlo más interesante, desde una VM vamos a crear otra instancia de TOR+OnionCAT con la misma configuración vista anteriormente y se podrá apreciar que ambas instancias pueden acceder a cualquier servicio e incluso, utilizar protocolos distintos a TCP, todo sobre TOR y con el adaptador de red virtual generado por OnionCAT y por si fuera poco, nos olvidamos de direcciones Onion, es posible utilizar directamente direcciones IPv6 y acceder no sólo a un servicio concreto, accedemos a todo lo que pueda ofrecer el sistema, como si se tratara de una red local.

Servicios ocultos en TOR sobre IP: Creando un adaptador VPN anónimo con OnionCAT

En el otro sistema se ha seguido exactamente el mismo procedimiento, es decir, se ha levantado una instancia de TOR con un servicio oculto que apunta al puerto 8060 tanto interno como externo y a continuación, se ha utilizado OnionCAT para generar la interfaz TUN con su correspondiente dirección IPv6. Para comprobar el correcto funcionamiento de ésta configuración, basta simplemente con ejecutar un “ping6” contra dicha dirección IP y ver cómo responde (desde el primer sistema configurado contra el segundo obviamente)

Servicios ocultos en TOR sobre IP: Creando un adaptador VPN anónimo con OnionCAT

Tal y como se puede ver en la imagen anterior, el “ping6” contra la dirección IPv6 del sistema que se encuentra en la VM responde perfectamente, en este caso todo pasa por medio de la red TOR antes de llegar a su destino. Hay que tener en cuenta que es un proceso que puede tardar un poco, no hay que olvidar que lo que hay por debajo es un servicio oculto estándar de TOR, por ese motivo las conexiones pueden ir un poco más lentas.

Ahora, utilizando la dirección IPv6 de la máquina virtual, vamos a conectarnos a un servicio SSH que se encuentra en dicha máquina.

Servicios ocultos en TOR sobre IP: Creando un adaptador VPN anónimo con OnionCAT

Como se puede apreciar, la conexión se ha podido establecer correctamente. Esto mismo aplica a cualquier servicio que se encuentre en dicho sistema, como por ejemplo un servidor web, FTP, POP, SMB, etc. Como decía antes, nos olvidamos de las direcciones Onion y ahora tiramos directamente de direcciones IPv6. Esto mismo lo podría hacer cualquier instancia que utilice OnionCAT en la red de TOR, basta simplemente con que conozca la dirección IPv6 con la que desea establecer una conexión y consumir cualquier tipo de servicio, de manera confidencial y anónima utilizando la infraestructura de TOR.

Así es posible crear grupos cerrados de personas que comparten servicios o información sin necesidad de depender de servicios ocultos y direcciones Onion, cada uno de los miembros intercambia sus direcciones IPv6 y puede ofrecer varios servicios sobre IP y por debajo, todo pasará por medio de TOR, ya no seria necesario recordar “N” direcciones Onion para acceder a “N” servicios ocultos de una instancia, únicamente conociendo la dirección IPv6 se puede acceder a todo lo que exponga dicha máquina.
Para demostrar estas afirmaciones, se puede lanzar directamente un escaneo con Nmap contra la dirección IPv6 utilizada anteriormente y como se puede apreciar en la siguiente imagen, se detectan  varios servicios con puertos abiertos.

Servicios ocultos en TOR sobre IP: Creando un adaptador VPN anónimo con OnionCAT

Si no te gusta manejar o crear servicios ocultos uno a uno o estas cansado de utilizar direcciones Onion para compartir información o tener algún servidor en la deep web de TOR, la mejor solución que tienes actualmente es OnionCAT.

Un saludo y Happy Hack!
Adastra.


Volver a la Portada de Logo Paperblog