ARP poisoning: falla di sicurezza nella rete

Firewall, proxy server, zone demilitarizzate (DMZ): le aziende migliorano di continuo i loro sistemi per proteggere le reti private dai pericoli di Internet. Ma non tutti gli attacchi provengono dall’esterno. Infatti un elemento debole nella catena di sicurezza è la Local Area Network (LAN): se un hacker si trova già nella rete interna, riuscirà facilmente ad intrufolarsi nel traffico dati e a manipolarlo a proprio vantaggio, sfruttando la vulnerabilità del protocollo ARP. Questo protocollo viene utilizzato nelle reti Ethernet basate su IPv4 per risolvere gli indirizzi IP in quelli MAC e finora ha messo gli amministratori davanti a un problema di sicurezza.

Le tabelle ARP si possono manipolare facilmente tramite pacchetti falsificati. In questo caso si parla di ARP poisoning (dall’inglese “to poison” = avvelenare) o ARP spoofing, cioè di un attacco man in the middle che consente agli hacker di inserirsi senza farsi notare tra due sistemi comunicanti. Vi mostriamo come si può manipolare la risoluzione dell’indirizzo tramite ARP in modo mirato e vi presentiamo delle possibili contromisure.

Definizione ARP spoofing

Con l’ARP spoofing si indicano gli attacchi Man in the Middle alle tabelle ARP delle reti locali. Ricorrendo a questo tipo di attacco gli hacker inviano i pacchetti ARP contraffatti per inserirsi indisturbati tra due sistemi comunicanti, intercettarne il traffico dati e manipolarlo.

ARP: indirizzamento nella LAN

A differenza di quanto succede su Internet, i dispositivi presenti nella LAN non comunicano direttamente attraverso gli indirizzi IP. Al loro posto, per l’indirizzamento nelle reti locali IPv4, vengono utilizzati gli indirizzi fisici dell’hardware, chiamati indirizzi MAC (Media Access Control) formati da numeri unici a 48 bit che consentono ad ogni dispositivo nella LAN di identificarsi univocamente tramite la sua scheda di rete.

Esempio di un indirizzo MAC: 00-80-41-ae-fd-7e

Gli indirizzi MAC vengono attribuiti dal rispettivo produttore hardware e sono unici al mondo. Teoricamente gli indirizzi hardware si adatterebbero quindi per consentire un indirizzamento globale, ma nella prassi questa concezione non si può applicare, visto che gli indirizzi IPv4 sono troppo brevi per rappresentare in modo completo gli indirizzi MAC. Nelle reti basate su IPv4, la risoluzione dell’indirizzo tramite ARP è perciò indispensabile.

Se ora un computer A volesse contattare un computer B nella stessa rete, per ottenere il suo indirizzo IP deve prima di tutto individuare l’indirizzo MAC appropriato. Così entra in azione l’Address Resolution Protocol (ARP), un protocollo di rete che funziona secondo lo schema request-response.

Ricercando l’indirizzo MAC giusto, il computer A invia prima di tutto una richiesta broadcast (chiamata richiesta ARP, in inglese “ARP request”) a tutti i dispositivi in rete. Questa richiesta comprende all’incirca le seguenti informazioni:

Un computer con l’indirizzo MAC xx-xx-xx-xx-xx-xx e l’indirizzo IP yyy.yyy.yyy.yyy vorrebbe prendere contatto con un computer con l’indirizzo IP zzz.zzz.zzz.zzz e ha bisogno dell’indirizzo MAC giusto.

La richiesta ARP viene accolta da tutti i computer nella LAN. Ogni computer in rete è collegato a una tabella locale, detta cache ARP, per evitare che prima dell’invio di ogni pacchetto debba venire fatta una richiesta ARP. Qui vengono salvati temporaneamente tutti gli indirizzi MAC conosciuti, comprensivi dell’IP assegnato.

Tutti i computer nella rete annotano così nella richiesta broadcast la coppia di indirizzo del mittente consegnato. Però ci si aspetta una risposta broadcast solo dal computer B, che invia un’ARP reply comprendente le seguenti informazioni:

Qui il sistema con l’indirizzo IP zzz.zzz.zzz.zzz. L’indirizzo MAC ricercato è aa-aa-aa-aa-aa-aa.

Se un’ARP reply giunge al computer A, questo dispone di tutte le informazioni necessarie per inviare i pacchetti al computer B. Perciò la comunicazione attraverso la rete locale non incontra nessun ostacolo.

Ma cosa succede se non è il computer di destinazione ricercato a rispondere, bensì un altro dispositivo che viene controllato da un hacker con intenti poco onorevoli? In questo caso entra in gioco l’ARP poisoning.

Che cos’è l’ARP poisoning?

Lo schema request-response del protocollo ARP è creato in modo tale che venga accettata e salvata la prima risposta a un’ARP request. Nel campo dell’ARP spoofing, gli hacker cercano perciò di prevenire il reale computer di destinazione, di inviare un pacchetto di risposta con informazioni false e di manipolare così la tabella ARP del computer richiedente. Si parla quindi anche di ARP poisoning, perché si intende un “avvelenamento” della cache ARP.

Di solito il pacchetto comprende anche l’indirizzo MAC di un dispositivo di rete, controllato dall’hacker. Il sistema della vittima collega così l’IP di uscita con un indirizzo dell’hardware falso e in seguito invia, inosservato, tutti i pacchetti al sistema controllato dall’hacker, che ha così la possibilità di rilevare tutto il traffico dati o di manipolarlo.

Per rimanere nascosto, il traffico dati ascoltato viene solitamente inoltrato al sistema di destinazione reale. Un hacker ottiene così con l’inganno lo status di man in the middle. Se i pacchetti intercettati non vengono inoltrati, bensì rifiutati, l’ARP poisoning può comportare un Denial of Service (DoS).  L’ARP poisoning funziona quindi sia negli ambienti LAN che in quelli Wi-Fi. Anche la crittografia tramite Wi-Fi Protected Access (WPA) non offre un’adeguata protezione contro questa tecnica. Infatti per poter comunicare nelle reti locali IPv4, devono essere risolti tutti gli indirizzi MAC collegati e ciò avviene solo attraverso il protocollo ARP.

Un software conosciuto che spia in modo mirato le risposte broadcast e gli risponde con ARP reply false, si chiama Cain&Abel. Per “avvelenare” la cache ARP dei dispositivi di rete, un hacker non deve però per forza rimanere in attesa di richieste ARP. Un’altra strategia prevede che la rete venga continuamente bombardata da ARP reply false. La maggior parte dei sistemi ignorano i pacchetti di risposta che non possono attribuire a nessuna richiesta; però questo cambia non appena un computer avvia nella LAN una richiesta ARP e di conseguenza si ha l’intenzione di accettare una risposta.

È quindi una questione di timing, se al mittente arrivi prima la risposta del sistema di destinazione o di uno dei pacchetti falsi. Questo schema di attacco si può automatizzare tramite programmi come Ettercap.

Una panoramica dei software di attacco ARP

