Archive

Posts Tagged ‘hidden services tor’

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.

Pentesting contra servicios ocultos en TOR – Parte 2

junio 9, 2015 Deja un comentario

Tal como mencionaba en el artículo anterior sobre pentesting contra servicios ocultos en TOR, es posible que algunos crean que atacar un servicio oculto es una tarea compleja y que requiere de muchos conocimientos para llevarla a cabo, pero lo cierto es que no difiere de un proceso de pentesting convencional. Es importante tener en cuenta que cualquier servicio en la web profunda de TOR puede contener vulnerabilidades criticas que pueden afectar a su desempeño y seguridad, sin embargo, son muchos los usuarios de TOR, I2P o Freenet que creen que por utilizar este tipo de redes ya se encuentran “protegidos” y relajan o descuidan la seguridad de los servicios ocultos que crean y administran. Esto es un error y cualquier servicio que contenga vulnerabilidades puede ser igualmente explotable, aunque se encuentre en la “cyphernet” de TOR o I2P.

En el artículo anterior se explica como utilizar SOCAT para crear un túnel entre la máquina local y el servicio oculto que se desea atacar, utilizando por medio el proxy socks que típicamente se levanta cuando se arranca una instancia de TOR. Este es el mecanismo más sencillo y eficaz que se puede utilizar para realizar pruebas de pentesting contra servicios ocultos, no obstante es necesario mapear en puertos distintos cada una de las direcciones ONION que se desea atacar, no es cómodo pero desde luego resulta sencillo y fácil de implementar. En el post anterior explicaba cómo hacer esto contra un servicio oculto del tipo HTTP, el cual era soportado por una aplicación web vulnerable con Django-moth. En dicho post se explicaba el uso de Nikto y W3AF para comprometer el servicio oculto y ya de paso su anonimato, pero también es posible hacer esto mismo con otros servicios ocultos que no son el típico servidor web, sino también con cualquier servidor que funcione utilizando protocolo TCP. En este artículo se realizarán pruebas sencillas contra servicios ocultos del tipo FTP y SSH

Atacando un servicio oculto en TOR del tipo FTP

Existen muchas implementaciones del protocolo FTP tanto desde el lado del cliente como desde el lado del servidor y también, han sido muchas las vulnerabilidades que se han encontrado y explotado en dichas implementaciones. Si un servidor FTP vulnerable se expone en la web profunda de TOR, es probable que pueda seguir siendo utilizado sin mayores problemas en el caso de que solamente un grupo reducido de usuarios conozca su dirección ONION y no pretendan vulnerarlo, pero si un atacante descubre dicha dirección ONION no tardará demasiado en hacerse con el control de dicho servicio.
Las directivas utilizadas para crear un servicio FTP no son diferentes a las de cualquier otro tipo de servicio oculto, lo único que probablemente cambiará será el puerto y obviamente el directorio.

HiddenServiceDir /home/adastra/Escritorio/hidden_service_ftp/HiddenServicePort 21 127.0.0.1:21

Las líneas anteriores se incluirán en el fichero “torrc” y en la máquina donde se levanta la instancia de TOR, deberá existir un proceso vinculado al puerto 21. La dirección ONION generada, también responderá únicamente a las peticiones entrantes por el puerto 21.
Nuevamente se puede utilizar SOCAT para crear un túnel entre el servicio oculto y la máquina del atacante, pero eso si, es necesario que en la máquina del atacante se arranque una instancia de TOR que tenga la propiedad SOCKSPort establecida (bastante frecuente) para poder utilizar dicho proxy SOCKS y conseguir llegar al servicio oculto.

>socat TCP4-LISTEN:8000,reuseaddr,fork SOCKS4A:127.0.0.1:ondsyq4v4xcr6ct6.onion:21,socksport=9150

El puerto que se abrirá en la máquina del atacante será el 8000 y cualquier petición que llegue a dicho puerto, será automáticamente enrutada al servicio oculto en el puerto 21 cuya dirección ONION es “ondsyq4v4xcr6ct6”, evidentemente para que dicho enrutamiento funcione correctamente se debe establecer el proxy SOCKS, que en este caso es el puerto 9150 (puerto por defecto que utiliza TOR Browser).

Con todos los elementos dispuestos, se puede utilizar cualquier herramienta para realizar pruebas de penetración contra el servicio oculto, no obstante antes de hacer nada, es mejor comprobar que el túnel funciona correctamente y para ello, basta con realizar una petición al servidor FTP utilizando cualquier cliente.

pentestingserviciosocultos-II-1Conexión con el servicio oculto del tipo FTP utilizando SOCAT.

Después de verificar que la conexión se puede establecer, se puede utilizar una herramienta como Metasploit Framework para realizar pruebas automatizadas utilizando los módulos auxiliares que se encuentran incluidos en el framework.

pentestingserviciosocultos-II-2Ejecutando el módulo “auxiliary/scanner/ftp/ftp_login” de MSF contra el servicio oculto FTP

pentestingserviciosocultos-II-3Ejecutando otros módulos auxiliares de MSF contra el servicio oculto FTP

Atacando un servicio oculto en TOR del tipo SSH

SSH es un protocolo bastante conocido y utilizado por prácticamente todos los administradores de sistemas y también es un protocolo muy utilizado en la web profunda de TOR. No es sencillo encontrar direcciones ONION con este tipo de servicios, pero hay bastantes y a veces no se encuentran debidamente configurados.  Como mencionaba antes, la principal dificultad a la hora de atacar los servicios ocultos en TOR es que es muy difícil encontrar la dirección ONION de un servicio a atacar y más aun cuando se trata de servicios cuyas funciones son principalmente de administración, como es el caso de cualquier servicio SSH, normalmente son direcciones ONION que solamente las conocen aquellas personas que crean el servicio oculto y que intentan administrar sus servidores de forma remota y anónima. Sin embargo, una vez se descubre la dirección del servicio oculto en cuestión, nuevamente basta con crear un túnel cuyo endpoint será el servicio oculto y a continuación realizar pruebas de pentesting con las herramientas habituales. Suponiendo que la dirección del servicio oculto SSH a atacar es “klebohg2zv4b5j5u”, la siguiente imagen enseña la forma en la que se debe crear el túnel con SOCAT y cómo utilizar el cliente SSH en sistemas Linux para realizar la conexión contra el servicio oculto.

pentestingserviciosocultos-II-4Conexión al servicio oculto del tipo SSH

Después de verificar que el servicio se encuentra activo y que el túnel enruta las peticiones adecuadamente, se puede realizar un proceso de pentesting básico utilizando MSF.

pentestingserviciosocultos-II-5Ejecutando el módulo “ssh_version” de MSF contra el servicio oculto.

pentestingserviciosocultos-II-6Ejecutando el módulo “ssh_enumusers” de MSF contra el servicio oculto.

pentestingserviciosocultos-II-7Ejecutando el módulo “ssh_login” de MSF contra el servicio oculto.

Además de utilizar MSF también se pueden utilizar otras herramientas comunes, como por ejemplo THC Hydra.

pentestingserviciosocultos-II-8Ataque de fuerza bruta contra el servicio oculto utilizando THC Hydra.

