L'ARP Poisoning (o ARP spoofing) è un attacco di rete in cui un malintenzionato invia falsi messaggi ARP (Address Resolution Protocol) per associare il proprio indirizzo MAC all'indirizzo IP di un altro dispositivo, permettendogli di intercettare, modificare o interrompere il traffico di rete tra i dispositivi target.
Per effettuare un attacco di questo tipo, bisogna creare un ambiente ISOLATO in cui configurare due VMs Kali Linux (KaliAttacker e KaliVictim), uno Switch per connettere le due macchine e un Router, il quale sarà il default gateway per entrambi i dispositivi.
Supponiamo che la GNS3 VM sia già correttamente configurata e che il router sia già stato aggiunto ai nodi di GNS3.

Innanzitutto, bisogna configurare l'ambiente. Per quanto riguarda le macchine virtuali, utilizziamo una piattaforma di virtualizzazione (personalmente ho utilizzato VirtualBox, ma qualsiasi sw è ben accetto) per creare le macchine virtuali necessarie all'attacco.
Aggiungiamo le macchine virtuali dalla sezione 'Preferences' in 'Edit', andiamo su 'VirtualBox VMs' (1) e clicchiamo su 'New' (2), 'Next' e poi selezioniamo la nostra macchina virtuale (3), dopodiché clicchiamo Finish (4):

Ora andiamo alla sezione Edit premendo l'apposito pulsante in basso a destra (5).
Si aprirà un menù a tendina, e dobbiamo spuntare 'Allow GNS3 to use any configured VirtualBox adapter' nella sezione Network (6). In questo modo, GNS3 ha il permesso di utilizzare qualsiasi adattatore di rete configurato nella VM in VirtualBox Questo include adattatori in modalità bridge, NAT, host-only, ecc. Abilitando questa opzione, GNS3 può automaticamente scegliere l'adattatore di rete più appropriato disponibile per la topologia, offrendo maggiore flessibilità nella configurazione delle connessioni di rete tra i nodi virtuali.
Premiamo 'OK' per confermare le modifiche (7):

Fatto ciò, usciamo dal menù Edit premendo 'Apply' e successivamente 'OK'.
Adesso siamo pronti ad importare le nostre macchine virtuali nella topologia di rete.
Ipotizzando di avere già creato un progetto, aggiungiamo le VMs alla nostra topologia con un semplice Drag&Drop sul pannello del progetto.
Questo sarà il risultato:
Aggiungiamo allo stesso modo uno Switch e un Router e colleghiamo tra loro le componenti. NOTA: Per questo esempio, le configurazioni sono le seguenti:
- KaliVictim: eth0 < = > eth0 Switch
- KaliAttacker: eth0 < = > eth1 Switch
- Switch: eth0 < = > eth0 KaliVictim eth1 < = > eth0 KaliAttacker eth2 < = > fa0/0 Router
- Router: fa0/0 < = > eth2 Switch
A questo punto non resta che avviare tutti i nodi premendo play in alto:
Si avvieranno automaticamente anche le VMs, e ora non resta che impostare i rispettivi indirizzi statici.
Per fare ciò, andiamo nel terminale delle singole VM e digitiamo il seguente comando:
sudo nano /etc/network/interfacesIn questo modo si accede al file che definisce tutte le interfacce di rete della macchina. Aggiungiamo dunque un nuovo record all'interno di questo file :
auto eth0
iface eth0 inet static
address 192.168.1.101 #IP Vittima
netmask 255.255.255.0
gateway 192.168.1.1 #IP fa0/0 RouterAnalogo per l'attaccante, ma con IP 192.168.1.102 (sono IP di esempio).
Salviamo e chiudiamo il file. Riavviamo l'interfaccia di rete con il seguente comando:
sudo systemctl restart networkingPer verificare la modifica, andiamo a digitare il seguente comando:
ifconfigSe è andato tutto bene, dovremmo vedere che eth0 è configurato con l'IP che le abbiamo dato.

