Archivo de la etiqueta: DoS

Podcast – 13 – DoS DHCP

En el capítulo de hoy hablaré sobre el protocolo DHCP (Dynamic Host Configuration Protocol)

Micro con feed

Fuente imagen:PerfectYourPodcast

y cómo podríamos realizar un ataque de denegación de servicio (DoS – Denial of Service) gracias a sus debilidades de funcionamiento y cómo podemos proteger el servicio.

Así el capítulo de hoy se reparte en tres secciones: cómo funciona el protocolo DHCP; cuáles son sus debilidades básicas; y cómo podemos protegerlo mediante otros elementos de red.

Por si la explicación hablada sobre cómo funciona DHCP no quedase clara podéis consultar el artículo sobre DHCP Snooping para aclarar algo más la información. En caso de duda sólo tenéis que pedírmelo por aquí, correo, Twitter o Telegram 😉

Aprovecho para preguntar… ¿qué echáis en falta en nuestro diccionario de términos?

Descarga directa.

Denegación de servicio contra servidores DNS

DNS logo

Fuente imagen: bleepingtech.com

El sistema DNS (Domain Name Service) es el que nos facilita a los humanos el uso de los servicios de Internet ya que sería casi imposible que recordásemos las direcciones IP de nuestras páginas web, sistemas de almacenamiento en la nube, portales de vídeos, etc. Así pues cualquier servicio de Internet que utilicen usuarios humanos depende, aún sin ser consciente, de este sistema de conversión de texto humano a direcciones IP.

Este sistema de nombre se creó en un momento en el que las comunicaciones eran caras y poco fiables, por lo que una de las características de este sistema es la gran permanencia de la información publicada. Esto hace que un ataque que busque una denegación de servicio contra DNS de un servicio concreto a base de eliminar su información registrada en el sistema deba ser continúo y durar más de 24 o 48 horas. La dificultad de mantener durante tanto tiempo estos ataques ha hecho que no sean prácticos para conseguir evitar que un servicio esté disponible para todos sus clientes. Por este motivo este tipo de ataques se suelen utilizar cuando queremos que un objetivo concreto no tenga conexión al exterior: anulando los servidores DNS a los que consulta una persona podemos hacer que, en la práctica, pierda su conexión a Internet (al menos para los humanos, ya que la conexión sigue estando habilitada).

En este artículo veremos algunos ataques DoS contra los propios servidores DNS y en una próxima entrada definiremos las protecciones y defensas básicas para anular, si es posible, estos ataques. Ademas hay una familia de ataques espejo en el que utilizando peticiones malformadas podemos conseguir que los propios servidores DNS dejen fuera de servicio una tercera víctima, pero estos ya merecen otro artículo.

Peticiones múltiples de dominios inexistentes

Se trata del tipo de ataque más básico que consiste simplemente en enviar solicitudes de información sobre dominios no existentes. Al recibir la petición el servidor consultará con sus servidores de referencia gastando recursos en el proceso (memoria, ciclos de CPU, ancho de banda…). El hecho de utilizar nombre de dominio inexistentes es porque, a diferencia de un dominio existente, al no obtener una respuesta afirmativa en la primera petición a su servidor de referencia realizará otra a un segundo servidor, y luego otra tercera, hasta agotar todos los servidores de referencia que ha aprendido previamente. Esto hace que una única consulta de un dominio no existente implique un mayor consumo de recursos que varias legítimas.

Si se hace de forma rápida es posible llenar la caché del servidor DNS víctima con dominios no existentes (NXDOMAIN) haciendo que cualquier petición legítima tenga un procesamiento más lento aún y acelerando la denegación de servicio a los clientes válidos de este servidor.

Ataque de dominios fantasma

Para este esquema el atacante crea un dominio real con un servidor DNS real especialmente configurado para responder de forma incorrecta: ya sea muy lentamente o con información parcial. Así cuando el atacante realiza consultas DNS a la víctima se asegura que las peticiones de información llegan a un equipo que él controla.

