Prima che l'attaccante possa inviare dati al server SSH, deve completare un handshake TCP. Ciò significa che l'attaccante deve indovinare un numero di sequenza a 32 bit. (Se vengono utilizzati i cookie SYN, le probabilità che l'autore dell'attacco possa migliorare .)
Supponendo che il tuo server stia generando buoni numeri di sequenza, questo ridurrà in modo significativo la capacità di attaccanti di attaccare il tuo server SSH usando un indirizzo IP client falsificato.
Ma forse non ti fidi del tuo server per generare buoni numeri di sequenza, o forse pensi che 32 bit di sicurezza non siano abbastanza buoni. Quindi potresti ancora voler sapere, cosa succederebbe una volta che l'aggressore ha indovinato un numero di sequenza corretto.
Prima di tutto notiamo che l'attaccante sarà in grado di capire se un numero di sequenza indovinato è corretto o meno. Un'ipotesi corretta causerà l'apertura di una connessione, quindi conterà verso il limite specificato utilizzando MaxStartups
. L'utente malintenzionato può tentare di aprire un'altra connessione utilizzando un indirizzo non falsificato per scoprire se tale limite è stato raggiunto. Può mantenere il server sempre al di sotto di tale limite in ogni momento, in modo tale che una connessione riuscita con un indirizzo falsificato abbia sempre l'ultima connessione disponibile.
Senza il trucco di notare un numero di sequenza indovinato con successo, l'utente malintenzionato avrebbe dovuto inviare tentativi di password nei non vedenti senza sapere se esiste anche la connessione che erano stati inviati. Ciò potrebbe potenzialmente rallentare l'attaccante di un fattore di 2 ³.
Tuttavia, anche se un utente malintenzionato può ottenere un feedback per indicare se un numero di sequenza è stato indovinato correttamente, esistono altri blocchi stradali che impediscono di indovinare la password su una connessione TCP falsificata.
Durante lo scambio delle chiavi, sia client che server sceglieranno un valore casuale da inviare tramite la connessione. Questi valori casuali influenzano la chiave di sessione. Ciò significa che un utente malintenzionato che lavora in blind (perché non vede le risposte inviate dal server all'IP di spoofing) non conoscerà la chiave di sessione.
La mancanza di conoscenza della chiave di sessione significa che l'attaccante dovrà indovinare un codice di autenticazione del messaggio. Questo è essenzialmente equivalente all'esecuzione di un attacco MITM su una connessione legittima. Inoltre, l'utente malintenzionato deve inviare la password crittografata per essere decodificata dal server. Poiché l'utente malintenzionato non conosce la chiave di crittografia in uso, non saprà quali password ha provato.
La finestra temporale per il completamento dell'attacco da parte dell'utente malintenzionato dura solo fino a quando l'indirizzo IP di spoofing non ha risposto con un pacchetto RST TCP. Dal momento che il tempo di andata e ritorno tra l'attaccante e il server è probabile che sarà maggiore del tempo di andata e ritorno tra server e indirizzi locali, questo potrebbe impedire all'utente malintenzionato di utilizzare qualsiasi tipo di feedback, inclusa la verifica del numero di sequenza correttamente indovinato.
È possibile fornire all'avversario una finestra più lunga per completare l'attacco installando un firewall che impedisca a SYN ACK di raggiungere l'indirizzo IP falsificato o impedendo al server RST di raggiungere il server. Ciò tuttavia non rende l'attacco molto più fattibile.