LEZIONE N° 3: ARP SPOOFING (tratto da: http://udsab.dia.unisa.it) 13.01.2004 Premessa: Le tecniche illustrate nel corso della lezione e reperibili sotto forma di log sono reperibili all’interno del Word Wilde Web mediante una semplice ricerca. Ricordiamo che le tecniche spiegate hanno uno scopo prettamente didattico e divulgativo. I fautori del chan ne declinano ogni responsabilità per l’uso improprio di suddette. Avv. Giovanni Federico_aka_Brain@Work ARP Spoofing ARP spoofing è un attacco che può essere effettuato solo dall’interno di una rete locale o LAN (Local Area Network). Questa tecnica si basa su alcune caratteristiche di ARP (Address Resolution Protocol), e proprio a ciò si deve il nome dell’attacco. Per meglio capire come funziona l’ARP spoofing occorre spiegare brevemente come funziona ARP.   Funzionamento di ARP ARP è il protocollo utilizzato per conoscere e diffondere all’interno di una rete locale, il MAC address di una macchina che ne fa parte. Ad ogni macchina, facente parte di una qualsiasi rete, oltre ad un IP address di 32 bit, viene assegnato un indirizzo fisso di 48 bit che la contraddistingue all’interno della rete, il MAC address o ethernet address. Ogni macchina ha una ARP table nella quale sono memorizzate coppie del tipo [indirizzo IP – MAC address]. Questa tabella non è persistente nel tempo, quindi le entries nella table relative a MAC address non utilizzati frequentemente vengono cancellate. Qualora la macchina A debba spedire dati alla macchina B (entrambe le macchine risiedono ovviamente sulla stessa LAN) e la entry nella ARP table di A relativa alla macchina B è stata tolta o non ancora inserita, il protocollo Address Resolution inizia. La macchina A, quindi, invia su tutta la rete locale delle domande ARP request per cercare la macchina B (l’ ARP request della macchina A contiene il MAC address di A e l’IP address della macchina B): ciò che viene effettivamente fatto è un broadcast di un pacchetto ARP request. Quando la richiesta arriva alla macchina B, quest’ultima invierà un ARP reply alla macchina A contenente il proprio MAC address. Ricevuto l’ARP reply, la macchina A aggiornerà la propria ARP table, inserendo la coppia [IP address B – MAC address B]. Per ulteriori informazioni su ARP si rimanda a [5]. Come si può notare ARP manca totalmente di qualsiasi forma di controllo. Considerando solo il funzionamento di ARP, si osserva, invece, che ARP è veloce e svolge bene il suo compito, delegando ai protocolli dei layer superiori eventuali controlli.   Campi modificati dallo spoof in un pacchetto ARP In cosa consiste veramente l’ARP spoofing? Si esamini il formato di un pacchetto ARP, riportato in INSERIRE URL     Normalmente se si è su di una macchina con indirizzo IP 123.123.123.123 il cui MAC address è EEEEEE, e si inviano dei dati, nel pacchetto ARP che verrà inviato i cambi sender IP address e sender ethernet address conterranno i seguenti valori: §         sender IP address = 123.123.123.123 §         sender MAC address = EEEEEE Si supponga, in seguito, di volere intercettare i pacchetti destinati alla macchina con IP address 123.123.123.213 e MAC address CCCCCC. Per fare ciò il nemico invierà un pacchetto ARP request con i campi sender ethernet address e sender IP address contenenti i seguenti valori: §         sender MAC address = EEEEEE §         sender IP address = 123.123.123.213 L’attaccante non ha fatto altro che sostituire il proprio indirizzo IP con quello della macchina da spoofare.   ARP spoofing su LAN Si esamini ora l’ARP spoofing su di una LAN con interfacce ethernet. Si specifica che l’ARP spoofing è un attacco effettuato solo ed esclusivamente se la LAN è una rete ethernet: in caso di altri tipi di rete, come i token ring ad esempio, le schede di rete vengono poste a priori in modalità promiscua, e quindi viene a cadere il discorso che si sta tenendo. E’ possibile distinguere due casi di ARP spoofing su di una LAN: a) LAN con HUB b) LAN con SWITCH       LAN con HUB Un HUB lavora a layer 1 del modello ISO/OSI: qualora riceva un pacchetto su una porta, l’HUB lo invierà a tutti i dispositivi ad esso collegati. I dati viaggiano lungo il cavo ethernet (si rimanda al paragrafo inerente l’IP spoofing per una figura sullo stack ISO/OSI). Quando il pacchetto giunge all’interfaccia ethernet, questa ne controlla l’intestazione per verificarne il destinatario. Il vero e proprio controllo si basa sul confronto del MAC address del destinatario del pacchetto ed il proprio MAC address. Agendo in questo modo la scheda si comporta come un filtro hardware, lasciando arrivare ai layer superiori solo i pacchetti destinati alla macchina di cui è la scheda ethernet.   Schede ethernet in modalità promiscua Ponendo la scheda ethernet in modalità promiscua si elimina la sorta di filtro hardware cui si è accennato poco sopra: ogni pacchetto che viaggia sulla LAN può essere analizzato e registrato. Così facendo si permette al kernel del sistema operativo che si usa di ricevere tutti i pacchetti che viaggiano sulla rete e di gestirli anche se non sono destinati ad esso. Utilizzando un programma di analisi del traffico di rete (sniffer) è possibile catturare tutti i pacchetti (o solo quelli ritenuti interessanti): può accadere che alcuni dei pacchetti prelevati indebitamente dalla LAN contengano dati sensibili. Scoperta di schede in modalità promiscua Uso di PING modificato: l’uso di PING modificato è una tecnica di riconoscimento nella quale viene utilizzato il fatto che una scheda di rete in modalità promiscua non usa il filtro hardware per la gestione dei pacchetti che abbiano un MAC address di destinazione diverso dal proprio. Spedendo un pacchetto ICMP ECHO REQUEST (ping) con un MAC address di destinazione inesistente (si è autorizzati a modificare queste informazioni in veste di amministratori della LAN) la macchina con scheda ethernet in modalità promiscua risponderà alla nostra richiesta di PING in quanto non scarterà il pacchetto. Per capire meglio quanto detto si consideri il seguente esempio: Macchina R: MAC address: 34-67-23-45-4f-45 IP:192.168.0.1 Macchina N: MAC address: 34-67-23-45-4f-46 IP:192.168.0.2 Macchina A: MAC address: 34-67-23-45-4f-47 IP:192.168.0.3   La macchina R invia un pacchetto ICMP ECHO REQUEST alla macchina A, il pacchetto ha IP address: 192.168.0.3, con MAC address di destinazione errato: 34-67-23-45-01-01. Il pacchetto viene scartato dal filtro hardware della scheda di rete, poiché il MAC address non corrisponde con quella della scheda NIC, per cui non si riceverà nessuna risposta. La macchina R invia un pacchetto ICMP ECHO REQUEST alla macchina N, il pacchetto ha IP address: 192.168.0.2, con MAC address di destinazione errato: 34-67-23-45-01-01. La macchina N risponde con un ICMP ECHO REPLY e questo vuol dire che ha la scheda di rete posta in modalità promiscua.   v  Uso di TCP/SYN modificato: la tecnica dell’uso di TCP SYN modificati consiste nell’inviare un pacchetto TCP SYN su di una porta molto alta (ad esempio la porta 54321). Inviando questo tipo di pacchetto è possibile ottenere due tipi di risposte: 1)                   SYN/ACK se la porta richiesta è in listening (ossia attende connessioni) 2)                 RST se la porta è chiusa Se la macchina alla quale inviamo questo pacchetto TCP SYN è una macchina che non ha una scheda di rete in modalità promiscua riceveremo da essa un pacchetto di tipo RST.   v          Analisi del traffico verso il DNS: molti sniffer utilizzano spesso il DNS per risolvere l’indirizzo IP dei pacchetti che vedono sulla LAN. Se il DNS viene consultato più del solito, allora questo inusuale traffico verso il DNS potrebbe essere un sintomo della presenza di uno sniffer (e quindi di una scheda ethernet in modalità promiscua) sulla LAN.   Prevenzione E’ possibile prevenire in un certo qual modo l’uso di ARP spoofing all’interno di una LAN che usa un HUB. Una prima difesa consiste nell’uso di protocolli di crittografia per collegarsi da una macchina all’altra all’interno della LAN, come SSH, SSL… Una seconda difesa consiste nell’utilizzare uno SWITCH al posto dell’HUB; tuttavia, come si vedrà in seguito, anche adottare uno SWITCH non pone al riparo dall’ARP spoofing.   LAN con SWITCH Uno SWITCH è più sicuro di un’HUB, ma non fornisce una sicurezza nettamente superiore. Uno SWITCH agisce a layer 2 del modello ISO/OSI. Con uno SWITCH sulla LAN, viene adottata una tecnica d’attacco chiamata ARP poisoning L’ARP poisoning è l’attività di contraffazione della ARP table di una macchina. Se il nemico spedisce ad una macchina un ARP reply con il proprio MAC address e l’indirizzo IP della macchina obiettivo, il traffico relativo alla macchina obiettivo verrà indirizzato all’attaccante. L’unica soluzione hardware attualmente valida consiste nel configurare lo SWITCH in maniera tale che il traffico di rete in uscita da una determinata porta non possa cambiare il proprio MAC address.   Soluzioni software Due sono essenzialmente le soluzioni software che si possono adottare per prevenire l’uso di ARP spoofing all’interno di una LAN: 1)   Tabelle statiche di arp Viene usato un comando particolare che fa si che le entries nella ARP table siano statiche: arp –s hostname hardware_address. Sebbene questo risolva egregiamente il problema dello spoofing, questa tecnica non può essere utilizzata in grandi LAN, con svariate decine di macchine collegata ad essa (ad esempio una rete universitaria): il lavoro manuale da compiere per mantenere aggiornate queste tabelle diventerebbe molto oneroso. 2)   Uso di arp_watch arp_watch è una utility che controlla i cambiamenti nella ARP table relativa alla macchina sulla quale viene eseguito il programma. Se vengono rilevati cambiamenti, arp_watch aggiorna i file di log relativi a questi cambiamenti ed eventualmente avvisa l’amministratore della rete tramite email. E’ possibile reperire ulteriori informazioni su questo software in [18].