Antes de que el atacante pueda enviar datos al servidor SSH, debe completar un protocolo de enlace TCP. Esto significa que el atacante tiene que adivinar un número de secuencia de 32 bits. (Si se usan cookies SYN, las posibilidades del atacante pueden mejorar .)
Suponiendo que su servidor genere buenos números de secuencia, esto reducirá significativamente la capacidad de los atacantes para atacar su servidor SSH utilizando una dirección IP del cliente falsificada.
Pero tal vez no confíe en su servidor para generar buenos números de secuencia, o tal vez piense que 32 bits de seguridad no son suficientes. Es posible que aún quieras saber qué pasaría una vez que el atacante haya adivinado un número de secuencia correcto.
En primer lugar, notamos que el atacante podrá averiguar si un número de secuencia acertado era correcto o no. Una estimación correcta hará que se abra una conexión, por lo que contará hacia el límite especificado usando MaxStartups
. El atacante puede intentar abrir otra conexión utilizando una dirección no falsificada para averiguar si se ha alcanzado ese límite. Puede mantener su servidor justo por debajo de ese límite en todo momento, de modo que una conexión exitosa con una dirección falsificada siempre tomaría la última conexión disponible.
Sin el truco para notar un número de secuencia acertado, el atacante habría tenido que enviar conjeturas de contraseña en la persiana sin saber si la conexión a la que se enviaron existe. Eso podría haber ralentizado al atacante en un factor de 2³².
Pero a pesar de que un atacante puede obtener comentarios para indicar si un número de secuencia se adivinó correctamente, existen otros obstáculos que impiden el adivinar la contraseña en una conexión TCP falsificada.
Durante el intercambio de claves, tanto el cliente como el servidor elegirán un valor aleatorio para enviar a través de la conexión. Estos valores aleatorios influyen en la clave de sesión. Esto significa que un atacante que trabaja a ciegas (porque no ve las respuestas enviadas desde el servidor a la IP falsificada) no sabrá la clave de la sesión.
La falta de conocimiento sobre la clave de sesión significa que el atacante tendrá que adivinar un código de autenticación de mensaje. Esto es esencialmente equivalente a realizar un ataque MITM en una conexión legítima. Además, el atacante debe enviar la contraseña cifrada para que el servidor la descifre. Dado que el atacante no sabe la clave de cifrado en uso, no sabrá qué contraseñas ha intentado.
La ventana de tiempo para que el atacante complete el ataque solo dura hasta que la dirección IP falsificada haya respondido con un paquete TCP RST. Debido a que el tiempo de ida y vuelta entre el atacante y el servidor probablemente será mayor que el tiempo de ida y vuelta entre el servidor y las direcciones locales, esto podría evitar que el atacante utilice cualquier tipo de información, incluida la verificación del número de secuencia acertado.
Puede darle al atacante una ventana más larga para completar el ataque instalando un firewall que impida que SYN ACK llegue a la dirección IP falsificada o evitando que el RST llegue al servidor. Sin embargo, esto no hace que el ataque sea mucho más factible.