Crackage et durcissement des mots de passe

Denis Ducamp / Hervé Schauer Consultants

24 novembre 1999


Reproduction strictement interdite

1. Introduction

Cette présentation va aborder cinq points :

  • Les différents algorithmes de chiffrement

  • La localisation des empreintes

  • Les logiciels de crackage

  • La protection des mots de passe

  • Le durcissement des mots de passe

Pour chaque point les spécificités Unix et Windows NT seront soulignées

2. Les différents algorithmes de chiffrement

L'algorithme utilisé dépend fortement du contexte :

  • Unix

  • Windows NT

  • Réseau

2.1 Les différents algorithmes de chiffrement sous Unix

  • DES :

    • La chaîne "zéro" est chiffrée 25 fois en utilisant le mot de passe comme clé

    • Une graine de 2 caractères permet d'empêcher les attaques par dictionnaire pré-calculé

      Insuffisant avec plusieurs milliers de comptes : risques de collisions

    • Seuls les 8 premiers caractères sont pris en compte

    • Certains systèmes peuvent prendre en compte 16 caractères

      En fait deux mots de passe de 8 caractères.

      L'empreinte obtenue est composée de 24 caractères

    • La fonction crypt de BSDI appelle 725 fois la fonction DES

2.2 Les différents algorithmes de chiffrement sous Unix (suite)

  • MD5 :

    • Le MD5 du mot de passe est calculé 32 fois récursivement

    • Le but est d'avoir une fonction crypt sans fonction de chiffrement

    • Une graine de 2 à 8 caractères permet d'empêcher les attaques par dictionnaire pré-calculé

    • Disponible sous FreeBSD, OpenBSD, Linux (libc5 et glibc2) et d'autres avec PAM.

2.3 Les différents algorithmes de chiffrement sous Unix (suite et fin)

  • BlowFish :

    • Une chaîne est chiffrée 32 fois en utilisant le mot de passe comme clé

    • Le but est d'avoir une fonction crypt très difficilement optimisable,

      notamment dans une puce : "Cracking DES" by the Electronic Frontier Fondation

    • Une graine de 128 bits permet d'empêcher les attaques par dictionnaire pré-calculé

    • Le nombre d'appels à la fonction blowfish est paramétrable de 2^5 à 2^31 itérations

    • Disponible seulement sous OpenBSD

2.4 Les différents algorithmes de chiffrement sous Windows NT

  • LanMan :

    • Le mot de passe est mis en majuscule et divisé en deux parties de 7 caractères

      Chaque moitié sert à chiffrer en DES la chaîne "zéro" :

    • Attaques limitées à des mots de 7 caractères

    • Aucune graine n'est utilisée pour empêcher les attaques par dictionnaires pré-calculés

  • NTLM :

    • Le MD4 du mot de passe en Unicode

    • Aucune graine n'est utilisée pour empêcher les attaques par dictionnaires pré-calculés

2.5 Les différents algorithmes de chiffrement sur le Réseau

L'algorithme utilisé dépend fortement du protocole applicatif utilisé mais aussi de son niveau

  • En clair : telnet, ftp, r* commandes, pop, http, etc.

  • Challenge / réponse : principe

    • A la connexion d'un client, le serveur envoie une chaîne nommée challenge.

    • Le client calcule la réponse à partir du challenge, du mot de passe, d'autres données éventuellement et d'une fonction donnée.

    • Le client renvoie la réponse au serveur qui a effectué le même calcul de son côté.

    • L'accès est autorisé si les deux réponses sont identiques.

2.6 Les différents algorithmes de chiffrement sur le Réseau (suite et fin)

  • Challenge / réponse :

    • apop (rfc1939) : la réponse est le md5 de la concaténation du challenge et du mot de passe.

    • HTTP Digest (rfc2617) : la réponse est le md5 de la concaténation de plusieurs chaînes

    • SMB :

      • chaque tiers du mot de passe chiffré sert de clé au chiffrement du challenge en DES.

      • Suivant les versions du client et du serveur, ce sont les empreintes LanMan et/ou NTLM qui sont utilisées.

