Hola comunidad,
Les comparto Conceptos básicos sobre La seguridad Vulnerabilidades de TCP y ataques.
Vulnerabilidades de TCP
La comunicación con estado TCP entre dos partes se produce mediante un protocolo de enlace de tres vías de TCP. Antes de que los datos se puedan transferir mediante TCP, un protocolo de enlace de tres vías abre la conexión TCP. Si ambas partes están de acuerdo con la conexión TCP, ambas partes pueden enviar y recibir datos mediante TCP. Al final de la sesión de TCP, un protocolo de enlace de cuatro vías generalmente cierra la conexión de TCP sin problemas donde un desmontaje típico requiere un par de segmentos de Finalizado (FIN) y Reconocimiento (ACK) de cada punto final de TCP.
Algunos ejemplos de protocolos de capa de aplicación que utilizan la confiabilidad de TCP son: HTTP, Server Message Block (SMB), Secure Sockets Layer (SSL) / Transport Layer Security (TLS), FTP, etc.
Aunque el protocolo TCP es un protocolo confiable y orientado a la conexión, todavía existen vulnerabilidades que pueden explotarse. Estas vulnerabilidades se explican en términos de los siguientes ataques:
TCP SYN flooding (Inundación TCP SYN): la inundación TCP Synchronize (TCP) provoca un ataque DoS. Aprovecha una característica de implementación del TCP que puede usarse para hacer que los procesos del servidor sean incapaces de responder a las solicitudes de cualquier cliente legítimo. Cualquier servicio, como aplicaciones de servidor para correo electrónico, web y almacenamiento de archivos, que se vincule y escuche en un socket TCP, es potencialmente vulnerable a los ataques de inundación TCP SYN. La base del ataque de inundación SYN radica en el diseño del protocolo de enlace de tres vías que inicia una conexión TCP.
Las conexiones TCP que se iniciaron pero no finalizaron se denominan conexiones semiabiertas. Se utiliza una estructura de datos de tamaño finito en cada host para almacenar el estado de las conexiones semiabiertas. Como se muestra en la figura siguiente, un host atacante puede enviar un paquete SYN inicial con una dirección IP falsificada y luego la víctima envía el paquete SYN-ACK y espera un ACK final para completar el protocolo de enlace de tres vías. Si la dirección falsificada no pertenece a un host, entonces esta conexión permanece en el estado semiabierto indefinidamente, ocupando así la estructura de datos de tamaño finito. Si hay suficientes conexiones semiabiertas para llenar toda la estructura de datos de tamaño finito, entonces el host no puede aceptar más solicitudes de conexión TCP, denegando así el servicio a las conexiones TCP legítimas
TCP session hijacking(Secuestro de sesiones de TCP):El secuestro de sesiones de TCP es diferente de la suplantación de IP, en la que se falsifica una dirección IP o una dirección MAC de otro host. Con la suplantación de IP, aún debe autenticarse en el destino. Con el secuestro de sesiones TCP, el atacante se apodera de un host ya autenticado mientras se comunica con el objetivo.
Como se discutió anteriormente, los números de secuencia se intercambian durante un protocolo de enlace de tres vías de TCP, de la siguiente manera:
El host A envía un paquete de conjunto de bits SYN con un número de secuencia al host B para establecer una sesión TCP. El número de secuencia se utiliza para asegurar la transmisión de paquetes en orden cronológico. Se incrementa en uno con cada paquete. Ambos lados de la conexión esperan un paquete con un número de secuencia específico. El primer número de secuencia para ambas direcciones es aleatorio.
El host B responderá con un paquete que tiene los bits SYN y ACK establecidos y contiene un número de secuencia inicial. El paquete también contiene un número de reconocimiento, que es el número de secuencia del cliente + 1.
El host A responderá con un paquete de conjunto de bits ACK al host B con el número de secuencia inicial (ISN) + 1.