Vai al contenuto

Anatomia di un attacco ARP Poisoning

Gli hacker abili possono mentire sia alle persone che alle macchine. Mentire alle persone significa applicare dei metodi di ingegneria sociale sul comportamento individuale di una persona al fine di carpire informazioni utili, ad esempio, fingersi dipendente di una società affinchè gli altri dipendenti spifferino liberamente i segreti aziendali. Mentire alle macchine comporta invece applicare delle tecniche diverse, comunemente chiamate ARP Poisoning (o ARP Spoofing), che è l’argomento principale di questo articolo. L’avvelenamento ARP consente agli hacker di causare caos nella rete. Essendo un male quasi “incurabile”, ogni amministratore di rete dovrebbe essere consapevole di come funziona questo attacco.

ARP

L’ARP, Address Resolution Protocol è il meccanismo che associa gli indirizzi MAC agli indirizzi IP in modo che i dispositivo connessi in rete possano comunicare tra di loro. L’ARP consiste in un protocollo molto semplice, con soli quattro tipi di messaggi di base:

  1. La richiesta ARP. Il computer A chiede alla rete, “Chi ha questo indirizzo IP?”
  2. La risposta ARP. Il computer B dice al computer A, “Io ho quell’IP. Il mio indirizzo MAC è [qualunque esso sia].”
  3. La richiesta Reverse ARP (RARP). Stesso concetto della richiesta ARP, ma il computer A chiede, “Chi ha questo indirizzo MAC?”
  4. La risposta RARP. Il computer B dice al computer A, “Io ho quell’indirizzo MAC. Il mio indirizzo IP è [qualunque esso sia]”

Tutti i dispositivi di rete hanno una tabella ARP, una memoria a breve termine di tutti gli indirizzi IP abbinati agli indirizzi MAC dei dispositivi. La tabella ARP assicura che il dispositivo non deve ripetere la richiesta ARP per i dispositivi con cui ha già comunicato.

Ecco un esempio di una comunicazione normale ARP. Jessica, la receptionist, dice a Word di stampare l’ultima versione dell’elenco dei contatti aziendali. E’ il suo primo lavoro di stampa di oggi. Il suo computer (con indirizzo IP 192.168.0.16) vuole inviare il lavoro di stampa alla stampante HP LaserJet dell’ufficio (indirizzo IP 192.168.0.45). Quindi, il computer di Jessica trasmette una richiesta ARP a tutta la rete locale chiedendo: “Chi ha l’indirizzo IP 192.168.0.45?” come si vede nella Figura 1.

ARPpoison1

Tutti i dispositivi sulla rete ignorano la richiesta ARP, fatta eccezione per la stampante HP LaserJet. La stampante riconosce il proprio IP nella richiesta e invia una risposta ARP: “Ehi, il mio indirizzo IP è 192.168.0.45. Questo è il mio indirizzo MAC: 00:90:7F:12:DE:7F”, come in Figura 2.

ARPpoison2

Ora il computer di Jessica conosce l’indirizzo MAC della stampante: invia il processo di stampa al dispositivo corretto e nel frattempo associa l’indirizzo MAC della stampante di 00:90:7F:12:DE:7F con l’indirizzo IP della stampante 192.168.0.45 nella sua (del PC di Jessiva) tabella ARP in modo da pescare l’IP direttamente dalla tabella anzichè rifare una richiesta ARP.

Computer creduloni

I progettisti delle reti probabilmente hanno semplificato il processo di comunicazione del protocollo ARP in modo che funzionasse in modo efficiente tra tutti i dispositivi. Purtroppo, questa semplicità porta anche ad una maggiore insicurezza. Sapete perché in questo articolo, ad esempio, non si parla di autenticazione ARP? Perchè in ARP non vengono utilizzati!

Diciamo solo che ARP è fiducioso, o se vogliamo, credulone. Quando un dispositivo di rete invia una richiesta ARP, semplicemente si fida del dispositivo che ha inviato la risposta ARP. In reatà non c’è nessun modo, per ARP, di verificare che il dispositivo che risponde sia davvero chi dice di essere. In realtà, molti sistemi operativi implementano il sistema ARP in modo così fiducioso che i dispositivi che non hanno fatto richieste ARP “ereditano” le risposte ARP già effettuate dagli altri dispositivi.

Bene, mettetevi di un hacker malintenzionato. Hai appena appreso che il protocollo ARP non ha modo di verificare le risposte ARP. Hai capito che molti dispositivi accettano risposte ARP prima ancora di richiederle. Chi mi impedisce di creare una risposta ARP valida (ma dannosa) contenente un indirizzo IP e un MAC scelti arbitrariamente da me? Il computer vittima si fida ciecamente della risposta ARP che gli invio e la inserisce nella sua tabella ARP, in questo modo posso far credere al computer vittima che un qualsiasi IP è collegato a qualsiasi indirizzo MAC che voglio. Ancora meglio, posso trasmettere la mia finta risposta ARP a tutta la rete della vittima e ingannare tutti i suoi computer!

Probabilmente ora hai capito perché questa tecnica è comunemente chiamata “avvelenamento ARP” (ARP Poisoning): il dispositivo “attaccante” mente a un dispositivo sulla rete, corrompe o “avvelena” la sua comprensione di trovare gli altri dispositivi in rete. Questa semplice ma preoccupante procedura permette all’hacker di causare una serie di guai alla rete, alcuni dei quali descritti qui di seguito.

Attacchi alla rete

La possibilità di associare qualsiasi indirizzo IP a qualsiasi indirizzo MAC fornisce agli hacker molte possibilità di attacco, inclusi attacchi del tipo Denial of Service, Man in the Middle, e MAC Flooding.

Denial of Service

Un hacker può facilmente associare un indirizzo IP a un indirizzo MAC falso. Ad esempio, può inviare una risposta ARP associando l’indirizzo IP del router di rete con un indirizzo MAC che non esiste. I computer credono di sapere dove si trovi il gateway predefinito, ma in realtà stanno inviando i loro pacchetti dati a una destinazione non potrebbe stare al di fuori della rete locale. In una sola mossa, l’hacker ha tagliato la vostra rete da Internet.

Man in the Middle

Un hacker può sfruttare l’avvelenamento ARP intercettando il traffico di rete tra i due dispositivi in rete. Per esempio, diciamo che un hacker vuole vedere tutto il traffico tra il tuo computer (con IP 192.168.0.12) e il router (con IP 192.168.0.1). L’hacker invia una ARP Reply maligna (per la quale non vi è stata alcuna richiesta precedente) al router, che associa l’indirizzo MAC del suo computer con 192.168.0.12 (vedi Figura 3).

ARPpoison3

Ora il router pensa che il computer dell’hacker è il tuo computer. Successivamente, l’hacker invia una ARP Reply dannosa al tuo computer, associando il suo indirizzo MAC con 192.168.0.1 (vedi figura 4). Ora la tua macchina pensa che il computer dell’hacker è il tuo router.

ARPpoison4

Infine, l’hacker attiva una funzionalità del sistema operativo chiamato IP forwarding. Questa funzione consente alla macchina dell’hacker di inoltrare tutto il traffico di rete che riceve dal computer vittima al router (mostrato in Figura 5).

ARPpoison5

Ora, ogni volta che il tuo computer tenta di collegarsi ad Internet, il computer invia il traffico di rete al computer dell’hacker, poiché crede che sia il router. Il computer dell’hacker inoltra il traffico al router Internet e ai tuoi occhi tutto appare trasparente. L’utente (tu) rimane ignaro che un hacker sta intercettando i pacchetti dati e che forse sta “sniffando” le vostre password in chiaro…

MAC Flooding

Il MAC Flooding (letteralmente inondazione) è una tecnica di avvelenamento ARP finalizzata allo switching di rete. Alcuni switch quando sono sovraccarichi passano in una modalità “hub”. In questa modalità, lo switch è troppo occupato ad attivare i dispositivi di sicurezza e trasmette tutto il traffico di rete a tutti i computer della rete. Inondando la tabella ARP di uno switch con una tonnellata di ARP Reply fasulli, un hacker può sovraccaricare gli switch di molti produttori e quindi sniffare i pacchetti della rete mentre lo switch funziona in modalità “hub” poichè tutti i pacchetti vengono inviati anche al computer dell’hacker.

Come difendersi?

Tutto ciò sembra davvero spaventoso. L’ARP Poisoning può provocare significativi danni in una rete compromessa. Tuttavia, prima di passare a Defcon-7, bisogna avere ben chiaro un fattore importante: le debolezze del protocollo ARP possono essere sfruttate solo da computer connessi alla rete lovale. Quindi un hacker avrebbe bisogno dell’accesso fisico alla rete, o comunque del controllo di una macchina sulla rete locale, per far partire un attacco ARP. Le insicurezze di ARP non possono essere sfruttate da computer remoti.

L’ARP Poisoning è possibile a causa di una “mancanza” di sicurezza nel protocollo che comunque è necessario per il networking del protocollo TCP/IP, per cui non si può risolvere il problema. Tuttavia ci sono degli accorgimenti che possono essere utilizzati per prevenire un attacco ARP.

Per le piccole reti

Se si gestisce una piccola rete, si potrebbe provare a utilizzare indirizzi IP statici e tabelle ARP statiche. Utilizzando i comandi CLI, come “ipconfig / all” in Windows o “ifconfig” in UNIX, si può imparare l’indirizzo IP e l’indirizzo MAC di ogni dispositivo in rete. Poi, usando il comando “arp -s”, è possibile aggiungere delle voci ARP statiche per tutti i dispositivi noti. “Statico” significa immutabile; questo impedisce agli hacker di aggiungere nuovi record alla tabella ARP per i dispositivi della rete. È anche possibile creare uno script che aggiunge queste voci statiche all’avvio di ogni PC.

Tuttavia, le voci ARP statiche sono difficili da mantenere, impossibile nelle reti di grandi dimensioni. Infatti, ogni dispositivo che si aggiunge alla rete deve essere aggiunto manualmente allo script di aggiornamento della tabella ARP o, in mancanza, essere inserito nella tabella ARP di ogni macchina. In piccole reti di una decina di computer, questa tecnica potrebbe fare per voi.

Per le grandi reti

Se si gestisce una rete di grandi dimensioni, bisogna capire il funzionamento delle “Port Security” dello switch di rete. La “Port Security” forza lo switch affinchè a ciascun dispositivo della rete venga assegnato uno e un solo indirizzo MAC. Questa funzionalità impedisce agli hacker di cambiare l’indirizzo MAC della macchina o dal tentativo di mappare più di un indirizzo MAC per la loro macchina. Spesso può aiutare a prevenire gli attacchi basati ARP Man-in-the-Middle.

Per tutte le reti

La migliore difesa è capire l’ARP Poisoning e il monitoraggio su di esso. Esistono strumenti di monitoring, come arpwatch, che avvisa l’utente quando si verifica un’insolita comunicazione ARP. Questo tipo di monitoraggio resta l’arma più efficace contro tutti i tipi di attacco ARP – perché, come ha scritto Robert Louis Stevenson: “Le bugie più crudeli sono spesso detto in silenzio”.