3. La localisation des empreintes

Une empreinte est le résultat du hachage d'un mot de passe par un algorithme non réversible.

Cette opération permet d'enregistrer dans le système une "image" du mot de passe
et empêche quiconque d'accéder au mot de passe en clair.

La localisation des empreintes dépend fortement du contexte :

  • Unix

  • Windows NT

  • Applications

3.1 La localisation des empreintes sous Unix

  • /etc/passwd

  • mots de passe "cachés" (shadow passwords) :

    • /etc/shadow : Linux, Solaris et d'autres...

    • Systèmes BSD : /etc/master.passwd

    • AIX : /etc/security/passwd

    • HP-UX (C2) : /etc/sec.passwd

    • SunOS (C2) : /etc/security/passwd.adjunct

3.2 La localisation des empreintes sous Windows NT

Avertissement :
- De nombreux clients sauvegardent les mots de passe des utilisateurs
   de façon réversible et accessible à tous dans la base de registre ou dans des fichiers utilisateurs.
- Les problèmes engendrés par ces mots de passe dépassent l'objet de cette présentation.

  • SAM :

    • $windir$\system32\config\sam

    • $windir$\repair\sam._

    • Disquette de réparation

  • frontpage : attention aux fichiers *.pwd

3.3 La localisation des empreintes applicatives

  • apache : les fichiers .htpasswd contiennent des mots de passe DES

  • apop : les fichiers ~/.apop/secret contiennent des mots de passe en clair

  • wwwboard, discus board, etc. : les fichiers suivants contiennent des mots de passe DES

    • admin.txt

    • passwd.txt

    • users.txt

4. Les logiciels de crackage

  • Crack

  • John the Ripper

  • L0phtCrack

  • Autres...

4.1 Crack

  • Crack 5.0a du 21/12/1996 - Open Source

  • Auteur : Alec Muffett

  • HomePage : http://www.users.dircon.co.uk/~crypto/

  • Seul le chiffrement DES est supporté en standard

  • Peut utiliser la fonction crypt du système pour supporter d'autres algorithmes

4.2 John the Ripper

  • John the Ripper v1.6 du 03/12/1998 - Open Source

  • Auteur : Solar Designer

  • HomePage : http://www.openwall.com/john/

  • Supporte les chiffrements DES , BSDI DES , MD5 , Blowfish et LanMan
    et les processeurs x86 , sparc , alpha , ppc , pa-risc et mips 32 et 64 bits

  • Fournit des fonctions avancées de génération de mots de passe
    à partir de règles de transformations, de statistiques ou de programmation.

  • Possède les implémentations DES et MD5 les plus rapides

