GNU/Linux >> Tutoriales Linux >  >> Linux

Ataques TCP:Predicción del número de secuencia TCP y Ataques de restablecimiento TCP

Aunque el protocolo TCP es un protocolo confiable y orientado a la conexión, aún existen varias lagunas que pueden explotarse. Estas lagunas se explican principalmente en términos de ataques.

En el artículo anterior sobre la serie Ataques TCP/IP, explicamos sobre el envenenamiento de caché ARP.

Este artículo explica los siguientes dos ataques:

  1.  ataque de predicción de secuencia TCP
  2.  ataques de restablecimiento de TCP

Una descripción general de TCP

Antes de comenzar con las explicaciones de los ataques. Desarrollemos una comprensión básica de cómo funciona TCP.

Un encabezado TCP tiene el siguiente aspecto:

La siguiente explicación explica cómo se establece una conexión entre dos hosts a nivel de TCP. Esto se conoce como apretón de manos de tres vías. Este apretón de manos es necesario antes de que se pueda enviar cualquier tipo de datos en cada dirección. Una vez que se establece la conexión, los datos pueden fluir bidireccionalmente con cada paquete que contiene el número de secuencia del byte inicial de los datos que contiene y el reconocimiento de los datos recibidos.

  • Suponga que hay dos hosts (A y B) que desean comunicarse entre sí. Supongamos que el host A inicia la comunicación. Ahora, desde el punto de vista de TCP, el host A envía un paquete SYN al host B.
  • Un paquete SYN es un paquete TCP con el indicador SYN activado.
  • También se menciona en este paquete el número de secuencia inicial (que es un valor generado por el TCP del host A), puerto de origen, puerto de destino, etc.
  • Cuando este paquete se recibe en la capa TCP del host B, este host responde con un paquete TCP con indicadores SYN y ACK activados, número de secuencia inicial y otra información.
  • Cuando el host A recibe este paquete, verifica cierta información como el indicador SYN, el número de reconocimiento (que debe ser el número de secuencia inicial del host A + 1), etc. para verificar que se trata de un paquete esperado del host B.
  • En respuesta, el host A envía un paquete con el indicador ACK activado y el número de acuse de recibo establecido en el número de secuencia inicial del host B + 1.

Entonces vemos que los números de secuencia juegan un papel importante en la comunicación TCP. Un número de secuencia es un número que TCP asocia con el byte inicial de datos en un paquete en particular. De esta forma, el TCP receptor realiza un seguimiento de los datos recibidos y los reconoce en consecuencia. El número de reconocimiento es siempre el siguiente número de secuencia esperado.

Ataque de predicción de secuencia TCP

Suponga que el Host A y el Host B se comunican entre sí. Ahora, digamos que un atacante sentado en el medio de alguna manera puede monitorear los paquetes entre A y B.

Veamos qué hace el atacante:

  • El atacante quiere atacar al Host A.
  • Inunda el host B con nuevas solicitudes que provocan un ataque de denegación de servicio para evitar que el host B se comunique con A.
  • Ahora, el atacante puede predecir el número de secuencia del paquete que A espera de B.
  • El atacante prepara ese tipo de paquete y lo envía al Host A.
  • Dado que es un paquete falso, el host A cree que proviene de B.
  • Ahora, este paquete puede ser un paquete que termina la conexión o le pide al host A que ejecute algunos comandos/scripts maliciosos, etc.

Entonces, de esta manera, un atacante puede secuestrar una conexión.

Otra forma podría ser la predicción de ISN (número de secuencia inicial).

Veamos un extracto de RFC-793:

Cuando se crean nuevas conexiones, se emplea un generador de número de secuencia inicial (ISN) que selecciona un nuevo ISN de 32 bits. El generador está vinculado a un reloj de 32 bits (posiblemente ficticio) cuyo bit de orden inferior se incrementa aproximadamente cada 4 microsegundos. Por lo tanto, el ISN cicla aproximadamente cada 4,55 horas. Dado que asumimos que los segmentos permanecerán en la red no más que la Vida útil máxima del segmento (MSL) y que el MSL es inferior a 4,55 horas, podemos suponer razonablemente que los ISN serán únicos.

Las pilas BSD TCP/IP se desvían del mecanismo anterior. Las pilas BSD TCP/IP aumentan el número de secuencia en 128 000 por segundo y en 64 000 por cada nueva conexión TCP. Como puede imaginar, esto es más predecible y, por lo tanto, puede explotarse fácilmente.

Ataques de restablecimiento de TCP

Este ataque es bastante simple de entender una vez que el ataque anterior es claro para usted. En este ataque:

  • Una vez que el atacante puede secuestrar una sesión TCP (como se indicó anteriormente), se puede lanzar este ataque.
  • El atacante envía paquetes con RST Flag ON tanto a A como a B o a cualquiera de los hosts.
  • Dado que tanto A como B no saben que un atacante ha enviado estos paquetes, los tratan normalmente.
  • Dado que son paquetes de reinicio, la conexión entre A y B finaliza.

Entonces podemos ver que los ataques de restablecimiento de TCP tienen como objetivo terminar una conexión TCP válida entre dos hosts.


Linux
  1. Cómo administrar el inventario de hosts estáticos y dinámicos de Ansible

  2. ¿Ordenar y contar el número de ocurrencias de líneas?

  3. Linux:¿compartir archivos entre el host de Linux y el invitado de Windows?

  4. Bash .hushlogin, ¿Mantener la hora y el host del último inicio de sesión?

  5. Unix socket vs host TCP/IP:puerto

Expresión de secuencia Bash (rango)

Archivo host de Linux:¿Cómo editarlo y usarlo?

Configurar una carpeta compartida entre el host y el invitado de KVM

Linux:busque el número de archivos en un directorio y subdirectorios

Cómo restablecer una contraseña de administrador de host de Windows olvidada

Cómo agregar una clave SSH a VS Code y conectarse a un host