Rubare i cookie HTTPS di Facebook con il captive portal

20

Ho un problema di sicurezza. Come sappiamo, molti hotspot pubblici ti reindirizzano a una schermata di accesso quando provi a navigare sul primo sito web.

Ad esempio, se mi collego a tale hotspot e quindi visito link (da un computer in cui sono già registrato in quel sito ) Vengo reindirizzato alla schermata di accesso dell'hotspot, senza alcun avviso di certificato nel mio browser.

Ovviamente, la richiesta HTTPS iniziale fatta dal mio browser contiene il mio cookie di sessione ("Cookie:" intestazione HTTP).

Durante il reindirizzamento alla schermata di accesso (ICMP o reindirizzamento basato su DNS), l'hotspot conoscerà il contenuto della richiesta HTTPS e, quindi, il mio cookie di sessione?

Suppongo che un hotspot dannoso possa leggere la mia prima richiesta HTTPS:

  • Quando il browser tenta di connettersi a facebook.com:443, eseguirà l'handshake del certificato;
  • L'hotspot risponderà inviando un certificato valido basato su IP, quindi, l'hotspot impersonerà "facebook.com" e leggerà il contenuto della richiesta HTTPS originale;
  • Successivamente, può rispondere con un reindirizzamento 301/302 alla schermata di accesso HTTPS dell'hotspot, senza alcun avviso nel client del browser.

In questo modo, un hotspot sarà in grado di conoscere il contenuto della prima richiesta HTTPS?

    
posta Marco Marsala 02.01.2016 - 18:18
fonte

2 risposte

29

Se visiti i siti HTTPS e tieni reindirizzato senza alcun avviso, il problema è che il tuo browser non convalida correttamente i certificati: un buon browser visualizza un avviso poiché il certificato del captive portal non contiene il dominio che desideri visitare il suo campo nome comune.

Una possibile vulnerabilità sarebbe se si visita il sito su HTTP, ma ci sono soluzioni per attenuare questo come la Bandiera protetta sui cookie che dicono al browser di non inviare questo cookie su HTTP - e HSTS che fa convertire automaticamente il browser le richieste HTTP al sito nelle richieste HTTPS, oltre a impedire all'utente di ignorare l'errore del certificato se non è possibile effettuare una connessione HTTPS.

    
risposta data 02.01.2016 - 19:05
fonte
9

Il comportamento dipende dal browser. Se il browser invia effettivamente la richiesta HTTPS destinata a Facebook al captive portal, allora è chiaramente una vulnerabilità del browser. Ma ci sono altri modi per gestire la situazione.

Recentemente ho dovuto utilizzare una rete con un captive portal alcune volte. E in quei casi ho avviato Chromium che ha avuto un paio di schede di Facebook aperte da una sessione precedente.

Quello che è successo è che è stato visualizzato un messaggio di errore corretto. Ma allo stesso tempo Chromium ha aperto una nuova scheda che accede a un URL HTTP specifico con l'intenzione effettiva di essere dirottato dal captive portal. Non appena ho superato il captive portal, le schede di Facebook si ricaricano automaticamente e questa volta non viene visualizzato alcun errore.

Quindi sembra che Chromium rilevi la presenza di un captive portal, lo apra in modo sicuro e infine rilevi dopo aver superato il captive portal.

Il rilevamento di un captive portal simile esiste in Android e iOS, anche se non è legato al browser ma avviene piuttosto come parte dell'associazione con il punto di accesso.

Vedo alcuni malintesi sulla tua comprensione di come funzionano i portali in cattività. I portali in cattività che ho incontrato hanno sicuramente funzionato in modo diverso.

Nessuna intercettazione è stata effettuata per il traffico DNS. Finché hai utilizzato il server DNS fornito tramite DHCP, al tuo computer è consentito effettuare ricerche DNS senza restrizioni senza accedere al captive portal.

Nessun trucchetto ICMP viene estratto. Piuttosto uno dei router sul percorso legittimo tra il computer e il server dirotterà le connessioni TCP alla porta 80. Una volta che la connessione TCP è stata dirottata, un reindirizzamento al captive portal verrà inviato al browser. Nelle implementazioni corrette, questo reindirizza a un URL HTTPS e in qualche modo include informazioni sull'URL originale in modo che tu possa essere rinviato più tardi. L'intera comunicazione con il captive portal viene eseguita utilizzando un certificato legittimo per un nome di dominio che in realtà appartiene al captive portal.

Questo approccio funziona per HTTP - ma non per HTTPS. Il router che esegue il dirottamento non avrà un certificato valido per il sito a cui si sta accedendo, quindi in qualsiasi browser sicuro verrà visualizzato un avviso di certificato se lo stesso dirottamento è stato eseguito per HTTPS.

Ci sono tre modi per aggirare il problema non funzionante per HTTPS:

  • Affidati agli utenti che ignorano gli avvisi di sicurezza e accettando che le loro informazioni private verranno intercettate anche dopo essere state presentate per un avvertimento molto dettagliato sul rischio.
  • Affidati agli utenti a capire come funziona tutto e, da soli, apri un URL HTTP per essere dirottato e poi conosci l'URL HTTPS originale dopo aver passato il captive portal.
  • Consenti al software client di rilevare la presenza di portali in cattività e gestirlo in modo appropriato. Questo si basa ancora sulla capacità degli utenti di individuare se un captive portal sta tentando di eseguire attacchi di phishing, ma almeno non perde alcun cookie.
risposta data 02.01.2016 - 23:48
fonte

Leggi altre domande sui tag