Les risques cachés des mots de passe des comptes d’ordinateurs dans l’Active Directory
Introduction
Lors d'un précédent test de pénétration interne, j'étais bloqué en essayant d'obtenir un compte pour m'authentifier à l'Active Directory de ma cible. Après quelques recherches sur Google, je suis tombé sur une technique dont je n'avais jamais entendu parler auparavant : l'attaque timeroasting, découverte par Secura.
À un niveau élevé, cette attaque est capable d'extraire les hachages de mots de passe des ordinateurs en abusant du protocole NTP et peut être utile en dernier recours pour s'authentifier en raison des anciens comportements dans la gestion des mots de passe des comptes d'ordinateurs.
Cet article de blog vise à sensibiliser sur les mots de passe des anciens ordinateurs, à expliquer l'attaque et à aider les défenseurs à identifier les ordinateurs vulnérables dans leur propre environnement.
Attentes concernant les mots de passe des ordinateurs
Si, comme moi, vous pensiez et vous attendiez à ce que les comptes ordinateurs aient un long mot de passe aléatoire, généré automatiquement et renouvelé tous les trente jours, vous pourriez avoir tort.
Il y a plusieurs cas où ce n'est pas le cas. Tout d'abord, on peut créer un compte ordinateur et cocher les éléments suivants :
Figure 1 - Création d'un ordinateur en tant qu'ordinateur pre-Windows 2000
La plupart du temps, les administrateurs ne sont pas conscients des conséquences. Joe a décrit l'impact de cocher cette case dans un ancien blogpost de 2012. Cocher la case appliquera le "mot de passe par défaut de l'ordinateur NT4".
À l'époque de Windows NT4, les noms d'ordinateurs étaient initialisés avec un mot de passe par défaut correspondant aux 14 premiers caractères de leur nom d'ordinateur, en minuscules et sans le signe dollar à la fin.
Par exemple, le mot de passe de MyLongComputerAccount$ sera mylongcomputer.
Cette pratique était courante avant Windows 2000 et présente des risques de sécurité potentiels qui peuvent encore affecter les environnements modernes, car les comptes d'ordinateurs ne sont qu'une sous-classe de la classe utilisateur et peuvent effectuer les mêmes énumérations et attaques qu'un utilisateur standard.
Le même comportement s'applique lors de l'utilisation de lignes de commande ou de scripts pour créer des ordinateurs, car la plupart du temps, l'ancienne API est utilisée. Par exemple, c'est le cas lors de l'utilisation de net computer.
Figure 2 – Création d'un compte ordinateur avec net computer
C'est également le cas si vous réinitialisez le compte.
Figure 3 – Réinitialisation du compte d'un ordinateur
Énumération des noms d’ordinateurs
Après avoir lu que les comptes d'ordinateurs pouvaient avoir un mot de passe presque identique à leurs noms, la question suivante est de savoir comment recueillir les noms des ordinateurs.
D'un point de vue non authentifié, les moyens les plus probables de les obtenir, à mon avis, sont :
- Scanner SMB, par exemple en utilisant netexec smb ip_ranges.txt
- Zone DNS inverse si elle existe, par exemple en utilisant dnsrecon -d domain. Local -r 192.168.0.0/16
- Surveillance passive ou attaque de type man-in-the-middle en utilisant des outils tels que Wireshark ou responder
- L'OSINT peut également aider
Si vous n'avez recueilli que quelques noms d'ordinateurs, cela peut suffire à deviner et créer une liste d'ordinateurs, car la plupart des entreprises utilisent une convention de nommage pour leurs machines.
Attaque par mots de passe sur les ordinateurs
Munie d'une liste d'ordinateurs, on peut effectuer une attaque par mots de passe, par exemple avec Kerbrute, et espérer obtenir des identifiants d'ordinateur valides.
Figure 4 – Attaque des comptes ordinateurs
L’attaque timeroasting
L'attaque timeroasting poursuit le même objectif mais diffère par la technique utilisée. Au lieu de tenter des mots de passe, ce qui est détecté dans la plupart des environnements matures, la technique timeroasting abuse du protocole NTP pour obtenir les hachages de comptes ordinateurs et peut être effectuée par défaut dans les environnements Active Directory modernes.
En effet, les ordinateurs joints au domaine utilisent une version authentifiée de NTP développée par Microsoft pour prévenir les attaques de falsification de l'heure. Cette version ajoute un code d'authentification de message cryptographique (MAC) aux réponses NTP, en utilisant le hachage NTLM du mot de passe du compte ordinateur.
Cependant, tout RID peut être utilisé pour demander une réponse, permettant potentiellement à des parties non authentifiées d'obtenir les hachages de mots de passe salés de tous les comptes d'ordinateurs. Si les mots de passe ne sont pas forts et aléatoires, ces hachages peuvent être craqués hors ligne.
Les détails et les scripts en Python et PowerShell pour recueillir les hachages sont fournis sur le Github de Secura.
Figure 5 – Collecte des hachages des comptes ordinateurs en utilisant la technique Timeroasting
À partir de là, un attaquant pourrait forcer ces hachages hors ligne en utilisant la version bêta de hashcat, grâce à une liste de mots de passe basée sur les noms d'ordinateurs, mais aussi en utilisant des listes de mots et des règles. Si le mot de passe a été défini manuellement par un administrateur, cela peut être intéressant.
./hashcat -m 31300 timeroast.hashes --username computers_pass.txt
Figure 6 - Cassage des hachages des ordinateurs en utilisant Hashcat
Des ordinateurs potentiellement vulnérables
Une méthode de détection consiste à énumérer et examiner les ordinateurs dont le mot de passe a été défini il y a plus de 30 jours, car de nos jours, les mots de passe des comptes d'ordinateurs sont automatiquement renouvelés s'il n'y a pas d'exception à cette règle créée par les administrateurs.
De plus, assurez-vous de détecter les tentatives de connexion échouées avec des comptes ordinateurs.
Le script suivant peut être utile pour identifier les ordinateurs potentiellement vulnérables pour les défenseurs. Il nécessite d'être authentifié et d'avoir le module Active Directory.
Code Block 1 - Trouver les ordinateurs dont le mot de passe a été défini il y a plus de 30 jours
Conclusion
Pour conclure, l'attaque timeroasting présente une menace en exploitant les anciens comportements dans la gestion des mots de passe des comptes d'ordinateurs.
En abusant du protocole NTP, les attaquants peuvent extraire les hachages de mots de passe des ordinateurs et potentiellement obtenir un accès non autorisé aux environnements Active Directory. Il est crucial pour les défenseurs de reconnaître les risques posés par les comptes d'ordinateurs anciens et de mettre en œuvre des mesures pour atténuer ces vulnérabilités.
Il est essentiel de revoir et de mettre à jour régulièrement les mots de passe des comptes d'ordinateurs, en particulier ceux définis manuellement ou datant de plus de 30 jours. En utilisant des scripts de détection et en restant informé des vecteurs d'attaque émergents comme le timeroasting, les organisations peuvent mieux protéger leurs environnements contre les menaces sophistiquées.
Références
Auteur