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

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

Share facebook icon linkedin icon twitter icon email icon

Suplantación de DNS

Objetivos de aprendizaje

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

  • Definir envenenamientos de caché DNS
  • Entender como funciona el almacenaje en caché DNS
  • Explicar como pueden envenenar los atacantes una caché de DNS
  • Entender como DNSSEC ayuda a prevenir los ataques de envenenamiento de DNS

¿Qué es el envenenamiento de caché DNS?

Imagine que, como una broma del último año de bachillerato, los alumnos del instituto cambian todos los números de habitaciones de las instalaciones del instituto, para que los nuevos estudiantes que aún no conozcan el plano del instituto se pasen todo el día siguiente perdidos y apareciendo en clases equivocadas. Ahora imagine que los números de las clases 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 una caché DNS, para que las consultas de DNS devuelvan una respuesta incorrecta y se dirija 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 habitación” de Internet y habilitan el tráfico para llegar hasta los lugares adecuados. Las cachés del solucionador 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 de almacenamiento de caché. (Tenga en cuenta que esto no desconecta realmente a los sitios web de sus direcciones IP reales).

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

¿Qué hacen los solucionadores de DNS?

Los solucionadores 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 por humanos, como “cloudflare.com” y las traducen en direcciones IP legibles por máquinas. Cuando un usuario intenta navegar a un sitio web, su sistema operativo envía una solicitud a un solucionador de DNS. El solucionador 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 trabajo de caché DNS?

Un solucionador de DNS guardará las respuestas a las consultas de la dirección IP durante un periodo de tiempo determinado. De esta forma, el solucionador puede responder mucho más rápido a consultas futuras, sin necesidad de comunicarse con los numerosos servidores que participan en el proceso típico de resolución de DNS. Los solucionadores de DNS guardan respuestas en su caché durante tanto tiempo como el Time To Live (TTL) asociado con esa dirección IP les permita hacerlo.

Respuesta de DNS no almacenada en caché:

DNS uncached response

Respuesta de DNS almacenada en caché:

DNS cached response

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

Los atacantes puede envenenar cachés de DNS haciéndose pasar por servidores de nombres DNS, haciendo una solicitud a un solucionador DNS, y a continuación falsificando la respuestas cuando el solucionador de DNS consulta a un servidor de nombre. Esto es posible porque los servidores de DNS usan UDP en vez de TCP, y porque actualmente no hay verificación de la información DNS.

Proceso de envenenamiento de caché DNS.

DNS Cache Poisoning Process

Caché de DNS envenenado.

Poisoned DNS Cache

En vez 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, o el Protocolo de datagramas de usuarios. Con UDP no hay garantías de que una conexión esté abierta, de que el destinatario esté lista para recibirla, o de que el remitente sea quién dice ser. Por esta razón UDP es vulnerable a las falsificaciones, un atacante puede enviar un mensaje mediante UDP y hacer que parezca una respuesta de un servidor legítimo mediante la falsificación de datos de encabezado.

Si un solucionador de DNS recibe una respuesta falsificada, acepta y almacena en caché los datos sin evaluarlos, ya que no es posible 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 nadie 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. Como el solucionador de DNS hace realmente la consulta al servidor de nombres autoritativos, los atacantes solo disponen de unas milésimas de segundo para enviar la respuesta falsa, antes de que llegue la respuesta real desde el servidor de nombres autoritativos.

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 no están almacenadas en caché por el solucionador de DNS al que quieren atacar, para que el solucionador consulte al servidor de nombres autoritativos
  • Qué puerto* está usando el solucionador de DNS, ellos solían usar el mismo puerto para cada consulta, pero ahora usan cada vez un puerto aleatorio diferente
  • El número de ID de solicitud
  • A qué servidor de nombres autoritativos irá la consulta

Los atacantes también podrían obtener el acceso al solucionador de DNS de otra forma. Si un tercero malicioso opera, hackea o accede físicamente a un solucionador de DNS, ellos podrán alterar más fácilmente los datos almacenados en caché.

*En redes, un puerto es un punto virtual de recepción de comunicación. Los equipos tienen múltiples puertos, cada uno con su propio número y para que los equipos se comuniquen entre ellos, ciertos puertos se tendrán que designar para determinados tipos de comunicación. Por ejemplo, las comunicaciones HTTP siempre van al puerto 80, y HTTPS siempre usa el puerto 443.

Suplantación de DNS y censura

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

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

DNSSEC son las iniciales de Domain Name System Security Extensions, y es una forma de verificar la integridad de los datos de DNS y su origen. DNS se diseñó originalmente sin dicha verificación, y por ello es posible el envenenamiento de DNS.

De forma similar a TLS/SSL, DNSSEC usa la criptografía clave pública (una forma de firma digital de 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 es vulnerable a los ataques.