4.3 L0phtCrack

  • L0phtCrack 2.52 for Win95/NT du 13/01/1999 - ShareWare

  • Auteurs : L0pht (Mudge et d'autres)

  • HomePage : http://www.l0pht.com/l0phtcrack/

  • Supporte les chiffrements LanMan et NTLM avec et sans challenge / réponse

  • Fournit un sniffer permettant de récupérer des empreintes sur le réseau

  • Permet de récupérer la SAM par SMB

  • Possède l'implémentation LanMan la plus rapide

4.4 Autres logiciels de crackage

Liste non exhaustive :

  • DES : qcrack (dictionnaires pré-calculés) , etc.
  • Windows NT :
    • sous Windows : Password Appraiser (dictionnaires pré-calculés)
    • sous Unix : NTCrack , lc15 (L0phtCrack v1.5)
    • sur le réseau : c2myazz
  • fichiers *.pwl de windows 3.x à windows 95 : Pwlcrack et beaucoup d'autres...
  • cisco (mode 7) : ciscocrack , cisco_decrypt7
  • bases LDAP : utiliser une fonction sha1 standard
  • Basic HTTP : echo 'ZHVjYW1wOlBldGl0Q3VyaWV1eDstKQ==' | mimencode -u
  • et tant d'autres...

5. La protection des mots de passe

  • La protection des mots de passe peut être réalisée à plusieurs niveaux :

    • dans le système

    • sur le réseau

    • au niveau applicatif

5.1 La protection des mots de passe Unix

  • Mots de passe "cachés" (shadow passwords)

    • La commande pwconv permet de déplacer les mots de passe
      du fichier /etc/passwd vers le fichier /etc/shadow (ou équivalent)
      Ce fichier ne doit être lisible que par les administrateurs

    • Attention : de nombreuses applications doivent avoir été compilées pour le supporter,
      tous les systèmes modernes supportent cette fonctionnalité (souvent activée par défaut)

    • Système avec PAM : ajouter dans /etc/pam.d/passwd le terme shadow à la fin de la ligne
      password required /lib/security/pam_pwdb.so

5.2 La protection des mots de passe Unix (suite et fin)

  • Autres algorithmes de chiffrement : MD5 et BlowFish

    • Linux sans PAM : ajouter MD5_CRYPT_ENAB yes dans /etc/login.defs

    • Système avec PAM : ajouter dans /etc/pam.d/passwd le terme md5 à la fin de la ligne
      password required /lib/security/pam_pwdb.so

    • OpenBSD : ajouter dans /etc/passwd.conf

      • localcipher=md5

      • localcipher=blowfish,x : 2^x itérations avec 4 <= x <= 31

5.3 La protection des mots de passe Windows NT

  • syskey

    • Chiffrement du contenu de la SAM en DES

    • Le mot de passe est :

      • soit sauvegardé sur une disquette
      • soit sauvegardé dans la partition système
      • soit demandé lors du démarrage du système

    • Toujours accessible "en clair" pour tout utilisateur avec les droits de débogage : pwdump2

5.4 La protection des mots de passe sur le réseau

  • telnet :

    • S/KEY One-Time Password System (rfc1760)

    • One Time Passwords in Everything (OPIE) - http://inner.net/opie
      OPIE is a freely redistributable kit that will drop into most *IX systems
      and replace your login and FTP daemon with versions that use OTP for user
      authentication. It also includes an OTP generator and a library to make it
      easy to add OTP authentication to existing clients and servers.
      
    • Stanford Remote Authentication Project (SRP) - http://srp.stanford.edu/srp/
      provides modified telnet and ftp clients for strong authentication
      

    • stelnet : telnet sur ssl

    • ssh : rlogin et rsh avec chiffrement et authentification forte

      Il existe une version officiellement autorisée par le SCSSI :
      ssf - http://www.in2p3.fr/securite/ssf/

5.5 La protection des mots de passe sur le réseau (suite)

  • POP3 : utiliser l'authentification apop

    • Nécessite que le mot de passe soit en clair dans un fichier

      Vérifier que ce fichier n'est accessible que par son propriétaire.

    • Le mot de passe peut être différent du mot de passe système de l'utilisateur

  • HTTP : utiliser l'authentification Digest

    • Implémenté dans aucun client ou serveur

    • Utiliser https

5.6 La protection des mots de passe sur le réseau (suite)

  • Stunnel : http://mike.daewoo.com.pl/computer/stunnel/
    designed to work as SSL encryption wrapper between remote client and local
    (inetd-startable) or remote server. The concept is that having non-SSL aware
    daemons running on your system you can easily setup to communicate with
    clients over secure SSL channels. stunnel can be used to add SSL
    functionality to commonly used inetd daemons like POP-2, POP-3 and IMAP
    servers as well as standalone daemons like NNTP, SMTP and HTTP without
    changes to the source code.
    Latest Version: 3.2 Last Update: May 24, 1999
    

5.7 La protection des mots de passe sur le réseau (suite)

  • challenge / réponse NTLM :

    • Microsoft a porté son système de challenge / réponse NTLM dans plusieurs protocoles ouverts : HTTP, IMAP, LDAP, NNTP et POP3

    • Avantages :
      - Le mot de passe n'est plus envoyé en clair

    • Inconvénients :
      - Dans une implémentation modifiée d'un client :
         la connaissance de l'empreinte du mot de passe suffit à s'authentifier.
      - Il s'agit d'extensions non documentées implémentées seulement dans
         . les serveurs IIS et Exchange
         . les clients Internet Explorer et Outlook.

    • Internet Explorer refuse d'utiliser NTLM dans HTTP au travers d'un relai

    • fetchmail permet d'utiliser l'authentification NTLM dans IMAP.

5.8 La protection des mots de passe sur le réseau (suite et fin)

  • SMB :

    • Sur chaque client :

      Interdire l'envoi du mot de passe en clair sur le réseau

    • Sur chaque serveur :

      Limiter le chiffrement à NTLM (NTLMv2 à partir du SP4 de NT4)

5.9 La protection des mots de passe applicatifs

  • apache : les fichiers .htpasswd ne doivent pas être accessibles par un quelconque moyen de partage de fichiers (ftp, http, nfs...).

  • wwwboard, discus board, etc. : ne pas utiliser ces systèmes :-( à moins qu'il soit possible de marquer les fichiers de mots de passe comme non accessibles.

  • serveurs Netscape : le fichier id2entry.dbb (base LDAP) ne doit pas être accessible par un quelconque moyen de partage de fichiers.

  • frontpage : protéger les fichiers *.pwd par des ACL.

6. Le durcissement des mots de passe

  • Permet de n'accepter un nouveau mot de passe

    seulement après s'être assuré qu'il suit un certain nombre de règles.

  • Le durcissement des mots de passe est toujours lié au système

6.1 Pourquoi durcir les mots de passe ?

  • Constitution des mots de passe crackés
       1887 (100.00 % ) Mots de passe crackés
    
        952 ( 50.45 % ) Un mot en minuscules
        336 ( 17.81 % ) Un mot en minuscules suivi du chiffre '1'
        153 (  8.11 % ) Un mot en minuscules suivi d'un chiffre autre que '1'
          1 (  0.05 % ) Un mot en minuscules suivi d'une majuscule
         24 (  1.27 % ) Un mot en minuscules suivi d'un autre caractère
    
         13 (  0.69 % ) Le chiffre '1' suivi d'un mot en minuscules
          7 (  0.37 % ) Un chiffre autre que '1' suivi d'un mot en minuscules
          7 (  0.37 % ) Un autre caractère suivi d'un mot en minuscules
    
        183 (  9.70 % ) Plusieurs chiffres suivis d'un mot en minuscules
          3 (  0.16 % ) Un mot en minuscules suivis de plusieurs chiffres
         13 (  0.69 % ) minuscule(s) chiffre(s) minuscule(s)
          2 (  0.11 % ) chiffre(s) minuscule(s) chiffre(s)
         77 (  4.08 % ) nombre
          9 (  0.48 % ) minuscules et chiffres
    
         32 (  1.70 % ) Une majuscule suivi de minuscule(s)
         10 (  0.53 % ) Une majuscule suivi de minuscule(s) et du chiffre '1'
          6 (  0.32 % ) Une majuscule suivi de minuscule(s) et d'un chiffre autre que '1'
          1 (  0.05 % ) Une majuscule suivi de minuscule(s) et de chiffres
          1 (  0.05 % ) Une majuscule suivi de minuscule(s) et d'une majuscule
          1 (  0.05 % ) Une majuscule suivi de minuscule(s) et d'un autre caractère
    
         12 (  0.64 % ) Un mot en majuscules
          1 (  0.05 % ) Un mot en majuscules suivi du chiffre '1'
          2 (  0.11 % ) Un mot en majuscules suivi d'un autre chiffre
          1 (  0.05 % ) Un mot en majuscules suivi de plusieurs chiffres
          0 (  0.00 % ) Un mot en majuscules suivi d'un autre caractère
          1 (  0.05 % ) Une suite de majuscule(s) et de minuscule(s)
          0 (  0.00 % ) Une suite de majuscule(s) et de chiffre(s)
          1 (  0.05 % ) Une suite de majuscule(s), de minuscule(s) et de chiffre(s)
    
         38 (  2.01 % ) Toute autre combinaison de caractères
    

6.2 Pourquoi durcir les mots de passe ? (suite)

  • Les mots de passe choisis par les utilisateurs non avertis sont trop simples

  • Pour accéder à un système il suffit d'un seul mot de passe

  • Les temps de crackage de plus en plus courts :

    • chiffrement DES de 8 caractères en minuscules : 99 jours
    • chiffrement LANMAN de 7 caractères en minuscules : 14 heures 30
    • chiffrement LANMAN de 7 caractères alphanumériques : 5 jours et demi
    • chiffrement LANMAN de 7 caractères (69 caractères) : 1 an et 4 mois
    • chiffrement DES de 8 caractères (95 caractères) avec une machine "EFF" : 17,5 jours...

6.3 Pourquoi durcir les mots de passe ? (suite et fin)

  • Longueur des mots de passe crackés
        0         0.38 %
        1         0.11 %
        2         0.97 %
        3         6.12 %
        4         9.12 %
        5        12.88 %
        6        34.01 %
        7        18.45 %
        8        17.97 %
    
  • 20.13 % des mots de passes crackés sont directement déductibles du login

  • 23.58 % des mots de passes crackés sont déductibles des informations associées à l'utilisateur

6.4 Le durcissement des mots de passe sous Unix

  • npasswd : par Clyde Hoover - http://www.utexas.edu/cc/unix/software/npasswd/

    • Remplace les commandes passwd , chfn et chsh

    • Effectue sur les nouveaux mots de passe de nombreux tests à partir de règles de transformations et de dictionnaires avant de les accepter.

  • CrackLib :

    • Module PAM basé sur CrackLib v2.7 d'Alec Muffett (auteur de Crack)

    • Accepte un nouveau mot de passe seulement si celui-ci n'est pas crackable par Crack.

6.5 Le durcissement des mots de passe sous Windows NT

  • passfilt.dll

    • Fourni avec les Services Packs de Windows NT depuis NT4 SP2
      Attention : installation manuelle par changement d'une clé de registre

    • Trop basique et non configurable :

      • Au moins 6 caractères
      • 2 caractères parmi les majuscules, les chiffres et les signes de ponctuation.

      Par exemple, Bonjour1 est accepté !!!

    • Il est conseillé d'utiliser une implémentation d'un fournisseur tiers.

6.6 Quelques règles de constitution

  • Il doit contenir 6 à 7 caractères au moins.
  • Il doit utiliser :
    • des caractères de contrôle,
    • et/ou de ponctuation,
    • et/ou des chiffres
    • et/ou des lettres majuscules et minuscules.

  • Il ne doit pas faire référence à une information :
    • générale ou personnelle.
    • liée à l'installation du système, à l'entreprise ou à l'organisation.
  • Ne doit pas être un simple mot référencé dans un dictionnaire (français, anglais ou autre)
  • Ne doit pas être un des exemples donnés dans le cours

6.7 Quelques règles de constitution (suite et fin)

  • Méthodes simples pour obtenir de bons mots de passe faciles à retenir :
    • combiner deux mots existants en introduisant des chiffres et/ou des caractères de ponctuation,
    • utiliser des mots écrits en phonétique,
    • utiliser les premières lettres de vers, phrases, expressions, adresses, etc.

  • Exemples de bons mots de passe :
    • Beau!C', Atout;Kc, C2much+, Love4evEr, 10Cquer, 13abilE, 47AdlDL, HqcUafulv.

  • Exemples de mauvais mots de passe
    • racine, rootroot, toor, super, tOtO, vax, foobar, CB3506, 8786VL92, charlotte, azerty, Paris, 28Jul92, 24/04/89.
    • Beau!C', Atout;Kc, C2much+, Love4evEr, 10Cquer, 13abilE, 47AdlDL, HqcUafulv.


HSC ® © Hervé Schauer Consultants 1999 - 142, rue de Rivoli - 75001 Paris
Téléphone : +33 141 409 700 - Télécopie : +33 141 409 709 - Courriel : <secretariat@hsc.fr>