Does the attack work?
Sì l'attacco funzionerebbe. A differenza di alcune altre risposte, non è necessaria alcuna modifica speciale nell'archivio certificati CA locale del dispositivo che voglio attaccare.
Is there any way to prevent it?
L'unico modo in cui posso pensare di risolvere questo problema è utilizzare i certificati client / TLS reciproco , o una "app" che si collega solo al sito attendibile.
.. l'attacco
Un "Phishing Proxy & Certificate Substitution" funzionerebbe in questo modo:
Supponiamo che volessi attaccare una banca chiamata www.contoso.com
e acquisto il nome DNS www.contos0.com
. Quindi acquisto un certificato di controllo del dominio standard che verifica semplicemente che possiedo il controllo del dominio. Non è necessario alcun certificato EV, anche se suppongo che si possa essere acquisito.
Quindi l'utente malintenzionato ottiene il software TCP che essenzialmente esegue l'eco dei dati e li inoltra al server successivo. Il processo avviene anche al contrario e viene eseguita una sessione duplex.
L'attacco di phishing simile a questo:
Browser <----> contos0.com:443 (decrypt and rencrypt) <----> contoso.com
.. la mitigazione
Per siti web / desktop normali
Poiché il tuo server web può utilizzare qualsiasi CA per generare certificati client, puoi:
- Iscrivi gli utenti al certificato utilizzando l'elemento HTML5 KeyGen
- Oppure iscriviti gli utenti semplicemente offrendo l'intero certificato (chiave pubblica e privata in un PFX combinato) per il download.
Ho testato l'interfaccia utente per vari browser e vedo il Keygen più facile da gestire per l'utente finale, anche se ha bisogno di miglioramenti.
Per le app mobili
I browser mobili non mostrano quasi mai la barra del browser, quindi la maggior parte degli utenti non sapranno se si trovano su un sito di phishing, un sito HTTPS o un sito con un certificato EV.