miércoles, julio 14, 2010

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 (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
*********************************************************************************************

Estaba el otro día oyendo hablar sobre cómo los gobiernos pueden interceptar y descifrar el tráfico SSL y, en particular, el Http-S. Resumiendo, todo se trata de que llega el gobierno de turno a una Autoridad Emisora Raíz de Confianza y le dice "o me das un Certificado de Entidad Intermedia Emisora de Certificados o se te va a caer el pelo". Y, claro, cuando tu gobierno te pide las cosas con educación, hay que ser muy poco patriota para negarse.

Al final, ese gobierno podría emitir certificados a nombre de cualquier sitio web que se le ocurra. Y los navegadores aceptarían dichos certificados como válidos. El resto del ataque sería un MITM de los de toda la vida.

Pero como me cuesta mucho mantener la atención fija en una sola cosa, mientras escuchaba el programa mi cabeza se fue por los cerros de Úbeda. Y pensé en algo de lo que me extraña no haber oído antes en relación con los virus y el phishing:

Supongamos que tu ordenador ha pillado un virus. Y que el virus te modifica la configuración del navegador para que acepte un certificado falso para un banco. ¿Es posible que esto ocurra?. Esta técnica sería el complemento ideal para el malware que sigue realizando ataques a los ficheros hosts del sistema. Es decir, redirigir un dominio a otra IP y además certificarlo digitalmente.

Pues sí. Y no es necesario que el usuario atacado disponga de privilegios de administrador. En las siguientes pruebas se usó Firefox, que usa ficheros de texto plano para su configuración de excepciones ante errores de certificados, si bien las conclusiones que se obtengan posiblemente puedan aplicarse también al resto de los navegadores.

Para hacer la prueba, primero vamos a montar un entorno completo. En segundo lugar vamos a añadir una excepción al certificado en Firefox manualmente para, en tercer luegar, manipular el fichero de excepciones de la víctima y ver su funcionamiento. Como se podrá ver, el cliente usa Windows XP y las rutas a ficheros cambian en otros sistemas operativos, pero en esencia el funcioamiento es similar.

Paso 1: Preparar un servidor Web falso con http-s

Pueden encontrarse las instrucciones detalladas de cómo hacerlo con WampServer aquí. Como puede observarse en la imagen, el certificado que vamos a utilizar para certificar a este sitio es más falso que unos auriculares de todo a cien:


Figura 1: Certificado digital del sitio

Ni está firmado por ninguna autoridad reconocida ni se corresponde con ningún equipo ni dominio válido. Vamos, como para confiar en él.

Posteriormente se configura un servidor proxy que, cuando el usuario intenta acceder a www.hotmail.com le redirije al servidor web malicioso. Para ello se usa en este caso Squid. Resumiendo, en el fichero hosts de este servidor se asocia a www.hotmail.com la IP de nuestra web maliciosa. Después se indica al squid la ubicación del fichero hosts con una línea como sigue:

hosts_file c:/windows/system32/drivers/etc/hosts

Si el servidor squid sale a Internet a través de otro proxy, será necesario configurarlo mediante la directiva cache_peer. Después, será necesario indicarle que debe hacer una excepción con el sitio web a suplantar:

acl directamente dstdomain www.hotmail.com
always_direct allow directamente


En el equipo con el servidor web falso, arrancamos Firefox y navegamos a la URL https://localhost de la máquina para ver la excepción que se genera. Como es natural, Firefox se queja. Pero como toda queja merece atención, hacemos clic en "Entiendo los riesgos" y, después, en “Añadir excepción”.


Figura 2: Excepción de certificado digital

Puede observarse la causa de la queja: El certificado se corresponde con otro sitio web y, además no ha sido verificado por una autoridad reconocida. Poca cosa.


Figura 3: Error en el certificado digital

Ahora que hemos oído sus quejas, llegó el momento de decirle a Firefox: “Si no te fías, te aguantas”. Asegurándonos de tener activada la opción “Guardar esta excepción de manera permanente”, hacemos clic en “Confirmar excepción de Seguridad”. Y ya podemos ver el contenido de la web con https usando un certificado de palo malo. Hasta aquí nada nuevo bajo el sol.


Figura 4: Sitio web con https

La pregunta es, ¿qué ha cambiado por debajo Firefox para que ya no dé ningún mensaje de error más con este sitio? ¿dónde están los cambios? ¿Qué podría hacer un malware para conseguir el mismo objetivo con un ataque de pharming? ¿Se podrán hacer esos cambios sin ser administrador en el equipo?

*********************************************************************************************
- 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)
*********************************************************************************************

8 comentarios:

Torocatala dijo...

Interesante, muy interesante, pero creo que para editar el archivo hosts necesitas permisos de administrador, por lo menos en MS W7, (C:/windows/system32/drivers/etc/hosts) ya que ayer precisamente lo edité, aunque bueno, con permisos de "administrador" me refiero a la ventana de "este programa requiere permisos..." donde es posible que muchos usuarios presionen aceptar sin mirar...

Esperare impaciente las próximas entregas, si no me pongo antes con ello, claro :P

Chen dijo...

Qué buena pinta tiene este post!

Newlog dijo...

Ultimamente el lado del mal lleva unas buenas series ;)

Anónimo dijo...

hasta aqui todo bien, espero no salgan hechandole el agua sucia a firefox.

quisiera saber como funciona internet explorer con esta misma tecnica

Anónimo dijo...

No entiendo para que se usa Squid, ¿teniendo un servidor web instalado en el equipo no se podría acceder a él directamente?

Anónimo dijo...

Si ejecutas código arbitrario como un usuario, es "game over", puedes capturar sus datos, copiar sus cookies, etc. Este sistema de ataque es sólo uno de mil posibles (y no muy novedoso).

Chen dijo...

@Anónimo del squid

Usa squid para que cuando el usuario escriba en su navegador www.hotmail.com el servidor proxy lo redirija al servidor malicioso.

Anónimo dijo...

Quizá esté confundido, pero FF, no te muestra una imagen, cuando navegas por https, y cuando lo haces en localhost, a pesar de "colar" el certificado, no muestra nada? No sería mejor usar https, sin certificado y te ahorras todo el curro, a pesar de no tener igualmente candado?

Entrada destacada

Infraestructuras Críticas y Sistemas Industriales: Auditorías de Seguridad y Fortificación de @0xWord

Desde hoy está disponible a la venta un nuevo libro de 0xWord centrado en la seguridad de los Sistemas Industriales y las Infraestructuras...

Entradas populares