Obtenir les credentials de Firefox 3
Posted by Deimos in Développement, Sécurité, tags: C, firefox, NSS, passwords, PKCS#11Firefox stocke depuis quelques versions les mots de passe enregistrés dans une base de données SQLite dont le nom est signons.sqlite, plutôt que dans un fichier au format texte, comme précédemment (signons2.txt, signons3.txt). En ce qui concerne le chiffrement, il s’agit de 3DES en mode EDE, et la clé se trouve dans le fichier key3.db.
Bref, pour déchiffrement et obtenir tout ça, il nous faut utiliser l’API PKCS#11 ainsi que NSS (Network Security Services), une bibliothèque cryptographique développée par Mozilla et bien évidemment utilisée par Firefox. Rapidement, en commençant le développement de ce petit bout de code qui me semblait trivial au départ, j’ai remarqué que la difficulté … ne venait étrangement pas du code en lui même, mais de l’API NSS de Mozilla qui est très peu documenté (second lien avec comme mot clé “nss api” sur Google : “NSS API is lack of doc | Linux Developer Network” …). Au final j’ai donc préféré sortir Ollydbg et faire un peu de reverse engineering sur un outil closed source qui récupérait ces identifiants à des fins malicieuses. En dehors de ces bibliothèques pour le côté crypto, il nous faudra utiliser SQLite afin de lire le fichier signons.sqlite.
Voici le schéma de la table moz_logins qui nous intéresse :
-
-
CREATE TABLE moz_logins (id INTEGER PRIMARY KEY,
-
hostname TEXT NOT NULL,
-
httpRealm TEXT,
-
formSubmitURL TEXT,
-
usernameField TEXT NOT NULL,
-
passwordField TEXT NOT NULL,
-
encryptedUsername TEXT NOT NULL,
-
encryptedPassword TEXT NOT NULL,
-
guid TEXT,
-
encType INTEGER);
-
Et voici le code C (avec une légère utilisation de l’API Win32) permettant de récupérer tous ces jolis identifiants :
Read the rest of this entry »
Entries (RSS)