Come difendersi da ARP Spoofing e rilevare un attacco con Python
L ARP Spoofing e un attacco che sfrutta la mancanza di autenticazione del protocollo ARP per falsificare le associazioni IP MAC nella rete locale. In questo modo un attaccante puo intercettare, modificare o bloccare il traffico.
In questa guida vedremo come difendersi e come utilizzare uno script Python per scoprire se si e sotto attacco.
🛡 Difendersi da ARP Spoofing
Usare sempre HTTPS e VPN
La prima difesa consiste nell usare protocolli cifrati:
- HTTPS impedisce la lettura dei dati intercettati.
- Una VPN cifra tutto il traffico tra dispositivo e server VPN.
Abilitare funzioni di sicurezza sulla rete
Router e switch professionali includono funzioni che bloccano ARP falsificati:
- Dynamic ARP Inspection DAI
- DHCP Snooping
- Port Security
Configurare ARP statico per dispositivi critici
Per gateway, router o server fondamentali e possibile impostare a livello di sistema le associazioni IP MAC statiche, rendendo inefficace l avvelenamento ARP.
Segmentare la rete con VLAN
Le VLAN separano gli host in gruppi isolati. Un attaccante in una VLAN non puo facilmente attaccare host in un altra.
Usare strumenti di rilevamento
E possibile utilizzare software di difesa come Arpwatch, Wireshark oppure script Python personalizzati.
🐍 Codice Python per rilevare ARP Spoofing
Il seguente script utilizza la libreria Scapy per rilevare variazioni anomale nella tabella ARP. Se un IP cambia MAC address, viene segnalato un possibile attacco.
Installazione di Scapy
Installa Scapy con il seguente comando:
pip install scapy
Codice Python
from scapy.all import ARP, sniff
arp_table = {}
def rileva_spoof(packet):
if packet.haslayer(ARP) and packet[ARP].op == 2:
ip = packet[ARP].psrc
mac = packet[ARP].hwsrc
if ip in arp_table:
if arp_table[ip] != mac:
print("[ALLERTA] Possibile ARP Spoofing rilevato")
print(f"IP: {ip}")
print(f"MAC precedente: {arp_table[ip]}")
print(f"MAC attuale: {mac}")
else:
arp_table[ip] = mac
print("Monitoraggio ARP in corso, usa CTRL+C per interrompere")
sniff(store=False, prn=rileva_spoof)
🛠 Istruzioni su come usare lo script Python
1. Esecuzione del programma
Salva lo script in un file chiamato per esempio:
- rileva_arp.py
Poi eseguilo dal terminale con:
sudo python3 rileva_arp.py
Su Windows potrebbe essere necessario eseguirlo come amministratore.
2. Permessi necessari
Lo script richiede permessi elevati per sniffare il traffico:
- su Linux e macOS usa sudo
- su Windows esegui il terminale come amministratore
3. Cosa controllare nei risultati
Se durante il monitoraggio compare un messaggio simile:
[ALLERTA] Possibile ARP Spoofing rilevato
IP: 192.168.1.1
MAC precedente: 11:22:33:44:55:66
MAC attuale: AA:BB:CC:DD:EE:FF
allora e altamente probabile che:
- qualcuno stia falsificando le risposte ARP
- l IP indicato sia stato avvelenato
- un dispositivo stia intercettando il traffico
4. Quando fermare il monitoraggio
Lo script rimane in ascolto fino a quando non premi:
- CTRL C
🔍 Conclusioni
L ARP Spoofing e una delle tecniche piu diffuse per eseguire attacchi man in the middle nelle reti locali. Utilizzando HTTPS, VPN, dispositivi di rete configurati correttamente e strumenti di monitoraggio come lo script Python mostrato, e possibile individuare e prevenire tempestivamente questi attacchi.
Lo script e leggero, immediato e ideale per controllare in tempo reale la propria rete alla ricerca di anomalie ARP.