Archive

Posts Tagged ‘onioncat hidden services’

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

abril 20, 2017 Deja un comentario

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 red (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.

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”.


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.

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.

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)



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.

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.

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.

Generación personalizada de direcciones ONION de TOR con Shallot

junio 16, 2015 2 comentarios

Las direcciones ONION en TOR son cadenas con una longitud exacta de 16 caracteres, compuestas por los dígitos entre 2-7 y las letras en minúsculas de a-z. Dichas direcciones generalmente se crean de forma automática por cualquier cliente de TOR, pero en ocasiones, se pueden encontrar sitios en la web profunda de TOR con direcciones ONION que no parecen ser tan aleatorias como la mayoría, en ocasiones tienen patrones fijos que determinan el contenido y/o temática del servicio oculto. Un ejemplo es Facebook, que cuenta con un servicio oculto en la web profunda de TOR para aquellos que quieran acceder a esta popular red social y ya de paso, perder su privacidad y probablemente el anonimato que brinda TOR. La dirección ONION de facebook en la web profunda de TOR es esta: facebookcorewwwi.onion y como se puede apreciar, existe un patrón bastante claro que además, resulta fácil de memorizar. Ahora bien, lo cierto es que personalizar la dirección completa (16 caracteres) con la capacidad de computo que tenemos actualmente resulta imposible, tal como comentaba en un articulo que he escrito hace algún tiempo, calcular y en consecuencia, descubrir un servicio oculto en TOR, puede llevar millones de años, una escala de tiempo que evidentemente no es tolerable. No obstante, si que se puede personalizar una parte de dicha dirección en poco tiempo, todo depende del número de caracteres que se quiera aplicar al patrón. Para hacer esto, existe una herramienta muy fácil de instalar y utilizar, dicha utilidad es Shallot.

INSTALACIÓN Y USO DE SHALLOT

Shallot es una herramienta que permite aplicar un patrón para personalizar una parte de la dirección ONION de un servicio oculto. Los patrones que se pueden aplicar típicamente son expresiones regulares que permiten indicar la forma en la que se debe generar la clave privada del servicio oculto y en consecuencia, la dirección ONION del mismo. Es un programa que se encuentra escrito en lenguaje C y solamente tiene dos dependencias: libssl y libcrypto, librerías que son bastante comunes en sistemas Linux. El proyecto se puede descargar desde GitHub y el proceso de instalación es tan simple como ejecutar “configure” y “make”

>git clone https://github.com/katmagic/Shallot.git

>./configure
>make

Las opciones que admite Shallot se pueden ver a continuación

>./shallot

Usage: shallot [-dmopv] [-f <file>] [-t count] [-x time] [-e limit] pattern

-d : Daemonize (requires -f)

-m : Monitor mode (incompatible with -f)

-o : Optimize RSA key size to improve SHA-1 hashing speed

-p : Print ‘pattern’ help and exit

-f <file> : Write output to <file>

-t count : Forces exactly count threads to be spawned

-x secs : Sets a limit on the maximum execution time. Has no effect without -m

-e limit : Manually define the limit for e

Version: 0.0.3-alpha

 

El interruptor “-p” puede ser útil para conocer algunos de los patrones (expresiones regulares) que se pueden aplicar con Shallot.

./shallot -p

base32 alphabet allows letters [a-z] and digits [2-7]

pattern can be a POSIX-style regular expression, e.g.

xxx must contain ‘xxx’

bar$ must end with ‘bar’

^foo must begin with ‘foo’

b[a4]r may contain leetspeech 😉

^ab|^cd must begin with ‘ab’ or ‘cd’

[a-z]{16} must contain letters only, no digits

^dusk.*dawn$ must begin with ‘dusk’ and end with ‘dawn’

 

Como se puede apreciar, algunas de las expresiones de ejemplo permiten aplicar patrones muy variados, como por ejemplo que la dirección ONION debe comenzar y/o terminar con una cadena determinada, que contenga solamente números o letras o que contenga en cualquier posición de la dirección una cadena determinada.
También existen otras opciones que permiten controlar el tiempo máximo en el que se debe ejecutar la herramienta, si se debe ejecutar como un proceso en “background” y si el resultado (clave privada para el servicio oculto) se debe almacenar en un fichero. Algunos ejemplos del uso de estos interruptores se enseña a continuación

>./shallot -f /home/adastra/private_key ^hack

>./shallot -m -o ^hacker

>./shallot -m -t 15 ^hacker

En todos los casos, después de procesar y descubrir una clave privada cuya dirección ONION generada contenga el patrón, se pinta por pantalla o se crea un fichero con dicha clave privada para que sea utilizada por un servicio oculto.
Como comentaba antes, el número de caracteres especificados en el patrón es importante y determina si es posible obtener una clave privada que encaje con el patrón y cuánto tiempo puede tardar el calculo de dicha clave. En el proyecto de GitHub de Shallot se enseña la siguiente tabla que nos da una idea del número de caracteres que podemos personalizar en la dirección ONION.

characters time to generate (approx.)
1 less than 1 second
2 less than 1 second
3 less than 1 second
4 2 seconds
5 1 minute
6 30 minute
7 1 day
8 25 days
9 2.5 years
10 40 years
11 640 years
12 10 millenia
13 160 millenia
14 2.6 million years