NOTA: Facciamo molta attenzione al MAC address dell'attaccante, perché servirà notarlo durante l'esecuzione dell'attacco:
ether 08:00:27:a3:d5:48Per quanto riguarda il Router, dobbiamo configurare la sua interfaccia fa0/0 in modo che abbia l'indirizzo IP che abbiamo impostato.
Per fare ciò dobbiamo aprire la console del Router da GNS3 (facendo doppio click sull'icona oppure tasto destro, 'Console') ed eseguire una serie di comandi, che ho riportato nel seguente screenshot:

Come possiamo notare, l'IP di fa0/0 è stato impostato correttamente, e ora le macchine virtuali riescono a vedere il router.
Per confermare ciò, basta fare un ping al router e osservare che effettivamente è raggiungibile:
Riprendiamo la topologia di rete:
Ora apriamo la macchina virtuale dell'attaccante (KaliAttacker), apriamo un terminale e digitiamo:
sudo ettercap -G #Per aprire ettercap in modalità graficaVedremo aprirsi una finestra sul Desktop. Clicchiamo sulla spunta per far partire lo sniffing:

Ora apriamo apriamo il menù a tendina cliccando sui tre pallini e selezioniamo e 'Hosts', poi 'Scan for hosts'.
Dopo la scansione, riapriamo il menù a tendina e clicchiamo su 'Hosts', dunque 'Hosts list'.
Ecco che troveremo due host, uno è il router (Router, 192.168.1.1), l'altro è la vittima (KaliVictim, 192.168.1.101):
Selezionamo la macchina virtuale KaliVictim e impostiamolo come Target 1. Aggiungiamo invece il Router come Target 2.
Ora clicchiamo sull'icona del globo in alto a destra, selezioniamo 'ARP Poisoning' e poi premiamo 'OK':
A questo punto l'attacco ha inizio!
Vediamo ora nel dettaglio cosa succede durante l'attacco...
Per poter osservare gli effetti dell'attacco, abbiamo bisogno di un software che ci consenta di fare Sniffing sulle singole interfacce di rete (nel nostro caso eth0 per entrambe le VM) e di analizzare i pacchetti. Prendiamo come esempio Wireshark. Avviamo Wireshark sia sulla macchina attaccante sia sulla macchina vittima, selezioniamo l'interfaccia eth0 e avviamo la cattura.
KaliAttacker:
Vediamo chiaramente una coppia di pacchetti che viene periodicamente inviata dall'attaccante.
Il primo pacchetto serve per far sì che la vittima sia convinta che il router possegga come MAC Address 08:00:27:a3:d5:48, che è in realtà il MAC Address della scheda di rete di KaliAttacker.
In questo modo, tutto il traffico che dovrebbe essere indirizzato al router passa prima per l'attaccante, e poi arriva tramite lui al router.
Il secondo pacchetto, invece, server per far sì che il router sia convinto che la vittima possegga come MAC Address 08:00:27:a3:d5:48, che è in realtà il MAC Address della scheda di rete di KaliAttacker.
In questo modo, tutto il traffico che dovrebbe essere inviato direttamente a KaliVictim passa prima per KaliAttacker, e poi arriva tramite lui al router.
KaliVictim:
La vittima, invece, riceve periodicamente lo stesso pacchetto, che è inviato dall'attaccante per indurla a credere che il router abbia 08:00:27:a3:d5:48 come MAC Address, che sappiamo essere il MAC Address della scheda di rete di KaliAttacker.
Le conseguenze le abbiamo espresse poc'anzi.
Per verificare la riuscita dell'attacco, proviamo a effettuare un ping da KaliVictim verso il router:
ping 192.168.1.1KaliVictim:
La vittima è convinta di pingare il router, ma come possiamo vedere sta parlando direttamente con l'attaccante:
KaliAttacker:
L'attaccante, d'altro canto, risponde al ping come se fosse il router.
Notare come l'attaccante faccia un ping a sua volta verso il router, per poter poi rispondere alla vittima:
Formalmente, per notare che l'attacco ha avuto effetto è utile andare ad analizzare le tabelle ARP di KaliAttacker e KaliVictim.
KaliVictim:
La vittima si ritrova con due indirizzi IP diversi associati allo stesso MAC Address.
KaliAttacker:
La tabella ARP dell'attaccante non viene in alcun modo modificata durante l'attacco.