lm-hash et nt-hash

lm-hash et nt-hash

Un petit billet sur les hash utilisé pour l’authentification locale sous Windows.

Le LM-Hash

Le LM-hash, hérité de LAN Manager, est utilisé depuis Windows for Workgroups 3.11 pour générer les empreintes des mots de passe d’authentification locale Windows. Son fonctionnement est du fait de son age très rudimentaire.

Un mot de passe LM-hash a 2 contraintes :

  • Il ne peut pas faire plus de 14 caractères.
  • Il est limité aux caractères de la page de code OEM (en pratique l’ASCII imprimable) : [a-zA-Z0-9 ! »#$%&'()*+,-./:;<=>?@[\]^_`{|}~].

Il fonctionne ainsi :

1 / Le mot de passe est converti en majuscule.

2 / Si le mot de passe ne fait pas 14 bytes, alors des zéro sont rajoutés derrière le mot de passe.

3 / Le mot de passe est découpé en 2 blocs de 7 bytes.

4 / Chaque bloc de 7 bytes permet de générer une clé DES. Une clé DES ayant besoin de 64 bits pour être généré, il est ajouté tous les 7 bits un bit de parité et les blocs sont convertis en bit stream.

5 / Ces 2 clés DES permettent de chiffrer en ECB la chaine ASCII « KGS !@#$% » ( soit : 0x4B,0x47,0x53,0x21,0x40,0x23,0x24,0x25 en hexadécimal), ce qui génère 2 textes chiffrés de 8 bytes.

6 / Ces 2 textes chiffrés sont concaténés pour créer une chaine de 16 bytes qui devient le LM hash.

Voici un exemple :

Le mot de passe est : ArtifLo23 (41 72 74 69 66 4c 6f 32 33)

1 / Tout est converti en majuscule :

ARTIFLO23

2 / Des zéro sont ajoutés a la fin pour atteindre 14 bytes :

ARTIFLO2300000

3 / Le mot de passe est découpé en 2 blocs de 7 bytes (entre parenthèse la valeur hexadécimale) :

Bloc 1 : ARTIFLO (41 52 54 49 46 4c 4f)

Bloc 2 : 2300000 (32 33 00 00 00 00 00)

4 / 2 clés DES sont générées à partir des blocs (j’affiche uniquement à présent la valeur hexadécimale):

Bloc1 : 40 a8 94 89 94 32 31 9e

Bloc2 : 32 19 c1 01 01 01 01 01

5 / Ces 2 clés génèrent le hash de la chaine « KGS!@#$% » :

Bloc1 : 2c fb 54 1d 29 3b a1 db

Bloc2 : b7 5e 0c 8d 76 95 4a 50

6 / Les 2 blocs de hash sont concaténés pour créer le LM-Hash :
$1
La faiblesse majeure du LM-hash est que les deux moitiés de 7 caractères sont hachées indépendamment, sans sel : chacune se retrouve très rapidement par force brute ou par rainbow table. C’est pourquoi il ne doit plus être utilisé.

Le NT-hash ou NTLM hash

Le NT-hash existe depuis Windows NT. Depuis Windows Vista, il est le seul hash stocké par défaut pour l’authentification locale sous Windows (le LM-hash n’est plus conservé).

Face au LM-Hash le NT-Hash possède ces avantages :

  • Le mot de passe du nt-hash peut faire jusqu’à 127 caractères
  • En plus des caractères ASCII, les caractères régionaux peuvent être utilisé.
  • Il prend en compte la casse.
  • Ce n’est plus un algorithme de chiffrement qui est utilisé mais un algorithme de générateur d’empreinte : le MD4.

Son fonctionnement est beaucoup plus simple :

1 / Le mot de passe est représenté en Unicode pour harmoniser tous les alphabets.

2 / Il est converti en UNICODE little endian

3 / Il est haché en MD4.

Voici un exemple :

Le mot de passe est : ArtifLo23 (41 72 74 69 66 6c 6f 32 33)

1 / Ici les caractères sont de l’ASCII pur, rien ne change.

2 / La conversion en Unicode little endian

410072007400690066004c006f0032003300

3 / Le hash MD4 qui donne le NT-Hash

6bbb885acc9fe37317e6c2c7725efa93

Attention : le NT-hash n’est pas salé. Deux utilisateurs ayant le même mot de passe ont le même hash, ce qui rend possibles les rainbow tables et les attaques de type pass-the-hash.

$1, je vous recommande ce site avec lequel j’ai pu faire tous mes tests :

http://nediam.com.mx/winhashes/index.php

3 réflexions sur “lm-hash et nt-hash”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *