¿Cómo puede falsificar una conexión TCP con un dispositivo que usa el mismo número de secuencia inicial para cada ejecución de un protocolo de enlace TCP?

1

Suponiendo que la implementación de TCP en un dispositivo siempre use el mismo número de secuencia inicial, ¿cómo podría usted, como atacante fuera de ruta, explotar esto para falsificar una conexión con este dispositivo?

Entonces, para hacer esto, necesitarías el dispositivo para configurar un protocolo de enlace TCP contigo. Para garantizar que el dispositivo no envíe un mensaje RST, asumo que tendrá que falsificar tanto el mensaje SYN como el mensaje ACK (esto requeriría un conocimiento de la dirección IP del dispositivo, entonces, como un atacante fuera de camino, ¿cómo podría obtener eso?).

O ...

¿Solo necesitaría falsificar el mensaje SYN, enviar un SYN / ACK con lo que el dispositivo considerará válido dado que tiene un número de secuencia válido? ¿El dispositivo no simplemente enviaría un mensaje RST en respuesta a un mensaje SYN / ACK?

¿Alguna idea?

    
pregunta ellefc 13.04.2016 - 15:21
fuente

1 respuesta

1

"Spoofing" se trata normalmente de usar una dirección de origen falsa. Desea conectarse al objetivo, sin revelar su dirección IP real, en lugar de usar otra dirección IP. En su caso, usted (el atacante) conoce perfectamente la dirección IP del dispositivo; Lo que no quieres revelar es tu propia dirección IP. Desea abrir una conexión con el dispositivo de modo que el dispositivo crea que habla con un cliente con una dirección IP completamente distinta.

El principal problema con la suplantación de identidad es que, si bien envía paquetes arbitrarios con una dirección IP de origen falsa, no recibirá ninguna respuesta, ya que las respuestas se enviarán a la dirección falsa, no a la tuya. Esto, en particular, hace que sea muy difícil completar el TCP handshake porque cada parte debe enviar s +1 como acuse de recibo del número de secuencia s enviado por el par. Si usted es el cliente y está intentando realizar una falsificación, no recibirá el paquete SYN + ACK del servidor y, por lo tanto, no sabrá qué valor poner en su propio ACK. Es posible que tenga "suerte" pero como estos son enteros de 32 bits, la probabilidad de éxito es de solo 1 en 4294967296.

Ahora, si el servidor de destino utiliza un generador aleatorio deficiente, la probabilidad de adivinar el número de secuencia elegido por el objetivo puede aumentar. En particular, si el servidor de destino siempre usa el mismo valor (un generador muy pobre de hecho), entonces puede adivinarlo con probabilidad 1, es decir, tener éxito cada vez. Por lo tanto, puede enviar un SYN, no recibir el SYN + ACK (porque se envía a la dirección falsa), pero aún así enviar su ACK con el valor correcto, según su "estimación" del número de secuencia elegido por el servidor. El servidor estará contento con ese ACK. En ese momento, puede enviar datos arbitrarios a través de la conexión. Por supuesto, aún no verá ninguna respuesta, pero si el punto es emitir comandos, entonces esto es suficiente (ejemplo: desea enviar correo no deseado a través de un servidor SMTP que rechaza el envío de correo electrónico, excepto en algunas direcciones IP de clientes específicos) .

En todo esto, todos sus paquetes deben llevar la dirección IP falsa (falsificada).

    
respondido por el Tom Leek 13.04.2016 - 15:53
fuente

Lea otras preguntas en las etiquetas