¿Qué pasa cuando un equipo responde, por TCP, de forma lenta? Pues que el receptor debe esperar, reservando recursos para ello, hasta que la transmisión finalice. ¿Qué pasa cuando un servidor envía la información de forma desordenada? Pues que el receptor debe esperar a recibir los diferentes paquetes para reordenarlos y obtener la información, lo cual implica reserva de recursos. ¿Y si el servidor pide retransmisiones de paquetes? Pues lo mismo: más reserva de recursos para almacenar información.

Realizando múltiples peticiones al servidor DNS víctima para que resuelva información contra el servidor DNS que nosotros controlamos podemos hacer que se quede sin recursos y provocar una denegación de servicio a todos los clientes que consultan a ese servidor.

Ataque basado en subdominios aleatorios

Gráfico de un ataque por subdominios

Ejemplo de ataque por subdominio
Fuente imagen: Incapsula

Este tipo de ataque es una evolución de los dos anteriores. La idea es solicitar una gran cantidad de subdominios inexistentes de un dominio concreto. Aunque es posible realizarlo contra un dominio inexistente (cosa que puede ser interesante para intentar burlar defensas contra el ataque anteriormente explicado) generalmente se realiza contra nombres de dominio existentes, ya sean controlados por el atacante (con lo que sería una evolución del ataque al dominio fantasma) o bien contra páginas conocidas que tengan gran capacidad de respuesta (de forma que se sature antes nuestro servidor víctima) como pudiera ser Google, Microsoft, Amazon, etc.

Aunque no es imprescindible, en la práctica, debido a las defensas de los propios servidores es necesario realizar este tipo de ataque desde una botnet. Cada miembro de una botnet, de forma coordinada, solicita la resolución de un subdominio aleatorio (asjdhaskd.yahho.com, jhsgdhafasd.microsoft.com, 8ajsdalNDBY.apache.org ,etc.) que no existirá forzando al servidor a reservar recursos para su infructuosa resolución.

 

Ataque de denegación de servicio II

En la primera parte de este artículo vimos el concepto genérico sobre cómo funcionan los ataques de denegación de servicio (DoS, DDoS…) y algunos ejemplos tradicionales de ataques utilizando vulnerabilidades de los protocolos base de la red de Internet. En este artículo veremos cómo se han utilizado este tipo de ataques aprovechando debilidades de otros protocolos de red.

Denegación por ataques teardrop

Los ataques teardrop (que podría traducirse como lagrimeo) consisten en el envío de paquetes IP malformados de tamaño excesivo y con una secuenciación superpuesta. De esta manera se fuerza al receptor a dedicar recursos para restructurar y reorganizar los paquetes de información recibida para poder entregar la información a las capas superiores del nivel IP. Se trata de una técnica clásica que era efectiva en sistemas operativos de Microsoft previos a Windows XP y a los entronos Linux que utilizasen una versión anterior a la 2.1.63.

Lectura o escritura lenta

El protocolo TCP incluye una característica (denominada ventana TCP) que permite que tanto cliente como servidor negocien el ritmo de envío de información. Esta funcionalidad es muy útil cuando un cliente dispone de una línea de baja velocidad y desea recibir información de un servidor con mayor capacidad: el cliente indica al servidor el ritmo de paquetes a los que puede gestionar la información y así el servidor no satura al cliente. Este mecanismo puede ser utilizado de forma malintencionada cuando se fuerza al servidor a transmitir demasiado lento obligando a mantener recursos de memoria para gestionar este tráfico lo que si se combina con muchas peticiones puede causar que el servidor se quede sin recursos y generar una denegación de servicio.

HTTP POST

