A estas alturas todos estaréis enterados de la Operación Onymous, que se llevó por delante varios servicios ocultos considerados ilegales. Nada fuera de lo normal - no es llamativo que la policía requise servidores que realizan actividades ilegales y detengan a sus operadores - salvo por una cosa: esos servicios estaban usando Tor. Se supone que los servicios ocultos son eso mismo, ocultos, nadie puede saber quiénes son en realidad.
Entonces, ¿qué ha pasado? ¿Cómo han logrado identificar a las personas detrás de esos servidores ocultos? ¿Es que Tor ha dejado de ser seguro? No lo sabemos a ciencia cierta, pero en este artículo vamos a tratar de explicar qué es lo que ha podido pasar.
¿Qué es un servicio oculto de Tor?
Antes de nada vamos a aclararnos y ver qué es un servicio oculto de Tor. En Genbeta ya hablamos de cómo funciona la red Tor pero pasamos un poco por encima de los servicios ocultos, que tienen su complicación.
Cuando te conectas a un sitio web normal, tu ordenador sabe con "quién" está hablando. Por ejemplo, si visitas _xataka.com_ sabrá que su IP es _54.217.215.139_, un dato que sirve para identificar al servidor y saber dónde está. Los servicios ocultos de Tor evitan eso: tú te conectas a _xyz.onion_ pero no sabes qué servidor es el que te está devolviendo la página. De hecho, el servidor tampoco sabe quién es el que le está visitando
¿Cómo logra Tor esa privacidad? Usando un diseño con puntos de introducción y de encuentro. Cuando se crea un servicio oculto, se eligen algunos nodos dentro de Tor y se les que sean puntos de introducción. Para ello se construye un circuito para llegar hasta ellos, una especie de túnel formado por varios nodos de Tor. Después se comunica a la base de datos de servicios ocultos (no centralizada, sino que está distribuida por los nodos de la red) para decirle cuáles son los puntos de introducción y la clave pública del servicio oculto, para permitir la autenticación.
Cuando un cliente se quiere conectar a un servicio oculto, lo que hace es preguntar a la base de datos cuáles son sus puntos de introducción. Prepara un túnel a un punto de encuentro, y le dice a uno de los puntos de introducción que quiere conectarse con el servicio oculto. Para ello, le comunica un _token_ o código que identifica la conexión y quién es el punto de encuentro.
El punto de introducción transmite esa información a través del circuito al servicio oculto. Si éste acepta la conexión, construye un circuito al punto de encuentro y le comunica el _token_ que identifica la conexión. Así, el punto de encuentro hará de intermediario entre cliente y servidor. Cuando se pida una página web, el cliente enviará la petición a través del circuito hasta el punto de encuentro, y éste lo reenviará de nuevo al servidor.
Al final, nadie sabe quién es quién. El servidor está escondido detrás de los puntos de introducción, así que nadie sabe su IP. Por el diseño de los circuitos de Tor, los puntos de introducción no saben ni quién les hace las peticiones ni quién es el servidor. Y al haber un punto de encuentro, ni el servidor ni el cliente saben quién es el otro.
Ahora bien, lo que no hemos comentado es cómo sabemos que nos estamos conectando con el servicio que es. Es decir, ¿cómo aseguramos que nos estamos conectando con _xyz.onion_?
Pues precisamente por su nombre. ¿Nunca os habéis preguntado por qué tienen nombres raros como _thf2p5u6dawmfczq.onion_? No es que los operadores de Tor tecleen con la cabeza en lugar de con las manos: es que los nombres de servicios ocultos no se pueden elegir sino que dependen de su clave pública, luego no es difícil saber cuándo nos están tratando de engañar. La base de datos de servicios ocultos sólo registrará los puntos de introducción para _xyz.onion_ si vienen firmados con la clave que corresponde a la cadena _xyz_. Así, cuando el cliente pida los datos de un servicio oculto recibirá la clave pública para asegurarse de que no está hablando con un impostor.
¿Cómo se han podido identificar a los operadores de los servicios?
Bien, después de esta _breve_ introducción a los servicios ocultos de Tor, vamos a intentar explorar qué posibilidades hay para que las autoridades hayan sabido quién está detrás de los servidores requisados en la Operación Onymous.
Se barajan varias posibilidades, y las tres primeras no tienen nada que ver con Tor. A saber: agentes infiltrados dentro de los equipos encargados de llevar los servidores, fallos de programación al estilo Silk Road I, o incluso usando las cuentas de Bitcoin para encontrarles
Lo que vamos a ver en este artículo es qué posibilidades hay para que hayan encontrado a los operadores de servicios ocultos usando fallos en Tor, si es que los hay.
Cuando el adversario controla todo el tráfico
Tor es una red anónima de baja latencia. Esto quiere decir que desde que tú pides una web hasta que recibes la respuesta pasa poco tiempo. Y lo que es una ventaja en usabilidad (a poca gente le gustaría eperar minutos para leer Genbeta, por ejemplo) es una desventaja en seguridad, ya que abre la puerta a ataques de confirmación de tráfico.
Estos ataques implican que el adversario puede ver cuándo estás enviando datos y cuándo los está recibiendo el servidor. En ese caso, puede hacer un estudio: si tu envías un paquete de datos a Tor y 300 milisegundos después el servidor recibe un paquete de Tor, y este patrón se repite, pueden saber a qué servidor te estás conectando.
Por el propio diseño de Tor, es posible analizar el tráfico que entra y sale de la red para saber quién se conecta a dónde
Los autores de Tor son conscientes de ello (de hecho, en este artículo suyo de 2009 tenéis una explicación detallada y con muchos enlaces sobre el tema) desde el momento del diseño del protocolo. No se considera una vulnerabilidad como tal porque para que este ataque fuese efectivo habría que controlar una gran parte de Internet o de los nodos Tor, cosa que se supone imposible o muy difícil.
Precisamente este tipo de ataque ha vuelto a salir a la luz hace unos días a raíz de un _paper_ de Sambuddo Chakravarty, que promete ser bastante efectivo desenmascarando a usuarios de Tor. Eso sí, siempre y cuando se controle una gran parte de la red - lo del 81.4% de efectividad es sólo en las condiciones del experimento: más información en el blog de Tor con comentario de Chakravarty incluido
La cuestión es que este tipo de ataques no se quedan sólo en la teoría y en la investigación. Hace unos meses, en julio de este año, se descubrió un grupo de _routers_ de Tor que estaban llevando a cabo un ataque de confirmación de tráfico.
A grandes rasgos, cuando un nodo "malvado" (en rojo en el esquema) recibía una petición de información de servicio oculto o una solicitud para publicar datos, usaba los comandos internos del protocolo de Tor para codificar el nombre del servicio. Esos comandos se transmitían por el circuito de Tor hasta llegar al nodo de entrada. Si daba la casualidad que el nodo de entrada también era malvado, interpretaba esos comandos y entonces podía saber que el ordenador con el que se estaba comunicando era un servicio oculto o se estaba conectando a uno, según la petición que envíe a la base de datos.
Según los desarrolladores de Tor, es posible que esos atacantes hayan logrado desenmascarar servicios ocultos. La cuestión es que no se sabe quienes fueron. Se especula que fueron investigadores que iban a dar una charla en BlackHat 2014, charla que fue cancelada por razones desconocidas (más especulaciones: las autoridades se enteraron de la investigación y les pidieron los datos obtenidos para llevar a cabo Onymous).
Otras posibilidades para mejorar la efectividad de este tipo de ataques es usar denegación de servicio selectiva. El atacante prepara varios nodos de Tor con un comportamiento algo distinto a lo normal: si el inicio y el final de un circuito Tor son nodos "malvados", analiza el tráfico para saber quién se está conectando a qué sitios. Si por otra parte un nodo "malvado" se encuentra en la mitad de un circuito, lo cierra para forzar a que se cree otro nuevo. Así, se aumentan las posibilidades de que un cliente de Tor use un circuito que pueda identificarle.
La cuestión es que estos ataques que hemos descrito no son dirigidos. Dependen de que el atacante controle una parte importante de los nodos de Tor, y que dé la casualidad que un servicio oculto o un cliente los use. Es decir, no son muy potentes y es muy difícil usarlos para desenmascarar un servicio concreto.
Ataques dirigidos contra servicios ocultos
No son sencillos, pero existen ataques que se pueden dirigir para desenmascarar servicios ocultos concretos. Uno de ellos es el ataque de descubrimiento de guardas, o _guard discovery attack_.
Definición rápida: ¿qué es un nodo de guarda? Es simplemente el primer nodo de un circuito de Tor, el punto de entrada a la red. Son importantes porque son los que se comunican directamente con el servicio oculto o con el cliente, y por lo tanto los que pueden saber su IP. Estos nodos suelen ser fijos para mitigar ataques por confirmación de tráfico.
Este tipo de ataques están explicados en la sección 7 de este _paper_ de 2013, y conceptualmente es sencillo. El atacante controla dos nodos de Tor y un punto de encuentro. Los circuitos de Tor son de tres nodos, así que si el servicio oculto crea un circuito de la forma _Servicio oculto ⟶ Nodo de guarda ⟶ Nodo "malvado" 1 ⟶ Nodo "malvado" 2 ⟶ Punto de encuentro_, el atacante podría saber quién es el nodo de guarda.
Los nodos de entrada o "de guarda" son muy jugosos para un atacante: son quienes saben la IP del servicio oculto
¿Cómo logramos que se dé esa situación? Fácil: probando mucho. El atacante fuerza muchas conexiones al servicio oculto hasta que en algún momento se elijan los nodos que se necesitan. En una hora, se podrían localizar esos nodos de entrada para el servicio oculto objetivo.
Una vez que el atacante sabe quiénes son los nodos de entrada, puede tratar de comprometerlos y controlarlos para así desvelar la identidad del servicio oculto usando los ataques de confirmación de tráfico que veíamos antes.
No es una posibilidad descabellada que este ataque se haya llevado a cabo. En la lista de correo de Tor, un administrador de Doxbin, uno de los servidores requisados, publicaba bastante información que podría indicar que le han encontrado con un ataque de este estilo: forzando al servicio oculto a crear muchos circuitos hasta que en algún momento escoja nodos comprometidos que revelen su información.
Pero, ¿Tor sigue siendo seguro o no?
Después de todo esto, vamos a lo que interesa: ¿sigue siendo Tor seguro o se puede considerar vulnerable?
Lo primero que hay que tener en cuenta es que no sabemos si se usaron fallos de Tor en la operación Onymous. Es posible que se aprovechasen fallos en la programación de los servidores, aunque como comentábamos también hay pistas que nos hacen pensar que se han usado puntos débiles de Tor para lograrlo.
También tenemos que darnos cuenta de que llevar un ataque de este tipo contra Tor no es trivial. Se necesita gente cualificada y bastante infraestructura para hacer funcionar los nodos necesarios para obtener los resultados. Y aun así es difícil lograr objetivos concretos: sólo hay que ver la lista de servidores requisados, entre los que hay muchos clones o estafas, que nos hacen pensar que las autoridades simplemente han requisado lo que han encontrado.
Además, los desarrolladores de Tor monitorizan los nodos de Tor que se añaden a la red. Si detectan actividad sospechosa, los dan de baja para evitar problemas. Por ejemplo, en el caso del ataque de julio, se dieron cuenta de los nuevos nodos creados aunque no actuaron. A la vista de lo que ha ocurrido, estarán más atentos en el futuro.
Más detalles: los objetivos no son tanto usuarios concretos sino servidores ocultos. Son objetivos más asequibles ya que siempre están funcionando, y para este tipo de ataques se necesita tiempo.
La operación Onymous no cambia mucho de lo que se sabía sobre la seguridad de Tor. Es muy difícil asegurar los servicios ocultos, y los propios desarrolladores de Tor lo reconocen. Y aunque se pueden mitigar los ataques (por ejemplo, manteniendo una lista blanca de nodos de entrada confiables) es difícil blindarlos completamente.
De cierta forma, es sorprendente que los servicios ocultos hayan sobrevivido tanto tiempo. - Andrew Lewman, Tor
Por otra parte, la seguridad de los usuarios sí que está más "garantizada", si es que podemos hablar de garantías en informática, por parte de Tor. No se entra a valorar que usando Tor dejen datos que les puedan identificar en los servicios que usan: por ejemplo, uno de los servicios ocultos requisados guardaba números de identificación de los envíos postales sin cifrar, lo que podría identificar a los usuarios.
En definitiva: para mantener una navegación anónima y privada, Tor parece seguir siendo seguro y una buena herramienta para evitar censura o violaciones de privacidad. Pero para ocultar la identidad de servicios web (servicios ocultos) no es del todo infalible, sobre todo si se tiene detrás a la autoridad.
Ver 7 comentarios