Per connettersi a qualsiasi sito Web, tramite https o no, è necessario l'indirizzo IP del sito e si richiede al server DNS di utilizzare il nome di dominio del sito. Se il tuo server DNS non ha memorizzato nella cache la risposta, cercherà di risolvere la tua richiesta chiedendo un'intera serie di server DNS (il server DNS radice, il gestore dominio di primo livello ... fino al server DNS che è autorevole per il dominio) .
Un utente malintenzionato che controlla uno di questi server può rispondere a te con un falso indirizzo IP per quel sito Web, e questo è ciò che il tuo browser proverà a visitare. Questo indirizzo IP nel caso generale avrà una replica del sito web ospitato, per renderlo simile a quello originale, o semplicemente agire come un mittente di inoltro della connessione al sito corretto dopo aver catturato ciò di cui ha bisogno.
Ora passiamo a ulteriori dettagli: se il sito web è protetto da HTTPS ci saranno molte insidie. Il sito web normale avrà un certificato emesso che lega i dettagli del nome di dominio al sito web, ma questo viene fatto usando la crittografia asimmetrica.
Ciò significa che attraverso il processo dell'handshake SSL, il sito Web deve dimostrare di conoscere la chiave privata associata alla chiave pubblica nel certificato. Ora, la parte malintenzionata può benissimo servire il certificato originale del sito Web quando si tenta di accedere all'IP errato con il nome host corretto, ma non conoscerà la chiave privata, quindi l'handshake SSL non verrà mai completato.
Ma ci sono modi per l'intercettore di far funzionare tutto, posso pensare a quattro:
1) La soluzione più semplice è offrirti un certificato autofirmato invece di uno normale. Questo sarà emesso dall'attaccante stesso. Normalmente il tuo browser ti avviserà di questo, e se usi una versione recente del browser gli avvisi saranno dappertutto, ma gli utenti tendono a fare clic su quel tipo di roba.
2) Un altro approccio, utilizzato negli attacchi Stuxnet, consiste nel rubare le chiavi private utilizzate per un certificato valido dall'organizzazione che si desidera impersonare.
3) Un'altra soluzione, che è accaduta in un paio di casi (non stiamo parlando dell'attaccante medio qui) è che egli sfrutta qualche errore nella procedura di registrazione che le autorità di certificazione (o le autorità di registrazione) usano e riesce a emettere un certificato per un sito Web che non gli appartiene. Ci sono stati casi in cui gli RA semplicemente non hanno fatto abbastanza controlli e rilasciato certificati per google.com ..
4) Simile a quanto sopra: un attaccante competente "hack" un certificato o un'autorità di registrazione e riesce a rilasciare alcuni certificati con qualsiasi nome voglia. È successo nel maggio del 2011 (il famoso comodo-hack) e nel luglio del 2011 (l'hack di DigiNotar). Vedi ulteriori dettagli su Quanto è fattibile hackerare una CA? Quali certificati radice affidabili di default dovrei rimuovere? - Sicurezza IT .
5) Infine, la tecnica più spaventosa è quella che possono essere utilizzate da tre agenzie di lettere e simili: se un governo controlla un'autorità di certificazione, in teoria può costringerlo a rilasciare certificati a volontà, per qualsiasi sito. Ora pensate che le autorità di certificazione siano diffuse in tutto il mondo, alcune in paesi dove questo può sembrare molto possibile. Un esempio da osservare qui è la CA operata da Emirates Telecommunications Corporation (Etisalat), posseduta al 60% dal governo degli Emirati Arabi Uniti (UAE). Etisalat ha lanciato una volta una patch BlackBerry dall'aspetto innocuo che ha inserito spyware nei dispositivi RIM, consentendo il monitoraggio della posta elettronica.
Inoltre, se il client supporta ancora il vecchio protocollo SSL 2.0, un MITM può eseguire il downgrade della connessione SSL e utilizzare un algoritmo di crittografia simmetrica più debole o uno scambio di chiavi più debole.
Quindi, per riassumere, se l'attaccante controlla il server DNS può fare cose molto malevole, ma per intercettare il traffico crittografato SSL ha bisogno di qualcosa di più.
E per rispondere alla tua ultima domanda: il sito della CA non ha bisogno di essere risolto ogni volta che visiti un sito: il sito web di solito ti fornisce il certificato pubblico che utilizza da solo, ma è possibile che tu lo ottenga dalla CA . Questo però non cambia nessuna delle cose menzionate sopra.