tags: MITM burpsuite BurpSuite_MITM session_hijack manipolazione_sessione
Cosa copre questa nota Il workflow completo per intercettare e modificare il traffico di una vittima con un proxy intercettante (Caido nella guida CEH, Burp come alternativa), l'esempio classico dello swap di due siti (
moviescope.com⇄goodshopping.com), e — soprattutto — tutti i tranelli reali che bloccano l'esercizio: binding del listener, certificato CA, store di Firefox, CSS che si rompe, e il perché del warning TLS. Chiude con il quadro concettuale su TLS/MITM.
0. Modello mentale
Un intercepting proxy si mette in mezzo tra il browser della vittima e Internet: tutto il traffico passa da lì, così tu puoi leggerlo e modificarlo prima che arrivi a destinazione.
Analogia Sei un postino disonesto. La vittima ti consegna tutte le lettere (il traffico) perché ti ha nominato suo intermediario (il proxy). Tu le apri, magari ne cambi il contenuto, e le inoltri. Per le lettere "sigillate" (HTTPS) serve un trucco in più: convincere la vittima a fidarsi del tuo sigillo (la tua CA), altrimenti si accorge della manomissione.
Due ingredienti rendono possibile il MITM su HTTPS nel lab:
- La vittima usa te come proxy (per HTTP e HTTPS).
- La vittima si fida della tua CA (l’hai installata nel suo browser). Togli uno dei due e l’attacco non funziona — ed è esattamente lì che nascono gli errori.
1. Setup del proxy — il listener deve ascoltare sulla rete
Tranello #1: loopback vs all interfaces Di default il proxy ascolta solo su loopback (
127.0.0.1:8080) → raggiungibile solo dalla macchina attaccante. Dalla vittimahttp://<attaccante>:8080risulterà "pagina inesistente".
Fix:
- Caido: menu accanto a Start → Edit → seleziona All interfaces (0.0.0.0) → Save → Start.
- Burp:
Proxy → Proxy settings → Proxy listeners→ seleziona127.0.0.1:8080→ Edit → scheda Binding → Bind to address: All interfaces → OK. Nella colonna Interface deve comparire*:8080, con Running spuntato.
Scope "All interfaces" espone il proxy sulla rete: solo in lab/rete autorizzata.
2. Certificato CA sulla vittima
- Caido: dalla vittima vai a
http://<attaccante>:8080/ca.crt→ scarica in automatico. - Burp: il percorso
/ca.crtnon esiste. Vai suhttp://<attaccante>:8080e clicca CA Certificate (in alto a destra): scaricacacert.der(formato DER, non.crt).
Importarlo nel posto GIUSTO
Tranello #2: Authorities, non "Your Certificates" In Firefox il certificato va in
Settings → Certificates → View Certificates → scheda **Authorities** → Import, spuntando "Trust this CA to identify websites".


3. Configurare il proxy sulla vittima — la chiave per non rompere le pagine
Sulla vittima, in Firefox: Settings → cerca "proxy" → Manual proxy configuration:
- HTTP Proxy = IP dell’attaccante, Port = 8080
- spunta “Also use this proxy for HTTPS”

Perché questo passo è decisivo Solo se la vittima instrada tutto (HTTP e HTTPS) attraverso il proxy, allora anche le sotto-risorse (CSS, JS, immagini) passano da te. È esattamente ciò che nel lab fa caricare le pagine con la grafica intatta. Se l'HTTPS non passa dal proxy, o lo scope di Burp è ristretto a un solo host, le risorse "sfuggono al tunnel" → pagina senza stile (vedi §4).
4. Modificare il traffico
4a. Metodo manuale (quello che la guida mostra)
Intercept ON → per ogni richiesta GET, modifichi l’host (es. moviescope.com → goodshopping.com) nell’header Host e nel Referer → Forward → ripeti finché la vittima non vede il sito diverso.
È volutamente laborioso: la guida te lo fa fare a mano per mostrarti il concetto, non perché si lavori così.
4b. Metodo automatico: Match & Replace (quello che si usa davvero)
Intercept OFF + una regola che riscrive il traffico al volo, valida per tutta la sessione:
Burp: Proxy → Proxy settings → Match and replace rules → Add
Definisci il tipo (header di richiesta, header/body di risposta…), la stringa da cercare e quella con cui sostituirla. La imposti una volta e copre la prima richiesta come le successive 200.
4c. Lo swap di due siti e il tranello del CSS
Tranello #5: HTML sostituito ma CSS rotto (pagina blu/nuda) Se cambi solo l' header Host della richiesta, l'HTML viene servito dal sito bersaglio, ma i link assoluti alle risorse dentro l'HTML (es.
http://www.goodshopping.com/style.css) restano invariati: il browser li richiede all'host originale, la richiesta esce dal tunnel e fallisce → niente CSS.
Soluzione — coppia di regole che lavorano insieme (esempio: la vittima naviga moviescope, vuoi mostrarle goodshopping):
- Request header:
moviescope.com → goodshopping.com(dirotta le richieste verso GoodShopping) - Response body:
goodshopping.com → moviescope.com(riscrive i link assoluti nell’HTML, così anche le risorse ripassano dal proxy)
Nota onesta La causa "risorse con URL assoluto fuori dal proxy" è la spiegazione più probabile del CSS rotto, ma non è garantita in ogni caso: la controprova la fai nella HTTP history, guardando come sono scritti i
<link href=...>dei CSS nella risposta e a quale host il browser li richiede. La condizione necessaria resta comunque il proxy per tutto del §3.
4d. Il risultato È l’obiettivo
Quando la barra degli indirizzi mostra un sito ma il contenuto ne mostra un altro, hai vinto: “la vittima ha navigato su moviescope.com, ma vede goodshopping.com”. È la dimostrazione della manomissione del traffico — anche se la resa è grezza, il concetto è provato.
5. HTTPS e MITM — il quadro concettuale
Perché scatta il warning “certificato pericoloso”
TLS è progettato apposta per impedire a un estraneo di mettersi in mezzo. Il proxy presenta alla vittima un certificato firmato dalla tua CA; il browser controlla se quella CA è tra le sue autorità fidate: se no, blocca. Nel lab funziona solo perché controlli la vittima e le installi la tua CA — cioè bari, per scopo didattico.
È obsoleto?
Risposta sfumata
- Come attacco puramente di rete contro l’HTTPS moderno di un sito ben configurato: sì, ampiamente neutralizzato (HTTPS ovunque, HSTS, preload, certificate pinning). Il warning che vedi È questa difesa che funziona.
- Come strumento di test di web app (il suo uso principale): per niente obsoleto — installi la CA sul tuo browser per ispezionare il tuo traffico. È lo strumento base della sicurezza web.
- Come attacco quando riesci a far fidare la CA: vivissimo. Scenari reali: TLS inspection aziendale (CA installata su tutti i dispositivi), post-compromissione (malware che installa una root CA), social engineering (finto certificato “richiesto”), client che non validano (molte app mobile, IoT, thick client), e il semplice HTTP in chiaro che non richiede alcun certificato.
Il passo “installa la CA sulla vittima” — quello che ti ha dato battaglia — è precisamente ciò che nella realtà protegge gli utenti: un attaccante quel passo non può darlo per scontato.
Una volta fidata la CA, HTTPS = HTTP
Dopo l’handshake, il proxy decifra il traffico e tu lavori sul contenuto in chiaro: richieste e risposte modificabili come in HTTP. Il “molte pagine, molte richieste” non è un problema di HTTPS, è un limite del metodo manuale — e Match & Replace lo annulla.