Como se puede apreciar, realizar procesos de pentesting contra servicios ocultos en TOR no es una tarea demasiado compleja, aunque si que lo es descubrir las direcciones dichos servicios ocultos. Muchas veces creemos que por utilizar TOR las vulnerabilidades o una mala configuración del sistema es menos evidente o será más difícil de explotar. La realidad es que un servicio oculto en TOR o en cualquier otra red anónima es perfectamente explotable si dicho servicio contiene alguna vulnerabilidad, los vectores de ataque no cambian, solamente cambia el medio utilizado por el atacante.
Si tienes publicado un servicio oculto en cualquier red anónima, presta atención a las vulnerabilidades o malas configuraciones que pueda tener.

Un saludo y Happy Hack!
Adastra.

Pentesting contra servicios ocultos en TOR – Parte 1

junio 2, 2015 3 comentarios

El sábado 30 de mayo realice una pequeña charla con los chicos de GR2Dest en la que hablé sobre anonimato con TOR y pentesting contra servicios ocultos. En dicha charla me centre especialmente en actividades de pentesting contra servicios ocultos en la red de TOR y si bien es cierto que no es algo complicado, creo que muchas personas no saben o no entienden como hacerlo. Por ese motivo me he animado a escribir un par de artículos explicando la forma en la que puedes utilizar algunas de las herramientas de pentesting más habituales para atacar los servicios ocultos que se encuentran en la red de TOR. Este es el primero de ellos, espero que sea de tu agrado y te resulte informativo.

