Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Rainbow Table Attack

hacking

Définition

Les rainbow tables sont des structures de données précalculées permettant de retrouver rapidement un mot de passe en clair à partir de son haché cryptographique, via un compromis temps-mémoire (time-memory trade-off) proposé par Martin Hellman en 1980 et optimisé par Philippe Oechslin en 2003 avec les rainbow tables modernes. Une rainbow table contient des chaînes de hachages réduction : à partir d'un point de départ (mot de passe candidat), on applique alternativement une fonction de hachage (hash) et une fonction de réduction (qui transforme un haché en un nouveau mot de passe candidat). Chaque chaîne stocke uniquement son point de départ et son point d'arrivée. Pour retrouver un mot de passe, on recalcule des chaînes depuis le haché cible jusqu'à trouver un point d'arrivée dans la table, puis on recalcule la chaîne correspondante depuis le début pour trouver le mot de passe. Par rapport au simple précalcul (tables de correspondance haché→plaintext), les rainbow tables utilisent beaucoup moins de stockage pour couvrir le même espace de mots de passe, au prix d'un calcul supplémentaire lors de la recherche. Des rainbow tables pour MD5 et LM (Windows XP) couvrent tous les mots de passe de moins de 8 caractères alphanumériques en quelques centaines de GB. Les sels (salts) cryptographiques sont la défense principale contre les rainbow tables : un sel est une valeur aléatoire unique par utilisateur concaténée au mot de passe avant hachage. Même si deux utilisateurs ont le même mot de passe, leurs hachés diffèrent. Les rainbow tables précalculées sont inutilisables contre des hachés salés car il faudrait recalculer une table entière pour chaque valeur de sel possible. Des projets comme RainbowCrack, les tables de freerainbowtables.com (MD5, SHA1, LM, NTLM), et des services en ligne (CrackStation, MD5Decrypt) permettent d'utiliser des rainbow tables précalculées pour retrouver rapidement des hachés MD5, SHA1, et surtout les hachés NTLM (Windows) qui ne sont pas salés dans le protocole NTLMv1.

Fonctionnement

Construction : générer N chaînes de longueur t en appliquant alternativement Hash et Reduce. Stocker (start, end) pour chaque chaîne. Espace réduit par rapport à la lookup table pure : O(N) au lieu de O(N×t). Recherche : appliquer Reduce(hash_cible), vérifier si dans les endpoints. Si oui, recalculer la chaîne depuis le start pour trouver le plaintext précédant le hash. Sinon, appliquer Hash(Reduce()) et répéter jusqu'à t fois.

Exploitation offensive

Les hachés NTLM (utilisés dans Active Directory) ne sont pas salés. Des services comme CrackStation avec ses rainbow tables NTLM permettent de retrouver en quelques secondes des mots de passe courants depuis leurs hachés. Après un Pass-the-Hash ou un dump de SAM/NTDS.dit, les hachés sont soumis à ces services pour récupérer les mots de passe en clair, utilisables pour des authentifications nécessitant le mot de passe réel (VPN, webmail, MFA).

Détection et mitigation

Les politiques de mots de passe robustes (longueur ≥ 12 caractères, caractères spéciaux, absence de mots du dictionnaire) rendent les rainbow tables inefficaces même pour les hachés non salés. Les algorithmes de hachage modernes avec sel intégré (bcrypt, scrypt, Argon2) sont résistants aux rainbow tables et au GPU cracking. La migration depuis NTLM vers des mécanismes d'authentification plus sécurisés (Kerberos avec AES256) améliore la résistance.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis