ARP Cache Poisoning

Introduzione

Come ben sappiamo i computers all’interno di una rete LAN comunicano tra di loro usufruendo delle schede di rete collegate agli switch o hub.

Lo switch è un dispositivo in grado di instradare i pacchetti di dati in modo logico, ovvero distribuisce al singolo pc i soli dati che ha richiesto (a livello di protocolli), evitando di fatto un invio su tutte le macchine (broadcast) come invece fa un hub.

E’ chiaro che analizzando il traffico di un pc collegato ad un hub, a differenza dello switch, è possibile rilevare dati sensibili destinati ad altri computer della rete.

Per aggirare l’instradamento degli switach è stata creato l’attacco ARP Cache Poisoning.

ARP Cache Poisoning è una tecnica, facente parte della famiglia “Man in the middle”, utilizzata per redirigere o intercettare il traffico tra due computer/dispositivi all’interno di una rete LAN.

Per un penetration tester è importante conoscere gli attacchi man in the middle (MiM o MITM) perchè sicuramente si troverà a dover analizzare il livello di sicurezza di una rete aziendale.

Basi ARP

In una rete LAN quando due dispositivi vogliono comunicare tra di loro tramite host, FQDN (Fully Qualified Domain Name), o IP devono prima sapere quale è l’indirizzo MAC (Media Access Control) delle corrispettive schede di rete (NIC – Network Interface Card).

Per compiere questa azione i dispositivi di rete usufruiscono del protocollo ARP (Address Resolution Protocol).

Esempio:

Nella rete lan 192.168.0.0/255.255.255.0 c’è un pc con un client ftp ed indirzzo ip 10.0.0.11 (Win_Client) che si vuole collegare verso il server linux 10.0.0.10 (Linux_Server).

Win_Client tramite protocollo ARP manda una richiesta broadcast chiedendo: Chi è il dispositivo che ha l’indirizzo ip 10.0.0.10 ?

Linux_Server risponde: Io ho l’indirizzo 10.0.0.10 e il mio MAC address è: 00:1C:B3:09:85:15

La cache arp del dispositivo Win_Client conterrà la corrispondenza IP -> MAC Address fino al successivo aggiornamento.

Il tempo di timeout della cache arp varia dalla tipologia di dispositivo e sistema operativo, ma sono tempistiche brevi.

Fino a quando la cache conterrà informazioni su un determinato indirizzo ip, il dispositivo non andrà a richiedere il corrispondente mac address al broadcast di rete.

ARP Cache Poisoning – Teoria

Immaginiamo lo scenario in cui un malintenzionato vuole sfruttare la tecnica ARP Cache Poisoning, comunemente chiamata ARP Spoofing, per rubare le credenziali d’accesso che il client ftp (Win_Client) utilizzerà per collegarsi verso il server (Linux_Server).

A questo punto gli attori del film “ARP Spoofing” sono tre:

  1. Win_Client -> Obbiettivo a cui intercettare il traffico (IP: 10.0.0.11 MAC: 0F:2C:56:01:63:32)

2) Linux_Server – > Server al quale si collegherà l’obbiettivo (IP: 10.0.0.10 MAC: 00:1C:B3:09:85:15)

  1. Back_Box -> Malintenzionato che intercetterà il traffico dell’obbiettivo (IP: 10.0.0.56 MAC: 00:8E:C2:07:85:11)

Il computer Back_Box tramite un tool di arp spoofing comincerà a spedire reiteratamente pacchetti arp al computer Win_Client facendogli credere che l’indirizzo MAC address del server ftp Linux_Server sia 00:8E:C2:07:85:11 (MAC Back_Box) invece che 00:1C:B3:09:85:15 (MAC Linux_Server).
La stessa azione verrà effettuta verso il server Linux_Server facendogli credere che l’indirizzo MAC address del client Win_Client sia 00:8E:C2:07:85:11 (MAC Back_Box) invece che 0F:2C:56:01:63:32 (MAC Win_Client).
Le cache arp del computer Win_Client e del server Linux_Server saranno costantemente bombardate e aggiornate con l’indirizzo MAC del computer Back_Box.