Antes de comenzar, intentaré aclarar algunas cuestiones que son importantes sobre TOR. Tal como mencionaba en el artículo ataca un servicio oculto si te atreves los servicios ocultos en TOR se registran en las autoridades de directorio, donde cada registro se incluye en una tabla hash que se compone por la clave pública del servicio y su dirección onion, la cual estará compuesta por letras entre la a y la zeta en minúsculas y los números entre 2 y 7. Este valor se genera al aplicar el algoritmo Base32 sobre el hash SHA de la clave privada del servicio oculto. Suena complejo, pero en realidad es algo de lo que no tenemos que preocuparnos ya que el cliente de TOR se encarga de la generación de la dirección onion de forma automática. No obstante, conocer esa dirección “onion” es otra historia y ahí es donde reside la verdadera dificultad de atacar servicios ocultos en TOR: Su disponibilidad y que en algunos casos, solamente unos pocos usuarios tienen conocimiento de las direcciones que utilizan para transmitir información. Por poner un ejemplo, imaginaros por un segundo a un grupo de islamistas radicales que necesitan transferir documentos e información entre ellos y que se encuentran ubicados en distintos países. Evidentemente, su dios les exige que luchen contra el infiel y se oculten adecuadamente si quieren disfrutar de las 40 mujeres (o cabras) que están reservadas para ellos en el paraíso, por ese motivo el anonimato es una de sus prioridades principales. En este sentido, solamente un grupo reducido de usuarios conocen la dirección del servicio que utilizarán para intercambiar información y adicionalmente, dicho servicio puede estar disponible en una franja horaria determinada y el resto del tiempo puede encontrarse inactivo, con lo cual las probabilidades de que el servicio sea encontrado por cualquier usuario en la red de TOR son realmente bajas. En Tortazo, existe el modo “onion repository” que intenta descubrir direcciones de forma aleatoria o incremental y aunque funciona de un modo similar a otras aplicaciones como Shallot (https://github.com/katmagic/Shallot) el problema del descubrimiento sigue estando latente.

No obstante, si conoces la dirección ONION del servicio que quieres atacar, las cosas cambian muchísimo, ya que puedes utilizar las herramientas de pentesting que utilizas para auditar cualquier servicio en Internet. Puedes usar Metasploit Framework, W3AF, OpenVAS, NeXpose, Nikto, Nmap, etc, etc. Lo único que necesitas es conocer la dirección ONION del servicio que quieres atacar y arrancar una instancia de TOR levantando un proxy SOCKS. El mecanismo es muy sencillo, basta con crear un túnel que permita conectar el servicio oculto con un puerto arbitrario en la máquina local utilizando el proxy SOCKS levantado por la instancia de TOR. A partir de aquí, basta con ejecutar las herramientas anteriormente mencionadas o cualquier otra contra un puerto en la máquina local. Es tan fácil como suena y no requiere de configuraciones especiales. Eso si, todo debe funcionar con protocolo TCP, ya que UDP o ICMP no se encuentran soportados por TOR. En este artículo, explicaré cómo atacar un servicio HTTP utilizando herramientas de pentesting comunes.

Atacando un servicio oculto en TOR del tipo HTTP

Crear un servicio oculto en TOR no tiene ninguna dificultad, basta con especificar las directivas “HiddenServiceDir” y “HiddenServicePort” en el fichero de configuración utilizado para arrancar la instancia de TOR y poco más. Evidentemente, tienes que tener un servidor ejecutándose en el puerto indicado, de lo contrario solamente tendrás una dirección ONION pero nada que responda a las peticiones de los clientes.
Al utilizar las propiedades anteriores, la instancia de TOR se encargará de crear el directorio del servicio oculto y en él incluirá la clave privada del servicio (private_key) y el fichero en el que se incluye la dirección onion del servicio (hostname). En el caso de que el directorio indicado en la propiedad “HiddenServiceDir” ya exista, la instancia de TOR entiende que el servicio ha sido creado previamente y no intenta machacar el directorio, por el contrario, intenta utilizar los ficheros que en él se encuentran incluidos (hostname y private_key). Las siguientes directivas pueden ser utilizadas el fichero de configuración “torrc” que se utilizará para levantar la instancia de TOR.

HiddenServiceDir /home/adastra/Escritorio/hidden_service_django/HiddenServicePort 80 127.0.0.1:8080

Como se puede apreciar, es realmente simple. No requiere ninguna otra opción de configuración adicional, aunque evidentemente en el fichero “torrc” se incluirán muchas más opciones de configuración para personalizar el comportamiento de la instancia, pero esa es otra historia.

En el directorio “/home/adastra/Escritorio/hidden_service_django/ ” se crearán dos ficheros (hostname y private_key) que contienen la dirección ONION del servicio y su clave privada. Por otro lado, cuando un usuario de TOR ingrese a la dirección ONION del servicio por el puerto “80”, la instancia de TOR que recibe dicha petición se encargará de redirigirla al endpoint correspondiente, que en este caso será la máquina local en el puerto “8080”. Evidentemente, es necesario arrancar un servicio en dicho puerto y dicho servicio puede ser de cualquier tipo (SSH, HTTP, SMB, FTP, etc.) Lo que realmente importa es que funcione sobre TCP.
En este caso, para demostrar el uso de algunas herramientas de pentesting contra un servicio oculto vulnerable en la web profunda de TOR, vamos a arrancar una aplicación web con múltiples vulnerabilidades que utiliza el equipo de W3AF para realizar pruebas, dicha aplicación web vulnerable es Django-moth (https://github.com/andresriancho/django-moth)

>python manage runserver 8080

Después de arrancar la aplicación, se podrá acceder al servicio oculto utilizando cualquier otra instancia de TOR que permita el acceso a la web profunda de TOR, como por ejemplo “TOR Browser”.

pentestingserviciosocultos-1Django-moth como servicio oculto en la red de TOR

Ahora que el servicio vulnerable se encuentra levantado y es accesible en la web profunda de TOR, lo siguiente es intentar atacar dicho servicio de la misma forma que atacamos cualquier aplicación o servidor web en Internet por medio de herramientas de pentesting comunes. Utilizar herramientas de reconocimiento para aplicaciones web puede ser un buen inicio, como por ejemplo Nikto o algún script NSE de Nmap. No obstante, antes de hacerlo es necesario aplicar algún mecanismo para acceder a cualquier servicio oculto en la web profunda de TOR utilizando dichas herramientas. Para hacer esto, pueden aplicarse 2 enfoques, o bien la herramienta que se va a utilizar soporta el enrutamiento de peticiones por medio de un proxy SOCKS (algo que no todas soportan) o crear un túnel transparente que permita enrutar todas las peticiones al servicio oculto utilizando el proxy SOCKS levantado por una instancia de TOR (siempre y cuando dicha instancia tenga activa la propiedad SOCKSPort). La segunda alternativa resulta ser la más fiable, ya que no hay que aplicar ningún tipo de configuración adicional para que las herramientas funcionen correctamente, todo se hace de forma transparente por medio del proxy SOCKS de la instancia de TOR.
Para montar un túnel de estas características hay varias alternativas, una de ellas es creando un túnel SSH y habilitando el soporte para servidores proxy (algo bastante común en OpenSSH), utilizando un proxy transparente con librerías como Twisted o utilizando directamente SOCAT. Dado que utilizar SOCAT es lo más cómodo, fácil y conveniente, es una de las mejores alternativas.

>socat TCP4-LISTEN:7000,reuseaddr,fork SOCKS4A:127.0.0.1:fieqd7c2ljyyo54f.onion:80,socksport=9150

 

El comando anterior abrirá el puerto “7000” en la máquina local y utilizará el puerto 9150 (Proxy SOCKS de TOR) para enrutar todas las peticiones entrantes por el puerto “7000” al servicio oculto en el puerto 80. Esto se traduce a que se puede utilizar cualquier herramienta de pentesting web tirando directamente contra la máquina local en el puerto “7000” y SOCAT se encargará de redirigir todas peticiones realizadas desde dicho puerto al servicio oculto definido. Además de enrutar las peticiones desde el cliente hacia el endpoint (servicio oculto) otra de las características que tiene SOCAT es que los túneles creados con esta herramienta son bidireccionales, es decir, que no solamente es capaz de enrutar las peticiones a su correspondiente destino, sino que también es capaz de transmitir las respuestas que emite el servidor. A partir de aquí, realizar un proceso de pentesting contra el servicio oculto es mucho más fácil.

pentestingserviciosocultos-2Utilizando Nikto contra un servicio oculto en la red de TOR.

Dado que en este caso concreto el servicio oculto se encuentra soportado por la aplicación web vulnerable Django-moth, qué mejor forma de atacarlo que utilizando W3AF.

>./w3af_console

w3af>>> plugins audit os_commanding

w3af>>> target set target http://localhost:7000/audit/os_commanding/param_osc.py?param=-la

w3af>>> start

OS Commanding was found at: “http://localhost:7000/audit/os_commanding/param_osc.py&#8221;, using HTTP method GET. The sent data was: “param=%7C%2Fbin%2Fcat%20%2Fetc%2Fpasswd” The modified parameter was “param”. This vulnerability was found in the request with id 39.

Scan finished in 14 seconds.

Stopping the core…

Como se puede apreciar, se ha encontrado una vulnerabilidad y se ha registrado en la “Knowledge Base” de W3AF. A continuación, se puede intentar explotar dicha vulnerabilidad utilizando el plugin “os_commanding”

pentestingserviciosocultos-3Generando una consola contra el servicio oculto vulnerable utilizando W3AF

Como se puede apreciar, se ha generado una consola contra el servicio oculto utilizando W3AF. A partir de aquí, el atacante podrá ejecutar comandos directamente contra el servicio oculto vulnerable y de esta forma, romper su anonimato.

pentestingserviciosocultos-4Ejecutando comandos directamente contra el servicio oculto.

En este caso se está atacando a un servicio oculto del tipo HTTP, pero en la web profunda de TOR existen toda clase de servicios vulnerables, los cuales evidentemente también se pueden comprometer. Algunos de ellos los explicaré en el próximo post.

Un saludo y Happy Hack!
Adastra.

20 sitios en la web profunda de TOR que te podrían interesar

enero 27, 2015 21 comentarios

La web profunda de TOR es un entorno que se encuentra en constante cambio y los servicios ocultos que consultamos un día, al otro día pueden dejar de funcionar por muchos motivos, ya que no hay que olvidar que la mayoría son mantenidos por voluntarios en la red y no son servidores dedicados. Por este motivo, algunos de los sitios en la web profunda que he compartido hace algunos meses ya no se encuentran activos, de todos modos te invito a que los visites, aquí, aquí y aquí.

A continuación, expongo un listado de 20 servicios ocultos (HTTP) en la web profunda de TOR que probablemente serán de tu interés.

1. Onion Soup

Enlaces en la web profunda relacionados con bases de datos de direcciones “.onion”, buscadores de servicios ocultos, redes sociales en la web profunda, entre otros recursos interesantes.

Dirección: http://soupksx6vqh3ydda.onion/links.shtml

2. HackForum

Un foro sobre hacking que a diferencia de los foros tradicionales que solemos encontrar por Internet, contiene hilos y manuales muy interesantes sobre anonimato, malware, desarrollo de “bichos”, entre otras cosas.

Dirección: http://a2emrmdsprmm6t7i.onion/

3. Galaxy2

Galaxy fue una red social que gano mucha popularidad en la red de TOR, pero dicho servicio ha dejado de estar disponible hace algunos meses y debido a ello, ha salido “Galaxy2”, una red social que pretende sustituir a Galaxy.

Dirección: http://w363zoq3ylux5rf5.onion/

4. Wikileaks

Se trata de un “mirror” en la deep web del famoso WikiLeaks, con todos los documentos e información filtrada en los últimos años.

Dirección: http://zbnnr7qzaxlk5tms.onion/

5. GlobaLeaks

Por medio de esta plataforma cualquiera puede reportar/filtrar información sobre acciones indebidas, como las violaciones a los derechos fundamentales que comenten los gobiernos de algunos países contra sus ciudadanos. Se encuentra diseñada para proteger a toda costa la identidad de la persona que reporta dichos abusos y utiliza la plataforma “GlobaLeaks” (https://globaleaks.org).

Dirección: http://ak2uqfavwgmjrvtu.onion/#/

6. A Beginner Friendly Comprehensive Guide to Installing and Using a Safer Anonymous Operating System.

Se trata de una guía muy recomendable sobre la instalación y uso de un sistema operativo (Debian, por supuesto) con las herramientas y utilidades necesarias para que permita a sus usuarios un nivel adecuado de anonimato y seguridad.

Dirección: http://yuxv6qujajqvmypv.onion/index.php?title=Main_Page

7. BB Compendium

Se trata de un sitio en el que encontraras manuales de todo tipo, no solamente relacionados con la informática, sino también sobre medicina, uso aplicado de la química, manuales sobre entrenamiento militar, entre otras cosas.

Dirección: http://nope7beergoa64ih.onion/

8. Is online that hidden service?

A veces una instancia de TOR puede estar mal configurada y el acceso a la web profunda es tan lento, que la conexión a un sitio web se corta antes de que el servicio conteste a las peticiones. Para estar completamente seguros de que un sitio oculto en la red de TOR se encuentra caído, existe este servicio, el cual despejará cualquier tipo de duda al respecto.

Dirección: http://ol56t3xahrpk2b62.onion/

9. WTF is my IP?

Si no estas seguro si tienes correctamente configurado tu navegador para conectarte a la web profunda de forma segura, una buena forma consiste en consultar el servicio “checktor” de TOR (https://check.torproject.org/). Sin embargo, si quieres conocer más detalles sobre las cabeceras HTTP y fugas de información del navegador, este servicio puede ser muy útil.

Dirección: http://ofkztxcohimx34la.onion/

10. Ping sec

Muchos de vosotros leéis este blog porque os gusta la seguridad informática (o eso espero) y precisamente por ese motivo incluyo en este listado el blog “Ping Sec”. Creo que hay pocos blogs tan interesantes como este. Fijaros en la sección de malware: OSMDB ( Open Source Malware Data Base ).

Dirección: http://pmryw2y4t3u46uts.onion/

11. Sinbox

Se trata de un sistema de email que no utiliza javascript ni almacena cookies en el navegador, además toda la información entre remitente y destinatario viaja cifrada.

Dirección: http://sinbox4irsyaauzo.onion/

12. Directorio TOR en español

Servicio oculto en castellano con varias direcciones onion separadas por categorías.

Dirección: http://cjxbupyxay3ibikr.onion/

13. ZeroBin

Se trata de un PasteBin “con esteroides” en el que los mensajes se pueden cifrar, marcar el tiempo de caducidad, destruir después de ser leído y puede ser expuesto de forma pública en forma de discusión como si se tratará de un foro o privado para aquellos usuarios autorizados.

Dirección: http://zerobinqmdqd236y.onion/

14. TorFind

Se trata de un buscador muy interesante ya que no solamente busca direcciones onion en la web profunda de TOR, sino que también busca eepsites en I2P. Lleva activo varios años y la calidad de las búsquedas es bastante buena.

Dirección: http://ndj6p3asftxboa7j.onion/

15. Yacy

Aquí tenemos otro buscador para la web profunda de TOR, pero que además, permite aplicar varios filtros relacionados con el tipo de servicio (HTTP, FTP, SMB), extensión de documentos, etc. Los filtros permitidos son muy similares a los que se pueden aplicar en buscadores como Google o Shodan.

Dirección: http://yacy2tp5a2dhywmx.onion

16. Information and Anti-Forensics

Se trata de un sitio que examina cada una de las etapas relacionadas con el ataque a un sistema informático y las medidas defensivas que se pueden aplicar. Además, explica algunas medidas que sirven para proteger la privacidad y el anonimato de los usuarios.

Dirección: http://xzu2i6kiyhysfn4s.onion/index.html

17. TheChess

Si te gusta el ajedrez, como a mi, es un sitio que seguro te encantará, ya que podrás medirte con otros jugadores y entrar en competiciones. Suelo entrar a menudo en este sitio y si quieres, podemos echarnos una partida, solamente necesitas registrarte. 🙂

Dirección: http://theches3nacocgsc.onion/

18. TorStatus

Permite ver el estado de la red de TOR en todo momento. Enseña los repetidores que se encuentran activos y sus detalles de configuración más importantes, como por ejemplo el nombre del router, país, ancho de banda aportado, puerto de “Onion Routing”, puerto de directorio, sistema operativo, etc.

Dirección: http://jlve2y45zacpbz6s.onion/

19. Strategic Intelligence Network

Se trata de un servicio que se encarga de analizar los últimos acontecimientos en todos los países del mundo y determinar una escala que recibe el nombre de “SecCon” o “Security Conditions”. Dicha escala determina el nivel de amenaza de un país y si es seguro estar en él, ya sea como turista o como residente. Se trata de un servicio que se actualiza constantemente, dependiendo evidentemente de la información que se publica en los principales medios de comunicación. Otra característica interesante, es que cada “SecCon” tiene un color distinto dependiendo del riesgo que corren las personas que se encuentran allí y cuando se selecciona un país del mapa, enseña una reseña breve de la información que se ha utilizado para asumir el nivel de “SecCon” correspondiente y algunas medidas que deben tomar si deseas viajar allí.

Dirección: http://4iahqcjrtmxwofr6.onion

20. Yet another Tor Directory.

¿20 enlaces te resultan pocos? a mi también, pero no te preocupes, este servicio contiene un listado de más de 4000 direcciones onion en la web profunda de TOR con todo tipo de contenidos (algunos son ilegales, así que estar atentos por donde os metéis). Además se actualiza constantemente, ya que se encarga de recorrer y registrar servicios ocultos en la deep web.

Dirección: http://bdpuqvsqmphctrcs.onion/

Un saludo y Happy Hack!
Adastra.

Instalación de un proxy TOR2WEB para acceder a servicios ocultos desde Internet

enero 22, 2015 1 comentario

Seguramente muchos de los que leéis este blog y os interesan temas relacionados con el anonimato, TOR y cosas similares, conocéis el proyecto “TOR2WEB”, pero para los que no, basta con decir que es una plataforma creada por el equipo de TOR que permite que los servicios ocultos que se publican internamente en la web profunda de TOR se encuentren disponibles desde Internet sin necesidad de que el cliente tenga que arrancar una instancia de TOR en su máquina. Esto quiere decir que cualquier usuario corriente en internet, utilizando cualquier navegador web, podrá acceder a un servicio oculto muy fácilmente.

TOR2WEB está diseñado para funcionar como un proxy reverso, que solamente se encarga de enrutar todas las peticiones entrantes desde la “clear web” a la “deep web” de TOR, con lo cual los servicios ocultos siguen siendo ocultos, incluso para un proxy TOR2WEB. No obstante, el cliente que visita dichos contenidos no lo es, a menos claro, que utilice TOR para acceder a dicho proxy algo que que no tiene mucho sentido, ya que al utilizar TOR ya se tiene acceso a la web profunda de TOR y realmente no seria necesario utilizar TOR2WEB.

“tor2web.org” está conformado por voluntarios en todo el mundo que configuran y exponen un servicio de TOR2WEB para que cualquier usuario en Internet pueda utilizarlo. Dado que se trata de un proxy, no almacena los contenidos de los sitios ocultos, simplemente se encarga de enrutar las peticiones entre la web profunda de TOR y la “web clara”.

Acceder a un servicio oculto en la web profunda de TOR es simple, solamente hace falta sustituir la cadena “.onion” de la dirección del servicio oculto por “.tor2web.org”.

Por ejemplo, si la dirección onion de un servicio oculto es la siguiente: “ajio7mfsscpvgd23.onion” la dirección que se debe utilizar para acceder a dicho servicio utilizando TOR2WEB es: “ajio7mfsscpvgd23.tor2web.org”.

Lo primero que verá el usuario cuando navega hacia dicho sitio es una nota legal que indica que TOR2WEB es solamente un servicio de proxy que tira de la web profunda de TOR y que los contenidos que el usuario visualizará son responsabilidad del creador del servicio oculto al que se intenta acceder. Si el usuario está de acuerdo con los términos expuestos por el proxy, puede continuar y acceder a los contenidos del servicio oculto. La siguiente imagen enseña enseña dicha advertencia.

tor2web1

 

Por otro lado, la plataforma también almacena unas estadísticas básicas sobre el número de accesos que ha tenido el servicio oculto el día anterior, por cuestiones de privacidad y para no generar registros sobre el uso de un servicio oculto, solamente se pueden ver las estadísticas del día anterior y no se almacena nada sobre los datos de otros días. Para acceder a dicha información basta con entrar a la uri “/antanistaticmap/stats/yesterday”. Por ejemplo: “ajio7mfsscpvgd23.tor2web.org/antanistaticmap/stats/yesterday”.
Como se ha mencionado anteriormente, TOR2WEB es un servicio que se encuentra soportado por varios voluntarios en Internet, los cuales configuran una instancia del proxy de TOR2WEB con un dominio propio o con el dominio de TOR2WEB.

Aunque el procedimiento de instalación de un nodo de TOR2WEB es una tarea que se encuentra documentada y bastante bien explicada en la documentación oficial del proyecto, en este artículo explicaré en detalle cómo se puede instalar, configurar y arrancar un nodo de TOR2WEB.

Instalación y configuración de un nodo de TOR2WEB

Antes que nada, el proyecto se encuentra alojado en la siguiente URL: https://github.com/globaleaks/Tor2web-3.0 y se recomienda navegar un poco por cada una de las secciones de la documentación para tener una idea más global del funcionamiento de Tor2Web. En primer lugar es necesario instalar el proyecto y dado que se encuentra pensado principalmente para plataformas basadas en Debian, el mecanismo de instalación consiste adicionar un repositorio a la lista del sistema y posteriormente ejecutar el comando “apt-get” o “aptitute”. Existe un script de instalación que se encarga de realizar todas estas tareas de forma automática y que se recomienda utilizar.

>wget https://raw.githubusercontent.com/globaleaks/Tor2web-3.0/master/scripts/install.sh

>chmod +x install.sh

>./install.sh

Cuando se ejecuta el script pide permisos de administrador para instalar el programa utilizando “apt-get”. Después de realizar la instalación, automáticamente se crea el directorio “/home/tor2web/certs” que es donde se deberán crear los certificados y las claves para el proxy.
Se deben ejecutar los siguientes comandos dentro de dicho directorio.

>openssl genrsa -out tor2web-key.pem 4096

>openssl req -new -key tor2web-key.pem -out tor2web-csr.pem

>openssl x509 -req -days 365 -in tor2web-csr.pem -signkey tor2web-key.pem -out tor2web-intermediate.pem

>openssl dhparam -out tor2web-dh.pem 2048

 

Con los pasos anteriores se encuentra casi terminada la instalación, sin embargo antes de poder arrancar el servicio, es necesario crear un fichero de configuración en “/etc/tor2web.conf”. Dicho fichero no existe por defecto, pero después de instalar Tor2Web, se crea automáticamente un fichero de configuración que sirve de ejemplo en “/etc/tor2web.conf.example”. Las propiedades de configuración que incluye el fichero permiten activar o desactivar varias características interesantes de TOR2WEB, sin embargo, las siguientes son las mínimas que se deben de incluir en el fichero de configuración antes de iniciar el servicio.

nodename: Identificador único del servicio. Es bastante útil para identificar las trazas que se envían a los administradores de TOR2WEB.

datadir: Directorio donde se encuentran los ficheros necesarios para el correcto funcionamiento del programa, incluyendo los certificados creados anteriormente.

processes y requests_per_process: Propiedades que permiten ejecutar el programa utilizando multiproceso. El valor recomendado para la propiedad “processes” es el número de cores del sistema +1.

basehost: Se trata del dominio base donde se ejecutará el proxy. TOR2WEB se puede desplegar en un dominio independiente al de tor2web y en tal caso, es necesario especificar dicho dominio en esta propiedad.

listen_port_http y listen_port_https: Puertos HTTP y HTTPS que serán utilizados por el proxy. Evidentemente los valores por defecto son 80 y 443 respectivamente.

sockshost y socksport: Son probablemente las propiedades más importantes, ya que permiten definir el host y el puerto en el que se encuentra en ejecución un proxy SOCKS de TOR. Es evidente la importancia de dichos valores, ya que TOR2WEB utilizará dicho proxy SOCKS para conectarse con la web profunda de TOR y devolver al usuario final los contenidos del servicio oculto que ha solicitado. En este sentido, para lanzar un nodo de TOR2WEB, es necesario tener una instancia de TOR levantada.

ssl_key, ssl_cert y ssl_dh: Se trata de propiedades que permiten especificar la ruta completa de los certificados y la clave privada que se han creado anteriormente para el servicio.

Con las propiedades anteriores se puede comenzar a utilizar TOR2WEB, sin embargo existen otras propiedades que habilitan características especiales del programa, por ejemplo la posibilidad de bloquear servicios ocultos con contenidos inapropiados, bloquear crawlers, sobre-escribir el fichero “robots.txt” y otras cosas que intentan “alejar” el contenido de servicios ocultos de buscadores como google.

Para conocer en mayor detalle todas las opciones de configuración disponibles, se recomienda revisar la documentación en la siguiente sección. https://github.com/globaleaks/Tor2web-3.0/wiki/Configuration-Guide
Para iniciar un nodo de TOR2WEB con la configuración mínima, se puede utilizar el siguiente fichero

[main]
nodename = AdastraTORY
datadir = /home/tor2web
processes = 5
requests_per_process = 100000
listen_port_http = 80
listen_port_https = 443
basehost = tor2web.org
sockshost = 127.0.0.1
socksport = 9150
ssl_key = /home/tor2web/certs/tor2web-key.pem
ssl_cert = /home/tor2web/certs/tor2web-intermediate.pem
ssl_dh = /home/tor2web/certs/tor2web-dh.pem
cipher_list = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-AES128-SHA:DES-CBC3-SHA
ssl_tofu_cache_size = 100

 

Con el fichero anterior ubicado en “/etc/tor2web.conf” ahora es posible iniciar el servicio como cualquier otro del sistema

>sudo /etc/init.d/tor2web start
Enabling Tor2web Apparmor Sandboxing
* Starting Tor2web tor2web…
* Starting tor daemon… [ OK ]
>

Con los pasos anteriores, ahora ya contamos con una instancia en ejecución de TOR2WEB en local y disponible para desplegar en algún servidor en Internet.

Saludos y Happy Hack!
Adastra.

Intentando descubrir hidden services en TOR

octubre 22, 2014 Deja un comentario

En el articulo “ataca un servicio oculto en la red de TOR, si te atreves” he explicado el funcionamiento del protocolo rendesvouz de TOR y las dificultades existentes a la hora de descubrir cualquier tipo de servicio anónimo en TOR. Actualmente, una de las formas más eficientes de atacar la red consiste en intentar controlar la mayor cantidad de repetidores de entrada y salida para posteriormente ejecutar ataques basados en el análisis de las peticiones y los tiempos de las mismas, sin embargo para ello se requieren varios repetidores de TOR controlados y profesionales que sepan aplicar las técnicas de ataque adecuadas, cosas que no suelen estar al alcance de cualquiera. Por otro lado, una de las características intrínsecas de la deep web de TOR, es que no es fácil encontrar cualquier servicio y menos aun si no conoces su dirección onion. Muchas veces, los usuarios de estas redes se dedican a curiosear y a recopilar direcciones que van encontrando en foros, sitios en Internet o en algunos de los buscadores más populares en la web profunda, sin embargo ¿qué pasa con aquellos servicios que son realmente ocultos? Es decir, aquellos servicios cuyas direcciones onion solamente las conocen un grupo muy pequeño de personas y no se encuentran registradas en foros o buscadores. ¿Quiénes suelen crear y usar ese tipo de servicios? Si lo piensas detenidamente, encontrar dichas direcciones es prácticamente imposible, ya que como se ha explicado en el artículo anterior, no es como buscar una aguja en pajar, es más bien como buscar una aguja entre varios billones de agujas aparentemente iguales y sin ningún patrón o perfil que las distinga.

Por otro lado, cuando intentas desarrollar un Framework de auditoria en la deep web de TOR, contar con un repositorio de direcciones onion para poder ejecutar ataques automatizados contra dichos servicios es muy importante y además de contar con un listado de direcciones conocidas (recolectadas de foros, sitios en Internet y buscadores), también es útil contar con mecanismos para intentar descubrir servicios ocultos. Sin embargo aquí, volvemos a lo que ya se ha explicado anteriormente: Manejar el volumen de datos que puede producir el espacio de posibles direcciones onion es simplemente inviable con la capacidad de procesamiento que tienen los ordenadores modernos.

No obstante, a pesar de las dificultades, un atacante puede intentar generar muchas direcciones onion de forma aleatoria o incremental y determinar si en alguna de ellas hay un servicio en ejecución. En este sentido, en Tortazo he implementado algunos mecanismos para generar y procesar direcciones onion, con el fin de intentar descubrir servicios ocultos en la web profunda de TOR.

Estos mecanismos y la estructura que he montado, se explica a continuación.

Modo “Onion Repository” en Tortazo

Es posible generar direcciones Onion validas y posteriormente intentar realizar diferentes tipos de peticiones a dicha dirección, si la conexión es correcta, se asume que hemos encontrado un servicio valido. Ahora bien, pueden haber dos formas de abordar el problema considerando las limitaciones de procesamiento explicadas anteriormente, por un lado puedes intentar generar todas las permutaciones posibles partiendo de una dirección onion parcial con lo cual, entre más conocimiento se tenga sobre la dirección onion (número de caracteres conocidos), mayores serán las probabilidades de encontrar rápidamente el servicio en la web profunda de TOR. Por otro lado, si no tienes información sobre una dirección onion concreta y simplemente quieres consultar cualquier dirección onion sin ningún patrón determinado, Tortazo permitirá generar direcciones onion de forma aleatoria y realizar una conexión para ver si existe algún servicio oculto en ejecución en dicha dirección.

Se trata de dos aproximaciones completamente distintas que pueden ayudar a descubrir servicios ocultos, pero en ambos casos, lo más importante es que la generación y procesamiento de cada dirección onion se haga lo más rápidamente posible, esto con el fin de probar la mayor cantidad de direcciones onion en una franja de tiempo determinada.

En primer lugar, contar con un único proceso para la generación de direcciones y posterior procesamiento (petición contra el servicio) puede ser algo bastante lento, por este motivo, en Tortazo se cuenta con dos colas compartidas, una para las direcciones onion generadas y otra para aquellas direcciones sobre las cuales se ha detectado un servicio oculto en ejecución. Evidentemente, existen dos grupos de procesos, uno de ellos se encarga de la generación de direcciones onion que se insertarán en la cola de direcciones generadas y otro para procesar cada una de dichas direcciones onion y determinar si hay un servicio oculto en ejecución; y si ese es el caso, dicha dirección se insertará en la cola compartida de direcciones con servicios en ejecución.

Puede que suene un poco complejo, a lo mejor con la siguiente imagen queda un poco más claro.

OnionRepository

Para ejecutar Tortazo en modo “repositorio” es necesario especificar la opción “-R” y además, es posible indicar otros detalles como el número de procesos que debe crear la herramienta para el procesamiento y generación de direcciones onion (-W), una dirección onion parcial para generar las direcciones onion de forma incremental (-O <partialAddress>) o generar direcciones onion de forma aleatoria (-O RANDOM).

Algunos ejemplos se pueden ver a continuación:

Generación aleatoria de direcciones onion utilizando 5 procesos para generación y procesamiento de las direcciones creadas. Se realizarán peticiones HTTP contra cada uno de dichos servicios. El programa se ejecutará indefinidamente, hasta que el usuario manualmente decida detenerlo.


python Tortazo.py –R http –O RANDOM –W 5 –v 

 

Generación aleatoria de direcciones onion utilizando 5 procesos para generación y procesamiento de las direcciones creadas. Se realizarán peticiones FTP contra cada uno de dichos servicios. El programa se ejecutará indefinidamente, hasta que el usuario manualmente decida detenerlo.

python Tortazo.py –R ftp –O RANDOM –W 10 –v

 

Generación incremental de direcciones onion utilizando la dirección parcial “sad53kig53r2gha” y 5 procesos para generación y procesamiento de las direcciones creadas. Se realizarán peticiones FTP contra cada uno de dichos servicios. El programa se ejecutará hasta que todas las combinaciones posibles hayan sido probadas, es decir, en este caso concreto, las combinaciones de los dos últimos caracteres de la dirección.

>python Tortazo.py –R ftp –O sad53kig53r2gh –W 10 –v

Generación incremental de direcciones onion utilizando la dirección parcial “sad53kig53r2gha” y 5 procesos para generación y procesamiento de las direcciones creadas. Se realizarán peticiones SSH contra cada uno de dichos servicios. El programa se ejecutará hasta que todas las combinaciones posibles hayan sido probadas, es decir, en este caso concreto, las combinaciones de los dos últimos caracteres de la dirección.

>python Tortazo.py –R ssh –O sad53kig53r2gh –W 10 –v

 

Por otro lado, las direcciones onion sobre las que se ha detectado un servicio oculto en ejecución, se almacenan directamente en base de datos para que puedan ser usadas en alguno de los plugins disponibles en Tortazo. Además, en el proyecto también se incluye un fichero con un listado casi 400 direcciones onion que pueden cargarse (opcionalmente) en la base de datos cuando se arranca el modo “respository” de Tortazo.

Y así funciona el modo repositorio en Tortazo. Actualmente estoy desarrollando varias ideas para ampliar/mejorar el mecanismo de descubrimiento de direcciones onion, sin embargo, será algo que implementaré para la versión 1.2 y cuando sea el momento os hablaré de ello. De momento encontrarás información más detallada en la documentación oficial: http://tortazo.readthedocs.org/en/latest/
Por último, si tienes alguna idea o sugerencia para mejorar, me encantaria que te pusieras en contacto conmigo (debiadastra [at] gmail.com).
Un saludo y Happy Hack!

Ataca un servicio oculto en TOR. Si te atreves!

septiembre 5, 2014 11 comentarios

Los servicios ocultos en TOR son una de las características más interesantes que tiene dicha red y sin lugar a dudas, constituyen una forma de compartir información o comunicarse con alguien de forma confidencial y anónima. No obstante suelen ser muy lentos, pesados y a veces, no tienen unos buenos niveles de disponibilidad, además, después del último “advisory” de seguridad publicado por el equipo de TOR https://blog.torproject.org/blog/tor-security-advisory-relay-early-traffic-confirmation-attack muchos han optado por utilizar otras soluciones que suelen dar buenos niveles de anonimato, privacidad, confidencialidad y rendimiento, véase por ejemplo los “freesites” en Freenet o los “eepsites” en I2P. Lo cierto es que en los últimos años la red de TOR se ha convertido en el centro de atención, hay mucho interés de gobiernos y entidades privadas que ven en dicha red, una fuente de información ENORME y todos buscan cualquier tipo de fallo que permita descubrir la identidad de cualquier usuario que utilice TOR.

A pesar de todo, TOR sigue siendo “el rey” en el campo del anonimato y aunque otras redes del mismo tipo tienen características muy similares, aun no llegan al nivel de madurez ni a la cantidad de usuarios que usan TOR. Hablamos de una red muy solida y atacar directamente su infraestructura requiere de una cantidad considerable de servidores para intentar controlar una pequeña fracción de trafico, algo que no suele pasar desapercibido por demasiado tiempo.

Configurar un repetidor o servicio oculto no es demasiado complicado, solamente es necesario establecer las opciones de configuración adecuadas en el fichero “torrc” y a correr. No obstante, hay muchos detalles técnicos que son interesantes y que un hacker/pentester que se dedique a trabajar con esta red debería conocer.

¿Cómo funcionan los servicios ocultos en TOR?

En primer lugar, un servicio oculto puede ser cualquier cosa, desde un servidor HTTP, FTP, SSH, SAMBA, etc. Hablamos de servicios comunes que funcionan utilizando la red de TOR para el envío y recepción de paquetes, el único requisito es que dichos servicios utilicen protocolo TCP o se utilice un “wrapper” para convertir cualquier paquete de datos en otros protocolos como UDP o ICMP directamente a TCP. Como el lector podrá imaginarse, dichos servicios pueden contener fallos de seguridad que pueden ser aprovechados por un atacante y de esta forma, conseguir “romper” su anonimato, aunque suena simple, como se verá más abajo hay ciertos impedimentos que dificultan descubrir y posteriormente atacar servicios vulnerables en la red de TOR.

Evidentemente para que podamos seguir hablando de anonimato y privacidad tanto en el servicio como para sus clientes, la ubicación de ambas partes debe ser desconocida y para ello, TOR emplea el siguiente flujo de trabajo:

Paso 1. El servicio necesita estar disponible en la red de TOR para que los usuarios puedan utilizarlo y para ello, lo primero que hace es elegir tres repetidores en la red de TOR de forma aleatoria y construir un circuito virtual hacia ellos, esto quiere decir que el servicio no establece una conexión directa con dichos repetidores, son simplemente el punto final de los circuitos creados. Estos repetidores elegidos aleatoriamente en la terminología de TOR son conocidos como “Introduction Points” y son los encargados de recibir las peticiones de los clientes y enrutarlas por medio del circuito virtual hacia al servicio oculto. Posteriormente, el servicio oculto se encarga de enviar su clave pública a cada uno de los “Introduction Points”, la cual será utilizada para que cada “Introduction Point” pueda asociar dicha clave pública con un servicio concreto y de esta forma, no exponer en dichos repetidores la ubicación real del servicio.

Paso 2. Hasta este punto, solamente se seleccionan repetidores de forma aleatoria, se crean circuitos virtuales para comunicarse con dichas máquinas y se les envía la clave privada del servicio. No obstante, el servicio oculto debe estar disponible a los clientes y para ello debe registrar su información básica en la red de TOR y de esta forma los clientes podrán acceder a dicho servicio. El servidor debe conformar un “hidden service descriptor” que no es más que un fichero que contiene la dirección “onion” del servicio (se hablará de esto más abajo), su clave pública y el listado de “Introduction Points” seleccionados en el paso anterior. Este descriptor es enviado a las autoridades de directorio de TOR, las cuales se encargan de procesar la solicitud y registrar el servicio oculto.

Paso 3. El servicio está disponible y ahora cualquier usuario podrá acceder a él. No obstante, el cliente TIENE QUE CONOCER la dirección “onion” de ese servicio antes de poder consultarlo a las autoridades de directorio de TOR. Asumiendo que el cliente disponga de dicha dirección “onion”, realiza una petición HTTP a dicha dirección. Dicha petición es tratada de un modo distinto por el protocolo TOR, ya que detecta que se trata de una petición a un servicio oculto y automáticamente se encarga de obtener la información que se encuentra asociada con dicha dirección. En el caso de que dicha dirección se encuentre registrada, el cliente obtendrá la clave pública del servicio y el listado de los repetidores que actúan como “Introduction Point” para contactar con el servicio oculto. El documento que devuelven las autoridades de directorio se conoce como “Rendezvous Service Descriptor”.

Paso 4. Ahora que el cliente tiene todo lo que necesita saber para conectar con el servicio oculto, debe encargarse de crear un circuito a un repetidor concreto que será seleccionado de forma aleatoria y que se encargará de enviar las peticiones del cliente a uno de los “Introduction Point” del servicio oculto. Este repetidor que ha seleccionado el cliente de forma aleatoria se conoce como “Rendezvous Point” y es el encargado de enviar los datos de la petición del cliente junto con la clave pública del servidor para realizar la conexión con alguno de los “Introduction Point” definidos.

Paso 5. La petición inicial del cliente se conoce como “Introduce Message” y se trata de un mensaje cifrado con la clave pública del servicio en el que se indica la ubicación del “Rendezvous Point” junto con una cadena codificada utilizando el mecanismo “one-time-secret” (ver más aquí: http://searchsecurity.techtarget.com/definition/one-time-pad).

Paso 6. Dado que el servicio ahora conoce la ubicación del “Rendezvous Point”, las respuestas a las peticiones del cliente no pasarán por medio de los circuitos creados con los “Introduction Points”, sino que en su lugar, serán enviadas directamente al “Rendezvous Point” el cual usará el circuito establecido con el cliente para encaminar dichas respuestas a su correspondiente destino.

Se trata de un mecanismo que está muy bien pensado, de forma segura se preserva el anonimato y la confidencialidad de los datos. Es simplemente genial. No obstante se sacrifica muchísimo en términos de rendimiento ya que es bastante costosa la construcción de los circuitos involucrados entre el cliente y el servidor. Por este motivo, los hidden services en TOR son lentos. Para que quede un poco más clara la explicación anterior, la siguiente imagen enseña “grosso modo” cómo se establece un servicio oculto en TOR y cómo los clientes acceden a ellos.

 

hiddenservices

 

Hasta este punto ya sabes como funcionan los servicios ocultos en TOR, ahora: ¿Cómo atacar un hidden service y encontrar su ubicación real?. Esa es la gran pregunta y no tiene una respuesta simple, antes habría que responder algunas otras para partir el problema en trozos:

¿Los servicios ocultos pueden contener vulnerabilidades, pero cómo las puedo aprovechar?

Claro que pueden contener vulnerabilidades (y muy gordas) y lo mejor de todo es que es relativamente fácil descubrir y explotar vulnerabilidades en cualquier servicio oculto. Solamente es necesario conocer el servicio oculto que se desea atacar y enrutar cualquier petición que el atacante desea enviar por medio del proxy SOCKS que se levanta en una instancia local de TOR cuando se utiliza la opción de configuración “SocksPort” en el fichero “torrc”. En realidad es un proceso bastante simple, solamente basta con enrutar todas las pruebas que un pentester profesional ejecutaría contra un objetivo determinado utilizando el proxy SOCKS de TOR.

¿Y si es tan fácil, porque los gobiernos y otras organizaciones no lo hacen para atacar servicios ocultos maliciosos?

Atacar un servicio oculto, del que se conoce su dirección “onion” puede ser una tarea “sencilla” (dependiendo de lo bien asegurado que se encuentre el servicio, evidentemente), pero atacar un servicio oculto desconocido, del que no se tiene su correspondiente dirección “onion” es otra cosa.

No se ha mencionado antes, pero las direcciones Onion generadas por TOR, son el resultado de aplicar el algoritmo Base32 sobre el hash SHA de los primeros caracteres de la clave pública del servicio oculto. El algoritmo Base32 generaráun valor codificado de 16 caracteres donde los valores validos son las letras de la “a” a la “z” en minúsculas y los dígitos entre 2 y 7. El resultado de dicha operación es la dirección onion para un servicio oculto y que el usuario debe conocer antes de poder acceder a él. Una vez comprendido lo anterior, una dirección como “ahgt56dr32mhkva1.onion” es teóricamente valida.

¿Es tan difícil obtener todo el listado de direcciones “.onion” en la red de TOR y luego intentar atacar todos los servicios ocultos al estilo “Chuck Norris”?

No solo es difícil, actualmente no hay ordenadores que sean capaces de tratar la cantidad de combinaciones posibles, especialmente cuando los 16 caracteres que conforman la dirección Onion son desconocidos para el atacante. Para que el lector comprenda la dificultad que implica intentar encontrar un servicio oculto, vamos a jugar un poco con los números y vamos a realizar algunos cálculos.

Sabemos que una dirección Onion se compone de 16 caracteres, donde los posibles valores de cada uno de esos 16 caracteres puede variar entre las letras de la “a” y “z” y los dígitos entre 2 y 7. Esto quiere decir, que para calcular el conjunto de direcciones, es necesario realizar un producto cartesiano https://es.wikipedia.org/wiki/Producto_cartesiano dónde el número de posibles combinaciones es: 32^16 = 1208925819614629174706176

Se trata de un valor ENORME y ahora, solamente por un segundo, imagina ese número de posibles combinaciones cargadas en la memoria de un programa para después intentar procesarlas. Es simplemente imposible e inviable con la capacidad de computo de los ordenadores modernos.

El espacio de posibles direcciones Onion es tan grande que resulta imposible controlar la totalidad de posibles servicios ocultos que puedan existir en la red de TOR (Eso sin mencionar que muchos no se encuentran activos todo el tiempo, dificultando aun más su detección). Hablamos de un problema que se encuentra relacionado con la capacidad de los ordenadores modernos y aunque se utilice un cluster de super-ordenadores, el problema sigue presente.

Vamos a jugar un poco más con los números, de tal modo que puedas comprender cuánto tiempo seria necesario para completar la tarea de generar y procesar el espacio total de posibles direcciones Onion.

Supongamos que tenemos uno o varios ordenadores que trabajan paralelamente y son capaces de procesar diez millones de posibles combinaciones por segundo, no estaría nada mal, verdad? Pues, abre una calculadora y haz el calculo o el interprete de Python, que también funciona como una calculadora.

>>> 32**16 / (10000000*60*60*24*365)

3833478626L

Estamos hablando de un proceso que puede tardar cerca de 4 billones de años. Ahora seguro que queda claro el porqué resulta tan difícil descubrir servicios ocultos en la red de TOR. Muchos de los servicios ocultos que conocemos, son muy difundidos en múltiples sitios en Internet, como por ejemplo en este blog, en el que encontrarás algunas entradas con direcciones Onion de servicios ocultos interesantes. La realidad es que la gran mayoría de servicios ocultos y especialmente aquellos que tienen contenidos maliciosos que son creados por mafias, traficantes y de otros grupos de delincuentes que pueden ser extremadamente peligrosos, se mantienen en las sombras y tienen un nivel de anonimato bastante alto ya quesus direcciones no las vas a encontrar en blogs, directorios de direcciones onion o cualquier sitio en Internet, son realmente servicios ocultos que un grupo muy limitado de personas conocen y utilizan. Esos servicios, puede que tengan vulnerabilidades que cualquier Hacker podría explotar, pero el punto es: ¿Cómo encontrar servicios con esas características? Es como encontrar una aguja en un pajar, o más concretamente encontrar una aguja entre 1208925819614629174706176 agujas. Resulta prácticamente imposible.

Pero algo se podrá hacer, no?

La realidad es que actualmente es poco lo que se puede hacer desde el punto de vista de un pentester o desarrollador, ya que se trata de un problema relacionado con capacidad y poder de procesamiento de los ordenadores actuales, un problema que probablemente se solucionará en algunos años/décadas con la llegada de los ordenadores cuánticos, los cuales teóricamente, tendrán una capacidad de procesamiento que será muchísimo mayor que varios super-ordenadores juntos, sin embargo para eso aun faltan varios años. Se puede intentar limitar la cantidad de combinaciones reduciendo el número de caracteres empleados para la generación de la dirección Onion, limitando también la cantidad de posibilidades y probablemente descartando una gran cantidad de direcciones con algún servicio en ejecución. Otra posibilidad, es tener el conocimiento de una dirección parcial y de este modo, la cantidad de combinaciones de la dirección onion se reducirá considerablemente. Finalmente, se puede crear un proceso que se ejecutará de manera indefinida e ininterrumpida generando direcciones onion validas de forma aleatoria y posteriormente ejecutar una petición contra dicha dirección con la esperanza de encontrar un servicio oculto, algo similar a pegar tiros al aire esperando darle a algún pato o irte a pescar, sera simplemente cuestión de suerte y puede tardar horas o incluso días en obtener resultados positivos.

No son soluciones que realmente ayuden a resolver el problema, sin embargo permiten acotarlo un poco.

De esto hablaré en una próxima entrada.

Saludos y Happy Hack!

A %d blogueros les gusta esto: