In questo articolo verrà descritta la tecnica denominata ARP Cache Poisoning che consente ad un attaccante, in una lan commutata, di effettuare un attacco man-in-the-middle. Per prima cosa iniziamo illustrando il funzionamento del protocollo ARP.

Protocollo ARP

Il protocollo ARP è nato dall’esigenza di facilitare la comunicazione tra il secondo ed il terzo livello del modello OSI in modo da fornire una mappatura tra indirizzi IP e indirizzi MACinfatti quando un pacchetto IP viene spedito ad un calcolatore è necessario che questo sia incapsulato in un pacchetto di livello datalink che dovrà avere come indirizzo di destinazione il MAC address del calcolatore destinatario. Il protocollo ARP serve appunto per recuperare l’indirizzo MAC necessario al livello datalink a partire dall’indirizzo IP.

Il recupero di questo indirizzo avviene in due fasi, tramite un’ARP Request ed un’ARP Reply:

  • un’ARP Request viene inviata dal mittente a tutti gli host presenti sulla rete e contiene un messaggio del tipo: “Ciao, il mio ip è XXX.XXX.XXX.XXX ed il mio MAC address è YY:YY:YY:YY:YY:YY. Ho bisogno di inviare delle informazioni all’IP ZZZ.ZZZ.ZZZ.ZZZ ma non conosco il suo MAC address. Chiunque abbia l’ip da me indicato può rispondermi indicandomi il proprio MAC Address?”;

ARP Cache Poisoning

  • un’ARP Reply con la risposta all’ARP Request precedentemente inviata viene inviata dal destinatario indicando IP e MAC address.

ARP Cache Poisoning

 

Una volta terminata questa procedura, il mittente aggiorna la sua tabella ARP dove conserva in cache le risposte ricevute.

 

Avvelenamento della tabella ARP

L’avvelenamento o meglio ancora modifica della tabella ARP si basa sulla natura insicura del protocollo ARP: i dispositivi che utilizzano ARP accettano risposte in qualsiasi momento (anche se non è stata generata precedentemente una richiesta specifica) e questo significa che qualsiasi dispositivo può inviare delle risposte ARP ad altri dispositivi presenti in rete con l’intenzione di modificargli la tabella ARP a proprio piacimento, in particolare in modo tale da poter ascoltare il traffico passante sulla rete.ARP Cache Poisoning

Dimostrazione pratica

La situazione descritta sopra è sperimentabile in una rete in cui siano presenti almeno due PC. Si prenda in considerazione, per esempio, uno scenario in cui siano presenti un apparato di rete (che agisce da gateway), un host vittima ed un attaccante (che indicheremo con la sigla mitm: man-in-the-middle).

Prima del poisoning

GW 192.168.1.1 MAC AA:BB:CC:DD:EE:FF

MITM 192.168.1.36 MAC 00:11:22:33:44:55

Vittima 192.168.1.219 MAC FE:EF:FE:EF:FE:EF

Digitando arp -a (OS: windows 8.1) sul sistema della vittima otteniamo il seguente risultato

Interfaccia: 192.168.1.219 --- 0xe

Indirizzo Internet Indirizzo fisico Tipo

192.168.1.1 AA:BB:CC:DD:EE:FF dinamico

Supponiamo per comodità che il mitm stia usando un sistema linux, basterà digitare i seguenti comandi per mettere in atto il poisoning della tabella ARP

echo 1 > /proc/sys/net/ipv4/ip_forward (abilitiamo il forward dei pacchetti)

e usufruendo di arpspoof digitiamo il seguente comando:

arpspoof -t 192.168.1.219 192.168.1.1

Ora tutti i pacchetti originati della vittima (192.168.1.219) e diretti al gateway (192.168.1.1) in realtà saranno reindirizzati al mitm. Andando infatti a controllare l’ARP table della vittima scopriremo quanto riportato di seguito:

arp -a (OS: windows 8.1)

Interfaccia: 192.168.1.219 --- 0xe

Indirizzo Internet Indirizzo fisico Tipo

192.168.1.1 00:11:22:33:44:55 dinamico

I pacchetti quindi indirizzati al gateway saranno spediti al mac address del mitm che potrà quindi catturarli tramite programmi come tcpdump o wireshark.

 

Riferimenti:

[1] https://it.wikipedia.org/wiki/ARP_poisoning

[2] http://www.windowsecurity.com/articles-tutorials/authentication_and_encryption/Understanding-Man-in-the-Middle-Attacks-ARP-Part1.html

Facebooktwitterredditpinterestlinkedinmail