I programmi che vengono utilizzati per l’ARP poisoning come software di attacco vengono trattati solitamente come strumenti di sicurezza e sono disponibili in rete liberamente. Gli amministratori possono verificare grazie ai programmi la propria rete e proteggersi contro gli schemi di attacco comuni. Tra le applicazioni più conosciute rientrano ARP0c/WCI, Arpoison, Cain&Abel, Dsniff, Ettercap, FaceNiff e NetCut.

  • ARP0c/WCI: secondo la pagina del servizio, ARP0c/WCI è un tool che utilizza l’ARP spoofing per intercettare le connessioni in una rete privata. Così il software invia pacchetti di risposta ARP falsi, che devia il traffico dati sul sistema, funzionante su ARP0c/WCI. Un reindirizzamento al sistema di destinazione vero e proprio avviene tramite il bridging engine integrato. I pacchetti che non vengono consegnati in locale, vengono inoltrati da ARP0c/WCI al router corrispondente. Un attacco man in the middle avviene così indisturbato. Il programma è quindi disponibile sia per Linux che per Windows e può essere scaricato gratuitamente sulla pagina del servizio. 
  • Arpoison: il tool da riga di comando Arpoison genera dei pacchetti ARP personalizzati, in cui l’utente può stabilire a piacere l’indirizzo del mittente e del destinatario. Arpoison si può così utilizzare nelle analisi di rete, ma viene però usato anche come software per attacchi hacker. Lo strumento è disponibile liberamente e con licenza GNU.
  • Cain&Abel: il programma Cain&Abel, creato per recuperare le password, offre anche la possibilità di ascoltare le reti e di decifrare le password crittografate. A partire dalla versione 2.5, il software comprende anche funzioni di ARP poisoning con le quali si può intercettare il traffico IP negli switch delle LAN. Anche le connessioni SSH e HTTPS non rappresentano un ostacolo per Cain&Abel. Per l’analisi del traffico di rete Wi-Fi, Cain&Abel supporta a partire dalla versione 4.0 l’AirPcap Adapter, che consente di spiare passivamente il traffico dati nelle reti Wi-Fi. Gli attacchi contro le reti senza fili WPA sono possibili a partire dalla versione 4.9.1.
  • Dsniff: Dsniff è una raccolta di programmi che mette a disposizione diversi strumenti per l’analisi di rete e i penetration test. Con Dsniff, Filesnarf, Mailsnarf, Msgsnarf, Urlsnarf e Webspy si possono ascoltare le reti e intercettare file, e-mail o password. Arpspoof, Dnsspoof e Macof consentono di rintracciare dati che non sono solitamente accessibili nelle reti switchate. Gli attacchi man in the middle sulle connessioni SSH e quelle crittografate SSL/TLS si possono realizzare con i programmi Sshmitm e Webmitm.
  • Ettercap: Ettercap è un tool di ARP poisoning facile da utilizzare che viene usato soprattutto per gli attacchi man in the middle. Il software supporta diverse distribuzioni Linux e Mac OS X (Snow Leopard, Lion); è possibile anche installarlo su Windows, ma sono richieste delle impostazioni aggiuntive. Oltre all’uso tramite console, gli utenti hanno a disposizione il front end ncurses e l’interfaccia grafica (GUI) GTK2. È possibile automatizzare azioni come quelle di sniffing, degli attacchi ARP e della raccolta di password. Ettercap può manipolare i dati intercettati e attacca anche le connessioni che sono protette tramite SSH o protocollo SSL. Il programma viene ufficialmente offerto come software per la sicurezza e funziona anche per i test di prodotti.
  • FaceNiff: l’app per Android FaceNiff consente agli utenti di spiare i cookie di sessione nelle reti Wi-Fi e di prendere il controllo delle sessioni. Gli hacker utilizzano il tool per hackerare gli account Facebook, Amazon e Twitter, indipendentemente che la rete senza fili sia accessibile liberamente o sia cifrata tramite WEP, WPA-PSK o WPA2-PSK. Sia il protocollo di autentificazione EAP (Extensible Authentication Protocol) che quello SSL offrono però una protezione sicura contro FaceNiff. Il software Android si basa sull’estensione di Firefox Firesheep e viene utilizzato sugli smartphone in combinazione con il browser Stock preinstallato.
  • NetCut: con il software per la gestione di rete NetCut gli amministratori si occupano della loro rete basata sul protocollo ARP. Lo strumento individua tutti i dispositivi connessi in rete e restituisce i relativi indirizzi MAC. Basta un semplice click su uno degli indirizzi elencati per separare il dispositivo coinvolto dalla rete. NetCut è particolarmente indicato per gli attacchi DoS, a patto che l’hacker si trovi nella stessa rete della vittima. Con il software non si possono realizzare gli attacchi man in the middle.

ARP poisoning e crittografia

Se un hacker riesce a intrufolarsi senza farsi notare tra due sistemi comunicativi, ha campo libero nelle connessioni non protette. Visto che l’intera comunicazione di una connessione hackerata funziona attraverso il sistema dell’hacker, questo può spiare a piacere i dati e manipolarli. Le tecniche di crittografia e i certificati per l’autentificazione promettono una protezione contro lo spionaggio dei dati. Se un hacker intercetta solo i dati codificati, i danni si limitano nel peggiore dei casi a un Denial of Service attraverso i pacchetti rifiutati. La premessa per una crittografia dei dati attendibile però è che questa venga applicata conseguentemente.

Innumerevoli tool che vengono utilizzati per gli attacchi man in the middle offrono, oltre alle funzioni di ARP poisoning, anche un’implementazione client e server per i protocolli SSL/TLS, SSH e altri protocolli di crittografia, che riescono così a imitare i certificati corrispondenti e a instaurare connessioni crittografate. Così Cain&Abel simula ad esempio un web server SSL che trasmette al sistema della vittima un certificato SSL non attendibile. In questo modo i partecipanti della rete ricevono in questo caso un messaggio di avvertenza sulla sicurezza che viene però spesso ignorato dagli utenti o interpretato in maniera errata. Sarebbe perciò auspicabile che i corsi sulla sicurezza delle reti comprendessero nel loro programma anche un utilizzo responsabile dei certificati digitali.

Contromisure

Praticamente tutte le reti IPv4 sono soggette ad attacchi di questo tipo perché l’ARP spoofing utilizza a proprio vantaggio il funzionamento dell’Address Resolution Protocol. Nemmeno l’introduzione degli indirizzi IPv6 è riuscito a risolvere questo problema. Il nuovo standard IP rinuncia infatti all’ARP e regola la risoluzione dell’indirizzo nella LAN tramite NDP (Neighbor Discovery Protocol), che è però a sua volta soggetto ad attacchi di spoofing. Si può risolvere questa falla di sicurezza tramite il protocollo Secure Neighbor Discovery (SEND), tuttavia tenendo in conto che è supportato ancora da pochi sistemi operativi per il desktop.

Una protezione possibile per impedire la manipolazione della cache ARP è offerta dalle tabelle ARP che si possono ad esempio impostare su Windows tramite il programma della riga di comando ARP e l’istruzione arp –s. Visto che non si devono modificare manualmente i record di questo tipo, questa misura preventiva si limita solitamente ai sistemi più importanti della rete.

Un’altra misura contro l’uso indebito del protocollo ARP è rappresentata dalla suddivisione della rete tramite gli switch del livello 3. Le risposte broadcast raggiungono così incontrollate solo i sistemi che si trovano nello stesso segmento di rete, mentre le richieste ARP negli altri segmenti vengono verificati dallo switch. Se questo switch è in funzione sul livello di rete (livello 3), accanto all’indirizzo MAC viene verificato e portato allo stesso stato anche l’indirizzo IP con i record precedenti.

Se saltano agli occhi incongruenze o avvengono frequentemente nuove riattribuzioni, lo switch suona il campanello d’allarme. L’hardware necessario richiede però dei costi di realizzazione elevati e quindi gli amministratori devono ponderare se puntare su una maggiore sicurezza giustifichi l’ingente spesa. Al contrario, non sono adatti i molto più economici switch del livello 2, i quali lavorano sul livello di collegamento e registrano una modifica dell’indirizzo MAC, ma al contempo fanno passare inosservata l’assegnazione del rispettivo indirizzo IP.

Diversi produttori di software offrono anche dei programmi di monitoring con i quali si possono controllare le reti e rilevare i procedimenti ARP insoliti. Alcuni tool famosi sono il software open source Arpwatch, ARP Guard e XArp. Inoltre si possono impostare degli Intrusion Detection Systems come Snort, per controllare la risoluzione dell’indirizzo tramite ARP.

  • Arpwatch: se lo strumento open source e multipiattaforma Arpwatch viene integrato in una rete locale IPv4, vengono mostrate continuamente tutte le attività ARP che si svolgono nella LAN. Tutti i pacchetti ARP in entrata rilevano dal programma le informazioni dell’indirizzo fornite e le salvano in un database centrale. Se qui si trovano dei record più vecchi che non coincidono con i dati attualmente trasmessi, il programma invia un avviso per e-mail all’amministratore. Questo procedimento è efficace, ma si adatta solo alle reti con indirizzi IP statici. Se gli IP della LAN vengono distribuiti dinamicamente attraverso un server DHCP, ogni modifica dell’assegnazione dell’indirizzo IP/MAC porta ad un messaggio di avviso.
  • ARP-Guardhttps://www.isl.de/en/arp-guard/product.html: anche ARP Guard dell’azienda ISL osserva la rete interna e si basa così su due diversi sensori. Il sensore LAN lavora analogamente come Arpwatch, quindi analizza i pacchetti in entrata e avvisa in presenza di anomalie. Inoltre l’architettura della gestione del sensore del software dispone di un sensore SNMP che accede tramite il Simple Network Management Protocol (SNMP) ai dispositivi connessi nella LAN e scansiona le sue tabelle ARP. Così non solo si possono localizzare gli attacchi ARP, ma ci si può anche difendere. La gestione degli indirizzi integrata consente inoltre di rintracciare i dispositivi indesiderati e di impedirne l’accesso alla rete.
  • XArp: il software XArp si basa su moduli attivi e passivi per proteggere la rete dall’ARP poisoning. I moduli passivi analizzano i pacchetti ARP, che vengono inviati in rete e aggiornano l’assegnazione dell’indirizzo forniti con i record più vecchi. Se così facendo vengono riscontrate delle anomalie, il programma suona l’allarme. Così ci si basa sul meccanismo di controllo sulle analisi statistiche e si verifica il traffico di rete grazie a diversi schemi che gli sviluppatori segnalano sulla base degli attacchi ARP. La sensibilità di questo filtro di traffico dati si può adattare per gradi. I moduli attivi del software inviano dei propri pacchetti alla rete per validare le tabelle ARP dei dispositivi raggiungibili e compilarle con dei record validi.

Anche l’Intrusion Detection System (IDS) Snort dispone di un preprocessore integrato contro l’ARP spoofing che consente di controllare il traffico dati nella rete e di creare manualmente delle liste di comparazione. Tale metodo risulta però faticoso rispetto ad altri.

Inoltre i sistemi IDS vengono soprattutto utilizzati nella transizione dalle reti esterne. Se vale la pena di utilizzarli anche in una rete LAN, deve venir stabilito caso per caso. A volte una misura simile può incontrare delle resistenze, perché in un’azienda un amministratore che controlla la rete tramite IDS ha accesso a tutto il traffico di rete e quindi è in grado di sorvegliare tutte le attività dei dipendenti. Per questo motivo si tende a non ricorrere a questa funzione di controllo.