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.
¿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.
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
Analizamos con Wireshark el tamaño de la petición y la respuesta.
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.
Esto ya es otra cosa…
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)))
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.
El resultado es el deseado, procedemos a la suplantación de la dirección origen del paquete por la de la víctima.
Enviamos el paquete y como podemos ver no recibimos la respuesta del servidor de nombres, es la víctima quien la recibe.
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:
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»
Buen artículo 😉
Gracias Pablo, un placer verte por aquí 😉
Buenisima entrada y muy bien explicada, muchas gracias!;)
Gracias David, espero que sea de ayuda y poder traeros más artículos en breve.
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!
Hola Luis,
Gracias por tu comentario, me alegro que haya sido de utilidad. Sobre SCAPY mi compañero Nebu hizo una entrada hace poco: https://www.fwhibbit.es/the-samurai-path-scapy-parte-1 en breves sacará más partes, respecto a DNS no conozco referencias a otros tipos de ataque aunque muy posiblemente buscando por internet encuentres algo.
Un saludo!
Los comentarios están cerrados.