¿Qué es el envenenamiento de caché de DNS? | Suplantación de DNS

Los atacantes pueden envenenar un caché de DNS engañando a las resoluciones de DNS con información falsa de almacenamiento de caché, con el resultado de que la resolución envía la dirección IP equivocada a los clientes y los usuarios intentan navegar a un sitio web que se dirigirá al sitio equivocado.

Share facebook icon linkedin icon twitter icon email icon

Suplantación de DNS

Metas de aprendizaje

Después de leer este artículo podrás:

  • Definir envenenamientos de caché de DNS
  • Entender cómo funciona el almacenamiento en caché de DNS
  • Explicar cómo pueden envenenar los atacantes un caché de DNS
  • Entender cómo DNSSEC ayuda a evitar los ataques de envenenamiento de DNS

¿Qué es el envenenamiento de caché de DNS?

Imagina que, como una broma del último año de bachillerato, los alumnos cambian todos los números de salas de las instalaciones del instituto para que los nuevos estudiantes que aún no conocen el diseño del instituto se pasen todo el día siguiente perdidos y presentándose en clases equivocadas. Ahora imagina que los números de las salas que no coinciden se registran en un directorio de las instalaciones, y los estudiantes siguen yendo a las clases equivocadas hasta que, finalmente, alguien se da cuenta y corrige el directorio.

El envenenamiento de caché de DNS consiste en introducir información falsa en un caché de DNS, para que las consultas de DNS devuelvan una respuesta incorrecta y dirijan a los usuarios a sitios web equivocados. El envenenamiento de caché de DNS también se conoce como “suplantación de DNS”. Las direcciones IP son los “números de sala” de Internet y habilitan el tráfico para llegar a los lugares correctos. Los cachés de resolución de DNS son el “directorio de las instalaciones”, y cuando almacenan información errónea, el tráfico se dirige a sitios equivocados, hasta que se corrige la información almacenada en caché. (Ten en cuenta que esto no desconecta realmente a los sitios web de sus direcciones IP reales).

Como, en general, no hay forma de que las resoluciones de DNS verifiquen los datos en sus cachés, la información de DNS incorrecta permanecerá en el caché hasta que caduque el tiempo de vida (TTL) o se elimine de forma manual. Diversas vulnerabilidades hacen que el envenenamiento de DNS sea posible, pero el problema principal es que DNS se creó para una Internet mucho más pequeña y se basaba en un principio de confianza (de forma parecida a BGP). Un protocolo de DNS más seguro denominado DNSSEC intenta resolver algunos de estos problemas, pero aún no se ha adoptado de forma masiva.

¿Qué hacen las resoluciones de DNS?

Las resoluciones de DNS proporcionan a los clientes la dirección IP asociada con un nombre de dominio. En otras palabras, toman direcciones de sitios web legibles para los seres humanos, como "cloudflare.com" y las traducen a direcciones IP legibles por máquinas. Cuando un usuario intenta navegar a un sitio web, su sistema operativo envía una solicitud a una resolución de DNS. La resolución de DNS responde con la dirección IP, y el navegador web toma la dirección e inicia la carga del sitio web.

¿Cómo funciona el almacenamiento en caché de DNS?

Una resolución de DNS guardará las respuestas a las consultas de dirección IP durante un determinado período. De esta forma, la resolución puede responder mucho más rápidamente a consultas futuras, sin necesidad de comunicarse con los numerosos servidores que participan en el proceso común de resolución de DNS. Las resoluciones de DNS guardan las respuestas en su caché durante el tiempo de vida (TTL) designado y relacionado con esa dirección IP se lo permita.

Respuesta de DNS no almacenada en caché:

Respuesta de DNS no almacenada en caché

Respuesta de DNS almacenada en caché:

Respuesta de DNS almacenada en caché

¿Cómo envenenan los atacantes los cachés de DNS?

Los atacantes pueden envenenar los cachés de DNS haciéndose pasar por servidores de nombres DNS, hacen una solicitud a una resolución de DNS, y a continuación, falsifican la respuesta cuando la resolución de DNS consulta a un servidor de nombre. Esto es posible porque los servidores de DNS usan UDP en lugar de TCP, y porque actualmente no hay verificación de la información de DNS.

Proceso de envenenamiento de caché de DNS:

Proceso de envenenamiento de caché de DNS

Caché de DNS envenenado:

Caché de DNS envenenado

En lugar de usar TCP, que requiere que las dos partes que se comunican se den un “apretón de manos” para iniciar la comunicación y verificar la identidad de los dispositivos, las solicitudes de DNS y las respuestas usan UDP (protocolo de datagramas de usuario). Con UDP, no hay garantías de que una conexión esté abierta, de que el destinatario esté listo para recibirla o de que el remitente sea quien dice ser. Por esta razón, UDP es vulnerable a las falsificaciones, un atacante puede enviar un mensaje mediante UDP y hacer que parezca la respuesta de un servidor legítimo mediante la falsificación de los datos del encabezado.

Si una resolución de DNS recibe una respuesta falsificada, acepta y almacena en caché los datos sin evaluarlos, ya que no hay manera de verificar si la información es precisa y proviene de una fuente legítima. DNS se creó en los inicios de Internet, cuando solo se conectaban universidades y centros de investigación. No había ninguna razón para suponer que alguien intentaría difundir información falsa de DNS.

A pesar de estos puntos importantes de vulnerabilidad en el proceso de caché de DNS, los ataques de envenenamiento no son fáciles. Dado que la resolución de DNS realmente hace la consulta al servidor de nombres autorizado, los atacantes solo disponen de unas milésimas de segundo para enviar la respuesta falsa, antes de que llegue la respuesta real del servidor de nombres autorizado.

Los atacantes también tienen que saber o adivinar una serie de factores para poder realizar ataques de suplantación de DNS:

  • Qué consultas de DNS la resolución de DNS objeto del ataque no almacenó en caché, para que la resolución consulte al servidor de nombres autorizado
  • Qué puerto* está usando la resolución de DNS: solían usar el mismo puerto para todas las consultas, pero ahora usan cada vez un puerto aleatorio diferente
  • El número de ID de la solicitud
  • A qué servidor de nombres autorizado irá la consulta

Los atacantes también pueden obtener acceso a la resolución de DNS de otra forma. Si un tercero malicioso opera, hackea o accede físicamente a una resolución de DNS, puede alterar más fácilmente los datos almacenados en caché.

*En las redes, un puerto es un punto virtual de recepción de comunicación. Las computadoras tienen varios puertos, cada uno con su propio número, y para que las computadoras se comuniquen entre ellas, deben designarse ciertos puertos para determinados tipos de comunicación. Por ejemplo, las comunicaciones HTTP siempre van al puerto 80 y los HTTPS siempre usa el puerto 443.

Suplantación de DNS y censura

Varios gobiernos han envenenado adrede cachés de DNS en sus países para denegar el acceso a determinados sitios web o recursos web.

¿Cómo ayudará DNSSEC a evitar el envenenamiento de DNS?

DNSSEC es la abreviatura de Domain Name System Security Extensions (Extensiones de seguridad del sistema de nombres de dominio) y es una forma de verificar la integridad de los datos de DNS y su origen. DNS se diseñó originalmente sin esa verificación, y por ello es posible el envenenamiento de DNS.

De forma similar a TLS/SSL, DNSSEC usa criptografía de clave pública (una manera de firmar digitalmente la información) para verificar y autentificar datos. Las extensiones DNSSEC se publicaron en 2005, pero DNNSEC todavía no es popular a nivel masivo, por lo que DNS sigue siendo vulnerable a los ataques.