Quando Win_Client si collegherà al server ftp ed interrogherà la sua cache arp verrà instradato verso il computer Back_Box il quale, tramite forward, instraderà la connessione alla destinazione originale (Linux_Server).

I pacchetti che torneranno indietro avranno la stessa sorte: Linux_Server -> Back_Box -> Win_Client .

Analizzando questo scenario possiamo tratte la conclusione che il computer Back_Box, tramite un programma packet sniffer, sarà in grado di leggere in chiaro tutto il traffico prodotto tra i computer Win_Client e Linux_Server. Naturalmente questo non vale per i protocolli criptati, ma l’username e password FTP non risiedono tra questi.

ARP Cache Poisoning – Pratica

Arpspoof è un tool già presente nelle distribuzioni Kalilinux o BackBox e viene utilizzato proprio per eseguire attacchi di tipo arp cache poisoning.

Prima di eseguire il programma si deve abilitare il forward dei pacchetti che passaranno dalla sche di rete della macchina Back_Box :

root@backbox3:/home/claudio/Desktop# echo 1 > /proc/sys/net/ipv4/ip_forward

Configurato il forward è necessario aprire due terminali, nel primo digiteremo:

root@backbox3:/home/claudio/Desktop# arpspoof -i eth0 -t 10.0.0.11 10.0.0.10

Nel secondo:

root@backbox3:/home/claudio/Desktop# arpspoof -i eth0 -t 10.0.0.11 10.0.0.11

L’opzione “-i” di arpspoof serve a specificare l’interfaccia su cui deve agire il programma, mentre “-t” per specificare l’indirizzo ip dell’obbiettivo.

Con il primo comando  faremo credere a Win_Client che l’inidrizzo mac  della nostra macchina (Back_Box) in realtà sia quello del  Linux_Server, al contrario, col secondo comando faremo credere al Linux_Server che l’inidrizzo mac  della nostra macchina (Back_Box) in realtà sia quello del Win_Client.

Adesso tutti i pacchetti che transiteranno in LAN tra il Win_Client e il Linux_Server attraverseranno la scheda di rete della macchina Back_Box.

ARP Cache Poisoning – Sniffing

Lo scopo dell arp spoofing è quello di catturare il traffico di una determinata macchina in modo da poterne carpire informazioni o dati sensibili.

Utilizzano un software d’analisi dei protocolli, come ad esempio Wireshark, è possibile visualizzare e ricostruire tutto il traffico che passa in chiaro (non criptato) dalla propria scheda di rete.

Apriamolo sulla nostra Back_Box e dal menu in alto clicchiamo sul menu “Capture” e poi “Options“.

Nella finestra delle opzioni è necessario spuntare l’interfaccia di rete che vogliamo analizzare (eth0), rimuovere la spunta da “Use promiscuous mode on all interfaces” (in questo modo si evita di vedere traffico in eccesso, soprattutto se state testando il tutto da più macchine virtuali nello stesso player), e premere il bottone “START“.

A questo punto eseguami una sessione FTP dal Win_Client al Linux_Server con l’uername “georgia” e la pass “password“, tornando sulla schermata di Wireshark vedremo:

ARP Cache Poisoning

Il risultato è sorprendente, è possibile vedere tutto il contenuto della transizione tra il client e server ftp compreso username e password!

ARP Cache Poisoning – Soluzioni

Qui di seguito elencherò una serie di contromisure minime da applicare all’interno della propria rete, meglio se contemporaneamente:

  1. Munirsi di switch con la funzione “Port Security“, in modo che per ciascuna porta del dispositivo possa esserci solo un MAC address.
  2. Installare un Intrusion Detection System (IDS) come ad esempio SNORT.
  3. Installare un ARP Monitor come arpwatch che permette di segnalare cambiamenti sospetti della rete.
  4. SARP ovvero Secure ARP, un’estensione del protocollo ARP che si basa sulla crittografia asimmetrica, così da poter autenticare il mittente.

ARP Cache Poisoning – Riferimenti

  1. Penetration Testing – Georgia Weidman

  2. ARP Poisoning – Wikipedia