giovedì 28 ottobre 2010

Networking - TCP/IP Hijacking (dirottamento TCP)

Lo hijacking o "dirottamento TCP/IP" è una tecnica che utilizzando pacchetti camuffati assume il controllo di una connessione tra un sistema "bersaglio" e un sistema "host".La connessione del sistema bersaglio viene terminata e l'aggressore è in grado di comunicare verso la macchina host simulando di essere il sistema bersaglio.Come ho già detto nei precedenti articoli sul networking,durante connessioni TCP ogni parte tiene aggiornati i numeri di sequenza dei pacchetti inviati e ricevuti, se un pacchetto ha numero di sequenza errato non viene trasferito al livello successivo dal sistema che lo riceve.In particolare il pacchetto viene ignorato se ha un numero di sequenza precedente,o viene conservato per un eventuale riassemblamento se il numero di sequenza è successivo.Per effettuare un dirottamento TCP il sistema aggressore deve trovarsi nella stessa rete del sistema bersaglio, mentre il sistema host può trovarsi ovunque, nella prima fase dell' attacco l'aggressore deve ascoltare il traffico per riuscire a identificare i numeri di sequenza dei sistemi bersaglio/host,una volta ottenuti invierà un pacchetto camuffato simulandol' IP del sistema bersaglio verso la macchina host utilizzando un numero di sequenza corretto.Quindi la macchina host incrementa il numero di sequenza e risponde all'IP del sistema bersaglio, ora però visto che il sistema bersaglio rileva un numero di sequenza errato ignora il pacchetto di risposta,a questo punto essendo i numeri di sequenza dei due sistemi desincronizzati, la comunicazione fra loro è di fatto interrotta, e l' aggressore ha forzato la macchina host a comunicare con lui simulando il sistema bersaglio.
  
Un esempio di questo tipo di attacco è l' invio di un pacchetto di reset RST camuffato,se la parte ricevente riterrà il pacchetto autentico resetterà la connessione.Per implementare l'attacco il linux ci si può servire di tcpdump,awk e nemesis,Tcpdump può essere utilizzato per sniffare le connessioni mediante l'applicazione di un filtro sui pacchetti con il flag ACK settato su "on".Nell'header TCP i flag sono nel seguente ordine: URG,ACK,PSH,RST,SYN,FIN , quindi se il flag ACK è settato su "on" il tredicesimo ottetto sarà 00010000 corrispondente a 16 in decimale.Per creare un filtro che lasci passare quando il flag ACK=on viene utilizzato l' operatore AND la sintassi corretta per eseguire tcpdump con tale filtro è la seguente:

tcpdump -S -n -e -1 "tctp[13] & 16 == 16"

Il flag "S" dice a tcpdump di stampare i numeri di sequenza assoluti, "n" impedisce che gli indirizzi vengano convertiti in nomi, il flag "e" serve per stampare l intestazione di livello data-link su ciascuna riga ,ed infine "-1" viene utilizzato per bufferizzare la riga in modo da poter essere utilizzata da awk. Awk è un tool che consente l' estrazione degli indirizzi di origine/destinazione delle porte e degli indirizzi MAC, oltre che dei numeri di sequenza e acknowledgment( il nuovo numero di sequenza previsto per un pacchetto di
risposta). Queste informazioni potranno essere poi utilizzate per creare un pacchetto camuffato con nemesis, che viene inviato e tutte le connessioni osservate con tcpdump saranno resettate.

1 commento: