Ataque de inundación SYN

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

Metas de aprendizaje

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

  • Definir un ataque DDoS de inundación SYN
  • Explicar el funcionamiento de un ataque de inundación SYN
  • Diferenciar los distintos tipos de ataque SYN
  • Comprender algunas técnicas de mitigación para inundaciones SYN

Contenido relacionado


¿Quieres saber más?

Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.

Revisa la política de privacidad de Cloudflare para saber más sobre cómo Cloudflare gestiona tus datos personales.

Copiar el enlace del artículo

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

Una inundación SYN (ataque semiabierto) es un tipo de ataque de denegación de servicio (DDoS) que busca dejar un servidor sin disponibilidad para el tráfico legítimo ya que consume todos los recursos disponibles del servidor. Al enviar paquetes de solicitud (SYN) de conexión inicial de forma repetida, el atacante puede sobrecargar todos los puertos disponibles en la máquina del servidor que se fija como objetivo, y hacer que ese dispositivo responda con lentitud al tráfico legítimo o que no responda en absoluto.

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

Los ataques de inundación SYN funcionan porque aprovechan el proceso de protocolo de enlace de una conexión TCP. En condiciones normales, la conexión TCP presenta 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 de envío ida y vuelta del paquete, la conexión TCP está abierta, y puede enviar y recibir información.
Diagrama de establecimiento de comunicación de tres vías del TCP

Para crear una denegación de servicio, un atacante se aprovecha del 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 para establecer la comunicación. Así es cómo funciona:

  1. El atacante envía un gran volumen de paquetes SYN al servidor que se fija 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 de 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 hace, la conexión se considera semiabierta. En este tipo de ataque DDoS, el servidor que se fija como objetivo deja conexiones abiertas de forma constante y espera que en 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 el atacante usa 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 que la máquina que se fija como objetivo quede en estado de semiabierta, 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 lleguen a la máquina de los usuarios maliciosos. En la práctica, este método no se usa seguido (si es que se usa), 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 bots (botnet), como Mirai Botnet, no se preocupará por 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, existe la posibilidad de rastrearlos hasta su origen. Es difícil hacer este tipo de trabajo de detective, pero no es imposible, en especial, si los proveedores de servicios de Internet (ISP) están dispuestos a ayudar.
  3. Ataque distribuido (DDoS): si se genera un ataque mediante una red de bots (botnet), la probabilidad de rastrear el ataque hasta su origen es baja. Para agregar otro nivel de confusió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 bots (botnet), como Mirai Botnet, por lo general, no se preocupará por 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 que se fija como objetivo con una cantidad considerablemente menor de tráfico que los otros ataques DDoS. En lugar de ataques volumétricos, que apuntan a saturar la infraestructura de la red que rodea al 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 de que finalice el 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 de los enfoques incluyen los siguientes:

Aumento de la cola de registros pendientes

Cada sistema operativo en un dispositivo fijado como objetivo permitirá cierto número de conexiones semiabiertas. 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 pendientes, el sistema debe reservar recursos de memoria adicionales para abordar las solicitudes nuevas. Si el sistema no tiene memoria suficiente para poder manejar el aumento del tamaño de los registros pendientes, el rendimiento del sistema se verá afectado de forma negativa; sin embargo, esta opción 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 sobreescribir la conexión semiabierta más antigua cuando se hayan llenado los registros pendientes. Esta estrategia requiere que las conexiones legítimas puedan establecerse por completo en menos tiempo del que tardan en llenarse los registros pendientes con paquetes SYN maliciosos. Esta defensa en particular falla cuando el volumen de ataque aumenta o si el tamaño de los registros pendientes es demasiado pequeño para ser práctico.

Cookies SYN

Esta estrategia implica que el servidor cree una cookie. Para evitar el riesgo de eliminar conexiones cuando se han llenado los registros pendientes, el servidor responde a cada solicitud de conexión con un paquete SYN-ACK, pero luego retira la solicitud SYN del registro de pendientes, la elimina de la memoria, y deja 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 de registros SYN pendientes. Si bien este esfuerzo de mitigación pierde algo de información sobre la conexión TCP, es mejor que permitir que se produzca 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, porque se ubicar entre el servidor que se fija como objetivo y la inundación SYN. Cuando se hace la solicitud SYN inicial, Cloudflare maneja el proceso del protocolo de enlace en la nube y retiene la conexión con el servidor que se fija como objetivo hasta que se completa el protocolo de enlace del TCP. Esta estrategia asume el costo de mantener las conexiones con los paquetes SYN falsos fuera del servidor que se fija como objetivo, y las ubica en la red Anycast de Cloudflare. Más información sobre el funcionamiento de la protección DDoS de Cloudflare.

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