######################################### Questo documento ha ESCLUSIVAMENTE SCOPO DIDATTICO e non si assumono responsabilità di come e dove i concetti e le informazioni espresse e divulgate in questo documento possono essere utilizzate. Questo documento espone ESCLUSIVAMENTE i concetti base di funzionamento dei protocolli standard di comunicazione inter-rete. Ogni utilizzo è lasciato all'utente che legge ed interpreta ed usa i concetti qui espressi e l'autore del documento non si assume responsabilità di nessun tipo a riguardo l'uso improprio di queste informazioni ######################################### S C O P O del Documento Lo scopo di questo documento è di introdurre al lettore il concetto di ARP SPOOFING. ARP SPOOFING è un metodo per sfruttare le interazioni tra IP e i protocolli Ethernet. L'ARP SPOOFING è applicabile solo in una network Ethernet. I N T R O D U Z I O N E Un computer collegato a un network basato su IP/Ethernet ha due indirizzi: uno è l'indirizzo fisico della scheda di rete ed è chiamato MAC address, mentre il secondo è l'indirizzo IP. - L'indirizzo fisico o MAC Address è , in teoria, un indirizzo unico e non sostituibile, che è immagazzinato all'interno della scheda di rete. Ogni produttore ha un "range" di indirizzi fisici che può assegnare alle proprie schede e che identificano univocamente solo e solo quella scheda di rete a cui l'indirizzo specifico è stato assegnato. In teoria con particolari software è possibile intervenite all'interno della ROM della scheda di rete e modificare il MAC address. Il rischio, peraltro molto remoto, è che se dovreste incontrare nella vostra lan un'altra scheda di rete con lo stesso MAC address ci sarebbe con conflitto di instradamento ed entrambe le due schedi di rete non riuscirebbero a ricevere pacchetti. Il MAC address è necessario per permettere di spedire e ricevere data in una rete Ethernet, indipendentemente dal tipo di protocollo che viene utilizzato sulla rete. Il protocollo Ethenet infatti costruisce un " frame " di dati di blocchi con 1500 byte di dimensione ed ogni frame ha all'interno dell'header del pacchetto ethernet il MAC Address della macchina (o meglio delle scheda di rete) sorgente del pacchetto e della macchina di destinazione. - L'indirizzo IP deriva dall'applicazione al protocollo Ethernet, del protocollo IP ( Internet Protocol ) utilizzato dalle applicazioni, ed è indipendente da qualunque tecnologia di networking funzioni sotto di esso. L'indirizzo IP è virtuale, rappresenta un'astrazione per permettere di costruire applicazioni senza obbligare a conoscere quale tecnologia di network viene utilizzata, e viene assegnato via software. Su un segmento di rete è necessario che ogni macchina abbia un indirizzo univoco, ed assegnato solo a quella macchina. Nel caso in cui due macchine abbiano lo stesso indirizzo IP entrambe le macchine non riusciranno più a comunicare con il resto della rete. IP e Ethernet lavorano ( e devono lavorare) insieme dato che il protocollo IP comunica attraverso la costruzione di pacchetti che sono simili ai frame ethernet,ma che hanno diversa struttura e questi pacchetti non possono essere consegnati senza la presenza del layer di rete. Infatti nel nostro caso i pacchetti IP sono consegnati attraverso Ethernet, il quale divide i pacchetti nei frames, aggiunge l'header ethernet per la consegna e spedisce i pacchetti attraverso il cavo di rete fino allo switch. Lo switch decide a quale delle sue porte deve spedire il frame, comparando l'indirizzo di destinazione del frame con gli indirizzi memorizzati nella sua tabella interna, nel quale "mappa" la porta ethernet al MAC Address della scheda a cui è collegato. Quando un frame etherner viene costruito, deve essere costruito partendo da un pacchetto IP. Ovviamente, in quel momento durante la costruzione del frame, il protocollo ethernet non ha idea di quale sia il MAC address di destinazione della macchina a cui il frame deve essere spedito, e questo dato è necessario per costruire l'header ethenet che come detto prima contiene il MAC address di destinazione e sorgente del frame. L'unica informazione che è disponibile è l'IP di destinazione, che come detto sopra è virtuale e non è univoco (possono esistere X computer nel mondo con l'indirizzo 192.168.1.1, ma "dovrebbe" esistere solo e solo una scheda di rete con un indirizzo fisico.) ed è quindi necessario trovare un modo per cui partendo da questo dato, il protocollo ethernet posso arrivare a trovare il corretto MAC address della macchina di destinazione. Quindi dato l'indirizzo IP (virtuale, astratto) trovare un modo per risalire all'indirizzo fisico (reale, univoco) di computer all'interno di una inter-rete complessa. Questo meccanismo di chiama ARP, ovvero Address Resolution Protocol, e che è quello che adesso vediamo. Q U E L L O CHE S U C C E D E Il protoccolo ARP o semplicemente ARP, lavorora inviando verso l'esterno con un broadcast un pacchetto " ARP request ". Un pacchetto ARP request in poche parole, invia a tutti i computer della rete una domanda: " Il tuo indirizzo IP è x.x.x.x? se si inviami indietro il tuo indirizzo MAC ". Come detto questo pacchetto viene spedito in broadcast a tutti i computer sulla rete che sia una LAN (Local Area Network) che uno "switched lan" ( rete complessa ) e ciascun computer esamina il pacchetto, verifica se ha assegnato in quel momento l'indirizzo ip richiesto nel pacchetto ARP, e se questa condizione è verificata, invia indietro alla macchina richiedente un pacchetto " ARP reply" contenente il proprio MAC address. A questo punto la macchina che deve inviare il frame ethernet riceve il pacchetto ARP reply, estrae l'indirizzo MAC (quindi fisico, non astratto come l'indirizzo IP) e completa l'header del frame e lo invia alla macchina destinataria attraverso la rete. Per ridurre al minimo il numero delle richieste ARP che vengono inviate su un segmento di rete, i sistemi operativi (e con essi router e switch) immagazzinano una cache delle entry ARP che ha finora ricevuto. Quando un computer riceve un ARP reply, questo aggiorna la propria tabella con la nuova associazione IP address / MAC address e siccome l'ARP è protocollo SENZA SESSIONE ed è un protocollo INAFFIDABILE (nel senso che il protocollo ARP non apre la sessione, invia i dati, e chiude la sessione MA invia solo la parte dadi ed inoltre INAFFIDABILE perchè se il pacchetto ARP non giunge a destinazione non viene reinviato ad oltranza) molti sistemi operativi e dispositivi che necessitano di fare cache delle entry ARP (router appunto) aggiornano la propria tabella solo nel caso in cui alla macchina giunge una risposta alla sua request (ovvero quando ad un ARP Request, riceve la relativa ARP Reply) Date queste premesse iniziamo a spiegare cos'è l'ARP SPOOFING ovvero l'invio "forzato" di pacchetti ARP reply, in cui il computer che riceve questo pacchetto ARP reply viene messo in condizione tale per cui crede di spedire i frame ethernet al computer A (ovvero quello legittimo destinatario della connessione) ma che invece fisicamente lo spedisce al computer B il quale ha "spooffato" la entry ARP. Questo processo di "forzare l'update di una macchina bersaglio" con delle entry ARP è chiamato "ARP Poisoning", letteralmente AVVELENAMENTO ARP
#SNIFFING#
Gli Switches individuano quali frame devono essere inviati a una determinata porta eseguendo la comparazione dell'indirizzo MAC di destinazione con la propria tabella MAC memorizzata. Questa tabella viene "costruita" all'accensione dello switch, e aggiornata esaminando il MAC address sorgente prelevandolo dal primo frame ethernet trasmesso su ogni porta. Normalmente (oramai quasi tutte le schede di rete possono farlo) le interfacce di rete possono assumere lo stato definito " promiscuos mode ", dove la scheda è autorizzata a esaminare i frames destinati a MAC address di cui non sono proprietari (è proprio sfruttando questa modalità che vengono implementati sui vari OS gli sniffer), ma questo non avviene per quello che riguarda gli switch, in quanto DEVONO ruotare i frame in base alla tabella IP/MAC di cui abbiamo parlato poco prima. Questo serve a prevenire lo sniffing dei frame destinate macchine. Ma per quanto questo sistema sia stato implementato utilizzando l'ARP poisoning , esistono alcuni modi, per cui è possibile effettuare lo sniffing su una rete switched. Una di queste è il " man-in-the-middle ", letteralmente "uomo-nel-mezzo" (cmq useremo l'abbreviativo di MitM) e consiste in un utente che inserisce la propria macchina nel "percorso" delle comunicazioni tra i due computer che intende prendere di mira. A questo punto il computer nel mezzo invierà i frames tra i due computer senza interromperne la comunicazione, e la descrizione di come avviene il processo è quella che segue: Se ipotizziamo che X è la macchina "attaccante", ovvero quella poi intercetterà le comunicazione tra le due macchine legittime, e che C1 e C2 sono le due macchine prese come bersaglio avremo che: - X eseguirà un ARP Poisoning delle ARP cache di C1 e C2 - C1 assocerà l'indirizzo IP di C2 (ricordiamo che l'indirizzo IP è virtuale o meglio "astratto") con l'indirizzo FISICO (reale) del MAC address di X - C2 assocerà l'indirizzo IP di C1 con il MAC address di X A questo punto tutto il traffico che verrà generato da C1 e C2 verso l'altro, prima passerà attraverso X, prima appunto di venir mandato alla corretta destinazione. Questo è un metodo veramente efficace se, come detto prima, non solo i singoli HOST (computer) possono essere "avvelenati", ma con essi anche router/gateway switch ecc ecc ecc. In questo modo tutto il traffico internet ( o inter-rete se preferite ^_^ ) può essere intercettato con questo metodo semplicemente eseguendo un attacco MitM sul computer che intendiamo "sniffare" e il router della LAN Un altro metodo di sniffing altrettanto efficace sugli apparati switch della rete è il cosiddetto "ARP flooding", che consiste nel "flooddare" (letteralmente nell'inondare) lo switch con una successione rapida e massiccia di pacchetti ARP reply, fino a mandare in overflow la tabella con le associazione port/MAC di quella determinata porta. Una volta eseguito un attacco di questo tipo, il risultato è semplice e dimostrato qui sotto: se X è il nostro consueto computer da cui lanciamo l'attacco, C1 il computer preso come bersaglio e SW1 lo switch a cui siamo collegati sia X che C1, quello che avviene è semplice. - X esegue l'ARP flooding di pacchetti ARP reply verso SW1, in cui l'IP di C1 viene associato al MAC address di X - SW1 quando riceve un frame destinato all'IP di C1, fa quello per cui è stato programmato per fare: verifica nella sua tabella se il MAC di destinazione è presente, e quando lo trova lo gira verso la porta associata a quel MAC. MA invece di girare i pacchetti verso la porta 1 a cui è fisicamente agganciato C1 lo gira verso la porta 2 dove invece è collegato X, questo perchè nella sua tabella la entry IP di C1 è associata al MAC address di X e quindi associata alla porta 2 in cui X è collegato - C1 non riceverà più nessun pacchetto, neppure le risposte a pacchetti ICMP finché la cache dello switch non verrà aggiornata oppure finché lo switch non verrà spento e riacceso. Finora abbiamo visto come usando L'ARP poisoning sia possibile eseguire dello sniffing. Ora vedremo come è possibile fare un Denial of Service (DoS) ed un'altra serie di attacchi che possono essere eseguiti sfruttando la stessa peculiarità del protocollo ARP. #DoS# Eseguendo l'aggiornamento della cache ARP dei dispositivi con una entry ARP di un MAC Address non esistente, si causerà l'eliminazione dei frame ethernet e questo può essere fatto in maniera radicale su tutti gli host su di una rete, causando appunto l'interruzione delle comunicazioni. Un DoS appunto. Questo normalmente è uno degli effetti postumi di un attacco Man-in-the-Middle, dove un computer preso a bersaglio continuerà ad inviare i frame all'indirizzo MAC del computer attaccante anche dopo che questi ha rimosso se stesso dal percorso di comunicazione. Per eseguire un attacco MitM, in modo "pulito" sarebbe necessario (e consigliato" avere le ARP entry originali dei dispositivi presi in causa in modo che terminato lo sniffing si posso ristabilire le corrette entry. #HIJACKING# Una " Connection hijacking " permette ad un attaccante di prendere il controllo della connessione tra due computer,usando un metodo molto simile a quello che viene utilizzato per eseguire un attacco MitM. Questo trasferimento di controllo può avvenire in ogni tipo di connessione, ad esempio, un attaccante potrebbe prendere il controllo di una sessione telnet dopo che il computer preso a bersaglio ha accettato la login da parte di un amministratore. #CLONING# Come detto precedentemente il MAC addresses è stato definito per essere un identificativo globalmente UNICO e che identifica solo e solo quella interfaccia di rete prodotta da quella specifica casa produttrice e che questo indirizzo MAC è "stampato" all'interno della ROM dell'interfaccia di rete. Ma è anche vero che oggi il MAC Address di una scheda di rete può essere facilmente cambiato. GLi utenti di sistemi Linux possono facilmente sostituire e cambiare il proprio MAC address senza dover ricorrere a software di spoofing, e semplicemente utilizzando il comando "ipconfig" (per chi non fosse pratico, il comando che permette di gestire la configurazione dell'interfaccia di rete nel sistema operativo). In questo modo un attaccante può facilmente eseguire un DoS verso un computer bersaglio, assegnando a se stesso l'IP e il MAC address del computer che si intende colpire, ricevendo al posto tutto tutti i frame che sarebbero dovuti essere consegnati a lui. T O O L S per fare ARP Poisoning *PARASITE* HTTP://WWW.THEHACKERSCHOICE.COM/RELEASES.PHP
Parasite è un demone che rimane in attesa ed "ascolta" sulla lan in attesa di intercettare le richieste ARP, e automaticamente invia le conseguenti ARP Replay spooffate. In questo modo Parasite fa automaticamente eseguire al computer dell'attaccante un MitM verso tutti i sistemi che propagano le loro Arp request. Per precisione occorre anche dire che nello stesso modo in cui compie un attacco "automatico" Parasite non esegue una "pulitura" chiara quando viene fermato il demone, portando ad eseguire un DoS verso tutti quei sistemi che aveva precedentemente spooffato, seguendo proprio la tecnica di DoS descritta poche righe sopra. Per ripristinare il corretto funzionamento delle operazioni di rete delle macchine colpite bisogna o aspettare il normale scadenza della cache arp dei sistemi colpiti e/o degli switch oppure riavviarli drasticamente. *ETTERCAP* HTTP://ETTERCAP.SOURCEFORGE.NET
Ettercap è un potentissimo software creato per unix e linux, di cui oggi esiste anche un porting sotto Win32 (necessita le librerie Ethercap facilmente scaricabili dal web) che dispone di una GUI (Graphic User Interface) testuale ed abbastanza semplice da poter essere usato da chi ha un minimo di conoscenza o anche dai cosiddetti "script kiddies". Con Ettercap tutte le operazioni sono automatiche, e il computer da prendere a bersaglio può essere scelto da una lista degli hosts individuati sulla rete. Ettercap può eseguire 4 metodi di sniffing: IP, MAC, ARP e Public ARP e può automatizzare anche le seguenti procedure: - L'inserimento (Injecting) di caratteri nelle connessioni - Sniffing di sessioni criptate SSH - Immagazzinare la password inviate sulla rete - Eseguire il Fingerprinting dei OS - e la cosiddetta " connection killing " ovvero il blocco completo delle connessione verso un dato host Inoltre sono disponibili numerosi PLUG-IN che permettono di eseguire anche altre serie di operazioni e ve ne sono altri in sviluppo. *ARPOISON* HTTP://WEB.SYR.EDU/~SABUER/ARPOISON/ è un Tool a linea di comando (cml) sviluppato per UNIX, che può creare pacchetti ARP spooffati. COn questo tool l'utente può specificare l'IP e il MAC address della sorgente e della destinazione. LA D I F E S A
La miglio difesa contro l'ARP spoofing è di abilitare il vincolo dei MAC address, sugli switch. Questa operazione è disponibile sugli switch di alta qualità che non permettono che un MAC address associato a una porta possa essere cambiato una volta che è stato definito in operazione di setup (ovviamente via CML (command line) o una eventuale GUI dello switch possono reimpostare questi parametri), ma questo obbliga ad eseguire l'operazione di "legittimazione" dei MAC address sullo switch manualmente dall'admin della rete dopo averli pianificati a tavolino. Certo una cosa poco gratificante e laboriosa da fare, che molti, per questo trascurano di fare. Un'altra difesa è utilizzare delle rotte statiche. La cache ARP dei sistemi può avere delle entry statiche nelle proprie tabelle (quindi non modificabili) per cui ogni ARP replies spooffata viene ignorata. Questo tipo di approccio non è sempre praticabile in ogni tipo di ambiente, ma solo per piccolo ambienti con pochi host oppure lan domestiche, e dove naturalmente l'ARP spoofing ha poca rilevanza come problema. Ma c'è da fare anche una nota molto interessante che riguarda l'implementazione di rotte statiche su sistemi Windows. Le prove fatte hanno messo in evidenza che i sistemi Windows continuano ad accettare le ARP replies spooffate che continua ad utilizzare rotte dinamiche invece delle rotte statiche inserite annullando completamente l'effetto dell'uso di quest'ultime come difesa contro questo dipo d'attacco. Un altro sistema di difesa molto efficace e pro-attivo contro ARP poisoning e ARP spoofing è ultilizzare ARPWATCH. ARPWatch è un tools software completamente free scritto per UNIX che elenca le ARP replies sul network, le immagazzina in una tabella associando IP/MAC esattamente come farebbe una cache ARP e salva la tabella in un file. Ogni volta che un MAC address associato con uno specifico IP cambia, il software invia un'email all'amministratore della rete. Ovviamente il network deve prevedere o l'indirizzamento IP delle macchine fisso, oppure nel caso della presenza di un server DHCP, l'assegnazione dell'indirizzo IP in base alla tabella di MAC address e all'assegnazione dell'ip solo a quello specifico MAC anche se in un ambiente DHCP identificare l'effetto "flip-flops" è molto difficile da rilevare. Successivi test hanno portato alla luce che Parasite causa un vero e proprio flood di flip-flops all'interno della lan, lasciando il MAC address della macchina attaccante nel registro di Arpwatch e nella mail di segnalazione dell'attacco. Anche Ettercap causa numerosi flip-flop, ma quest'ultimi, soprattutto in una rete DHCP sono molto difficili da individuare proprio perché una in rete DHCP questo tipo di effetto avviene a intervalli regolari. Quindi è consigliabile in una rete in cui è auspicabile pensare a una prevenzione contro ARP spoofing pianificare l'assegnazione degli indirizzi IP in maniera statica e lasciare che il server DHCP rilasci solo una piccola porzione di IP liberi, giusto quelli necessario a fornire un servizio di connessione ad eventuali ospiti. Questo possono essere quindi dei validi sistemi per identificare e risolvere i problemi di MitM o ARP spoofing. Contro il cloning del MAC address, è molto facile indentificare il problema utilizzando il RARP (Reverse ARP), ovvero è il protocollo che compie l'esatto inverso del protocollo ARP, quindi dato un conosciuto MAC address viene generata una richiesta per conoscere l'IP ad esso associato. In presenza di risposte multiple a questa richiesta, ci si trova in presenza di un MAC clonato. Per identificare poi la presenza di una o più macchine che lavorano con la scheda di rete in "promiscuous mode" esistono numerose tecniche e tools dedicati sia per ambienti Win32 che per ambienti Linux/UNIX. Proprio per questo motivo, per la diversità dei sistemi operativi diffusi, è importante ricordarsi che ogni sistema operativo ha un proprio stack TPC/IP e che ogni release dello stesso SO può apportare modifiche radicali allo stack e conseguentemente anche comportamenti differenti sia alle richieste ARP sia ai tutti gli altri protocolli, e che allo stesso modo schede di rete diverse hanno driver diversi e quindi diversi modi di interagire a livello fisico con i protocolli. Di queste variabili è sempre buona cosa tenere in considerazione con le opportune riflessioni. Un esempio potrebbe essere Solaris, il quale ha implementato nel proprio stack tpc/ip una gestione delle request e replies arp completamente diversa da qualsiasi altro produttore e finora unica nel suo genere. (in pratica Solaris accetta l'update delle ARP solo quando queste scadono, scartando qualsiasi altro replies gli arriva prima di questa scadenza, ed obbligando l'attaccante prima a dover spooffare una seconda macchina con cui la wks Solaris è in connessione prima di effettuare il tentativo verso quest'ultima. In questo caso un buon sistema di intrusion detection può individuare facilmente quello che sta succedendo avvisando l'amministratore della rete) C O N C L U S I O N I
L'ARP spoofing in conclusione è una delle numerose vulnerabilità che esistono negli attuali protocolli di networking. Questo permette ai persone con le dovute conoscenze di poter prendere il controllo e controllare macchine su una rete. Questa situazione ha difficili possibilità di correzione, in quanto il protocollo IP e il funzionamento delle comunicazioni informatiche come noi le conosciamo oggi si basa proprio su questi meccanismi che peccano di queste debolezze intrinseche, generate insieme al prodotto stesso e che a meno di una riconversione totale, poco attuabile nell'immediato, rappresentano problemi che bisogna tenere in considerazione. ARP poioning, frammentazione dei pacchetti TPC e ICMP redirection sono esempi di questi problemi e vulnerabilità legate al modo di funzionare stesso del protocollo. I test qui citati sono stati testati utilizzando i tools citati in ambienti sia linux che windows (NT, 2000, w9x, XP) e questi tools non sono gli unici che possono essere utilizzati, e reperiti nel Wire, ma sicuramente sono tra i più diffusi e documentati. Parte di questo documento è stato in base redatto dalla documentazione reperibile sul web sugli stessi prodotti e in parte anche da altre paper inerenti problemi di security dei protocolli ARP e ICMP, e da altri forum sparsi per il wire. PrOpHeCy. ######################################### Questo documento ha ESCLUSIVAMENTE SCOPO DIDATTICO e non si assumono responsabilità di come e dove i concetti e le informazioni espresse e divulgate in questo documento possono essere utilizzate. Questo documento espone ESCLUSIVAMENTE i concetti base di funzionamento dei protocolli standard di comunicazione inter-rete. Ogni utilizzo è lasciato all'utente che legge ed interpreta ed usa i concetti qui espressi e l'autore del documento non si assume responsabilità di nessun tipo a riguardo l'uso improprio di queste informazioni #########################################
|