El ataque de restablecimiento de TCP , también conocido como "restablecimientos de TCP falsificados", "paquetes de restablecimiento de TCP falsificados" o "ataques de restablecimiento de TCP", es una forma de alterar y terminar la conexión a Internet mediante el envío de un paquete de restablecimiento de TCP falsificado. Esta técnica de manipulación puede ser utilizada por un firewall con buena voluntad o abusada por un atacante malintencionado para interrumpir las conexiones a Internet.
Se sabe que el Gran Cortafuegos de China y los censores de Internet iraníes utilizan ataques de restablecimiento de TCP para interferir y bloquear conexiones, como un método importante para llevar a cabo la censura de Internet.
Fondo
Internet es, en esencia, un sistema para que las computadoras individuales intercambien mensajes electrónicos o paquetes de datos IP. Este sistema incluye hardware para transportar los mensajes (como cables de cobre y fibra óptica ) y un sistema formalizado para formatear los mensajes, llamado "protocolos". El protocolo básico que se utiliza en Internet es el IP ( Protocolo de Internet ), que suele ir acompañado de protocolos adicionales como TCP ( Protocolo de control de transmisión [1] ) o UDP ( Protocolo de datagramas de usuario ). TCP / IP es el conjunto de protocolos que se utiliza para el correo electrónico y la navegación web. Cada protocolo tiene un bloque de información, llamado encabezado, incluido cerca del frente de cada paquete. Los encabezados contienen información sobre qué computadora envió el paquete, qué computadora debería recibirlo, el tamaño del paquete, etc.
TCP se usa con IP cuando se requiere una conexión virtual bidireccional entre dos computadoras. (UDP, por otro lado, es un protocolo IP sin conexión). Software TCP en las dos máquinas que se comunicarán (por ejemplo, una estación de trabajo con un navegador y un servidor web) mediante el intercambio de un flujo de paquetes. El uso de una conexión TCP brinda a las computadoras una manera fácil de intercambiar elementos de datos demasiado grandes para un solo paquete, como videoclips, archivos adjuntos de correo electrónico o archivos de música. Aunque algunas páginas web son lo suficientemente pequeñas para un solo paquete, se envían a través de conexiones TCP para mayor comodidad.
TCP se restablece
En un flujo de paquetes de una conexión TCP, cada paquete contiene un encabezado TCP. Cada uno de estos encabezados contiene un bit conocido como el indicador de "reinicio" (RST). [2] En la mayoría de los paquetes, este bit se establece en 0 y no tiene ningún efecto; sin embargo, si este bit se establece en 1, indica a la computadora receptora que la computadora debe dejar de usar la conexión TCP inmediatamente; no debe enviar más paquetes utilizando los números de identificación de la conexión, puertos llamados, y descartar cualquier paquete adicional que reciba con encabezados que indiquen que pertenecen a esa conexión. Un reinicio de TCP básicamente mata una conexión TCP al instante.
Cuando se usa según lo diseñado, esta puede ser una herramienta útil. Una aplicación común es el escenario en el que una computadora (computadora A) falla mientras una conexión TCP está en progreso. La computadora en el otro extremo (computadora B) continuará enviando paquetes TCP ya que no sabe que la computadora A se ha bloqueado. Cuando la computadora A se reinicia, recibirá paquetes de la conexión anterior al bloqueo. La computadora A no tiene contexto para estos paquetes y no hay forma de saber qué hacer con ellos, por lo que podría enviar un restablecimiento de TCP a la computadora B. Este restablecimiento le permite a la computadora B saber que la conexión ya no está funcionando. El usuario de la computadora B ahora puede intentar otra conexión o realizar otra acción.
Forjar reinicios de TCP
En el escenario anterior, el bit de restablecimiento de TCP fue enviado por una computadora que era uno de los puntos finales de la conexión. Es posible que una tercera computadora monitoree los paquetes TCP en la conexión y luego envíe un paquete "falsificado" que contenga un restablecimiento de TCP a uno o ambos extremos. Los encabezados del paquete falsificado deben indicar, falsamente, que provino de un punto final, no del falsificador. Esta información incluye las direcciones IP de los terminales y los números de puerto. Cada campo en los encabezados IP y TCP debe establecerse en un valor falso convincente para que el reinicio falso engañe al punto final para que cierre la conexión TCP. Los restablecimientos de TCP falsificados correctamente formateados pueden ser una forma muy eficaz de interrumpir cualquier conexión TCP que el falsificador pueda supervisar.
Uso legítimo de la inyección de reinicio de TCP
Una aplicación obvia de un restablecimiento de TCP falsificado es interrumpir maliciosamente las conexiones de TCP sin el consentimiento de las dos partes que poseen los puntos finales. Sin embargo, también se han diseñado sistemas de seguridad de red que utilizan restablecimientos de TCP falsificados. En 1995 se demostró un prototipo de paquete de software "Buster" que enviaría restablecimientos falsificados a cualquier conexión TCP que usara números de puerto en una lista corta. Los voluntarios de Linux propusieron hacer algo similar con los firewalls de Linux en 2000, [2] y el Snort de código abierto usó restablecimientos de TCP para interrumpir conexiones sospechosas ya en 2003. [3]
El IETF consideró que los restablecimientos de TCP mediante firewalls, equilibradores de carga y servidores web eran perjudiciales en RFC3360. [4]
Controversia de Comcast
A finales de 2007, Comcast comenzó a utilizar restablecimientos de TCP falsificados para inutilizar determinadas aplicaciones de software colaborativo y de igual a igual en las computadoras de sus clientes. [5] Esto inició una controversia, que fue seguida por la creación del Network Neutrality Squad (NNSquad) por Lauren Weinstein , Vint Cerf , David Farber , Craig Newmark y otros conocidos fundadores y campeones de la apertura en Internet. [6] En 2008, NNSquad lanzó el NNSquad Network Measurement Agent, un programa de software de Windows escrito por John Bartas , que podía detectar los restablecimientos de TCP falsificados de Comcast y distinguirlos de los restablecimientos reales generados por puntos finales. La tecnología para detectar los restablecimientos se desarrolló a partir del anterior software de código abierto "Buster" que utilizaba restablecimientos falsificados para bloquear malware y anuncios en páginas web.
En enero de 2008, la FCC anunció que investigaría el uso de restablecimientos falsificados por parte de Comcast y, el 21 de agosto de 2008, ordenó a Comcast que pusiera fin a la práctica. [7]
Prevención
Al cifrar las conexiones mediante una VPN , el atacante tiene que realizar un ataque de restablecimiento de TCP en todas las conexiones cifradas que causan daños colaterales . [ cita requerida ]
Ver también
Referencias
- ^ Especificación de TCP
- ^ a b Archivos de discusión de Linux de mayo de 2000
- ^ Archivo de discusión de SNORT: reinicios de TCP
- ^ Los reinicios de TCP inapropiados se consideran perjudiciales
- ^ Associated Press, Comcast bloquea parte del tráfico de Internet
- ^ Página de inicio de NNSquad
- ^ La Comisión ordena a Comcast que ponga fin a las prácticas discriminatorias de gestión de redes