dimanche 4 mai 2014

Firefox Hacks : Extraire les informations utilisateurs stockées sur son ordinateur avec Groovy !


Firefox stockent toutes ses données dans un répertoire (Sur Linux, en général il s'agit de $HOME/.mozilla et sur Windows, c'est dans le répertoire C:\users\MUYSER\AppData\Roaming\Mozilla\Firefox\Profiles\). Dans ce répertoire, on peut trouver la liste des addons, la liste des recherches, des cookies ... et aussi les logins et mot de passe !
En clair, si une personne récupère le contenu de ce répertoire, elle va avoir toute votre vie en sa possession.

Dans cet article, nous allons montrer les informations que l'on peut récupérer très facilement à l'aide des fichiers contenus dans ce répertoire. Nous montrerons aussi des exemples de code avec Groovy. Vous verrez que ce n'est pas très compliqué.

Code source des exemples

L'ensemble des codes sources utilisés de cet article sont disponibles sur GitHub : https://github.com/drieu/GFirefoxData.Un fichier README contient les instructions nécessaires pour compiler et exécuter le projet.

Data stockées dans Sqlite files

Comment utiliser Sqlite ?


Firefox utilise SQLITE pour stocker ses données. Si vous cherchez dans le répertoire, vous verrez des fichiers .sqlite ( ex : cookies.sqlite ). Vous pouvez en ligne de commande lire ses informations.

Voici un exemple montrant comment se connecter à la base cookies et les requêtes à effectuer pour lire ses données :

 # cd $HOME/.mozilla/???  
 # sqlite3 cookies.sqlite  
 SQLite version 3.8.2 2013-12-06 14:53:30  
 Enter ".help" for instructions  
 Enter SQL statements terminated with a ";"  
 sqlite>  


Une fois connecté, il suffit d'exécuter des requêtes sql ou des commands sqlite.Voici quelques commandes indispensables :

Help

sqlite> .help

Liste de toutes les tables

sqlite> .tables

Liste des champs d'une table

sqlite> .schema moz_cookies

Select

sqlite> select * from  moz_cookies

Quit

sqlite> .quit


Liste des fichiers sqlite contenant des informations

Maintenant que vous savez utiliser sqlite, vous pouvez faire de même avec les fichiers suivants :

cookies.sqlite
addons.sqlite
formhistory.sqlite
content-prefs.sqlite
healthreport.sqlite
permissions.sqlite
places.sqlite
signons.sqlite
webappsstore.sqlite

Nous allons maintenant étudier comment récupérer ses informations avec Groovy.

Obtenir la liste de tous les cookies


Pour les codes qui vont suivre, nous utiliserons une librairie pour pouvoir exécuter des requêtes sqlite : sqlite-jdbc ( https://bitbucket.org/xerial/sqlite-jdbc ). Vous pouvez télécharger le jar : ICI

Il vous suffit ensuite de créer un fichier firefox.groovy et d'adapter le code pour qu'il pointe vers le fichier cookies.sqlite.Voici le code source de firefox.groovy :


     import groovy.sql.Sql 
     def url = "jdbc:sqlite:/home/USER/tmp/.mozilla/firefox/fe31xbna.default/cookies.sqlite" 
     def sql = Sql.newInstance(url, "org.sqlite.JDBC") 
     sql.eachRow("select DISTINCT host from moz_cookies") { 
       println("host= ${it.host}") 
     } 

Obtenir les données des formulaires

     def sql = Sql.newInstance(url, "org.sqlite.JDBC")  
     sql.eachRow("select DISTINCT value from moz_formhistory") {  
       println("value= ${it.value}")  
     }  
     println("")  

Obtenir la liste des addons

     def sql = Sql.newInstance(url, "org.sqlite.JDBC")  
     sql.eachRow("select DISTINCT name from addon") {  
       println("name= ${it.name}")  
     }  
     println("")  

Voir les password

Le Master password est stocké dans le fichier key3.db. Il y a aussi le fichier signons.sqlite qui contient les utilsateurs et mot de passes cryptés :

sqlite>sqlite3 signons.sqlite  
 sqlite>select hostname,usernameField,passwordField,encryptedUsername,encryptedPassword from moz_logins limit 1;  

Voir les mots de passes lorsqu'il n'y a pas de master password. 

Il suffit d'aller dans  Menu Outils -> Option -> Sécurité et vous pouvez voir les mots de passe sauvegardés.Donc si une personne récupère les fichiers contenant les mots de passes, il lui suffira de créer un nouveau profil firefox avec ses fichiers ( key3.db, signons.sqlite et cert8.db ).
Voici comment faire :

1. Fermez firefox
2. Créez un nouveau profil firefox ( firefox --ProfileManager )
3. Fermez firefox
4. Aller dans le répertoire du profil firefox ( $HOME/.mozilla/...)
5. Remplacer les fichiers key3.db, signons.sqlite et cert8.db par les vôtres.
6. Redémarrez firefox
7. Allez dans Menu Outils -> Option -> Sécurité et voir les mots de passes enregistrés
et vous verrez tous les mots de passes !

Donc un bon conseil est de mettre un master password !
Cependant, cela reste utile seulement dans le cas où une personne utilise firefox pour naviguer sur internet.Cela lui évite de voir tous vos mots de passe en quelques clics.
Il y a cependant un moyen de récupérer les mots de passe même si il y a un master password !


Voir les mots de passes lorsqu'il y a un master password.

C'est possible en regardant le code source de firefox : http://www.infond.fr/2010/04/firefox-passwords-management-leaks.html 

Une seconde méthode, plus facile, est d'utiliser un outil de mozilla : http://securityxploded.com/firemaster.php

Voici un exemple d'utilisation :

FireMaster.exe -q -b -m 3 -l 10 -c "abcdetps123" "c:\my test\firefox"

 

Conclusion

Dans cet article, nous avons vus toutes les informations qui sont stockées par firefox sur votre disque dur.Est-ce que cela veut dire que firefox n'est pas sécurisé ? Non. Toutes les applications stockent leurs informations dans des fichiers. Par contre, il faut avoir conscience des points suivants :
  • Si un pirate arrive à copier les fichiers que l'on a vu, elle aura accès à toute votre vie.
  • Les plugins firefox ont accès à un certains nombre d'informations.Avez-vous confiance en vos plugins ?
  • Certaines données sont utilisées dans un but commerciale (par exemple les cookies )