Accès aux informations d'identification et hachage
Accès aux informations d'identification et hachage
• Décrire les méthodes de collecte des hachages et des informations d’identification à partir des
systèmes cibles
Au cours des dernières décennies, les systèmes informatiques se sont appuyés sur des noms
d’utilisateur et des mots de passe pour l’authentification. Le nom d’utilisateur fournit l’identité
du compte et le mot de passe permet de vérifier l’identité de l’utilisateur, car il s’agit d’un secret
que seul l’utilisateur du compte doit connaître. Les mots de passe ne sont pas destinés à être
facilement devinables, mais à ce jour, les utilisateurs sont enclins à utiliser des mots de passe
faibles ou connus susceptibles d’être compromis, ce qui est un signe certain d’une mauvaise
hygiène de sécurité. Les utilisateurs peuvent même essayer de court-circuiter les politiques de
sécurité des mots de passe sur les réseaux informatiques (par exemple, une stratégie de mot de
passe peut exiger que les mots de passe dus à au moins huit caractères et comprennent au moins
un caractère numérique et un caractère spécial), en utilisant des techniques telles que leetspeak,
qui est une représentation alternative du texte (par exemple, Mot de passe = P@22w0rd).
Leetspeak peut faire l’objet d’attaques par force brute à l’aide de règles de craquage de mot de
passe, ou d’attaques basées sur un dictionnaire contre le hachage du mot de passe, lorsque la
version en texte brut du mot de passe de l’utilisateur correspond à une information
d’identification compromise connue trouvée dans les listes de mots disponibles sur Internet. Les
utilisateurs et leurs mots de passe représentent toujours l’un des maillons les plus faibles des
réseaux organisationnels, et les mots de passe sont donc une cible prioritaire pour les attaquants.
Ce chapitre décrit diverses méthodes d’accès aux informations d’identification, mais se
concentre principalement sur les attaques d’authentification par mot de passe.
CONSEIL Le site Web center for Internet Security (CIS) (https://www.cisecurity.org ) est une
excellente ressource qui offre les meilleures pratiques de l’industrie pour les configurations de
sécurité des systèmes d’exploitation ainsi que des informations sur les politiques de sécurité par
mot de passe recommandées qui peuvent être adoptées au sein d’une organisation.
Le hachage de mot de passe est le processus de transformation du mot de passe en texte brut
d’un utilisateur en une valeur de hachage ou un résumé de longueur fixe, à l’aide d’une fonction
de hachage cryptographique unidirectionnelle, où le contenu d’origine ne peut pas être
déterminé à partir du hachage. La valeur de hachage assure l’intégrité, de sorte que seule la
valeur de texte brut d’origine doit générer la même valeur de hachage. Par exemple, lorsqu’un
utilisateur entre son mot de passe pour se connecter au système d’exploitation, le système
d’exploitation utilise une fonction de hachage pour générer la valeur de hachage du mot de passe
entré par l’utilisateur et la compare à la valeur de hachage stockée dans sa base de données. Si
les valeurs de hachage sont les mêmes, l’utilisateur est connecté. Un sous-produit du hachage du
mot de passe est la confidentialité du mot de passe, de sorte que la divulgation du mot de passe
en texte brut de l’utilisateur dans la base de données des mots de passe est protégée par une
valeur de hachage arbitraire. Un attaquant devrait utiliser diverses attaques basées sur des mots
de passe pour récupérer la valeur en texte brut du mot de passe. Ce chapitre traite des types de
hachage Windows et Linux et des algorithmes de hachage spécifiques, ainsi que des attaques
basées sur les informations d’identification sur les systèmes d’exploitation Windows et Linux en
ce qui concerne les types d’attaques par mot de passe que vous pourriez rencontrer lors de
l’examen GPEN.
• NTLM Une suite de protocoles de stimulation-réponse héritée qui prend en charge à la fois les
ouvertures de session non interactives, où l’hôte local authentifie l’utilisateur localement, et les
ouvertures de session interactives, où le client s’appuie sur un contrôleur de domaine pour
l’authentification au domaine ou aux ressources réseau.
Les sections suivantes traitent brièvement de l’objectif de ces protocoles, mais se concentrent
principalement sur les méthodes utilisées par les attaquants pour exploiter leurs lacunes, soit par
le biais de vulnérabilités connues, soit par des configurations faibles.
Imaginez une scène dans un film où l’un des personnages se rend dans la cachette souterraine.
La personne frappe cinq fois à la porte, puis un garde du corps derrière la porte ouvre le judas et
pose la question: « Quel est le mot de passe »? Si le mot de passe correct est fourni, la personne
peut entrer par la porte, car elle est considérée comme digne de confiance. Le protocole de
stimulation-réponse fonctionne de manière très similaire. Lorsque le défi-réponse est utilisé pour
l’authentification par mot de passe, un objet (par exemple, un utilisateur) demande l’accès à un
service et est invité à entrer le mot de passe correct (« défi »). Si le mot de passe fourni par l’objet
est correct (« réponse »), l’accès est accordé ; sinon, l’objet doit réessayer l’authentification et
est autorisé à réessayer jusqu’à ce que le nombre maximal de tentatives d’authentification soit
épuisé, auquel cas l’objet est verrouillé hors du compte.
ATTENTION Une stratégie de verrouillage de compte est une mesure de sécurité utilisée pour appliquer
le nombre maximal de tentatives infructueuses qu’un compte peut effectuer pour se connecter à
une ressource. Dans Windows, ces paramètres sont appliqués au Registre local ou à la stratégie
de groupe AD. Avant d’essayer de vous connecter au réseau d’un client lors d’un engagement,
reportez-vous aux règles d’engagement (RoE) ou consultez le client afin de comprendre quel est
le seuil de la stratégie de sécurité afin de ne pas commencer à verrouiller les comptes !
Dans Windows, New Technology LAN Manager (NTLM) est une famille de protocoles de
sécurité qui assure la confidentialité, l’intégrité et l’authentification pour authentifier les
utilisateurs et les ordinateurs en fonction d’un mécanisme de stimulation-réponse. La suite de
protocoles NTLM englobe le protocole d’authentification LAN Manager (LM) et les protocoles de
session NTLM version 1 (NTLMv1) et NTLM version 2 (NTLMv2) dans un package unique appelé
package d’authentification Windows MSV1_0. Les serveurs de ressources Windows et les
serveurs Active Directory s’appuient toujours sur le mécanisme de stimulation-réponse NTLM
comme source de validation pour vérifier qu’un utilisateur connaît le mot de passe associé à un
compte. Cela permet de prendre en charge les versions héritées de Windows. NTLMv1 et LM
étaient pris en charge sur Microsoft Windows NT 4, Windows 2000, Windows XP et Windows
Server 2003. Les versions ultérieures de Windows sont configurées pour utiliser NTLMv2 par
défaut et non LM. Les plus grandes différences entre NTLMv1 et NTLMv2 sont les fonctions de
hachage par défaut et les capacités du protocole challenge-response.
CONSEIL Pour éviter toute confusion à l’avenir, NTLMv1 et NTLMv2 sont des versions différentes
du protocole NTLM. Chacun a sa propre façon d’authentifier les utilisateurs localement ou sur le
réseau. Vous pouvez voir des références à Net-NTLMv1 et Net-NTLMv2, soit dans ce cours, soit
lors de la réalisation de vos propres recherches. NTLMv1 et NTLMv2 sont simplement des
abréviations pour Net-NTLMv1 et Net-NTLMv2. Le hachage NTLM est différent du hachage Net-
NTLM en ce qu’il est stocké localement sur le serveur. Le hachage Net-NTLM fait partie du
message de stimulation-réponse du client utilisé lors de l’authentification réseau. Tout au long
du texte, nous soulignerons les différences entre ces technologies.
NTLMv1 et LM
Lorsque le protocole NTLMv1 est utilisé pour l’authentification, le client établit d’abord un
chemin d’accès réseau au serveur et publie ses fonctionnalités à l’aide d’un
NEGOTIATE_MESSAGE. Ensuite, le serveur répond avec un nonce aléatoire de 8 octets connu sous
le nom de CHALLENGE_MESSAGE afin de vérifier l’identité de l’utilisateur. Le client chiffre le
message nonce du serveur avec le hachage du mot de passe de l’utilisateur, ce qui génère le
hachage Net-NTLM. Ce hachage est utilisé pour prouver la connaissance du mot de passe de
l’utilisateur et est utilisé pour répondre au défi du serveur dans un AUTHENTICATE_MESSAGE. Le
serveur valide la réponse du client pour s’assurer que le défi a été créé à l’aide du mot de passe
de l’utilisateur correct. Ce processus est nécessaire pour générer un jeton d’accès Windows.
REMARQUE Comme indiqué brièvement au chapitre 5,un jeton d’accès Windows contient les
informations d’identification de sécurité pour une session de connexion.
NTLMv1 a succédé au protocole LAN Manager (LM) compromis des années 1980 et du début
des années 1990. Le hachage LM a été généré à l’aide de l’algorithme de hachage LM faible. Les
principales faiblesses du protocole d’authentification LM sont les suivantes :
• Les hachages LM sont basés sur la norme DES (Data Encryption Standard) non sécurisée.
• Les mots de passe des utilisateurs sont convertis en majuscules avant de générer la valeur de
hachage.
• Le mot de passe est limité à 14 caractères et divisé en deux valeurs de hachage différentes de 7
caractères, ce qui rend exponentiellement plus facile pour l’attaquant de craquer avec deux
tâches de crack distinctes.
• La valeur de hachage est rejouée sur le réseau sans saler, ce qui la rend plus sensible aux attaques
de l’homme du milieu (MiTM) et plus facile à vaincre à l’aide d’une table arc-en-ciel (décrite dans
la section « Cracking de mot de passe » plus loin dans ce chapitre).
Les hôtes Windows stockent les hachages de mot de passe NTLM dans le fichier SAM local,
situé sur le système de fichiers dans C:\Windows\System32\config et dans le Registre Windows
sous HKEY_LOCAL_MACHINE\SAM. Toutefois, le contenu SAM n’est pas accessible en dehors du
Registre Windows lorsque l’hôte est démarré dans le système d’exploitation. Sur un serveur AD,
les objets de domaine tels que les informations d’utilisateur et de groupe (y compris les hachages
de mot de passe) sont stockés dans le fichier NTDS.dit (NTDS signifie NT Directory Services).
Windows calcule les hachages NTLM ou NT en encodant d’abord le mot de passe en texte brut
de l’utilisateur à l’aide d’UTF-16, puis en héliquant la chaîne Unicode UTF-16 avec l’algorithme
Message Digest version 4 (MD4). L’algorithme MD4 génère un hachage unidirectionnel de 128
bits (nombre hexadécimal à 32 chiffres). Par exemple, le hachage NTLM généré pour le texte «
P@22w0rd123 » ressemblerait à ceci :
REMARQUE Le codage de caractères aide les ordinateurs à interpréter le langage machine (zéros
et uns) en caractères réels. L’encodage prend des caractères et les met en forme en jeux de
caractères. Le format UTF (Unicode Transformation Format) attribue à chaque caractère un
numéro unique. UTF-16 utilise 2 octets pour n’importe quel caractère du plan multilingue de base
(BMP), qui est le plan 0 et inclut tous les caractères couramment utilisés. Les plans 1 à 16 sont
des plans supplémentaires et incluent tous les autres systèmes d’écriture et symboles (non
compatibles avec le clavier). UTF-16 utilise 4 octets pour n’importe quel caractère dans les plans
supplémentaires. Les caractères ASCII (par exemple, A, B, C, a, b, c, 1, 2, 3) dans le codage ASCII
8 bits ont une longueur de 8 bits ou 1 octet, bien qu’un caractère ASCII puisse tenir dans 7 bits.
Toutefois, un caractère Unicode en codage UTF-8 est compris entre 8 bits (1 octet) et 32 bits (4
octets). Vous pouvez trouver plus d’informations sur l’encodage ici: http://net-
informations.com/q/faq/encoding.html.
Dans les versions héritées de Windows, si vous deviez extraire le contenu des fichiers SAM et
NTDS.dit, ils seraient formatés en <nom utilisateur>:: hachage <LM> : hachage <NT>, comme
illustré ici :
REMARQUE Il existe toujours une valeur dans le champ de hachage LM dans les versions actuelles
de Windows, mais il s’agit du hachage d’un mot de passe vide.
Les systèmes d’exploitation Windows hérités configurés pour utiliser NTLMv1 authentifient
les systèmes à l’aide du hachage LM par défaut. Cela permet une compatibilité descendante avec
les anciennes versions de Windows. Toutefois, à partir de Windows Vista et Server 2008, NTLMv1
est désactivé via la stratégie de sécurité locale et seul le hachage NT est utilisé et stocké par
défaut. L’un des plus grands problèmes de sécurité avec les hachages NTLM est qu’ils ne sont pas
salés. Un sel est un morceau aléatoire de données qui sont fournis à une fonction de hachage
cryptographique unidirectionnelle lors de la génération de mot de passe. Cette mesure de
sécurité supplémentaire permet de protéger les mots de passe stockés au repos sur le système
de fichiers ou la base de données locale et garantit qu’il n’y aura jamais deux hachages de mot
de passe identiques. La valeur de sel réduit également la probabilité que la valeur de hachage
soit trouvée dans une table prévisible, telle qu’une table arc-en-ciel (décrite plus loin dans le
chapitre de la section « Cracking de mot de passe »). Par exemple, le hachage NTLM généré à
l’aide du mot de passe P@22w0rd123 créerait deux valeurs de hachage différentes si un sel était
ajouté à la fonction de génération de hachage. Toutefois, étant donné que les hachages NTLM
ne sont pas salés, un attaquant qui compromet l’un des mots de passe en texte brut d’un compte
pourrait générer le hachage NTLM et le comparer au reste des hachages de la base de données
SAM pour voir si d’autres utilisateurs ont le même mot de passe, en fonction de la valeur de leur
hachage NTLM. Un sel de mot de passe aiderait à atténuer ce problème, car il ajoute un autre
niveau de complexité à la génération de hachage de mot de passe.
CONSEIL Vous pouvez vous entraîner à générer des valeurs de hachage NTLM aléatoires à l’aide
du site Web suivant : https://codebeautify.org/ntlm-hash-generator.
NTLMv2
NTLMv2 est un protocole de stimulation-réponse qui a été développé pour améliorer les failles
de sécurité de NTLMv1, afin d’aider à atténuer les attaques d’usurpation d’adresse et
d’empêcher l’utilisation d’un hachage LM pour l’authentification, éliminant ainsi le faible schéma
de cryptage de mot de passe DES. Toutes les versions de Windows prennent en charge la v2 du
protocole NTLM. NTLMv2 suit un processus d’authentification similaire à NTLMv1, mais le client
ajoute un défi client de longueur variable. Les étapes suivantes décrivent le processus
d’authentification pour NTLMv2 :
4. Le client envoie son deuxième CHALLENGE_MESSAGE au serveur, ce qui est un défi de longueur
variable (horodatage, nom de domaine, s’il existe et autres informations de compte).
TIP Hash-based Message Authentication Code (HMAC) – Message Digest 5 (MD5) est une
fonction de hachage cryptographique qui utilise une clé secrète. HMAC-MD5 est utilisé pour
vérifier à la fois l’intégrité et l’authenticité d’un message. Voir
https://tools.ietf.org/html/rfc6151 pour plus de détails.
L’ajout des messages de stimulation-réponse du client avec NTLMv2 permet d’atténuer les
attaques de relecture en ligne/hors ligne, qui étaient répandues dans NTLMv1. Toutefois, les
fonctions de hachage utilisées pour améliorer l’intégrité des communications entre le client et le
serveur n’empêcheraient pas un attaquant ayant accès au réseau local de capturer les messages
de stimulation-réponse (y compris le hachage Net-NTLMv1/v2) à l’aide de techniques d’emprunt
d’identité d’hôte ou de service. Les messages de stimulation-réponse sont sensibles aux attaques
par dictionnaire hors ligne où un attaquant peut utiliser l’automatisation logicielle pour désosser
le processus d’authentification NTLMv1/v2 avec une liste de mots de passe pour reproduire le
même message de défi-réponse capturé sur le réseau de la cible, découvrant ainsi la version en
texte brut de la valeur de hachage NTLM de l’utilisateur. Nous aborderons les techniques
d’attaque des réseaux Windows à l’aide de hachages NTLM et de messages de stimulation-
réponse NTLMv1/v2 plus loin dans ce chapitre.
Kerberos
Semblable à NTLMv2, Kerberos est une méthode d’authentification mutuelle qui est la méthode
d’authentification Active Directory par défaut depuis Windows 2000. Le protocole
d’authentification réseau Kerberos utilise un système de billetterie pour permettre aux
utilisateurs et aux ordinateurs définis dans un domaine AD de s’identifier mutuellement sur le
réseau de manière sécurisée. Le schéma d’authentification Kerberos repose sur la cryptographie
à clé symétrique, à l’aide d’un processus d’autorisation tiers approuvé (c’est-à-dire un médiateur)
pour faciliter les interactions entre deux parties sur le réseau. Ces clés de chiffrement ne peuvent
être créées que par le client, le service réseau et le KDC (décrit dans la liste suivante). Cela permet
d’atténuer les tentatives des attaquants d’écouter et de mener des attaques par relecture à l’aide
de messages du protocole Kerberos, car les seuls qui devraient pouvoir déchiffrer les messages
sont les objets de confiance dans le domaine AD. Le service d’authentification Kerberos est
composé de nombreux éléments clés, y compris les éléments suivants reproduits à partir de la
page de présentation de l’authentification Kerberos à https://docs.axway.com:
• Centre de distribution de clés (KDC) Service configuré sur un contrôleur de domaine (tel qu’Active
Directory sous Windows) qui fournit deux services liés au domaine :
• Le service d’authentification (AS) authentifie le client Kerberos par rapport à la base de données
utilisateur et accorde un ticket d’octroi de ticket (TGT) au client.
• Ticket Granting Service (TGS) Agit en tant que tiers de confiance pour le protocole Kerberos afin
de valider l’accès du client au service Kerberos demandé. Une fois validé, le client reçoit un ticket
de service pour ce service.
• Ticket Granting Ticket (TGT) Un ticket d’identification crypté utilisé pour la protection du trafic.
Le TGT a une date d’expiration variable et est utilisé pour obtenir un ticket de service auprès du
TGS. Le TGT est chiffré avec la clé secrète du TGS et contient la clé de session client/TGS, sa date
d’expiration et l’adresse IP du client, ce qui protège le client contre les attaques de l’homme du
milieu.
• Ticket de service Ticket chiffré avec la clé secrète du service Kerberos et contenant l’ID client, l’adresse
réseau du client, la période de validité et la clé de session client/serveur. Un client Kerberos
obtient un ticket de service du TGS après avoir présenté un TGT valide.
• Service Kerberos Serveur ou application fournissant un service (web, base de données, fichier, etc.)
auquel le client Kerberos souhaite accéder.
La figure 6-2 illustre le processus d’authentification Kerberos. Il commence par une demande
d’authentification utilisateur, dans laquelle le client transmet l’ID utilisateur en texte clair au
service d’authentification du serveur AD. Si l’ID utilisateur est trouvé dans la base de données
NTDS.dit, l’AS génère une clé secrète à l’aide d’un hachage du mot de passe de l’utilisateur, qui
est utilisé pour chiffrer la clé de session TGS. L’AS envoie la clé de session TGT et TGS du client au
client. Le client tente ensuite de déchiffrer la clé de session à l’aide du hachage du mot de passe
de l’utilisateur qui a été utilisé lors de la demande d’authentification. En cas de succès, le client
envoie un message de demande d’authentification chiffré au TGS pour le service Kerberos près
du client ainsi que le client souhaite accéder. Le TGS déchiffre le message du client, valide la
demande de service du client et envoie un autre TGT et une autre clé de session au client. Le
client envoie au ticket de service un nouveau message d’authentification chiffré avec la clé de
session client/serveur appropriée au service Kerberos accessible (c’est-à-dire le serveur de
ressources). Le serveur de ressources valide le message d’authentification, déchiffre la clé de
session et valide l’horodatage pour s’assurer que la session/le ticket est toujours valide. Le
serveur de ressources envoie ensuite un message de confirmation chiffré avec la clé de session
client/serveur au client Kerberos. Une fois le message confirmé, le processus d’authentification
mutuelle est terminé et le serveur de ressources traite les demandes du client Kerberos.
Figure 6-2 Processus d’authentification Kerberos
REMARQUE Dans un domaine Active Directory, si l’heure n’est pas synchronisée correctement
entre un client et le serveur d’authentification Kerberos (c’est-à-dire le contrôleur de domaine),
toute demande d’authentification du client sera refusée. Le paramètre de stratégie de sécurité
« Tolérance maximale pour la synchronisation de l’horloge de l’ordinateur » est utilisé pour
appliquer la différence de temps maximale (en minutes) entre l’horloge du client et l’horloge du
contrôleur de domaine. Ce paramètre de sécurité est utilisé avec le protocole Kerberos avec
des horodatages dans chacun des messages d’authentification pour aider à prévenir les
attaques par relecture sur le réseau.
Un nom principal de service (SPN) est unique à une forêt AD et est utilisé pour identifier chaque
instance d’un service Windows. Dans Windows, Kerberos exige que les noms principaux de
service soient associés à au moins un compte d’ouverture de session de service (c’est-à-dire le
compte qui exécute le service). Kerberos utilise le SPN pour déterminer le hachage de compte de
service à utiliser pour chiffrer le ticket de service. AD stocke deux types de SPN : les SPN basés
sur l’hôte, qui sont randomisés par défaut et liés à un ordinateur du domaine, et les SPN
arbitraires, qui sont parfois liés à un compte d’utilisateur de domaine. Tout compte de domaine
valide peut demander des noms nationaux de service arbitraires, y compris des comptes
d’ordinateur. Si le SPN arbitraire est lié à un compte d’utilisateur de domaine, le hachage NTLM
du mot de passe en texte brut de ce compte d’utilisateur a été utilisé pour créer le ticket de
service, vous permettant ainsi de compromettre un hachage d’utilisateur de domaine valide et
d’offrir la possibilité de craquer le mot de passe hors ligne, à l’aide de votre utilitaire de craquage
de mot de passe. Cette attaque est connue sous le nom de Kerberoasting (MITRE ATT&CK ID
T1208), dont il est question plus loin dans le chapitre.
Types de mots de passe Unix/Linux
Semblables à Windows, les systèmes d’exploitation Unix utilisent une fonction de hachage
unidirectionnel pour hacher les mots de passe des utilisateurs locaux à l’aide d’un algorithme de
résumé de messages (par exemple, MD5) ou de l’un des algorithmes de hachage sécurisés (SHA).
Les systèmes d’exploitation Unix et Linux modernes tels que CentOS, Red Hat, Solaris et Ubuntu
stockent les valeurs de hachage sur le système de fichiers dans le fichier /etc/shadow. Ce fichier
n’est lisible/accessible en écriture que par l’utilisateur root. Le module d’authentification
enfichable (PAM) est le mécanisme utilisé pour activer et faciliter les schémas et protocoles
d’authentification des utilisateurs, tels que l’authentification PAM locale, le protocole LDAP
(Lightweight Directory Access Protocol), l’authentification unique (SSO) aux applications
réseau ou même Active Directory. Pour en savoir plus sur les différents schémas
d’authentification pris en charge pour PAM, consultez
https://en.wikipedia.org/wiki/Pluggable_authentication_module. Cependant, étant donné que
l’examen GPEN se concentre sur les connaissances des candidats sur la façon d’identifier divers
types de mots de passe Unix/Linux et les outils et méthodes pour les déchiffrer, cette section se
concentre sur les types de hachage de mot de passe suivants pour les systèmes d’exploitation
Unix/Linux :
Algorithmes Message-Digest
Il existe deux algorithmes de résumé de messages courants que vous pouvez rencontrer lors de
l’examen GPEN, MD4 et MD5. Ce sont des algorithmes de hachage hérités qui sont généralement
utilisés pour chiffrer les mots de passe au repos ou pour vérifier l’intégrité d’un fichier (par
exemple, un fournisseur de logiciel peut générer une valeur de hachage pour un fichier
d’installation afin que les utilisateurs qui téléchargent le fichier puissent vérifier qu’il n’a pas été
falsifié ou vérifier que le fichier ne contient pas de bits de données manquants pour s’assurer
qu’il a été téléchargé complètement). Comme vous l’avez appris plus tôt dans le chapitre, les
hachages NTLM sont dérivés de l’algorithme MD4 ; cependant, l’objectif de l’algorithme ailleurs
dans la technologie est très limité, tout comme MD5. Pour illustrer la création d’un hachage MD5,
vous pouvez utiliser la commande md5sum dans un terminal de votre hôte Kali Linux pour calculer
la valeur de hachage de longueur fixe de la chaîne « pentesting is fun » :
TIP DES est un ancien algorithme symétrique utilisé pour chiffrer les mots de passe. DES s’est
avéré non sécurisé, car la longueur maximale du mot de passe est de huit caractères et la valeur
salt n’est que de deux caractères. Pour plus d’informations sur DES, reportez-vous à la section
https://en.wikipedia.org/wiki/Data_Encryption_Standard.
Comme le montre la syntaxe suivante, l’entrée de mot de passe d’un utilisateur dans le fichier
/etc/shadow est composée de trois valeurs : un ID, un sel et le hachage du mot de passe. La
chaîne de caractères salt commence par un ID, qui identifie le type de méthode de hachage
utilisée. Par exemple, l’ID MD5 est 1. La valeur ID est suivie de la valeur salt aléatoire, puis du
hachage du mot de passe. Le signe dollar ($) est utilisé comme séparateur de champ.
$Id$Salt$PasswordHash
À l’aide de votre hôte Kali Linux, vous pouvez illustrer la création d’une valeur de hachage de
mot de passe MD5 avec la fonction crypt(3). La première technique illustrée ci-après consiste à
utiliser la commande mkpasswd avec l’argument method défini comme md5. La deuxième
technique montrée consiste à utiliser Python 2.7 (la version par défaut utilisée lors de l’exécution
à partir de la ligne de commande dans Kali) avec la bibliothèque crypt. La méthode MD5 est
spécifiée avec la valeur ID $1 dans la syntaxe de la commande python. Comme vous pouvez le
constater, chaque technique produit le même résultat.
CONSEIL Les informations sur l’ordinateur sont stockées en bits et en octets. Un bit est un chiffre
binaire ayant une valeur de 0 ou 1 et un octet est un groupe de huit bits. Vous pouvez en savoir plus
sur la façon dont les bits et les octets encodent les informations ici :
web.stanford.edu/class/cs101/bits-bytes.html.
La commande hash-identifier dans Kali Linux (qui est en fait un raccourci vers
/usr/share/hash-identifier/hash-id.py) est une autre méthode pour déterminer un algorithme de
hachage. Le script Python hash-id.py évalue les propriétés de la valeur de hachage, en tenant
compte de caractéristiques telles que la mise en forme et la longueur du hachage. Dans Kali, si
vous exécutez la commande hash-identifier à l’invite de commande, elle vous dépose dans
une invite de saisie de hachage. Comme indiqué ci-après, si vous prenez la valeur de hachage
MD5 générée à l’aide de la valeur saltvalu et du mot de passe Pa22w0rd et que vous la
copiez/collez à l’invite de hachage et appuyez sur enter, le script hash-id.py crache une liste
d’algorithmes de hachage possibles utilisés pour produire le hachage. Comme vous le verrez plus
loin dans le chapitre, connaître la valeur de hachage devient important lorsque vous souhaitez
exécuter une attaque par force brute ou par dictionnaire contre le hachage à l’aide d’outils de
récupération de mot de passe.
ATTENTION Le script hash-id.py est bénéfique, surtout lorsque vous découvrez un hachage avec
un format inconnu. Cependant, le script offre une meilleure estimation du hachage, et vous
constaterez peut-être qu’il ne parvient pas à identifier les algorithmes de hachage courants à
partir de valeurs de hachage qui peuvent parfois être identifiées simplement en regardant le
hachage.
CONSEIL Comme beaucoup d’autres formats de données, les valeurs de hachage contiennent des
propriétés qui peuvent aider les pentesters à découvrir l’algorithme qui a été utilisé pour générer
le hachage. Connaître l’algorithme de hachage vous aidera dans le processus de récupération du
mot de passe. Les propriétés de données suivantes peuvent aider à identifier un algorithme de
hachage de mot de passe :
• La longueur du hachage
• Le jeu de caractères
Toutefois, si le hachage du mot de passe a été codé plusieurs fois, cela ajoutera plus de couches
de complexité à la résolution du problème, mais si la valeur de hachage est cohérente avec les
propriétés de hachage de mot de passe connues, vous devriez être en mesure d’affiner votre
recherche.
En utilisant votre hôte Kali Linux, vous pouvez démontrer la création de valeurs de hachage
de mot de passe SHA comme vous l’avez fait avec MD5, car elles reposent toutes sur la même
fonction crypt(3). Encore une fois, la première technique consiste à utiliser la commande
mkpasswd avec l’argument method défini comme sha-256 ou sha-512, et la deuxième technique
consiste à utiliser Python 2.7 (version par défaut utilisée lors de l’exécution à partir de la ligne de
commande dans Kali) avec la bibliothèque crypt. La méthode SHA-256 est spécifiée avec la valeur
ID de $5, et la méthode SHA-512 est spécifiée avec la valeur ID de $6 dans la syntaxe de la
commande python :
Comme vous l’avez appris précédemment, les hachages de mot de passe sont générés à l’aide
de fonctions de hachage unidirectionnelles. Toutefois, les valeurs de hachage telles que MD4,
MD5 et SHA-1 sont sensibles aux attaques par collision. Le hachage de mot de passe peut vaincre
une table arc-en-ciel, car les hachages sont salés, mais le hachage du mot de passe est toujours
sensible aux attaques par force brute et par dictionnaire, pour deux raisons : l’ID de hachage, la
valeur salt et le mot de passe haché sont stockés dans le fichier /etc/shadow, et la méthode
utilisée pour générer le hachage est connue. La section suivante traite des différentes techniques
utilisées pour attaquer les mots de passe que vous pouvez rencontrer lors de l’examen GPEN.
CONSEIL D’EXAMEN Assurez-vous de comprendre les différences entre les types de hachage
courants, y compris MD5, SHA-1, SHA-2, NTLM, etc., et l’objectif d’un sel de mot de passe.
Dans le framework MITRE ATT&CK, la tactique Credential Access (ID TA0006) décrit de
nombreuses techniques individuelles utilisées pour voler des informations d’identification, telles
que des noms d’utilisateur et des mots de passe. Les techniques utilisées pour obtenir ou récolter
desinformations d’identification incluent l’enregistrement de clés et le dumping d’informations
d’identification. L’enregistrement de frappe (Keylogging) est le processus d’installation d’un
logiciel qui sera utilisé pour enregistrer les frappes de l’utilisateur dans l’espoir de récupérer le
mot de passe en texte brut de l’utilisateur. Le Metasploit Framework (MSF) dispose de modules
de post-exploitation qui peuvent aider au processus de récupération des informations
d’identification. L’utilisation d’informations d’identification légitimes peut donner aux
adversaires l’accès aux systèmes, rendre leurs activités plus difficiles à détecter et leur donner la
possibilité de créer plus de comptes pour les aider à atteindre leurs objectifs. Les techniques
d’accès aux informations d’identification MITRE ATT&CK suivantes sont des types d’attaques par
mot de passe qui sont abordées tout au long de ce chapitre :
• T1208 Kerberoasting
REMARQUE Les I de modèle d’attaque MITRE Common Attack Pattern Enumeration and
Classification (CAPEC) suivants sont liés aux types d’attaques par mot de passe décrits tout au
long de ce chapitre :
• CAPEC-509 : Kerberoasting
Il existe d’autres modèles d’attaque qui partagent des relations avec ces méthodes, tels que ceux
qui impliquent la réutilisation du mot de passe pour le mouvement latéral, mais ceux-ci sont
abordés au chapitre 7.
Le craquage de mot de passe est le processus de récupération de mot de passe qui implique
diverses méthodes d’attaques, y compris les attaques par dictionnaire, les attaques par force
bruteet les tables arc-en-ciel. Quelle que soit la force de l’algorithme de hachage de mot de passe,
les attaquants ont un avantage évident pour obtenir un accès ou escalader les privilèges sur un
hôte cible s’ils peuvent deviner la valeur en texte brut. Les mots de passe par défaut entrent dans
cette catégorie, et la partie effrayante est que la plupart peuvent être trouvés dans les
dictionnaires courants ou par une simple recherche sur Internet. Les attaques par dictionnaire
(Dictionary attacks) utilisent des listes de mots qui sont initialement compilées à partir de
dictionnaires (vous l’avez deviné) et plus tard construites sur l’utilisation de mots de passe
découverts à partir d’une compromission divulguée publiquement. Les attaques par force
(Brute-force attacks) brute peuvent être inefficaces et généralement considérées comme un
dernier recours lorsque le temps presse. Une attaque par force brute contre un hachage de mot
de passe tentera toutes les combinaisons possibles de mots qui pourraient constituer un mot de
passe. Lorsque la longueur du mot de passe augmente, il en va de même pour le temps nécessaire
pour trouver le mot de passe correct. Les attaques par dictionnaire et par force brute de mot de
passe sont des techniques de récupération de mot de passe. Chaque mot est haché, en utilisant
le même algorithme de hachage, et comparé à la valeur de hachage d’origine. Quand il y a un
match, vous gagnez !
Une table arc-en-ciel est une table précalculée de hachages non salés jusqu’à une certaine
longueur. Chaque table est généralement conçue stratégiquement pour une exigence de
hachage spécifique, telle que les valeurs de hachage Windows LAN Manager (LM) ou même NT
LAN Manager (NTLM). Une table arc-en-ciel est aussi bonne que le hachage et la longueur du mot
de passe en texte clair. Selon la longueur prise en charge par la table arc-en-ciel, elle peut
nécessiter une grande capacité de stockage, certaines d’une taille supérieure à 300 Go.
RainbowCrack (http://project-rainbowcrack.com) est un outil open source populairequi déchiffrait
les hachages de mot de passe à l’aide de tables arc-en-ciel. RainbowCrack utilise un algorithme
de compromis temps-mémoire pour augmenter l’utilisation de la mémoire en fonction du temps
passé à effectuer une tâche. Essentiellement, il fournit un juste milieu où le logiciel et le matériel
peuvent fonctionner ensemble, plutôt que l’un contre l’autre. Une liste de mots est une
accumulation de mots de passe connus utilisés au fil du temps qui contribue à améliorer la
probabilité de craquer un mot de passe lors de l’exécution d’une attaque par dictionnaire.
Lorsqu’une attaque par dictionnaire a épuisé toutes les combinaisons de mots de passe possibles
dans la liste de mots, une attaque par force brute (MITRE ATT&CK ID T1110) peut être utilisée
avec des règles de craquage de mot de passe pour aider à adapter une attaque personnalisée
contre un réseau cible qui peut utiliser la complexité des mots de passe. Cependant, des millions
de mots de passe ont été divulgués au fil du temps en raison de violations de données, et au
cours de la dernière décennie, le mot « mot de passe » reste dans le Top 10 des mots de passe
les plus couramment utilisés en 2019 (https://www.securitymagazine.com/articles/91461-the-
worst-passwords-of-2019). Les utilisateurs sont connus pour réutiliser le même mot de passe,
car les mots de passe sont difficiles à retenir. La réutilisation des mots de passe est un problème
courant, surtout si vous devez vous souvenir de 10 à 14 caractères alphanumériques. La
publication spéciale du NIST (SP) 800-63B, Digital Identity Guidelines, offre des conseils de mot de
passeactuels (https://pages.nist.gov/800-63-3/sp800-63b.html#sec5). Le NIST s’est éloigné de la
recommandation de l’utilisation de chaînes aléatoires qui devraient être modifiées tous les x
jours et recommande maintenant d’utiliser des phrases secrètes qui ne doivent être modifiées que
si elles sont compromises.
CONSEIL D’EXAMEN Les attaques par dictionnaire, par force brute et par mot de passe de table
arc-en-ciel sont des techniques de craquage de mot de passe. Le craquage de mot de passe est
un processus de récupération de mot de passe hors ligne, utilisant des hachages
cryptographiques (par exemple, le hachage NTLM) qui ont été stockés ou transmis par un
système informatique. La devinette de mot de passe est un processus en ligne qui consiste à
tenter de forcer la connexion à un système informatique (par exemple, via une page Web) à l’aide
d’une liste de mots ou d’une combinaison de mots. Vous verrez des références à la fois au
craquage de mot de passe et à la devinettes de mot de passe. Assurez-vous de comprendre la
différence entre chaque technique et méthode d’attaque. Cette section couvre deux outils
spécifiques de craquage de mot de passe, John the Ripper (JtR) et Hashcat, que vous utiliserez
dans des exercices tout au long de ce chapitre.
John the Ripper (JtR) est un outil de craquage de mot de passe disponible à la fois en version
commerciale et en version open source (www.openwall.com/john). JtR (ou John) est optimisé
pour fonctionner sur des processeurs, en utilisant des listes de mots et des règles de complexité
de mot de passe. John prend en charge de nombreux types de hachage différents (par exemple,
MD5, SHA-1, SHA-2, NTLM, etc.) pour les systèmes d’exploitation Linux et Windows. Dans Kali,
vous pouvez exécuter john à partir de la ligne de commande à l’aide de la commande john, qui se
trouve par défaut dans votre chemin de commande. John peut être installé sur la plate-forme
Windows ou Unix et prend en charge quatre modes de craquage des mots de passe:
• Fissure unique
• Liste de mots
• Incrémentiel
• Externe
CONSEIL Le site Web Openwall inclut un correctif jumbo pour JtR qui ajoute la prise en charge
des algorithmes qui ne sont pas inclus dans l’installation de base de JtR.
Le deuxième mode de craquage que John vous recommande d’exécuter est le mode liste de
mots. Le mode liste de mots est le mode de craquage le plus facile pris en charge par John, et la
liste ne doit pas contenir de lignes en double. Il vous suffit de spécifier une liste de mots et le
fichier contenant les mots de passe. Kali Linux a quelques listes de mots préinstallées dans le
répertoire /usr/share/wordlists. Une liste de mots populaire dans Kali est la liste de mots
« rockyou », qui compte plus de 14 millions de mots. Si l’attaque par dictionnaire ne fonctionne
pas la première fois, John permet à l’utilisateur d’activer les règles de mangling de mots pour
aider à modifier les mots existants dans la liste de mots de mots afin de produire d’autres mots de
passe probables (par exemple, le texte « mot de passe » peut être changé en « Pa22w0rd » dans
un ensemble de règles mutilé). Dans Kali, les règles de John se trouvent dans le répertoire
/usr/share/john/rules. Vous pouvez appliquer toutes les règles à une liste de mots ou à l’option
de commande --rules. Lorsque les règles de mangling sont activées, chaque ligne de la liste de
mots a les mêmes règles appliquées afin de produire les variations de chacun des mots sources.
Les modes de craquage « incrémentiel » et « externe » sont destinés aux attaques par force
brute par mot de passe, et sont essentiellement le dernier coup dans l’obscurité si tout le reste
échoue. Si le hachage a été piraté par John, vous pouvez exécuter l’option --show avec le fichier
de hachage du mot de passe et John affichera le ou les mots de passe en texte brut associés au
hachage. Sauf indication contraire, John conserve un décompte des hachages et de leurs mots
de passe en texte brut correspondants dans le $HOME/.john/john.pot de l’utilisateur. Vous
pouvez trouver des exemples d’utilisation de la ligne de commande et des informations sur les
différents modes de craquage de mot de passe que John prend en charge sur le site Web
Openwall.
TIP JtR prend également en charge le craquage de mot de passe parallèle et distribué. Vous
pouvez regrouper des nœuds JtR ensemble et tâche chaque nœud avec une longueur de mot de
passe différente si la stratégie de génération de mot de passe de la cible est inconnue. Vous
trouverez plus d’informations sur le clustering JtR sur
https://openwall.info/wiki/john/parallelization.
Hashcat
Hashcat est un outil de craquage de mot de passe qui prend en charge les architectures CPU,
mais fonctionne mieux lors de l’utilisation d’une unité de traitement graphique (GPU). Les GPU
peuvent être trouvés sur les cartes graphiques haut de gamme, telles que les cartes NVIDA. La
principale différence entre un CPU et un GPU est qu’un CPU est bon pour traiter de nombreuses
tâches simultanément, et un GPU est bon pour traiter un petit nombre de tâches extrêmement
rapidement, ce qui en fait une plate-forme idéale pour les mots de passe de forçage brut avec
Hashcat.
Hashcat prend en charge plus de 200 algorithmes de hachage et, comme John, peut
fonctionner sur les systèmes d’exploitation Windows et Linux. Hashcat est préinstallé dans Kali
Linux et prend en charge bon nombre des mêmes fonctionnalités de craquage de mot de passe
que John, y compris les règles de craquage de mot de passe, le réglage des performances, le
craquage distribué et plusieurs modes de craquage tels que l’attaque par dictionnaire, la force
brute, l’hybride, la combinaison, etc. Hashcat peut être exécuté à partir de la ligne de commande
à l’aide de l’exécutable hashcat. Les exercices plus loin dans le chapitre couvrent certaines des
fonctionnalités et des options de ligne de commande disponibles dans Hashcat. Vous trouverez
des informations et des ressources supplémentaires sur https://hashcat.net/hashcat/.
PowerShell
Cogner
CONSEIL D’EXAMEN Parce que les mots de passe sont si importants pour les pentesters,
connaître les méthodes d’extraction de mot de passe est très important pour l’examen GPEN.
Assurez-vous de parcourir chacun des laboratoires de ce cours et de vous familiariser avec les
techniques de récupération de mot de passe, car vous êtes susceptible de les voir à l’examen
GPEN.
L’abréviation « assw » découvre le texte qui correspond à « mot de passe » ou même « mot
de passe ». L’exemple PowerShell effectue des recherches récursives sur le système de fichiers
et affiche le nom du fichier si le contenu du fichier contient du texte qui correspond au modèle
que vous avez recherché. La commande Bash équivalente recherche dans les fichiers dans les
fichiers dans les fichiers dans les points où l’utilisateur exécutant la commande a accès en lecture.
Cela peut aider à empêcher les alarmes indésirables de se déclencher lorsque vous tentez
d’accéder à des fichiers esséviens. L’utilisation de l’option --include vous permet de filtrer les
extensions de fichiers (par exemple, .txt, .sql, .xml), ce qui peut aider à cibler des domaines
d’intérêt spécifiques. Vous pouvez même générer les résultats dans un fichier pour un traitement
hors ligne.
Le traitement des fichiers pour les mots de passe peut produire beaucoup de faux positifs et
nécessite beaucoup d’analyse. Lorsque vous êtes en mesure d’élever les privilèges sur l’hôte, le
vidage des informations d’identification peut être la méthode suivante pour récupérer des
informations d’identification supplémentaires à partir de l’environnement de la cible. Les
sections suivantes explorent différentes façons de vider et d’exfiltrer les informations
d’identification des hôtes locaux.
REMARQUE Il existe deux autres emplacements notables qui contiendraient des informations
d’identification sur un serveur Windows AD : les fichiers de préférence de stratégie de groupe
(GPP) et un instantané de volume, également appelé cliché instantané de volume. Les fichiers
GPP aident les administrateurs à stocker les préférences de configuration automatique lors de
la configuration des hôtes Windows sur le réseau. Vous pouvez trouver les hachages de mot de
passe de l’administrateur local ou du compte de service stockés dans ces fichiers. Un cliché
instantané de volume est une fonctionnalité native de Windows permettant d’effectuer des
points de restauration du système et des sauvegardes du système d’exploitation. Ces
sauvegardes peuvent contenir des valeurs de Registre sensibles, y compris la base de données
NTDS.dit, qui inclut tous les hachages AD. Vous pouvez trouver plus d’informations sur ces
techniques sur https://attack.mitre.org/techniques/T1003.
• Hashdump
Dans cet atelier, le premier objectif est d’extraire trois ruches de Registre Windows du Registre
d’une cible Windows 10 connectée à un domaine Active Directory. Ensuite, vous lirez les ruches
à l’aide du script impacket-secretsdump pour révéler les informations d’identification de votre
cible. Le laboratoire requiert l’hôte Kali Linux et la machine virtuelle WindowsTarget de l’annexe
B et suppose que vous les avez configurés conformément aux instructions. Les ruches de registre
que vous souhaitez extraire sont les suivantes :
Au minimum, vous avez besoin des fichiers SAM et System pour vider les hachages des
utilisateurs locaux. La ruche de sécurité fournit des informations d’identification de connexion
stockées/mises en cache à partir du domaine AD. Procédez comme suit pour récupérer des
hachages à partir de la machine virtuelle WindowsTarget :
3. Créez un nouveau répertoire appelé ch6 dans le répertoire de base de NetAdmin et remplacez
le répertoire par ch6 :
PS C:\Users\netadmin> cd ch6
4. Videz les ruches SAM, Système et Sécurité de HKEY_LOCAL_MACHINE dans le répertoire ch6 à
l’aide de reg save. Cette commande enregistre une copie des sous-clés, entrées et valeurs
spécifiées du Registre dans un fichier spécifié.
5. Maintenant, vous devriez avoir tous les fichiers dont vous avez besoin pour atteindre votre
objectif. Ensuite, créez un dossier ch6 dans le répertoire de base de root sur l’hôte Kali. Ensuite,
utilisez WinSCP pour copier en toute sécurité vos fichiers de registre sur l’hôte Kali dans le
répertoire /root/ch6, comme indiqué ci-après. (Si vous n’avez pas utilisé l’adresse IPv4 et le nom
d’utilisateur/mot de passe spécifiés dans Annexe B, remplacez la vôtre.)
CONSEIL OpenSSH Client et OpenSSH Server sont des fonctionnalités installables dans Windows
10. Au lieu d’utiliser WinSCP, vous pouvez installer le client OpenSSH à l’aide de PowerShell
(https://docs.microsoft.com/en-us/windows-
server/administration/openssh/openssh_install_firstuse).
Les commandes suivantes recherchent les packages Microsoft qui correspondent à « OpenSSH
» pour votre version du système d’exploitation, et si le client OpenSSH est disponible, vous
pouvez l’installer via PowerShell :
Cela vous permettrait d’exfiltrer les ruches SAM à l’aide de la commande scp à partir de la
ligne de commande au lieu d’exécuter la copie via l’interface WinSCP.
6. Ouvrez une fenêtre de terminal sur l’hôte Kali en tant que root et exécutez la commande
impacket-secretsdump, en utilisant les arguments -sam, -system , et -security ainsi que les
noms des fichiers de registre exfiltrés. Ajoutez l’argument LOCAL pour indiquer à impacket-
secretsdump que vous traitez les fichiers de Registre localement et non à distance sur le réseau.
Après avoir exécuté la syntaxe de commande, vous devriez pouvoir voir le compte intégré et les
hachages utilisateur configurés localement, ainsi que les informations d’ouverture de session de
domaine mises en cache pour le LAB. Utilisateur LOCAL\NetAdmin, comme indiqué dans
l’illustration de la page suivante.