Inicio / Blog / DoS: Capa de Infraestructura

DoS: Capa de Infraestructura

Publicado el 09/04/2015, por David Cantón (INCIBE)
DoS

Como ya comentamos anteriormente, los ataques de nivel de infraestructura son aquellos que se centran principalmente en las capas tres y cuatro del modelo OSI (ISO/IEC 7498-1), y en los protocolos de capa de aplicación que soportan la comunicación propiamente dicha, como por ejemplo DNS o NTP. Este tipo de ataques es el más habitual, como se puede observar en el siguiente gráfico, dado que suponen casi un 90% de los ataques DDoS que detectó Akamai en el cuarto trimestre del 2014.

Tipos de ataques DDoS

-Tipos de ataques DDoS y su distribución relativa en Q4 2014 (Fuente: Akamai)-

Esta proporción puede deberse a que esta categoría engloba protocolos como IP, TCP o UDP, que al ser la base de Internet pueden ser utilizados para atacar cualquier sistema. Otro factor a tener en cuenta sería la existencia de "herramientas de botón grande" que facilitan que puedan ser usadas por cualquiera.

Volumen de ataques DDoS

- Volumen de ataques DDoS a nivel de capa 3&4 (Fuente: threatpost) -

 

A continuación veremos en qué consisten los principales ataques de este tipo.

SYN Flood

Podríamos decir que el SYN Flood es uno de los ataques DDoS por antonomasia. El objetivo de este ataque es el agotamiento o saturación de los recursos del sistema, para lo cual aprovecha la forma como TCP establece una conexión: negociación en tres pasos o 3-way handshake.

Recordemos brevemente los pasos en el establecimiento de una conexión TCP "típica" cliente-servidor que utilice una negociación en tres pasos:

  1. El servidor abre un socket en un determinado puerto TCP, donde escuchará las conexiones entrantes de los clientes. Este paso también se conoce como apertura pasiva.
  2. El cliente que desea iniciar una conexión con el servidor envía un paquete TCP con número de secuencia inicial (Sequence Number) aleatorio y el bit SYN activado (bit S de TCP Flags). Esto se considera el primer paso de la negociación.
  3. El servidor responderá con un paquete con su propio número de secuencia aleatorio y el del cliente incrementado en uno, así como los flags de SYN y ACK activados. En este punto el servidor debe reservar recursos para almacenar los datos relativos a la conexión, como es la tabla de conexiones del sistema.
  4. Este tercer paso consiste en un paquete del cliente al servidor confirmado el establecimiento. Este paquete contendrá los números de secuencia correspondientes y el flag ACK activado. En este punto la conexión se daría por establecida.

Cabecera paquete TCP

-Cabecera paquete TCP-

El ataque SYN Flood aprovecha las características de esta negociación en tres pasos de TCP y en los recursos limitados de los que disponen los servidores para mantener las conexiones TCP abiertas. Un ataque SYN Flood prescinde del envío del último ACK por parte del cliente, no finalizándose por tanto la negociación de la conexión. El atacante puede simplemente no enviar el ACK esperado o falsificar la dirección IP de origen en el SYN, de esta forma el servidor enviará el SYN-ACK a una dirección IP falsa.

Establecimiento de conexión TCP

- Establecimiento de conexión TCP: negociación en tres pasos o 3-way handshake -

Durante un tiempo el servidor esperará el ACK, mientras no lo reciba o expire el tiempo máximo de espera el servidor no liberará recursos reservados para la conexión (memoria, tabla de conexiones), que se utilizan normalmente para almacenar y procesar los paquetes entrantes. Si la media de conexiones abiertas es bajo el servidor no tendrá ningún problema. Sin embargo, si el número de peticiones de conexión aumenta, se pueden llegar a agotar todos los recursos disponibles siendo el servidor incapaz de aceptar nuevas conexiones legítimas, provocando una denegación de servicio. Una inundación SYN bien elaborada puede sortear las técnicas de inspección profunda de paquetes.

técnicas de inspección profunda de paquetes

TCP SYN+ACK

El ataque TCP SYN+ACK consiste en enviar directamente falsos paquetes SYN+ACK a un elevado ritmo. El servidor deberá usar gran parte de su capacidad de procesamiento para atender estas peticiones que están fuera de orden normal de 3-way handshake. Esta inundación puede agotar los recursos del sistema (memoria, CPU, etc.) utilizados para procesar esta irregularidad, lo que podría resultar en una degradación del rendimiento

TCP SYN+ACK

TCP ACK & PUSH-ACK

Los paquetes ACK y PUSH-ACK tienen como finalidad confirmar la correcta recepción de los paquetes enviados en ambos sentidos. Durante un ataque ACK Flood el sistema objetivo recibe falsos paquetes ACK a un elevado ritmo. Estos paquetes, que no pertenecen a ninguna de las sesiones de la lista de conexiones, tienen como objetivo agotar los recursos del sistema (memoria, CPU, etc.) al tener que procesarlos, generando una degradación de servicio o incluso una interrupción del mismo.

TCP ACK & PUSH-ACK

TCP FIN o RST

Los paquetes TCP FIN o RST indican el cierre de las sesiones de comunicación. El ataque es igual que en el caso anterior (TCP ACK & PUSH-ACK), simplemente utilizando otro tipo de paquete con una finalidad especial.

TCP FIN o RST

TCP FRAGMENTED ACK

Es una variación del ACK & PUSH ACK Flood, básicamente consiste en mandar paquetes ACK de 1500 bytes de tamaño, con el objetivo de consumir el ancho de banda del sistema atacado. Para evitar detecciones la tasa de generación de paquetes suele ser moderada. Además, como muchos sistemas de defensa no filtran/detectan por encima de la capa IP, este ataque puede pasar a través de routers, ACL, cortafuegos, y IDS/IPS. Los datos utilizados en los paquetes para rellenar suelen ser irrelevantes.

SSDP

SSDP (Simple Service Discovery Protocol), utilizado por protocolo estándar UPnP (Universal Plug and Play), es usado como un sistema de reflexión y amplificación de ataques DDoS. SSDP es un protocolo de red basado en el Internet Protocol Suite para la publicación y descubrimiento de servicios de red e información de presencia. Además este servicio se realiza sin la existencia de servidores, como es el caso de DHCP o DNS, y sin configuración estática especial.

SSDP está habilitado en millones de dispositivos domésticos y de oficina, incluyendo routers, cámaras web, Smart TVs e impresoras, y tienen como propósito permitir que estos dispositivos se puedan descubrir entre sí, establecer comunicaciones y coordinar actividades.

El modus operandi es el siguiente:

1. El atacante envía una petición M-SEARCH de SSDP (protocolo basado en texto en HTTPU). Este mensaje es enviado bajo UDP a una dirección IP multicast al puerto 1900; en IPv4 la dirección reservada para SSDP es la 239.255.255.250 y en IPv6 es ff0X::c.

2. Los dispositivos con UPnP activado responderán con múltiple información entre la que destaca la dirección HTTP del dispositivo. Con estas respuestas el atacante conseguirá un listado de sistemas vulnerables que puede usar para realizar el ataque DDoS.

3. Con la lista obtenida el atacante enviara peticiones maliciosas, falsificando la dirección IP origen, que generaran mensajes de respuestas de mayor tamaño contra los sistemas objetivos. El factor de amplificación vendrá determinado por el contenido del archivo de descripción del dispositivo.

Esquema de ataque DDoS SSDP

- Esquema de ataque DDoS SSDP -

DNS

Consiste en realizar peticiones DNS usando como IP origen la dirección de la víctima. Es uno de los ataques más usados y que explicamos más detalladamente en esta otra entrada "DNS, open resolvers y denegación de servicio por amplificación DNS".

DNS Amplification Attacks for Operation Global Blackout

- DNS Amplification Attacks for Operation Global Blackout (Fuente: securityaffairs.co) -

NTP

Ataque similar al de DNS, pero utilizando el Network Time Protocol (NTP). Para este tipo de ataques también publicamos un artículo con información más detallada "Ataques de denegación de servicio vía NTP".

DoS por amplificación y reflexión respuestas NTP

- DoS por amplificación y reflexión respuestas NTP -

UDP Flood

El objetivo de este ataque es consumir todo el ancho de banda de la víctima mediante el envío masivo de paquetes UDP, evitando que usuarios legítimos puedan conectarse. Muchos de los equipos de infraestructura de red, tales como routers, balanceadores de carga, cortafuegos o IPS no inspeccionan los datos por encima de la capa IP por lo que no filtran este tipo de tráfico. Aquellos equipos que realicen inspección a fondo de paquetes (DPI) podrían detectar este tipo de ataques Es habitual que esta técnica utilice puertos usados por protocolos ampliamente extendidos como DNS o VoIP. Debido al propio diseño de protocolo UDP no orientado a conexión y a posibilidad de falsificar la dirección origen de los paquetes el diseño de reglas para filtrar este tipo de ataques es complicado.

UDP Fragments

Variante del ataque anterior que, utilizando la fragmentación de los mensajes IP, consigue un mayor consumo de ancho de banda y CPU con menor número de paquetes. Este efecto se logra mediante el uso de datagramas IP de mayor tamaño que la MTU permitida, típicamente 1500 bytes. Esta fragmentación obliga al receptor a almacenar todos los fragmentos del datagrama para recomponerlo antes de poder descartarlo, consumiendo así memoria de los buffers de recepción y tiempo de CPU.

ICMP Flood

Similar al ataque UDP Flood, pero utilizando paquetes ICMP con el objetivo de consumir ancho de banda y tiempo de CPU del servidor. Un ejemplo clásico son Ping of Death o el ataque Smurf.

Aunque la "solución" más rápida para evitar este tipo de ataques es filtrar todo el tráfico ICMP en la red, esto puede conllevar problemas: mientras que ICMP es opcional en IPv4 (a costa de que el sistema sea menos eficiente y más lento), en IPv6 es obligatorio para el funcionamiento normal. Para más información sobre tema: ICMP and Security in IPv6.