¿Funciona el ataque?
Sí el ataque funcionaría. Y a diferencia de algunas otras respuestas aquí, no se necesita ninguna modificación especial en el almacén local de certificados de CA del dispositivo que quiero atacar.
¿Hay alguna manera de prevenirlo?
La única manera en la que puedo pensar en abordar este problema es usar certificados de cliente / autenticación mutua TLS , o una "aplicación" que se conecta solo al sitio de confianza.
..el ataque
Un "Proxy de phishing y sustitución de certificado" funcionaría de la siguiente forma:
Supongamos que quería atacar a un banco llamado www.contoso.com
y compro el nombre DNS www.contos0.com
. Luego compro un certificado de control de dominio validado que simplemente verifica que poseo el control del dominio. No se necesita un certificado EV, aunque supongo que se podría adquirir uno.
Luego, el atacante obtiene un software TCP que esencialmente hace un eco de los datos y los reenvía al siguiente servidor. El proceso sucede a la inversa también y se realiza una sesión dúplex.
El ataque de phishing que se ve así:
Browser <----> contos0.com:443 (decrypt and rencrypt) <----> contoso.com
..la mitigación
Para sitios web / escritorios normales
Dado que su servidor web puede usar cualquier CA para generar certificados de cliente, puede:
- Inscriba a los usuarios el certificado utilizando el elemento HTML5 KeyGen
- O inscriba a los usuarios simplemente ofreciendo el certificado completo (clave pública y privada en un PFX combinado) para descargar.
He probado la interfaz de usuario para varios navegadores y considero que Keygen es más fácil de administrar para el usuario final, aunque necesita mejoras.
Para aplicaciones móviles
Los navegadores móviles casi nunca muestran la barra del navegador, por lo tanto, la mayoría de los usuarios no sabrán si están en un sitio de phishing, un sitio HTTPS o un sitio con un certificado EV.