L'attaccante deve:
- Monitorare il traffico di rete tra due vittime.
- Sniff segmento TCP con flag abilitato.
- Crea un falso segmento TCP con il flag abilitato e un numero di sequenza uguale al numero confermato del segmento intercettato.
- Invia segmenti fasulli a una o entrambe le vittime, sperando che ciò comporti la terminazione della loro connessione TCP.
1) Per prima cosa bisogna stabilire una connessione TCP tra due finestre di terminale.
Usando il tool "netcat":
Nella prima finestra:
nc -nvl 8000
Questo comando avvia un server TCP sulla nostra macchina locale sulla porta 8000
Nella seconda finestra:
nc 127.0.0.1 8000
Questo comando crea una connessione TCP alla macchina tramite l'indirizzo IP 127.0.0.1 con porta 8000.
2) Eseguire lo "sniffing" del traffico!
Useremo un programma di attacco che utilizza la libreria "Scapy" per "sniffare" il traffico. Il programma utilizza Scapy per leggere i dati trasferiti tra due finestre di terminale, sebbene non faccia parte della connessione. Il programma sniffa il traffico di connessione e lo invia al terminale.
t = sniff(
iface='lo0',
lfilter=is_packet_tcp_client_to_server(localhost_ip, localhost_server_port, localhost_ip),
prn=log_packet,
count=50)
I comandi principali:
Per testare questa procedura, configurare una connessione TCP dal passaggio 1. Segui le istruzioni di installazione ed esegui il programma in una terza finestra del terminale. Immettere del testo in uno dei terminali della connessione TCP. Dovresti vedere che il programma inizia a catturare le informazioni sul segmento di connessione.
3) Invio dei pacchetti falsi!
Abbiamo stabilito una connessione e il programma può "sniffare" tutti i segmenti TCP che lo attraversano. L'unica cosa rimasta è modificare il programma in modo che esegua un attacco di ripristino TCP inviando segmenti di dati falsi. Per fare ciò, cambieremo la funzione denominata Scapy (vedi l'elenco dei parametri sopra) da utilizzare nel pacchetto che soddisfa i requisiti funzionali. In una versione modificata della funzione, la ispezioniamo, estraiamo i parametri necessari e utilizziamo tali parametri per creare e inviare segmenti, invece di inviare semplicemente il pacchetto appropriato. Supponiamo di intercettare il segmento da (src_ip, src_port) a (dst_ip, dst_port).
Per mandare un segmento:
- Scambiamo gli indirizzi IP del mittente e del destinatario, nonché le loro porte. Questo è necessario perché il nostro pacchetto sarà la risposta al pacchetto intercettato. Il punto di partenza del nostro imballo deve essere il punto di arrivo dell'imballo originale e viceversa.
- Avviare il segmento Flag.
- Scriviamo al numero di sequenza il valore esatto del numero di conferma del pacchetto intercettato.
In conclusione:
Configurare la connessione TCP secondo il passaggio 1. Avvia l'attaccante dal passaggio 2 in una terza finestra del terminale. Quindi inserire del testo in uno dei terminali della connessione TCP. Nel terminale in cui stai digitando il testo, la connessione TCP viene interrotta improvvisamente e inspiegabilmente. Attacco fatto!
@Vladimir