Ataque de inundación SYN

Una inundación SYN aprovecha una vulnerabilidad en el protocolo de enlace TCP/IP en un intento de interrumpir un servicio web.

Share facebook icon linkedin icon twitter icon email icon

Inundación SYN

Objetivos de aprendizaje

Después de leer este artículo podrá:

  • Definir un ataque DDoS de inundación SYN
  • Explicar cómo funciona un ataque de inundación SYN
  • Diferenciar los distintos tipos de ataques SYN
  • Comprender algunas técnicas de mitigación para inundaciones SYN

¿Qué es un ataque de inundación SYN?

Una inundación SYN (ataque medio abierto) es un tipo de ataque de denegación de servicio, que tiene como objetivo hacer que el servidor no esté disponible para el tráfico legítimo mediante el consumo de todos los recursos disponibles del servidor. Al enviar repetidos paquetes de solicitud de conexión inicial (SYN), el atacante puede abrumar todos los puertos disponibles en un servidor de destino, lo que hará que el dispositivo responda al tráfico legítimo muy lentamente o incluso que no responda en absoluto.

¿Cómo funciona un ataque de inundación SYN?

Los ataque de inundación SYN se aprovechan del proceso de establecimiento de comunicación de una conexión TCP. En circunstancias normales, la conexión TCP exhibe tres procesos distintos para poder lograr la conexión.

  1. En primer lugar, el cliente envía un paquete SYN al servidor para poder iniciar la conexión.
  2. En segundo lugar, el servidor responde a ese paquete inicial con un paquete SYN/ACK para poder reconocer la comunicación.
  3. En último lugar, el cliente devuelve un paquete ACK para confirmar la recepción del paquete del servidor. Después de completar esta secuencia de envío y recepción de paquetes, la conexión TCP se abre y es capaz de enviar y recibir datos.
TCP Three-way handshake diagram

Para crear una denegación de servicio, el atacante aprovecha el hecho de que, después de que se ha recibido un paquete SYN inicial, el servidor responderá con uno o más paquetes SYN/ACK y esperará el paso final del protocolo de enlace. Así funciona:

  1. El atacante envía un alto volumen de paquetes SYN al servidor de destino, generalmente mediante una dirección IP falsificada.
  2. El servidor entonces responde a cada una de las solicitudes de conexión y deja abierto un puerto listo para recibir la respuesta.
  3. Mientras el servidor espera a que llegue el paquete ACK final, el cual nunca llegará, el atacante sigue enviando más paquetes SYN. La llegada de cada nuevo paquete SYN hace que el servidor mantenga temporalmente abierta una nueva conexión de puerto durante cierta cantidad de tiempo y, una vez que se hayan utilizado todos los puertos disponibles, el servidor ya no puede funcionar con normalidad.
SYN flood DDoS attack animation

En las redes, cuando un servidor deja una conexión abierta pero la máquina en el otro lado de la conexión no lo está, la conexión se considera medio abierta. En este tipo de ataque DDoS, el servidor de destino va dejando conexiones abiertas y se queda esperando a que se quede en tiempo de espera cada conexión antes de que los puertos vuelvan a estar disponibles. El resultado es que este tipo de ataque se puede considerar como un "ataque medio abierto".

Una inundación SYN puede darse de tres maneras:

  1. Ataque directo: una inundación SYN en la que no se haya suplantado la dirección IP se conoce como ataque directo. En este ataque, el atacante no oculta su dirección IP. Ya que el atacante usa un único dispositivo de origen con una dirección IP real para crear el ataque, este es extremadamente vulnerable a la detección y a la mitigación. Para crear el estado de medio abierto en el ordenador de destino, el hacker impide que su máquina responda a los paquetes SYN-ACK del servidor. Esto se puede conseguir con reglas de firewall que detienen los paquetes salientes que no sean paquetes SYN o mediante el filtrado de cualquier paquete SYN-ACK entrante antes de que lleguen a la máquina del hacker. En la práctica, este método casi no se usa (si es que se ha usado alguna vez), ya que la mitigación es bastante sencilla: solo hay que bloquear la dirección IP de cada sistema malicioso. Si el atacante usa una botnet como la botnet Mirai, no se molestará en ocultar la IP del dispositivo infectado.
  2. Ataque de suplantación: un usuario malicioso también puede suplantar la dirección IP en cada paquete SYN que envíe para obstaculizar los esfuerzos de mitigación y dificultar que se descubra su identidad. Aunque se pueden suplantar los paquetes, estos se pueden rastrear hasta su origen. Es difícil llevar a cabo este trabajo de investigación, pero no es imposible, especialmente si los proveedores de servicios de Internet (ISP) están dispuestos a ayudar.
  3. Ataque distribuido (DDoS): si un ataque se crea con una botnet, es muy difícil rastrear el ataque hasta su origen. Y para complicarlo todo aún más, un atacante puede hacer que cada dispositivo distribuido también suplante las direcciones IP desde las que se envían los paquetes. Si el atacante usa una botnet como la botnet Mirai, lo más probable es que no se preocupe por ocultar la IP del dispositivo infectado.

Al usar un ataque de inundación SYN, un agente perjudicial puede intentar crear una denegación de servicio en un dispositivo o servicio objetivo con un tráfico menor que otros ataques DDoS. En lugar de ataques volumétricos, que tienen como propósito saturar la infraestructura de red que rodea al objetivo, los ataques SYN solo tienen que ser mayores que la que el backlog disponible en el sistema operativo del objetivo. Si el atacante es capaz de determinar el tamaño del backlog y el tiempo en el que estará abierta cada conexión antes de que se agote el tiempo de espera, el atacante podrá elegir los parámetros exactos necesarios para desactivar el sistema, y reducirá de esta forma el tráfico total a la cantidad mínima necesaria para crear la denegación de servicio.

¿Cómo se mitiga un ataque de inundación SYN?

La vulnerabilidad de una inundación SYN se conoce desde hace mucho tiempo y se han utilizado una gran cantidad de rutas de mitigación. Algunos enfoques incluyen:

Aumentar la cola de registros

Cada sistema operativo de un dispositivo atacado permitirá un cierto número de conexiones medio abiertas. Una respuesta al gran volumen de paquetes SYN es aumentar el número máximo de posibles conexiones medio abiertas que permitirá el sistema operativo. Para poder aumentar con éxito el backlog máximo, el sistema tiene reservar recursos de memoria adicionales para atender las nuevas solicitudes. Si el sistema no cuenta con memoria suficiente para gestionar el aumento del tamaño de la cola del backlog, el rendimiento del sistema se verá afectado negativamente, pero esto es preferible a una denegación de servicio.

Reciclar la conexión TCP medio abierta más antigua

Otra estrategia de mitigación consiste en sobrescribir la conexión medio abierta más antigua una vez se haya completado el backlog. Esta estrategia requiere que se puedan establecer en su totalidad las conexiones legítimas en menos tiempo del que necesita el backlog para llenarse de paquetes SYN maliciosos. Este tipo de defensa fracasa cuando se aumenta el volumen de ataque o si el backlog es demasiado pequeño para ser práctico.

Cookies de SYN

Esta estrategia implica que el servidor cree una cookie. Para evitar el riesgo de que se caigan las conexiones cuando se haya completado el backlog, el servidor responde a cada solicitud de conexión con un paquete SYN-ACK, pero luego descarta la solicitud SYN del backlog, elimina la solicitud de la memoria y dejan el puerto abierto y preparado para una nueva conexión. Si la conexión es una solicitud legítima, y un paquete ACK final se devuelve desde la máquina del cliente al servidor, el servidor reconstruirá (con algunas limitaciones) la entrada de la cola del backlog de SYN. Aunque este esfuerzo de mitigación puede hacer perder algo de información acerca de la conexión TCP, es mejor que permitir la denegación de servicio a usuarios legítimos que sucederá tras un ataque.

¿Cómo mitiga Cloudflare los ataques de inundación SYN?

Cloudflare mitiga este tipo de ataque al situarse entre el servidor atacado y la inundación SYN. Cuando se realiza la solicitud SYN inicial, Cloudflare gestiona el proceso de establecimiento de comunicación en la nube, y retiene la conexión con el servidor atacado hasta que se haya completado el protocolo de enlace TCP. Esta estrategia asume el coste de recursos de mantener las conexiones con los paquetes SYN falsos del servidor atacado y lo coloca en la red Anycast de Cloudflare. Más información acerca de cómo funciona la Protección DDoS de Cloudflare.

Cloudflare stops SYN Flood attacks diagram