Denegación de Servicio – DNS Amplificado

Cada vez es más habitual para los responsables de seguridad enfrentarse a ataques de Denegación de Servicio (DoS) y a su modalidad distribuida (DDoS), si estás leyendo este artículo muy probablemente sepas en qué consisten estos ataques y el daño que pueden llegar a causar.

El objetivo de esta entrada es dar un paso más, estudiar el funcionamiento y realizar una Prueba de Concepto (PoC), aprendiendo a realizar el ataque y centrando nuestra atención en una de las modalidades más dañinas y dificiles de mitigar, los ataques DNS Amplificados.

El fin de este post es unicamente educativo, el uso de esta técnica puede acarrear problemas legales contra la persona que la ejecute. Usar siempre entornos controlados o simulados.

Comenzamos, ¿Qué es un ataque DNS amplificado?

Es una técnica que explota el protocolo DNS en la capa 7 de OSI (Aplicación), utilizando el ancho de banda de los servidores de nombres (NS) y su aparente tráfico legítimo para denegar un servicio o infraestructura. Según el informe que desarrolla Akamai, durante el tercer trimestre de 2016 el 18.40% de los ataques empleaba esta técnica.

akamai

¿Cómo funciona?

Su planteamiento es sencillo:

1º El Atacante envía peticiones solicitando información a un Servidor de Nombres (NS) suplantando la identidad de la víctima. Esto es posible gracias a que la mayoría de las peticiones DNS utilizan UDP, por lo que no existe ningún tipo de confirmación en el origen del paquete, a esto se le llama ataque reflejado.

2º El servidor de nombres envía la respuesta al servidor objetivo, al provenir de un servidor legítimo pasa desapercibida y llega al servidor atacado. Debido al tipo de petición enviada al servidor, este responde amplificando el tamaño del paquete recibido.

dns_amplificado

Gracias a este proceso conseguimos dos ventajas determinantes que hacen que esta técnica sea tan efectiva:

  • Encubrimos nuestra dirección de cara al servidor atacado, siendo el servidor DNS el que realiza las peticiones.
  • Amplificamos notablemente el volumen del ataque. Si el atacante envía una petición de 72 bytes y la respuesta del servidor pesa 360 bytes es capaz de multiplicar por 5 su volumen con el mismo ancho de banda. Como veremos a continuación un ataque DNS es capaz de multiplicar en 50 veces el tamaño de la respuesta.

Eso está muy bien pero…¿Lo vemos en funcionamiento?

Comenzamos la PoC, para ello vamos a lanzar una petición DNS simple al servidor de nombres de google preguntando por la dirección del servidor de fwhibbit.es a través del comando dig.

dig fwhibbit.es @8.8.8.8

1-dig

Analizamos con Wireshark el tamaño de la petición y la respuesta.

1-dig_wireshark

Nuestra petición genera 82 bytes de tráfico y la respuesta 98 bytes…podemos hacerlo mejor, vamos a decirle al servidor de nombres que nos de toda la información que tenga acerca del dominio (CNAME, SOA, MX…), utilizamos la opción ANY del comando dig.

2-dig_any

Esto ya es otra cosa…

2-dig_any_wire

Ya hemos conseguido amplificar nuestra petición DNS, pero de momento las respuestas nos llegan a nosotros, ahora tenemos que reflejarla hacia la víctima para ello utilizaremos la herramienta Scapy escrita en Python la cual nos permite generar y manipular paquetes. Realizamos una prueba con nuestra IP.

send(IP(dst=»8.8.8.8″, src=»192.168.1.40″)/UDP(dport=53)/DNS(rd=1,qd=DNSQR(qname=»fwhibbit.es», qtype=255)))

3-scapy

Con send preparamos un paquete, dentro de IP introducimos la dirección de destino y la de origen del paquete (es aquí donde más adelante realizaremos la suplantación), protocolo UDP con puerto destino 53 y DNS con modo recursivo, lanzamos una consulta DNSQR solicitando cualquier información(qtype=255 equivale a ANY en dig) referente al dominio fwhibbit.es.

3-scapy_wire

El resultado es el deseado, procedemos a la suplantación de la dirección origen del paquete por la de la víctima.

4-scapy_spoofed

Enviamos el paquete y como podemos ver no recibimos la respuesta del servidor de nombres, es la víctima quien la recibe.

4-scapy_spoofed_wireshark

De esta forma dariamos por finalizada nuestra prueba de concepto si bien podriamos seguir optimizando el ataque probando con diferentes Servidores de Nombres y dominios con el fin de aumentar el tamaño de paquete de respuesta:

5_dominio

Hasta aquí la entrada de hoy, espero que toda esta información ayude a entender mejor este tipo de amenaza.

Hasta la próxima 😉

Metalex

7 comentarios en «Denegación de Servicio – DNS Amplificado»

  1. Hola, muy bueno el post. Bien explicado y simple de entender.
    Me gustaría saber si sabes donde puedo conseguir algo mas de información acerca de scapy y otros ataques basado en DNS.
    Muchas gracias y saludos!

Los comentarios están cerrados.