Las pruebas anteriores las ha realizado el autor con un ordenador de 1.5Gh de procesador. Si bien es cierto que se puede utilizar ordenadores mucho más potentes, las estimaciones anteriores no sufren cambios considerables con una mayor capacidad de computo, además, solamente se ha llegado a calcular hasta 14 caracteres, la cifra con 15 y 16 caracteres puede llegar a billones de años. Muchísimo más de lo que estamos dispuestos a esperar, por mucho que estemos acostumbrados a utilizar sistemas Windows.
Suponiendo que se utiliza un patrón con pocos caracteres, se puede generar una clave privada en muy poco tiempo, de hecho, las dificultades comienzan a partir de 7 o 8 caracteres, pero cualquier patrón que esté por debajo de dicho valor, puede ser procesado por Shallot en un tiempo bastante razonable.
Uno de los resultados que da la herramienta tras aplicar el patrón “^hack” es el siguiente

—————————————————————-

Found matching domain after 998147 tries: hacktkeocgipcjvv.onion

—————————————————————-

—–BEGIN RSA PRIVATE KEY—–

MIICWwIBAAKBgQCmZx9BMoG55KOoyAa0T43rNRW4z8m9vjgdXRxX2ZOaFMbrMITC

U6zm5CaauB0RYvu0m99/J9YhfXJQor69/YUIWMWGOXdn3CfVPML5kJWdCF68jhyE

qmPJAaTuodv7rwlB0KyTzOYUGNLDN/yZey9aG2CKWLfTX/w3Aq7c/6Y20QIDBKSB

AoGABFqfSWmx3CIHU40PJCv2ecf61m7LZcAQErvXddYZDCodEYKXDypWJZatQjKm

Whl9DGCZIMR3jpfVrKlIVjwT8+ERk35DXdRGzWi0n/y8be5XokYMnTreEbkcsprR

H8TeN6cJPwrjgXnd4g9Z2q9luKkDegdGLbsKY9nnh8lf5oUCQQDZi+lDL7S/jEoX

k5Xs805cTLPnqdGT0RelivchoGm03U2ggIUycCLv0SM6VaRcKNsBrGBtWg5jznu9

Xm9865xvAkEAw9DuwqkXK+WixHVY+uoT+LUHmBRJiVV+ZHKUzCOvF4yTxqGNCMAM

LcuCZtiamFbA4YQnBHAMRpMJt12/OSuAvwJAQjs2GYeqUmYE0MFt99KYhA2HHDny

DpSzwriBqAKC/lzk/SnEyYw5nBb/+zLYS3+zNUEAEZ8ktwIF1eFVriczdQJAE6qG

q9J5kLbmVuyhkBB0zO5hcCE5EFVren5/XUGrzOz1hJbv4Q+9TkqDO3xaQ/v+iIqt

hmu8XPNRhi50Q4vXhwJAQywFaZosVqFLUPJB4AmMeKQ2nPHpSLVVWFVPNNTypDZC

LDJgX849UGd0Nu9bCTWFtJaFROGUOa8U2cIsa8N6iQ==

—–END RSA PRIVATE KEY—–

A continuación, solamente es necesario incluir el contenido anterior en un fichero con nombre “private_key” que se deberá ubicar en el directorio que se declara en la propiedad “HiddenServiceDir” del fichero de configuración de TOR (torrc).

HidenServiceDir /home/adastra/servicioOculto

HiddenServicePort 80 127.0.0.1:80

Con las dos directivas anteriores se define un servicio oculto que va a procesar peticiones de los clientes por el puerto 80 en la dirección ONION generada. En este caso, el fichero “private_key” con la clave RSA generada por Shallot debe ubicarse en el directorio “/home/adastra/servicioOculto”. Una vez hecho esto, basta con arrancar la instancia de TOR utilizando el fichero torrc con las directivas anteriores y se podrá ver que en el directorio “/home/adastra/servicioOculto” existe un nuevo fichero llamado “hostname”, con la dirección ONION generada a partir de la clave privada definida en el fichero “private_key”.
Con estos sencillos pasos se puede personalizar una parte de la dirección ONION de un servicio oculto en TOR, algo que en algunos casos viene bien para tener direcciones que sean un poco más fáciles de recordar y compartir.

Saludos y Happy Hack!
Adastra.

Preservando el Anonimato y Extendiendo su Uso – GARLICAT en I2P – Parte XXIX

diciembre 14, 2011 Deja un comentario

Anteriormente se ha mencionado el uso de OnionCat y como era posible acceder a Hidden Services TOR utilizando esta herramienta de forma segura y brindando magnificas facilidades a la hora de transmitir cualquier tipo de paquete IP de forma transparente en la capa de transporte soportado por redes como TOR o I2P. Como se ha mencionado anteriormente OnionCat es una red VPN point-to-multipoint entre servicios existentes en las capas superiores (transporte, sesión, aplicación) como cualquier VPN se encarga de facilitar las cosas a la capa de transporte, es decir, que esta normalmente se encuentra instanciada desde la capa de enlace y facilita la comunicación entre enlace y transporte, para que posteriormente los paquetes IP viajen a las demás capas de forma correcta. Para mayor información sobre el funcionamiento de OnionCat ver la entrada anterior de este Blog que habla sobre este tema en: https://thehackerway.com/2011/11/14/preservando-el-anonimato-y-extendiendo-su-uso-%E2%80%93-utilizando-onioncat-para-simplificar-el-acceso-a-hidden-services-%E2%80%93-parte-xvi/

Leer más…

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

noviembre 14, 2011 1 comentario

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.

Leer más…

A %d blogueros les gusta esto: