Los ataques al protocolo TCP/IP

En este artículo vamos a conocer qué es el TCP 3-way handshake, cuáles son los ataques más comunes y cómo podemos defendernos de ellos, en lo posible.

TCP (Transmission Control Protocol)

Para comenzar, debemos saber que TCP esel protocolo que controla las comunicaciones entre dos computadores conectados en red.

El protocolo TCP es el que permite que nos conectemos a un servidor web y podamos navegar por internet. También nos permite conectarnos a nuestro servidor de correos para enviar o recibir correos electrónicos.

El protocolo TCP coordina el envío y la recepción de paquetes de red entre dos computadores para que no haya información duplicada, faltante o desordenada.

El protocolo TCP está orientado a la conexión, es decir permite establecer un canal de conexion temporal entre dos computadores para el envio mutuo de información a través de una conexión de red.

Para qué se usa el protocolo TCP

El protocolo TCP se utiliza para todas aquellas conexiones que necesitan un canal de comunicación de ida y vuelta, por ejemplo: HTTP, HTTPS, FTP, SSH, SMTP, POP, IMAP, TELNET. Esto incluye, servidores web, servidores de archivos, servidores de correo, entre otros.

Cómo funciona

Todo comienza cuando un computador requiere conectarse a otro para comenzar un intercambio de información. Aquí es donde se define el 3-way handshake.

  1. El computador 1 enviá un paquete llamado SYN al servidor y se queda en espera de respuesta.
  2. El servidor, cuando recibe un paquete SYN responde con un paquete llamado SYN-ACK y se queda en espera.
  3. El computador 1 recibe el paquete SYN-ACK, que le indica que el servidor recibió el paquete inicial. Entonces envia un paquete ACK.
  4. El servidor recibe el paquete ACK y se da inicio a la transmisión de datos.

Cada paquete debe llevar un numero de secuencia, que en su origen es un numero al azar, pero que el servidor que responde debe incrementar en una unidad. De esta forma, una conexión real luce de la siguiente forma:

Ataques al protocolo TCP

Considerando lo descrito anteriormente, podemos explicar una de las formas de ataque más utilizadas hoy en día, de la que se reportaron 8.4 millones efectuadas el año 2019. Se trata de los ataques de inundación de paquetes SYN.

El objetivo de este tipo de ataques es provocar la denegación de servicios, es decir, que el servidor que está siendo atacado no pueda atender correctamente las peticiones legítimas.

Esta forma de ataque está descrita en el documento RFC-4987

Descubierta en 1994 por Bill Cheswick and Steve Bellovin, se basa en que todo servidor que se encuentra en estado de escucha de nuevas conexiones, cada vez que recibe un paquete SYN, debe almacenar en alguna zona de la memoria una estructura de datos esperando a recibir el paquete ACK. Esta zona de almacenamiento no es infinita, sino que debe tener un limite máximo de estructuras que puede almacenar.

Hemos visto sorprendentemente que muchos servidores tienen un limite máximo de 128 o 256  estructuras. A pesar de que esta configuración es modificable por el administrador, es increíble saber que se deja en ese número.

Entonces, el ataque consiste en enviar muchos paquetes SYN y nunca responder con un paquete ACK, desbordando la memoria del servidor reservada para ello, lo que produce la denegación de servicios y que ningún otro servidor puede conectar con él.

La intención de un ataque de inundación de paquetes SYN no es sobrecargar la red ni tampoco acabar con la memoria del servidor, sino que simplemente llenar la tabla reservada para las conexiones no terminadas en el servidor, cosa que ocurre con mucha facilidad.

Es por eso que los ataques de denegación de servicios constituyen un delito en varios países, como Estados Unidos, la Unión Europea, entre otros, que se castiga con varios años en prisión.

¿Cómo defendernos?

Dependiendo de la complejidad del ataque, la defensa consiste básicamente en el filtrado de las direcciones IP atacantes. Sin embargo, para esto se requiere estar en constante monitoreo de los servidores y de las conexiones pendientes. Sin embargo, hay que tener presente que muchas veces las direcciones IP de origen pueden ser falsificadas.

Otra aproximación es limitar el número de nuevas conexiones concurrentes por IP, pero, como ya se dijo anteriormente, es posible que el atacante envíe paquetes con la dirección de origen falsificada. Veremos este tipo de ataques próximamente en otro artículo.

Existen otros métodos, somo SYN CACHE y SYN COOKIES, que han demostrado gran efectividad en la defensa contra los ataques de inundación de paquetes SYN. La configuración de estos sistemas requiere justar la configuración del kernel y reglas espcíficas del firewall del sistema operativo. Veremos en otro artículo más detalles sobre estas técnicas.

Lo que sí es necesario es contar con algún tipo de defensa, ya que hoy en día es muy fácil realizar un ataque de este tipo, y basta con ejecutarlo desde un computador para provocar la denegación de servicios en cualquier servidor.

En PowerWAF trabajamos para entregar la mejor protección contra este y otros tipos de ataques.