Des mythes et des légendes : Les mots de passe dans Windows III (LM et NTLM)
SAM a graduellement amélioré un Microsoft la sécurité de son fichier, mais il a aussi maintenu la compatibilité en arrière des systèmes inherentemente incertains comme Windows 9x. Avec la sophistication chaque fois plus grande d'outils capables d'attaquer par force brute les hashes LM et NTLM, le chiffrage (surtout le LM) est virtuellement devenu inutile si le mot de passe n'est pas réellement entrópica et complexe. Dans la Vue, enfin, on a éliminé au moins le plus faible chaînon, l'hash LM. En Vista, por fin, se ha eliminado al menos el eslabón más débil, el hash LM.
Si le résultat du renversé est étudié online ou offline (après que ’saute’ le syskey) du SAM, nous verrons quelque chose de pareil :
Administrador:500:42f29043y123fa9c74f23606c6g522b0:71759a1bb2web4da43e676d6b7190711 :::
que cache en réalité l'hash LM du mot de passe
(42f29043y123fa9c74f23606c6g522b0) et l'hash NTLM
(71759a1bb2web4da43e676d6b7190711)
Le chiffrage LM (Lan Manager)
Comme nous avons dit, le SAM emmagasine deux chiffrages par mot de passe, LM et NTLM. LM est faible et incertain par dessin, et de plus, en tenant en compte la puissance des actuels ordinateurs capables de prouver des centaines de milliers de mots de passe par seconde, son 'chiffrage' est virtuellement inutile. LM ne profite pas bien des caractères des mots de passe et de plus il commet d'autre série de jugements importants. Pour calculer l'hash LM il consiste à remplir l'un des pas de ‘0 ′ le mot de passe jusqu'à arriver aux 14 caractères (au cas où elle est plus courte) et partager le résultat en deux morceaux de 7 octets chacun (la deuxième farce de ceux-ci ‘0 ′ si c'est nécessaire). Il convertit aussi à des majuscules tous les caractères. Sur ces deux morceaux il applique un algorithme standard (DONNE) pour coder une chaîne arbitraire, connue et fixe (4b47532140232425) et les concatena. LM no aprovecha bien los caracteres de las contraseñas y además comete otra serie de fallos importantes. Uno de los pasos para calcular el hash LM consiste en rellenar de ‘0′ la contraseña hasta llegar a los 14 caracteres (en caso de que sea más corta) y partir el resultado en dos trozos de 7 bytes cada uno (el segundo relleno de esos ‘0′ si es necesario). También convierte a mayúsculas todos los caracteres. Sobre estos dos trozos aplica un algoritmo estándar (DES) para cifrar una cadena arbitraria, conocida y fija (4b47532140232425) y los concatena.
L'algorithme commet une série d'erreurs impardonnables, même pour l'époque dans laquelle il a été dessiné. Convertir tout à des majuscules permet aux programmes de force brute d'attaquer directement en utilisant des majuscules et en réduisant ainsi le temps de calcul, diminue considérablement les combinaisons. Mais le plus grave consiste en ce que le fait de partager le mot de passe en deux, permet aux programmes de force brute, de diviser le travail et d'agir dans une parallèle sur les deux morceaux. Ainsi c'est ce que par exemple, dans un mot de passe de 10 caractères, un programme de force brute aura à attaquer en réalité deux différentes parties : un mot de passe de sept caractères et l'autre de trois, presque banal de deviner. Un utilisateur avec un mot de passe de 14 caractères serait presque égal d'exposé que l'un qui utilisait l'un de 7 caractères de long, puisque au lieu d'élever exponencialmente le temps d'attaque, on tarderait seulement le double (deux morceaux de sept au lieu de l'un) ou le même temps s'il est travaillé dans une parallèle. Contourner à la différenciation entre des majuscules et des minuscules ne résulte non plus, pas du tout, une bonne idée. Pero lo más grave es que el hecho de partir la contraseña en dos, permite a los programas de fuerza bruta, dividir el trabajo y actuar en paralelo sobre ambos trozos. Así es que por ejemplo, en una contraseña de 10 caracteres, un programa de fuerza bruta tendrá que atacar en realidad dos partes diferentes: una contraseña de siete caracteres y otra de tres, casi trivial de adivinar. Un usuario con una contraseña de 14 caracteres estaría casi igual de expuesto que uno que utilizase una de 7 caracteres de longitud, pues en vez de elevar exponencialmente el tiempo de ataque, sólo se tardaría el doble (dos trozos de siete en vez de uno) o el mismo tiempo si se trabaja en paralelo. Obviar la diferenciación entre mayúsculas y minúsculas tampoco resulta, en absoluto, una buena idea.
Le chiffrage NTLM (NTLan Manager)
NTLM suppose la deuxième "tentative" de Microsoft pour améliorer le protocole des mots de passe. Enfin il distingue entre des majuscules et des minuscules et internamente il est plus simple et robuste : il calcule l'hash en codant avec le standard MD4 après une petite modification de la valeur hexadecimal du mot de passe. calcula el hash cifrando con el estándar MD4 tras una pequeña modificación del valor hexadecimal de la contraseña.
Mais par beaucoup d'améliorations qu'il introduit, NTLM reste annulé. Parce que par défaut les mots de passe sont emmagasinés et utilisés dans les deux formats, le LM archaïque et NTLM, les assemblées dans le même SAM. Un clair exemple de comment la sécurité est si forte comme le plus faible de ses chaînons. Un ejemplo claro de cómo la seguridad es tan fuerte como el más débil de sus eslabones.
Des curiosités
Pendant de temps on a donné certes que le mot de passe parfait dans Windows devait être de 14 caractères. D'abord parce qu'avant Windows 2000 (qui permet des mots de passe de 127 caractères) les tableaux de dialogue de NT qui demandait le mot de passe, ils ne laissaient pas écrire plus de 14 lettres.
Et une seconde par la propre nature de LM, qui ne supporte de plus de 14 caractères. Mais … si dans Windows 2000 plus de 14 caractères sont acceptés pour le mot de passe, et le chiffrage LM s'est maintenu jusqu'à la Vue par des raisons de compatibilité. Qu'est-ce qui passait alors avec le chiffrage LM quand le mot de passe était composé par plus de 14 caractères ? Comment le divise internamente Windows pour calculer l'hash LM si celui-ci a besoin de partager en deux morceaux de 7 octets chacun ? Le protocole LM remplit le mot de passe de zéro quand il est plus petit de 14 lettres pour pouvoir la partager en deux … ¿Qué pasaba entonces con el cifrado LM cuando la contraseña estaba compuesta por más de 14 caracteres? ¿Cómo lo divide internamente Windows para calcular el hash LM si éste necesita partirla en dos trozos de 7 bytes cada uno? El protocolo LM rellena la contraseña de ceros cuando es menor de 14 letras para poder partirla en dos…
comment diviser alors en deux morceaux de 7 caractères un mot de passe de 15 ? La question intéressante pour laquelle n'existe pas une réponse.
De ce type de mots de passe, simplement, l'hash LM n'est pas calculé. Dans ces cas le système d'exploitation n'emmagasine pas l'hash LM, l'algorithme ne le supporte pas. En plus d'améliorer la sécurité par le fait dans soi d'utiliser un mot de passe de plus grande longitude, en donnant un tour étonnant d'écrou, il protège cela contre des attaques de force brute. Además de mejorar la seguridad por el hecho en sí de usar una contraseña de mayor longitud, dando una asombrosa vuelta de tuerca, esto protege contra ataques de fuerza bruta.
Windows, quand le mot de passe a plus de 15 caractères, emmagasine la constante aad3b435b51404eeaad3b435b51404ee comme hash LM (un résultat de chacune applique le chiffrage LM à deux chaînes nulles de sept caractères et concatenarlas), qui est aussi équivalent à un mot de passe nul. Comme le mot de passe n'est pas évidemment nul, les tentatives d'attaques contre l'hash échoueront systématiquement. Cela ne signifie pas qu'un mot de passe de plus de 14 caractères est 'équivalent' à un mot de passe nul. Bien que LM indique que le mot de passe est nul, s'il le n'est pas, logiquement là il est (à côté de soi, littéralement) l'hash NTLM pour confirmer qu'il n'est pas ainsi. Les programmes de force brute qui cherchent le mot de passe dans l'hash LM ne fonctionneront pas correctement. Esto no significa que una contraseña de más de 14 caracteres sea ‘equivalente’ a una contraseña nula. Aunque LM indique que la contraseña es nula, si no lo es, lógicamente ahí está (a su lado, literalmente) el hash NTLM para confirmar que no es así. Los programas de fuerza bruta que busquen la contraseña en el hash LM no funcionarán correctamente.
Dans tout cas, il a toujours existé la possibilité de lui indiquer Windows qui n'emmagasine pas l'hash LM du mot de passe (bien qu'il soit de moins de 14 caractères) dans le système. Une vue, par défaut, ne l'emmagasine pas.
Plus d'information :
une un una-al-dia (01/04/2008) les Mythes et les légendes : Les mots de passe dans Windows I (Types d'attaques) http://www.hispasec.com / unaaldia / 3447/mitos-leyendas-las-contrasenas-windows-tipos-ataq
une un una-al-dia (09/04/2008) les Mythes et les légendes : Les mots de passe dans Windows II (Syskey) http://www.hispasec.com / unaaldia / 3455/mitos-leyendas-las-contrasenas-windows-syskey
L'auteur : Sergio de los Santos (Hispasec.com)






















