Ethical Hacker con AI

Python per ARP spoofing

Codice Python per verificare se si è sotto attacco

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.

Livio Bollini
Walter Livio Bollini

Matematico & Informatico · Intelligenza Artificiale · Sviluppo Web