L'utente malintenzionato riceve dalla memoria le chiavi di sessione e altre informazioni di stato, ma quelle chiavi sono valide solo per quella singola connessione TCP. Per una nuova connessione TCP, il server genererà nuovi nonce e tutte le funzionalità anti-replay di SSH kick in.
Quindi l'attaccante deve dirottare la connessione TCP, che il server identifica tramite l'indirizzo IP del client, la porta TCP del client e le informazioni sul numero di sequenza. Gli attacchi possono essere classificati in base alla distanza tra il client originale e la connessione TCP presa:
-
Nel processo ssh
stesso. Se l'utente malintenzionato ha diritti di superutente in cui ssh
è in esecuzione, può sostituire il ssh
binario con la propria copia compromessa che l'utente innocente esegue, o modificarne il comportamento tramite l'iniezione di codice (ad esempio, le iniezioni non modificano il binario su disco, quindi le firme digitali non rilevano la manomissione).
-
In un secondo processo sulla stessa macchina. È facile continuare la connessione TCP da qui perché i pacchetti inviati dal server vengono già instradati qui.
a. Tutte le informazioni relative alla connessione TCP sono mantenute dal livello dei socket del sistema operativo e mentre i dettagli dello spostamento di un socket TCP tra processi sono specifici del sistema operativo, i socket non hanno affinità di processo in alcun sistema operativo POSIX, poiché possono essere utilizzati da più processi in una volta se ereditati durante spawn o fork.
b. Evitando il livello socket utilizzato dalle applicazioni e acquisendo / modificando / iniettando pacchetti nello stack o nel driver di rete, ad esempio usando iptables o libpcap.
-
In un'altra macchina posizionata per attacchi MITM. L'unica cosa che è assolutamente necessaria oltre a ottenere una copia delle chiavi di sessione e lo stato stesso è continuare a utilizzare lo stesso indirizzo IP in modo che il server pensi che la stessa connessione TCP sia in corso. Questa è la stessa cosa necessaria per man-in-the-middle, o seduti davvero sul percorso, o almeno compromettendo un router sul percorso per inviare pacchetti trasmessi dal server SSH all'autore dell'attacco.