A diferencia de las tecnologías convencionales de la World Wide Web, las tecnologías de enrutamiento de varias capas superpuestas (onion, cebolla en inglés) de Tor Darknet les proporcionan a los usuarios una verdadera posibilidad de guardar el anonimato. Muchos usuarios se han acogido a esta oportunidad; algunos para protegerse o por curiosidad, mientras que otros desarrollaron una falsa sensación de impunidad y vieron una oportunidad para llevar a cabo negocios clandestinos de forma anónima, como la venta de artículos prohibidos, la distribución de contenidos ilegales, etc. Sin embargo, nuevos acontecimientos, como el arresto del creador del sitio Silk Road, han demostrado inequívocamente que estos negocios eran menos anónimos de lo que la mayoría suponía.
Los servicios de inteligencia no han revelado los detalles técnicos de cómo detuvieron a los cibercriminales que crearon los sitios Tor para la distribución de artículos ilegales; en particular, no dieron ninguna pista sobre cómo lograron identificar a los ciberdelincuentes que actuaban en el anonimato. Esto podría significar que la implementación de Tor Darknet contiene algunas vulnerabilidades y/o defectos de configuración que posibilitan el desenmascaramiento de cualquier usuario de Tor. En la presente investigación presentaremos ejemplos prácticos que demuestran la forma en que los usuarios de Tor podrían perder el anonimato y sacaremos algunas conclusiones a partir de esos ejemplos.
¿Cómo se identifica a los usuarios de Tor?
En la historia de Tor Darknet ha habido muchos intentos, teóricos y prácticos, para identificar a los usuarios anónimos. Estos ataques pueden dividirse condicionalmente en dos grupos: ataques del lado del cliente (el navegador) y ataques a la conexión.
Problemas en los navegadores web
Los documentos filtrados de la NSA revelan que los servicios de inteligencia no tienen escrúpulos a la hora de usar exploits contra Firefox, que era la plataforma de base del navegador Tor. Sin embargo, según informa la NSA en su presentación, el uso de herramientas de explotación de vulnerabilidades no permite la vigilancia permanente de los usuarios de Darknet. Los exploits tienen un ciclo de vida muy reducido, de manera que en un determinado momento existen diferentes versiones del navegador, algunas con una vulnerabilidad específica y otras no. Esto permite la vigilancia de sólo una pequeña parte de los usuarios.
Documentos filtrados de la NSA, incluyendo una descripcion de cómo desenmascarar a los usuarios de Tor (Fuente: www.theguardian.com)
Así como de estos documentos seudo-oficiales, la comunidad de Tor también está al tanto de otros ataques más interesantes e ingeniosos del lado del cliente. Por ejemplo, los investigadores del Massachusetts Institute of Technology establecieron que Flash crea un canal de comunicación dedicado con el servidor especial de los ciberdelincuentes, que captura la verdadera dirección IP del cliente, dejando completamente expuesta a la víctima. Sin embargo, los desarrolladores del navegador Tor reaccionaron oportunamente ante este problema excluyendo en su producto los gestores de contenidos Flash.
Flash como medio de encontrar la dirección IP verdadera de la víctima (Fuente: http://web.mit.edu)
Otro método más moderno para infectar un navegador web consiste en usar la DLL WebRTC. Esta DLL está diseñada para disponer un canal de transmisión de video compatible con HTML5 y, de forma similar al canal Flash descrito arriba, sirve para establecer la verdadera dirección IP de la víctima. Las peticiones STUN de WebRTC se envían en texto sencillo, lo que permite evitar Tor y las respectivas consecuencias. Sin embargo, los desarrolladores del navegador Tor rectificaron enseguida esta “falla”, de manera que ahora el navegador bloquea WebRTC por defecto.
Ataques contra el canal de comunicación
A diferencia de los ataques contra el navegador, los ataques contra el canal entre el cliente Tor y un servidor localizado dentro o fuera de Darknet parecen poco convicentes. Por el momento, la mayoría de los conceptos los han expuesto investigadores en condiciones de laboratorio, pero todavía no se han presentado pruebas de concepto “en el campo”.
Entre estos trabajos teóricos, merece mencionarse uno en especial pues se basa en al análisis del tráfico mediante el protocolo NetFlow. Los autores de dicha investigación creen que el lado del atacante es capaz de analizar los registros de NetFlow en los enrutadores que son nodos directos de Tor o que se encuentran cerca de ellos. Un registro de NetFlow contiene la siguiente información:
- Número de la versión del protocolo.
- Número de registro.
- Interfaz de red entrante y saliente.
- Hora del inicio y del final de la transmisión.
- Número de bytes y paquetes en la transmisión.
- Dirección de la fuente y destino.
- Dirección de la fuente y destino.
- Número de protocolo IP.
- Valor del Tipo de Servicio.
- Todas las marcas observadas durante las conexiones TCP.
- Dirección de la pasarela.
- Máscaras de las subredes fuente y de destino.
En términos prácticos, todos estos elementos identifican al cliente.
Desenmascaramiento del cliente Tor ne base al análisis de tráfico (Fuente: https://mice.cs.columbia.edu)
Este tipo de investigación basado en el análisis del tráfico requiere una enorme cantidad de puntos de presencia dentro de Tor, si es que el atacante quiere desenmascarar a cualquier usuario en cualquier momento. Por esta razón, estos estudios no revisten un interés práctico para los investigadores individuales, salvo que tengan una enorme cantidad de recursos informáticos. Por esta misma razón, adoptaremos un enfoque diferente y consideraremos métodos más prácticos para analizar las actividades de los usuarios de Tor.
Sistema de monitoreo pasivo
Cada residente de la red puede aportar sus recursos de computación para organizar un servidor Node, es decir, un elemento nodal de la red Tor que cumple funciones de intermediario durante el intercambio de información del software cliente de la red. Los exit node son los últimos eslabones en la operación de descifrado del tráfico y por lo tanto, son el lugar por el que la información pasa de forma abierta y puede ser interceptada.
De esta manera, existe la posibilidad de recolectar diferentes tipos de información a partir del tráfico descifrado. Por ejemplo, de los encabezados HTTP se puede extraer la dirección de los recursos onion adonde se dirige el paquete HTTP enviado por el remitente. Y se lo puede hacer sin usar los recursos internos de los sistemas de búsqueda y los catálogos de los sitios, que pueden contener datos obsoletos o que no funcionan en los sitios onion.
Un Exit node funcionando
Sin embargo, el sistema pasivo de monitorización no permite quitar del todo el anonimato al usuario, ya que el investigador se limita a recoger los datos (paquetes de red) que éste deja al descubierto por su propia voluntad.
Sistema de monitoreo activo
Para saber más sobre un residente de Darknet, necesitamos provocarlo para que suelte algunos datos sobre su ambiente. Es decir, necesitamos un sistema de recopilación de datos activo.
Un experto de Leviathan Security descubrió una multitud de nodos de salida y presentó un claro ejemplo de un sistema de monitoreo activo en pleno funcionamiento en el campo. Los nodos eran diferentes a otros nodos de salida, pues inyectaban códigos maliciosos en los archivos binarios que pasaban por ellos. Mientras el cliente descargaba un archivo desde Internet mediante Tor, para mantener el anonimato, el nodo de salida malicioso lanzaba un ataque MITM y plantaba códigos maliciosos en el archivo binario que se estaba descargando.
Este incidente ilustra con claridad el concepto de un sistema de monitoreo activo; sin embargo, también ilustra muy bien la otra cara de la moneda: las herramientas automáticas identifican rápida y fácilmente cualquier actividad en el nodo de salida (como la manipulación de tráfico), y el nodo ingresa de inmediato a la lista de rechazados de la comunidad Tor.
Borrón y cuenta nueva
HTML5 nos ha proporcionado no sólo WebRTC, sino también la interesante etiqueta ‘canvas’, que está diseñada para crear imágenes bitmap con la ayuda de JavaScript. Esta etiqueta tiene una peculiaridad respecto a la producción de imágenes: cada navegador web produce imágenes de forma diferente, dependiendo de varios factores, como:
- Varios controladores de gráficos y componentes de hardware instalados en el lado del cliente.
- Varios conjuntos de programas en el sistema operativo y varias configuraciones del ambiente de software.
Los parámetros de imágenes producidas pueden identificar el navegador web y su ambiente de software y hardware. En base a esta peculiaridad, se puede crear una huella digital. Esta técnica no es nueva; la utilizan, por ejemplo, algunas agencias publicitarias para hacer seguimiento virtual de los intereses de los usuarios. Sin embargo, no todos sus métodos pueden implementarse en el navegador Tor; por ejemplo, no pueden usarse supercookies en el navegador Tor, Flash y Java están deshabilitados por defecto, y el uso de fuentes está restringido. Otros métodos muestran notificaciones que pueden alertar al usuario.
Por lo tanto, el navegador Tor bloqueó nuestros intentos iniciales de obtener una huella digital con la ayuda de la función getImageData() que extrae datos de la imagen.
Sin embargo, quedan todavía algunas lagunas que permiten crear una huella digital en Tor sin provocar alertas.
Por sus fuentes los reconocerás
Es posible identificar el navegador Tor con la ayuda de la función measureText(), que mide el ancho de un texto producido en el lienzo:
Uso de measureText() para medir el tamaño de una fuente que es único para el sistema operativo
Si el ancho de la fuente resultante tiene un valor único (a veces es un valor de punto flotante) entonces es posible identificar el navegador, incluyendo el navegador Tor. Reconocemos que en algunos casos, los valores del ancho de la fuente resultantes pueden ser los mismos para distintos usuarios.
Hay que notar que esta no es la única función que puede adquirir valores únicos. Otra función similar es getBoundingClientRect(), que puede adquirir la altura y el ancho del rectángulo del borde del texto.
Cuando la comunidad se enteró del problema de identificar a los usuarios por la huella digital (también es relevante para los usuarios del navegador Tor), se creó una petición apropiada. Sin embargo, los desarrolladores del navegador Tor no tienen apuro en reparar esta falla en su configuración, argumentando que resulta ineficaz poner estas funciones en una lista de rechazados.
Respuesta oficial de los desarrolladores de Tor respecto al problema de producción de fuente
Pruebas de campo
Este enfoque fue aplicado por un investigador conocido como “KOLANICH”. Usando ambas funciones, measureText() y getBoundingClientRect(), escribió una rutina, probada localmente en distintos navegadores y obtuvo identificadores únicos.
Usando la misma tecnología, dispusimos un banco de pruebas, con el fin de identificar el navegador Tor en varios ambientes de software y hardware.
Para resolver este problema, recurrimos a un blog del autor e incrustamos un JavaScript que usa las funciones measureText() y getBoundingClientRect() para medir las fuentes producidas en el navegador web del usuario que visita la página web. La rutina envía los valores medidos en una petición POST al servidor web que, a su vez, guarda esta petición en sus registros.
Fragmento del registro de un servidor web con una huella digital visible del navegador Tor
En este momento estamos recopilando los resultados del funcionamiento de esta rutina. Hasta la fecha, todos los valores devueltos son únicos. En su debido momento publicaremos un informe sobre los resultados.
Posibles implicaciones prácticas
¿Cómo puede usarse este concepto en condiciones reales para identificar a los usuarios del navegador Tor? El código JavaScript, descrito más arriba, puede instalarse en varios objetos que particpan en el tráfico de datos en Darknet.
- Nodo de salida. Se implementa un ataque MITM, durante el cual se inyecta el código JavaScript en todas las páginas web que un residente de Darknet visita en la web exterior.
- Recursos onion internos y sitios web externos controlados por los atacantes. Por ejemplo, un atacante lanza un ‘portal’, o una página web especialmente diseñada con un público específico en mente, e identifica a todos los visitantes.
- Sitios web internos y externos que son vulnerables a vulnerabilidades XSS (cross-site scripting), preferiblemente guardadas, pero esto no es esencial.
Objetos que podrían identificar a un usuario de Tor
El último punto es particularmente interesante. Hemos escaneado unos 100 recursos onion en busca de vulnerabilidades web (estos recursos se encontraban en los registros del sistema de monitoreo pasivo), descartando los ‘falso-positivos’. Así hemos descubierto que un 30% de los recursos analizados de Darknet son vulnerables a los ataques XSS.
Todo esto significa que la disposición de una granja de nodos de salida no es el único método que un atacante puede usar para desenmascarar a un usuario. El atacante también puede atacar sitios web y disponer portales, colocar un código JavaScript y recopilar una base de datos de huellas digitales únicas.
Proceso de desenmascaramiento de un usuario de Tor
Entonces los atacantes no se limitan a la inyección de códigos JavaScript en sitios web legítimos. Existen otros objetos en los que puede inyectarse un código JavaScript, lo que amplía la cantidad de posibles puntos de presencia, incluyendo aquellos dentro de Darknet.
Siguiendo con este enfoque, el atacante podría, teóricamente, encontrar, por ejemplo, sitios cuyos contenidos sean de interés para el usuario con la huella digital única ‘c2c91d5b3c4fecd9109afe0e’, y en los que el usuario se identifica para ingresar. Como resultado, el atacante conoce el perfil del usuario en un recurso web, así como su historial de navegación.
En lugar de una conclusión
En el sitio oficial del proyecto Tor, los desarrolladores publicaron su respuesta a la interrogante “¿Por qué el navegador Tor permite JavaScript?”:
Respuesta oficial del navegador Tor a una interrogante sobre JavaScript
Se desprende de esta respuesta que no debemos esperar que los desarrolladores deshabiliten el código JavaScript en el navegador Tor.
Develando a los usuarios de Tor: donde termina el anonimato en Darknet