¿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?

Imagina 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 yendo a las clases equivocadas. Ahora imagina que los números mal emparejados de las habitaciones quedan registrados en el directorio del campus, y los estudiantes siguen yendo a las habitaciones equivocadas, hasta que alguien se percata de ello y efectúa las correcciones en el directorio.

El envenenamiento de cachéDNS es el acto de introducir información falsa en un caché de DNS, para que las consultas de DNS devuelvan una respuesta incorrecta y los usuarios sean dirigidos a los sitios web incorrectos. El envenenamiento de caché DNS se conoce también como 'suplantación de DNS'. Las direcciones IP son los 'números de habitación' de Internet, que permiten que el tráfico web llegue a los lugares adecuados. Los cachés del solucionador de DNS son el 'directorio del campus' y ,cuando almacenan información incorrecta, el tráfico se dirige al lugar equivocado hasta que se corrige la información almacenada en caché. (Ten en cuenta que realmente esto no desconecta los sitios web reales de sus direcciones IP reales).

Ya que normalmente no hay forma de que los solucionadores de DNS verifiquen los datos en sus cachés, la información de DNS incorrecta permanece en el caché hasta que caduque el time to live (TTL) , o hasta que se elimine de forma manual. Una serie de vulnerabilidades hacen posible el envenenamiento de DNS, pero el principal problema es que DNS fue diseñado para un Internet mucho más pequeño y se basa en un principio de confianza (parecido a BGP). Un protocolo DNS más seguro llamado DNSSEC tiene como objetivo resolver algunos de estos problemas, pero su uso todavía no está generalizado.

¿Qué hacen los solucionadores de DNS?

Los solucionadores de DNS ofrecen a los clientes la dirección IP asociada a un nombre de dominio. En otras palabras, cogen direcciones de sitios web legibles por humanos como 'cloudflare.com' y las traducen a direcciones IP legibles por máquina. Cuando un usuario intenta navegar por un sitio web, su sistema operativo envía una solicitud a un solucionador de DNS. El solucionador DNS responde con la dirección IP, y el navegador web coge esta dirección e inicia la carga del sitio web.

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

Un solucionador de DNS guardará las respuestas a las consultas de direcciones IP durante un determinado período de tiempo. De esta manera, el solucionador podrá responder a consultas futuras mucho más rápido, sin tener que comunicarse con los servidores involucrados en un proceso típico de resolución de DNS. Los solucionadores de DNS guardan las respuestas en su caché durante el tiempo que les permite el time to live (TTL) asociado con esa dirección IP.

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 DNS utilizan UDP en lugar de TCP, y porque actualmente no es posible la verificación para la información de DNS.

Proceso de envenenamiento de caché DNS:

DNS Cache Poisoning Process

Caché de DNS envenenada:

Poisoned DNS Cache

En lugar de usar TCP, que necesita que las dos partes que se comunican lleven a cabo un 'apretón de manos' para iniciar la comunicación y verificar la identidad de los dispositivos, las solicitudes y respuestas de DNS utilizan UDP o Protocolo de datagramas de usuario. Con UDP no existe garantía de que una conexión esté abierta, que el destinatario esté listo para recibir, o que el emisor sea quien dice ser. Por esta razón, UDP es vulnerable a la falsificación; un atacante puede enviar un mensaje mediante UDP y pretender que es una respuesta de un servidor legítimo falsificando los datos del encabezado.

Si un solucionador DNS recibe una respuesta falsificada, acepta y almacena en caché los datos de forma acrítica, ya que no es posible verificar si la información es precisa y viene de una fuente legítima. El DNS se creó en la primera etapa de Internet, cuando solo universidades y centros de investigación tenían acceso al mismo. No existía razón para prever que alguien intentara difundir información falsa de DNS.

Pese a estos graves puntos de vulnerabilidad en el proceso de almacenamiento caché de DNS, los ataques de envenenamiento de DNS no son sencillos. 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 podrían conseguir acceso a un solucionador de DNS de cualquier otra manera. 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 la gestión de redes, un puerto es un puerto 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 de HTTP siempre van al puerto y las de HTTPS al 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 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 si este tipo de verificación, por ello es posible el envenenamiento de DNS.

Al igual que TLS/SSL, DNSSEC utiliza criptografía de clave pública (una forma de firmar información de forma digital) para verificar y autenticar datos. Las extensiones de DNSSEC se publicaron en 2005, pero DNSSEC todavía no está muy extendido, por lo que todavía deja a DNS vulnerable a los ataques.