Cómo luchar contra el secuestro de DNS
El 24 de abril de 2018, los usuarios del popular servicio de billetera, Ether (una criptomoneda popular comparable a Bitcoin), recibieron un mensaje inusual cuando navegaron al sitio web para iniciar sesión: el certificado SSL en el sitio web no era válido. Tras un examen más detallado, descubrirían que el certificado estaba autofirmado.
Algunos usuarios se detuvieron allí. Después de todo, es de sentido común no iniciar sesión en un sitio web con un error de certificado. Punto.
Pero no fue el caso de todo el mundo. Con el error del certificado siendo lo único que parecía estar fuera de lo normal, mientras que todo lo demás parecía completamente correcto, algunos usuarios iniciaron sesión a pesar de sus mejores instintos. Todos aquellos que lo hicieron inmediatamente vieron un temporizador de cuenta regresiva de 10 segundos antes de que su criptomoneda disponible fuera transferido a otra billetera.
En otras palabras, habían caído presa de phishing.
¿Pero cómo sucedió esto? Nadie hizo clic en un enlace análogo en un correo electrónico, sino navegaron directamente al sitio web o usaron un marcador.
Entonces, ¿qué pasó?
Ya trataremos ese tema. Pero antes detengámonos un momento: primero vayamos al grano de la cuestión de cómo funciona el Internet. Para empezar, hablemos de DNS.
Como registrador, nos dedicamos a la venta de nombres de dominio, lo que significa que te permitimos asignar un nombre, por ejemplo example.com, a la dirección IP del servidor en el que hospedas un servicio, como tu sitio web, tu correo electrónico, etc.
DNS es la forma de decirle al Internet qué dirección IP va con qué nombre. Tú asignas servidores DNS a tu nombre de dominio que tienen todo mapeado en cuanto a qué direcciones IP van con example.com, www.example.com, etc., en cuáles está hospedado tu correo electrónico, etcétera.
Luego, cuando alguien abre una ventana del navegador y escribe ‘example.com’, su computadora le pregunta a un resolutor de DNS a qué dirección IP debe conectarse para encontrar tu sitio. Si esa persona u otra en la misma red ha visitado recientemente tu sitio, entonces el resolutor de DNS probablemente tiene esa información almacenada en la memoria caché y puede simplemente dar esa respuesta a su computadora. Si el resolutor no lo sabe, subirá por la cadena y le preguntará al siguiente servidor DNS.
El resolutor de DNS almacena en caché la respuesta para usarla más tarde, durante un período de tiempo determinado (llamado Tiempo de Vida, o TTL). Así, la próxima vez que alguien en la red pida una respuesta en particular, la respuesta no tiene que solicitarse a la fuente.
Hoy en día es cada vez menos frecuente que los propietarios de nombres de dominio ejecuten sus propios servidores DNS. Normalmente utilizan los servidores DNS de su registrador o de un proveedor externo como Cloudflare o Amazon Web Services.
Debido a que está distribuido, el DNS es un sistema muy robusto. Pero al mismo tiempo, tiene una debilidad: el sistema se basa en la confianza. Cada servidor DNS en el camino confía en el servidor DNS de arriba para darle la respuesta correcta.
Lo que pasó con el caso de la suplantación de identidad de la billetera de Ether fue que, de alguna manera, alguien hizo que los resolutores de DNS de todos pensaran que una respuesta falsa era la verdadera.
¿Cómo se falsifica una respuesta DNS?
Las solicitudes y respuestas de DNS no están encriptadas y pueden ser leídas por cualquier persona.
Si un atacante puede interceptar tu solicitud de DNS, puede falsificar la respuesta y dirigir tu computadora a la dirección IP incorrecta. Para hacer esto, un atacante tendría que piratear el proveedor de servicios de Internet de su objeto, su DNS o su proveedor de DNS.
En el ataque al sitio de la billetera Ether en abril de 2018, todas las solicitudes de DNS al sitio atacado recibieron una respuesta errónea. De alguna manera, alguien secuestró los servidores DNS del sitio web.
Secuestrar servidores DNS
El sitio web en cuestión utilizaba los servidores DNS de un servicio web popular como servidores DNS de su dominio. Si un atacante quisiera robar una moneda Ether, una forma de hacerlo sería pirateando el servidor web del sitio y cambiando el código. Sin embargo, le resultaría más fácil a un atacante simplemente apuntar los DNS del sitio a un sitio web nuevo y malicioso. Si pudieran piratear el proveedor de DNS, tendrían control total sobre los DNS del sitio y podrían dirigirlo a cualquier sitio web.
Pero en lugar de eso, los atacantes en el ataque al sitio de la billetera Ether de abril de 2018 optaron por proporcionar respuestas falsas a las consultas de DNS a los servidores de nombres ya asignados al dominio del sitio de la billetera Ether.
Cómo lo hicieron, llega al quid de la cuestión de cómo funciona el Internet.
Tablas de enrutamiento
El Internet no es sólo una gran red—es una red de redes.
Esto significa que cuando te conectas a la Web en casa, estás transmitiendo y recibiendo datos, incluyendo las solicitudes de DNS, desde y hacia la red de tu proveedor de servicios de Internet. El enrutador de la red de tu proveedor de servicios de Internet está averiguando cómo conseguir que lo que estás transmitiendo llegue al lugar correcto.
Estos enrutadores tienen conexiones directas a algunas redes, pero para enviar datos a algunas redes, primero tienen que enviarlos a través de otra red que luego los envía a la red correcta.
Básicamente, forman un mapa de cómo puede llegar a cada red individual. Esto se denomina tabla de enrutamiento. Luego, el enrutador comparte toda esta información con todas las redes a las que está directamente conectado, por lo que estas tablas de enrutamiento se propagan a través de todas las redes de Internet.
Probablemente ya sabes que Internet utiliza direcciones IP para localizar cualquier computadora en Internet. Cada dirección IP tiene un «prefijo» que se parece un poco a un código postal. Cada red en Internet anuncia a todas las demás redes en Internet que puede entregar datos a direcciones IP en ese prefijo.
Cuando se envían datos a un destino, un enrutador de red utiliza sus tablas de enrutamiento (su mapa de Internet) para enviar datos a la red correcta para la dirección IP de destino y a su destino. Así es como ocurre toda la comunicación en Internet, incluyendo las solicitudes de DNS. Al fin y al cabo, los servidores DNS también tienen direcciones IP.
Al igual que con el DNS, debido a que el sistema se basa en la fiabilidad de la información disponible, cuando una red envía información de enrutamiento incorrecta de forma maliciosa o incluso accidental, esa información puede terminar en las tablas de enrutamiento a través de Internet.
En el ataque de la primavera del 2018 en el sitio web de Ether se hizo exactamente eso. Los atacantes consiguieron que los enrutadores principales en Internet enrutaran el tráfico a las direcciones IP del servicio DNS del sitio de la billetera de Ether a un servidor que ellos poseían y controlaban.
Entonces, cuando alguien enviaba una consulta DNS para un dominio gestionado en la dirección IP que los atacantes secuestrabron, el servidor del atacante enviaba la respuesta, no el proveedor del sitio de la cartera de Ether. Y cuando alguien le enviaba a los atacantes una consulta DNS para el nombre de dominio del sitio de la moneda Ether, el servidor de los atacantes respondía con la dirección IP del sitio web falso, y luego robaba la información de la víctima cuando ingresaba al sitio falso.
En última instancia, se robaron más de 17 millones de dólares en criptomoneda.
Aunque algunos podrían decir que todo esto demuestra que las criptomonedas son intrínsecamente una propuesta arriesgada, que los usuarios que fueron víctimas del ataque deberían haber sido más abusados, o que el proveedor de DNS o el servicio de monederos Ether de alguna manera no protegieron a sus usuarios, ninguno de estos factores es relevante para el problema principal: aunque cada ataque ofrece lecciones para futuras mejoras, es importante recordar que, en su forma más básica, el phishing se aprovecha de la confianza de los usuarios.
Por una parte, el aporte es lo siguiente: no se puede confiar en nada, ni siquiera en los DNS. Pero, por otra, plantea la cuestión, ¿cómo podemos mejorar la fiabilidad del sistema?
Ahí es donde entra en juego la DNSSEC.
DNSSEC
Conforme a la manera que DNS se creó, no había manera de saber si las respuestas de DNS que uno obtenía eran realmente de la fuente de la que supuestamente provenían. A medida que el Internet iba creciendo, la gente empezó a darse cuenta de que se trataba de un descuido importante, por lo que la gente empezó a proponer «extensiones» al DNS, específicamente un conjunto de «extensiones de seguridad del DNS» o DNSSEC.
Requirió un poco de experimentación para que funcionara bien, pero la DNSSEC, tal como existe hoy en día, consiste en firmar registros DNS utilizando criptografía de clave pública. Los propietarios de dominio generan sus propios pares de claves y luego envían la clave pública a su registrador de dominio (generalmente subiéndola). El registrador envía las claves al registro, que las firma y las publica. Es similar a la forma en que los administradores de sitios web generan los certificados SSL y los envían a firmar a las autoridades de certificación (AC o CA).
Al firmarse una zona DNS utilizando DNSSEC, cada vez que se busca un registro DNS en esa zona, se puede verificar si el registro recibido proviene realmente de donde se suponía que procedía.
Esto significa que cualquier intermediario malicioso, envenenamiento de caché DNS, e incluso la puesta en peligro tus servidores DNS se puede detectar cuando se utiliza DNSSEC en la zona.
Sobre todo, DNSSEC te permite confiar en que las respuestas que recibes de un servidor DNS son correctas. En el caso del sitio web de Ether, el servidor DNS fraudulento no habría podido falsificar los registros DNS firmados y señalar a los usuarios a un sitio web fraudulento.
Además, sin DNSSEC, los atacantes podrían haber usado su control de los servidores DNS del sitio web atacado para crear un certificado SSL real que pareciera tan válido para un navegador como cualquier otro certificado válido, dejando a los usuarios sin ningún tipo de advertencia de que la página era fraudulenta. Con DNSSEC, eso no sería posible.
Riesgo y confianza
Es importante tener en cuenta que lo que pasó con el sitio web de la billetera de monedas Ether no es un riesgo inherente a las criptomonedas. El secuestro de DNS no sólo ocurre con las criptomonedas. A finales de 2016, un banco brasileño vio sus dominios secuestrados por el mismo tipo de ataque que sufrió el sitio web de monederos de monedas Ether, que no sólo afectó a su sitio web, sino también a los cajeros automáticos de todo el país, en los Estados Unidos y las Islas Vírgenes, exponiendo a millones de personas a posibles robos.
Pero ninguno de estos ataques apuntaba a una moneda o una cadena, sino a sitios web. Cualquier sitio web podría verse afectado de esta manera, no sólo un sitio de criptomoneda, y no sólo un sitio financiero.
El riesgo está presente en cualquiera ocasión en la cual, al explotar las vulnerabilidades de la tecnología, los posibles ladrones puedan generar enormes ganancias ilícitas.
Pero la otra cara de la moneda (fiduciaria o no) es la cuestión de la confianza. Es bastante fácil quedar hastiado de los muchos ciberataques que existen y las obvias vulnerabilidades que pueden ser explotadas. El tipo de ataque que sufrieron los usuarios del sitio web de la billetera de monedas Ether, sin embargo, no fue tan distinta de las típicas estafas que se llevan a cabo exitosamente a diario.
La gente envía dinero a los príncipes nigerianos porque confían en que cuando llega un correo electrónico a sus buzones, debe ser información honesta y fiable. Hacen clic en los enlaces de los correos electrónicos de phishing porque confían en que el dominio que ven en el enlace es el que parece ser. A pesar de las advertencias de los certificados inician sesión en sus carteras de criptomoneda porque confían en los servicios básicos de Internet, como el DNS y el enrutamiento de la red.
DNSSEC es una tecnología útil porque utiliza la criptografía para aumentar la confianza en uno de esos servicios centrales y recomendamos encarecidamente a todo el mundo que la utilice, no sólo para evitar este tipo de ataques, sino porque nos ayuda a todos a tener más confianza en lo que podemos y no podemos confiar. Pero tampoco es perfecto.
Otras consideraciones
Una consideración es que el nombre de dominio del sitio Ether no tenía HSTS activado. Esta protección habría hecho más difícil pasar por alto la advertencia de certificado autofirmado, ya que no se habría presentado al usuario ninguna opción para ignorar la advertencia y proceder de todos modos.
Por otro lado, el hecho de que los usuarios recibiero una advertencia fue un golpe de suerte. Debido a que los atacantes estaban redirigiendo todo el tráfico de DNS para el dominio del sitio de la cartera de Ether a sus propios servidores, significaba que también podrían haber adquirido un certificado SSL «válido» utilizando la validación de DNS.
Otra consideración es que, si el atacante hubiera elegido redirigir el tráfico a un resolutor de DNS, todo aquel que utilizara ese resolutor podría tener su tráfico redirigido a un sitio de phishing de su elección y la DNSSEC no tendría manera de detenerlo. Esto se debe a que la verificación de DNSSEC la realiza el propio resolutor de DNS, por lo que si el DNS es secuestrado en cualquier lugar entre tu navegador y el propio resolutor de DNS, DNSSEC no te protegerá.
A fin de cuentas, ninguna tecnología de seguridad es suficiente para protegerse contra todo tipo de ataques. Y un ataque siempre se puede frustrar de múltiples maneras, la DNSSEC no es la solución infalible para detener todos los ataques de este tipo.
Tagged in DNSSeguridad