Lamer

Un article de Haypo.

Retour aux programmes de Victor

Lamer est un projet que j'ai écrit pour lister tous les mots de passe stockés en clair d'un ordinateur sous Linux.

Le programme est découpé en modules : chaque module s'occupe d'un programme en particulier. On peut exécuter les modules indépendement. Il existe aussi un mode "verbose" affichant plus d'informations, tapez :

 VERBOSE=1 ./all.sh

Sommaire

[modifier] Modules

Modules Fichier Encodage
Evolution ~/.gnome2_private/Evolution base64
Gaim / Pidgin ~/.gaim/accounts
~/.purple/accounts
(en clair)
gajim ~/.gagjim/config (en clair)
gftp ~/.gftp/bookmarks algorithme maison de chiffrement
(voir le code source de gftp)
ncftp ~/.ncftp/bookmarks base64
pypi ~/.pypirc (en clair)
svn ~/.subversion/auth/svn.simple (en clair)
yafc ~/.yafc/bookmarks base64

[modifier] À faire

Informations sur Firefox :

  • Les mots de passe sont stockés dans le fichier <chemin du profile>/signons.txt (texte brut)
  • Le mot de passe principal est stocké dans le fichier <chemin du profile>/key3.db (format "Berkeley DB 1.85" ?)
  • Autre fichier intéressant : cert7.cb (ou cert8.cb)

Les mots de passe de Firefox sont enregistré dans le format ASN1, lisible par exemple par OpenSSL :

$ echo "MDIEEP(...)gmrbQ==" | openssl asn1parse -i -inform DER
   0:d=0  hl=2 l=  50 cons: SEQUENCE          
   2:d=1  hl=2 l=  16 prim:  OCTET STRING      
  20:d=1  hl=2 l=  20 cons:  SEQUENCE          
  22:d=2  hl=2 l=   8 prim:   OBJECT            :des-ede3-cbc
  32:d=2  hl=2 l=   8 prim:   OCTET STRING      
  42:d=1  hl=2 l=   8 prim:  OCTET STRING      

Les mots de passe sont donc chiffré avec en des-ede3-cbc : Triple DES EDE à trois clés en mode CBC.

Dans le code source de Mozilla Firefox :

  • toolkit/components/passwordmgr/base/nsPasswordManager.cpp : => DecryptString()
  • extensions/wallet/src/wallet.cpp : DecryptString() => PL_Base64Decode()
  • nsprpub/lib/libc/src/base64.c : PL_Base64Decode()
  • autres:
    • security/nss/lib/util/quickder.c : Optimized ASN.1 DER decoder
    • security/nss/lib/ssl/ssl3con.c : mode = NSS_DES_EDE3_CBC; (SSLCipher) DES_Encrypt; (SSLCipher) DES_Decrypt;
  • security/nss/lib/pk11wrap/pk11sdr.c: PK11SDR_Encrypt() et PK11SDR_Decrypt()
  • security/nss/lib/pk11wrap/pk11cxt.c : PK11_CipherOp()

Programme utilisant libnss (bibliothèque Mozilla) : FirePassword.

[modifier] Téléchargement

Utilisez SubVersion pour avoir la dernière version de développement :

svn co http://haypo.hachoir.org/svn/lamer

Vous pouvez également consulter le code source en ligne.

[modifier] Protocoles internets

(rien à voir)

  • MSN Messenger: Utilise HTTPS (SSLv2 puis SSLv3) pour l'authentification, par contre les messages passent en clair
  • Yahoo:
    • Le serveur lance un challenge et le client doit y répondre
    • Le code libyahoo est très obscure, mais apparemment il y a un hash MD5 avec sel qui est calculé
  • ICQ (oscar): hash MD5 de « sel + mot de passe + "AOL Instant Messenger (SM)" » ... mais Ethereal me montre un hash de 8 octets (alors qu'un MD5 fait 16 octets) !?
    • Il est difficile casser un hash MD5 d'un mot de passe avec sel ... faut-il encore voir la qualité du sel. Mon seul test d'authentification m'a donné un sel de 4 octets valant 0x00000001, on a déjà vu plus aléatoire
    • Il est envisageable de rejouer une séquence d'authentification si le sel est identique
    • Selon le site web de Gaim, une méthode d'authentification utilisant XOR existe également
    • Une documentation du protocole : iserverd.khstu.ru
  • Jabber: hash SHA1 « session_id + password » où session_id fait apparemment 32 bits (envoyé en hexadécimal) et bien aléatoire

[modifier] Articles connexes