Ataque de inundación SYN

Una inundación SYN explota una vulnerabilidad en el protocolo de enlace TCP/IP en un intento por 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á:

  • Define un ataque DDoS de inundación SYN
  • Explica el funcionamiento de un ataque de inundación SYN
  • Diferencia los distintos tipos de ataque SYN
  • Comprende algunas técnicas de mitigación para inundaciones SYN

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

Una inundación SYN (ataque semiabierto) es un tipo de ataque por denegación de servicio (DDoS) que busca dejar sin disponibilidad un servidor para legitimar el tráfico al consumir todos los recursos disponibles del servidor. Al enviar paquetes de solicitud (SYN) de conexión inicial de forma repetida, el atacante puede abrumar todos los puertos disponibles en la máquina del servidor fijado como objetivo. Esto causaría que el dispositivo fijado como objetivo legitimara el tráfico con lentitud o que directamente no lo hiciera.

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

Los ataques de inundación SYN funcionan mediante la explotación del proceso de protocolo de enlace de una conexión TCP. Bajo condiciones normales, la conexión TCP exhibe tres procesos distintos para lograr una conexión.

  1. Primero, el cliente envía un paquete SYN al servidor para iniciar la conexión.
  2. El servidor responde al paquete inicial con un paquete SYN/ACK para reconocer la comunicación.
  3. Finalmente, el cliente devuelve un paquete ACK para reconocer la recepción del paquete del servidor. Tras finalizar esta secuencia, la conexión TCP está abierta y puede enviar y recibir información.
Diagrama del protocolo de enlace TCP triple

Para crear una denegación de servicio, un atacante explota el hecho de que, tras la recepción de un paquete SYN inicial, el servidor responderá con uno o más paquetes SYN/ACK, y esperará el último paso del protocolo de enlace. Así es cómo funciona:

  1. El atacante envía un volumen alto de paquetes SYN al servidor fijado como objetivo, a menudo con direcciones IP falsificadas.
  2. Luego, el servidor 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 el último paquete ACK, que nunca llega, el atacante continúa enviando paquetes SYN. La llegada de cada paquete SYN nuevo provoca que el servidor mantenga temporalmente una conexión de puerto abierto nueva. Una vez utilizados todos los puertos disponibles, el servidor ya no puede funcionar con normalidad.
Animación del ataque DDoS de inundación SYN

En las redes, cuando un servidor deja una conexión abierta pero la máquina del otro lado de la conexión no lo está, la conexión se considera semiabierta. En este tipo de ataque DDoS, el servidor fijado como objetivo deja conexiones abiertas de forma constante y espera que cada conexión pase el tiempo de espera antes de que los puertos vuelvan a estar disponibles. El resultado de este tipo de ataque puede considerarse un “ataque semiabierto”.

Una inundación SYN puede ocurrir de tres maneras diferentes:

  1. Ataque directo: Una inundación SYN en la que la dirección IP no está falsificada se conoce como un ataque directo. En este ataque, el atacante no oculta su dirección IP. Como resultado de que el atacante use un solo dispositivo de origen con una dirección IP real para crear el ataque, el atacante es muy vulnerable a que lo descubran y mitiguen. Para crear el estado semiabierto en la máquina fijada como objetivo, el hacker evita que su máquina responda a los paquetes SYN-ACK del servidor. A menudo, esto se logra mediante reglas de firewall que detienen los paquetes salientes que no son SYN, o bien mediante la filtración de paquetes SYN-ACK entrantes antes de que alcancen la máquina de usuarios maliciosos. En la práctica, este método no se usa seguido, ya que la mitigación es bastante directa: solo se bloquea la dirección IP de cada sistema malicioso. Si el atacante usa una red de robots como Mirai Botnet, no le importará ocultar la IP del dispositivo infectado.
  2. Ataque de paquetes falsificados: Un usuario malicioso puede falsificar la dirección IP de cada paquete SYN que envía para inhibir los esfuerzos de mitigación y dificultar aún más el descubrimiento de su identidad. Si bien los paquetes se pueden falsificar, cabe la posibilidad de rastrearlos hasta su fuente. Es difícil hacer este tipo de trabajo de detective, pero no es imposible, especialmente si los proveedores de servicios de Internet (ISP) están dispuestos a ayudar.
  3. Ataque distribuido (DDoS): Si se crea un ataque mediante una red de robots (botnet), la probabilidad de rastrear el ataque hasta su fuente es baja. Para agregar otro nivel de ofuscación, un atacante puede hacer que cada dispositivo distribuido también falsifique las direcciones IP de las cuales envía los paquetes. Si el atacante usa una red de robots (botnet) como Mirai Botnet, no le importará ocultar la IP del dispositivo infectado.

Al usar un ataque de inundación SYN, un actor malicioso puede intentar crear una denegación de servicio en un dispositivo o servidor fijado como objetivo con una cantidad considerablemente menor de tráfico que otros ataques DDoS. En lugar de ataques volumétricos, que apuntan a saturar la infraestructura de la red que rodea el objetivo, los ataques SYN solo necesitan ser mayores que el registro disponible en el sistema operativo del objetivo. Si el atacante puede determinar el tamaño del registro y la cantidad de tiempo que permanecerá abierta cada conexión antes del tiempo de espera, podrá apuntar a los parámetros exactos necesarios para deshabilitar el sistema. De este modo, reducirá el tráfico total al mínimo necesario para crear una denegación de servicio.

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

La vulnerabilidad de inundación SYN se conoce hace tiempo y se han utilizado numerosas rutas de mitigación. Algunos enfoques incluyen los siguientes:

Cola de registros en aumento

Cada sistema operativo en un dispositivo fijado como objetivo tiene cierto número de conexiones semiabiertas que permitirá. Una respuesta a los volúmenes altos de paquetes SYN es aumentar el número máximo de conexiones semiabiertas posibles que puede permitir el sistema operativo. Para aumentar con éxito el máximo de registros, el sistema debe reservar recursos de memoria adicionales para lidiar con las solicitudes nuevas. Si el sistema no tiene memoria suficiente para poder manejar el tamaño de la cola de registros en aumento, el rendimiento del sistema se verá afectado de forma negativa. No obstante, esta opción todavía puede ser mejor que la denegación de servicio.

Reciclaje de la conexión TCP semiabierta más antigua

Otra estrategia de mitigación involucra reescribir la conexión semiabierta más antigua cuando se hayan completado los registros. Esta estrategia requiere que las conexiones legítimas puedan establecerse completamente en menos tiempo del que tardan en completarse los registros con paquetes SYN maliciosos. Esta defensa en particular falla cuando el volumen del ataque aumenta o si el tamaño del registro es demasiado pequeño para ser práctico.

SYN cookies

Esta estrategia implica que el servidor cree una cookie. Para evitar el riesgo de eliminar conexiones cuando se han completado los registros, el servidor responde a cada solicitud de conexión con un paquete SYN-ACK, pero luego elimina la solicitud SYN del registro al quitarla de la memoria y dejar el puerto abierto y listo para una conexión nueva. Si la conexión es una solicitud legítima y el paquete ACK final se envió de la máquina del cliente al servidor, el servidor reconstruirá (con algunas limitaciones) la entrada de la cola del registro SYN. Si bien este esfuerzo de mitigación pierde algo de información sobre la conexión TCP, es mejor que permitir que suceda una denegación de servicio a los usuarios legítimos como resultado de un ataque.

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

Cloudflare mitiga este tipo de ataque, en parte, al ubicarse entre el servidor fijado como objetivo y la inundación SYN. Cuando se realiza la solicitud SYN inicial, Cloudflare maneja el proceso de protocolo de enlace en la nube y retiene la conexión con el servidor fijado como objetivo hasta que se completa el protocolo de enlace TCP. Esta estrategia toma el costo en recursos de mantener las conexiones con los paquetes SYN falsos fuera del servidor fijado como objetivo, y lo ubica en la red Anycast de Cloudflare. Más información sobre el funcionamiento de la protección DDoS de Cloudflare.

Diagrama sobre cómo Cloudflare detiene los ataques de inundación SYN