04 mayo 2009

Securiza tu Firefox con FFHardener

Por aquí ya hemos hablado sobre debilidades que suponen ciertos aspectos de la navegación y los potenciales peligros: SSL negociado con algoritmos poco fiables, deducir los sitios por donde se ha navegado por guardar el histórico de la navegación, o problemas de phishing empleando trucos con JavaScript.

Firefox es un navegador muy seguro pero viene 'por defecto' con opciones que son mejorables y que con los debidos retoques pueden fortificar aun mas al navegador.

Por ello hemos desarrollado una herramienta que permite re-configurar Firefox para hacerlo mas seguro, su nombre: FFHardener

Aspectos que fortifica

Criptografía: En su momento ya hablamos sobre la seguridad de los servidores SSL en la administración pública, por defecto, muchos servidores incorporan un juego de algoritmos criptográficos que no son todo lo fiables que deberían. Un ejemplo muy evidente es Google y Gmail, si activamos la opción SSL (algo muy recomendable) y luego miramos que algoritmo SSL es el que emplea para la conexión, veremos un 'cómodo' (para el servidor Web) RC4-128 bits, cuando lo deseable sería un algoritmo mas robusto (AES) y a 256 bits.
FFHardener configura Firefox para banear al algoritmo RC4 y hacer que todas las conexiones SSL sean bajo algoritmos a 256 bits.

JavaScript: En muchas ocasiones las paginas web que contienen phishing emplean técnicas JavaScript para alterar aspectos de las ventanas que hagan mas compleja la detección. FFHardener configura Firefox para inhabilitar esas opciones

Privacidad: En nuestros posts sobre Mentalismo 2.0 (I y II) explicábamos como es posible interrogar a un navegador y averiguar las paginas web que ha visitado, una opción básica para minimizar el impacto de este tipo de técnicas es mantener el historial de navegación deshabilitado. FFHardener configura Firefox para no almacenar el historial de navegación.

Manual de uso

La forma de usar FFHardener no es especialmente 'user friendly', en próximas versiones espero mejorar este punto, pero por el momento, requiere prestar cierta atención.

1- Localizar donde se encuentra el perfil de Firefox: Normalmente en Linux / Unix es relativamente sencillo y esta secuencia de comandos te debería llevar hasta el:
#cd
#cd .mozilla
#cd firefox
#cd default*

En Windows (desde un cmd.exe):

>cd %APPDATA%\mozilla\Firefox\Profiles\*.default

2- Una vez localizado donde se encuentra el profile, debes copiar ahí ffhardener.py (si estas empleando la versión sin compilar) o ffhardener.exe si estás usando la versión compilada para Windows. Es MUY IMPORTANTE que firefox NO esté arrancado, asegúrate de que lo has cerrado o de lo contrario los cambios no se guardaran.

3- Ejecuta FFHardener de la siguiente forma:

#python ffhardener.py
o
>ffhardener.exe

Si alguno de los pasos anteriores ha ido mal y no se encuentra el fichero prefs.js recibirás un mensaje de error tal que así:

[ERROR] No se ha podido localizar el fichero prefs.js
Asegúrate de que te encuentras en el path de tu profile Firefox

Revisa el post porque en algún paso te has equivocado, o deja un comentario.

Download

Puedes descargar la versión en formato script Python (requiere tener el intérprete) aquí

La versión compilada para Windows la puedes descargar aquí

14 comments :

eduardo abril dijo...

También para Firefox, NoScript (https://addons.mozilla.org/es-ES/firefox/addon/722) me gusta muchísimo. Eso sí, es un poco latazo para el usuario "normal", porque tienes que ir eligiendo dónde quiere permitir la ejecución de scripts.
Saludos,

Yago Jesus dijo...

NoScript es sensacional, pero le acaban de pillar con el carrito de los helados http://www.peorth.com.ar/blog/archivos/2009/05/01/noscript-security-o-malware/

primolarry dijo...

He mirado la seguridad con la oficina internet de cajamadrid antes de ejecutarlo y era RC-4 de 128 bit (que manda cojones, por cierto). Tras ejecutarlo pasó a AES-256bit.

Muchas gracias Yago,y gracias a tu colega Juega que me habó de tí y de SbD.

Yo usa(ba) NoScript,pero tras la cazada me estoy pensando si jubilarlo.Al fin y al cabo, si vuelven a hacer algo así les volverán a cazar...¿no?

fearu dijo...

Parece interesante el script, pero estaría bien que en versiones futuras se convirtiera en una extensión donde uno pueda activar la preferencia de seguridad que quiera.

Por cierto, ¿no podría haber servidores que sólo admitan un tipo de cifrado más débil y por lo tanto falle al desactivar la opción?

Yago Jesus dijo...

@primolarry Imagino que ahora todos los ojos estarán puestos en NoScript, de todas formas, yo lo veo como una travesura que no afecta a la generalidad del programa, supongo que el autor habrá metido muchas horas al proyecto y querrá algo de $$

@fearu, muy muy antiguo tiene que ser el servidor donde vayas a conectar para que no acepte esos algoritmos, no obstante, al securizar, el script deja un backup del original prefs.js. Sobre convertirlo en un addon ... estaría genial, pero no tengo mucha pericia con XUL y tampoco he visto documentación / ejemplos demasiado buenos

Zerial dijo...

Genial este tip. Lo probaré.
No es por ser paranoico, pero siempre es bueno sentirse seguro navegando. Ese ejemplo que das de Gmail y el algoritmo de 128bits me parece una buena razon para hacerlo. Aunque llevo navegando en internet hace mucho y nunca me ha pasado nada, instalaré para probarlo.

Dani Conil dijo...

Hola,
muchas gracias por el consejo. Lo que me gustaría saber es cómo comprobar la versión del algoritmo, tal y como ha hecho primolarry.

Saludos y gracias de nuevo.

Yago Jesus dijo...

@Dani, sin imagenes explicativas igual es un poco farragoso, vamos a intentarlo: Situaté en la parte donde aparece la URL (https://www.loquesea.com) una vez ahi, veras inmediatamente a la izquierda un cuadrado (donde suele ir el favicon), pincha con boton izquierdo, si estas en una sesion HTTPs te dará información sobre el certificado digital, si te fijas, abajo, aparece "Más información", clicando ahi, te habla del algoritmo. Suerte :)

Dani Conil dijo...

Muchas gracias, Yago, encontré del tirón lo que comentas, AES-256bit.

Estoy algo verde en el tema de certificados, claves públicas y demás, pero gracias a vuestro blog y a alguno que otro más de los que pusisteis en el anterior post y que ya tenía en el lector RSS me estoy poniendo al día.

Gracias de nuevo.

>> s E t H << dijo...

@yago: la web de mozilla (ahora que veo usa rc4 de 128 bits, me estas volviendo paranoico) tiene muy buena documentacion para hacer addons
https://developer.mozilla.org/es/Creando_una_extensi%C3%B3n
https://developer.mozilla.org/es/XUL
https://developer.mozilla.org/es/Extensiones

no se supone que si el servidor permite dos algoritos, el navegador tendria que pedir el mas fuerte?

Yago Jesus dijo...

@Seth, la verdad es que la elección 'se negocia' y los servidores SSL normalmente intentaran irse a lo 'computacionalmente menos costoso' un RC4-128 siempre consumirá infinitamente menos recursos que un AES-256. Sobre los enlaces que has dejado, no los conocía, busqué información sobre XUL y encontré cosas francamente hostiles, esos enlaces están muy muy bien. La pregunta es ¿'tiro' el código hecho en Python y lo convierto en una extensión, o le hago una gui mas user-friendly?

>> s E t H << dijo...

para mi una extension es mucho mas facil de instalar, usar y actualizar

OsO dijo...

Yago Jesus, en caso de que mi Firefox sea portable (a través de la suite de MyportableApps) cómo tendría que instalarlo?

Yago Jesus dijo...

@OsO En principio, ffhardener desde la versión 1.1 tiene una rutina para 'averiguar' donde esta el profile del usuario y modificarlo. Esa rutina no va a funcionar en el modo portable, así que la opción que te queda es, usar la versión 1.0 y hacer el proceso de encontrar el profile a mano