La opción POST dentro del protocolo HTTP permite que el cliente envíe información al servidor. Aunque inicialmente se pensó para enviar información de formularios actualmente se puede enviar casi cualquier archivo por este sistema (adjunto documentos a un webcorreo, subir imágenes a una red social, etc.). El ataque consiste en indicarle al servidor, dentro de una sesión válida, que queremos enviar un fichero de gran tamaño (p.e. 2GB) y hacerlo a una velocidad muy baja. El servidor deberá reservar memoria para almacenar ese fichero y dedicar recursos tanto de red como de procesamiento para gestionar esta petición. Si el envío de información se hace de forma lenta pero lo suficientemente rápido para que no se de la sesión por rota se consigue que el servidor bloquee recursos durante un tiempo excesivo. Si se pueden lanzar diversas sesiones con el mismo sistema podemos llegar a generar una denegación de servicio.

R-U-Dead-Yet? (RUDY)

Se trata de un ataque a aplicaciones web muy similar al HTTP POST. La idea es conseguir que el servicio web no pueda gestionar más sesiones y que mantendría multitud de sesiones semiactivas con el envío de información POST que nunca acabaría.

Redes P2P

En los primeros protocolos de las redes peer-to-peer no se había tenido en cuenta la securización de las conexiones por lo que rápidamente aparecieron algunos ataques que utilizaban vulnerabilidades y defectos de diseño de los mismos. En lo referente a los ataques de DDoS se aprovecharon de una debilidad del protocolo Direct Connect. El protocolo permitía la redirección de las conexiones a otros clientes P2P por lo que se podía forzar a todos los clientes que se conectasen a un servidor comprometido para que se conectase contra una víctima elegida. El resultado era que la víctima recibía tal cantidad de peticiones de conexión que directamente era incapaz de gestionarlas y se producía una denegación de servicio.

Ataques espejo

Diagrama de un ataque de espejo

Diagrama de un ataque de espejo Fuente imagen:Wikimedia

En inglés suelen denominarse como reflected attacks o spoofed attacks. En las comunicaciones IP legítimas la información es solicitada por un equipo (con una dirección IP concreta) y el servidor responde a esa dirección IP. Como ya vimos si utilizamos el protocolo TCP hay que realizar una fase previa de establecimiento de conexión pero no así si utilizamos el protocolo UDP. ¿Qué pasaría si el atacante falsease la dirección IP origen de un paquete UDP? Simplemente que se servidor enviaría la información solicitada a la dirección IP indicada en el paquete. Un usuario malintencionado podría solicitar una gran volumen de información falseando (en inglés: spoofing) la dirección IP  de tal forma que los servidores enviasen la información a la víctima deseada. Así la víctima recibirá una gran cantidad de información no deseada desde servidores que creen estar respondiendo a sus peticiones. Con esta estrategia el verdadero atacante queda oculto tras estos servidores que actúan como DDoS sin tener constancia de ello. Este tipo de ataques utilizan protocolos de uso común en Internet que al utilizar UDP, que no mantiene sesiones ni conexiones, dificultan su protección. Los más típiscos sería NTP, DNS, QOTDo SNMPv2.

Por ejemplo en el protocolo de DNS un usuario puede solicitar toda la información sobre un dominio de tal forma que ante una petición pequeña (que es lo que genera el atacante) se genera una respuesta de un tamaño considerable que la víctima recibirá y deberá gestionar. Así un atacante pueden lanzar múltiples peticiones pequeñas a servidores diferentes y que sean éstos quienes saturen las capacidades de la víctima.

Denegación de servicio telefónico

La irrupción de la Voz sobre IP (VoIP) ha permitido la aparición de servicios de telefonía con llamadas gratuitas y automatizables. La posibilidad de modificar la identificación de llamada (caller ID Spoofing) ha abierto nuevas posibilidades a los atacantes maliciosos.  La denegación del servicio telefónico (Telephony dinial-of-service – TDoS) consiste en realizar tal cantidad de llamadas a un objetivo que sature su capacidad de gestión dejando así el servicio de recepción y envío de llamadas. Al poder falsear la identificación de llamada es posible dirigir las actuaciones policiales posteriores a un ataque TDoS a nuestra verdadera víctima generando así un problemas y complicaciones reales a una persona o empresa.