Per chiudere correttamente una connessione, il pacchetto FIN deve essere riconosciuto in entrambe le direzioni. Un lato della connessione invia un pacchetto FIN, a cui l'altro lato deve restituire FIN + ACK, e infine il lato originale deve restituire un altro ACK. Devi spoofare entrambe le parti di questa stretta di mano per avere successo.
Per eseguire questo attacco è necessario conoscere l'IP di origine, l'IP di destinazione, la porta di origine, la porta di destinazione e la sequenza TCP e acknolwedgement numeri . Questi numeri sono numeri a 32 bit selezionati casualmente generati come parte dell'handshake TCP, incrementati dalla lunghezza di ciascun pacchetto inviato / ricevuto. Il loro scopo principale è quello di garantire un strong ordinamento dei pacchetti, ma i loro valori sono anche utili per proteggersi dagli attacchi di spoofing. I pacchetti con numeri di sequenza o di conferma non validi (cioè i valori all'esterno della finestra di trasmissione o di ricezione) vengono ignorati. Solitamente si ottengono questi numeri tramite lo sniffing dei pacchetti se si è sulla stessa rete di loro. Puoi anche provare a indovinare esaurientemente il numero, ma questo è rumoroso e lento; una forza bruta esauriente della sequenza e dei numeri di riconoscimento richiede un minimo di 4 miliardi di pacchetti.
Un attacco più comune è un attacco di ripristino TCP , che è più facile poiché un pacchetto RST può essere inviato senza richiedere due -way chiusura e hai solo bisogno del numero di sequenza corretto poiché il flag ACK non è impostato.