viernes, 17 de enero de 2014

DNS, open resolvers y denegación de servicio por amplificación DNS

Como se ya explicó en el artículo publicado en el blog de INTECO, ¿Hemos echado el cierre o nos están haciendo un DDoS? , unas de las principales amenazas a las que se ven expuestas empresas o compañías con servicios accesibles públicamente en Internet, son los ataques de denegación de servicio , a través de cualquiera de las variantes allí descritas. En este artículo hablamos de uno de esos tipos de ataque, en concreto, la denegación de servicio por amplificación de respuestas DNS.

En marzo de 2013, se produjo uno de los ataques de denegación de servicio más grandes en los últimos tiempos, llegándose a detectar picos de tráfico superiores a 100 Gbps. Los objetivos del ataque fueron las compañías Spamhaus, organización sin ánimo de lucro dedicada a la identificación de fuentes de spam y protección anti-spam a nivel mundial, y Cloudfare, su proveedor de servicios de mitigación de ataques DDos (Distibuted Denial of Service).
Ilustracion 1. Tráfico observado en los routers de Cloudfare dirigido contra Spammhaus
El ataque DDoS , aunque dirigido contra un objetivo concreto se ejecuta distribuido desde multitud de orígenes, de este modo, el volumen de tráfico es tal, que los efectos colaterales pueden dejarse notar en puntos intermedios de enrutamiento donde confluya el tráfico de estas fuentes en su trayecto hacia el destino final, creando cuellos de botella que pueden superar la capacidad del dispositivo enrutador.
Ilustración 2. Ataque DoS.Sobrepasando la capacidad de respuesta de un dispositivo.

DNS, una navaja suiza en ataques DDoS. Amplificación

DNS , el protocolo de resolución de nombres que nos permite identificar recursos en internet con nombres fácilmente manejables y así obtener su dirección IP, es muy frecuentemente utilizado para generar ataques de DDoS. ¿Por qué? Bien, DNS, además de ser un protocolo omnipresente en internet cuenta con una serie de características que lo hacen especialmente útil para generar tráfico y dirigirlo a un objetivo siendo por otra parte complicado de detener. Estas características son:
  • Transporte de mensajes sobre UDP. Realmente la base del problema. Aunque es posible el uso de TCP para consultas/respuestas DNS, por motivos de rendimiento y compatibilidad histórica, es UDP el protocolo generalmente usado en el transporte de mensajes DNS. UDP es un protocolo de red no orientado a conexión donde se envían paquetes (datagramas) sin esperar una confirmación por parte del receptor. Es un protocolo pues, fácilmente spoofleable, es decir, podemos enviar paquetes con una dirección IP origen falseada ya que no se establece una verificación del emisor. Igualmente, en la recepción de los datagramas no se hacen comprobaciones sobre el origen de la conexión.
  • Con DNS, es posible generar a partir de un mensaje de consulta de pequeño tamaño una respuesta mucho mayor. Un servidor DNS se convierte entonces en un amplificador de tráfico. La especificación (Extension Mechanisms for DNS) EDNS0 permite el envío de mensajes DNS con tamaño superior al definido para mensajes estándar DNS sobre UDP (512 bytes). Así, usando esta funcionalidad es posible a partir de una consulta de escasos bytes provocar una respuesta de gran tamaño llegando hasta buffers de 4096 bytes. Lanzando una gran cantidad de consultas y sobre múltiples servidores, se conseguirá provocar un flujo de respuestas de gran tamaño que se dirigirá a la máquina objetivo del ataque.
  • Open Resolvers. Otra lacra actualmente en internet es el enorme número de Open Resolvers disponibles públicamente en Internet. Por open resolver se entiende aquél servidor recursivo que permite consultas y ofrece resolución DNS a cualquier solicitante.
  • Añadido a lo anterior está el problema de la mala configuración y prácticas de reglas de filtrado de tráfico para contrarrestar, en la medida de lo posible, el spoofing de direcciones IP.

Funcionamiento de un ataque de amplificación con DNS

Sacando partido de las debilidades arriba descritas, es relativamente sencillo generar un ataque dirigido contra una víctima. Basta con localizar open resolvers (cuanto más mejor) que nos servirán de “lanzaderas” amplificadoras, y generar queries o consultas cuya respuesta tenga un tamaño mucho mayor que el de la query en si haciendo uso de la funcionalidad EDNS0. En las queries se falseará la IP origen con la dirección de la víctima, de modo que, las respuestas generadas se dirigirán hacia la misma.
Ilustración 3. Ataque de amplificación DNS

Contramedidas

Realmente lo deseable es prevenir los ataques puesto que la mejor forma de solventar un problema es atacar su origen. En este caso, dos medidas son prioritarias:
Una concienciación global para que los propietarios de open resolvers limiten la recursión únicamente a clientes o redes bajo bajo su responsabilidad. La iniciativa “Open Resolver Project” trabaja en este aspecto. De este modo evitamos ser un punto lanzadera de posibles ataques.
También resulta recomendable adoptar las medidas especificadas en el documento de la IETF BCP-38 : “Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing “
Adicionalmente, y desde el punto de vista de la configuración del servidor víctima, la implementación de parches o configuración que consideren las especificaciones propuestas en el RFC2671 destinadas a proporcionar mayor control sobre las consultas/respuestas, como por ejemplo especificar un máximo de respuestas idénticas por segundo. 
Por ejemplo, si el software usado en el servidor es BIND, éste incorpora desde su versión 9.9.4 la funcionalidad Response Rate Limiting (RRL) donde a través de una claúsula rate-limit se puede limitar el número de consultas por segundo cuando se detecten como sospechosas de formar parte de un ataque de flooding

No hay comentarios:

Publicar un comentario