Notre récent article Dissection d’une attaque par force brute de NTLM avec Bloodhound s’intéressait aux tactiques utilisées par les cyberpirates pour exploiter le protocole d’authentification NTLM. Dans cet article, nous allons passer en revue les attaques rudimentaires visant le gestionnaire des comptes de sécurité (SAM, Security Account Manager), les secrets LSA (Local Security Authority), le service LSASS (Local Security Authority Subsystem Service) et l’outil de chiffrement SYSKEY. Nous expliquerons comment les attaquants exploitent ces outils et services pour obtenir les identifiants d’un ordinateur Windows afin de souligner combien il est important pour les équipes de sécurité de surveiller ceux-ci. Même s’il s’agit d’attaques par vol d’identifiants connues et relativement simples, elles sont toujours régulièrement employées, ce qui laisse penser que certaines équipes de sécurité tendent à négliger ces techniques éprouvées.
La recherche d’identifiants en texte clair au moyen du service LSASS ou l’acquisition de la base de données SAM pour obtenir les clés NTLM ou LSA nécessaires au chiffrement de leurs secrets revêt une grande valeur pour les cybercriminels. Un cyberpirate ne va pas se contenter d’un simple accès à une machine alors qu’il peut aller bien plus loin s’il dispose d’identifiants valides pour les différentes étapes de la chaîne d’attaque.
En conséquence, la collecte massive d’identifiants est souvent utilisée par les cyberpirates au cours d’un déplacement latéral. Après avoir obtenu les noms de connexion et les mots de passe des comptes, ces cyberpirates peuvent se propager dans tout le réseau d’une entreprise, accéder à des données à accès limité et exécuter des commandes et des programmes avec des privilèges plus élevés.
Présentation de l’exfiltration d’identifiants
De façon globale, un cyberpirate aura les objectifs suivants :
1. Obtenir le ou les hachages NTLM pour la manipulation et le craquage hors ligne.
- HKLMSAM : contient les hachages NTLMv2 des mots de passe des utilisateurs
- HKLMsecurity : contient les secrets / clés LSA, qui eux-mêmes contiennent des enregistrements de domaines mis en cache
- HKLMsystem – également appelé SYSKEY : contient des clés qui peuvent être utilisées pour chiffrer le secret LSA et la base de données SAM
2. Récupérer LSASS pour obtenir le mot de passe en texte clair ou uniquement les hachages NTLM (selon la version de Windows ciblée).
Remarque : les fonctionnalités et les informations stockées peuvent varier. Par exemple, il existe des différences entre les ordinateurs inclus dans un domaine Active Directory et ceux qui ne le sont pas.
À présent, examinons plus en détail les composants mentionnés ci-dessus.
1. Base de données SAM : HKLMSAM
C’est dans la base de données SAM (Security Account Manager, ou gestionnaire des comptes de sécurité) que Windows stocke les informations relatives aux comptes des utilisateurs. Elle contient les noms d’utilisateur et les hachages des mots de passe des utilisateurs, et sert à authentifier ceux-ci lorsqu’ils essaient de se connecter avec leur mot de passe.
La longueur et la complexité du hachage varient selon l’algorithme utilisé pour chiffrer le mot de passe. Il peut s’agir d’un simple algorithme de chiffrement LM (LAN Manager) basé sur DES ou de l’une des deux versions de l’algorithme NTHash — NTLMv1 ou NTLMv2 — qui toutes deux génèrent 32 chiffres hexadécimaux et sont dérivées de l’algorithme MD4.
Pour obtenir les mots de passe utilisateur, l’une des méthodes les plus répandues consiste à récupérer la base de données SAM soit avec un outil capable d’extraire les hachages des mots de passe, soit en copiant directement le registre dans un fichier [reg.exe save hklmSAM
] et en le manipulant hors ligne avec un utilitaire destiné à extraire les hachages des mots de passe utilisateur qui y sont stockés.
Une fois en possession du hachage LM ou NTLM, il est possible d’inverser le hachage du mot de passe au moyen d’une attaque par force brute, mais nous y reviendrons plus en détail par la suite.
2. Secrets LSA : HKLMSecurity
Les secrets LSA sont stockés dans un emplacement du registre et utilisés par l’autorité de sécurité locale ou LSA (Local Security Authority) dans Windows.
Le sous-système LSA sert à gérer la stratégie de sécurité locale d’un système. En d’autres termes, il stocke des données privées relatives aux connexions utilisateur, à leur authentification et à leurs secrets LSA, entre autres. L’accès à l’emplacement de stockage des secrets LSA est uniquement octroyé aux processus du compte SYSTEM.
Les secrets LSA stockent des données système sensibles, notamment les suivantes :
- Mots de passe des utilisateurs
- Mots de passe Internet Explorer
- Mots de passe des comptes de services (services sur l’ordinateur qui exigent une authentification avec secret)
- Clé de chiffrement de mots de passe de domaines mis en cache
- Mots de passe SQL
- Mots de passe de compte SYSTEM
- Mots de passe de compte pour les tâches planifiées configurées
- Délai jusqu’à l’expiration d’une copie inactivée de Windows
Etc. Les premières implémentations des secrets LSA étaient simples à craquer et des outils tels que mimikatz peuvent également récupérer les secrets LSA des ruches du registre et de la mémoire sur certaines versions de Windows.
3. SYSKEY: HKLMSystem
Syskey, également appelé outil de verrouillage SAM, existait dans les versions plus anciennes de Windows. Le but de cette fonctionnalité est de chiffrer la base de données SAM (Security Account Manager) et donc d’offrir un niveau de protection supplémentaire à celle-ci au cours du démarrage de la machine.
Syskey protège uniquement les données de sécurité lorsque le système d’exploitation n’est pas en cours d’exécution. Lorsqu’il est en cours d’exécution, la valeur SYSKEY est chargée en mémoire afin de pouvoir déchiffrer par la suite la base de données SAM. HKLMSAM est liée à la sous-clé SECURITY sous HKLMSECURITYSAM.
La fonction SYSKEY a été abandonnée en 2017, mais elle existe toujours sous HKLMSYSTEM sur des versions spécifiques de Windows où elle est activée et configurée.
4. Collecte d’identifiants avec LSASS
Jusqu’à l’arrivée de Windows 8, l’utilisation de mimikatz sur Windows permettait de récupérer les mots de passe en texte clair auprès du service LSASS (Local Security Authority Subsystem Service).
Plusieurs correctifs ont été proposés au fil du temps. Tous visent à renforcer le service LSASS pour qu’il soit plus difficile de récupérer les mots de passe, même hachés. Windows 10 Enterprise disposait également de la technologie Credential Guard pour isoler le processus LSASS des utilisateurs, même ceux disposant de privilèges SYSTEM.
Extraction de mots de passe par Mimikatz sur Windows 7 :
Nous pouvons voir les modifications lorsque l’outil est exécuté sur Windows 10. Nous ne voyons pas le mot de passe en texte clair, mais nous avons obtenu le hachage NTLMv1.
Extraction du mot de passe à partir du hachage NTLMv2
Plusieurs méthodes vous permettent d’obtenir le hachage NTLM si vous ne disposez pas d’un accès local à la machine cible.
L’outil Responder est l’un des outils les plus populaires utilisés pour cette tâche.
Exemple de hachage NTLMv2 généré avec l’outil Responder :
admin::M57oDBrlht:08ca45b7d6da58ee:88dcbe4346168966a153a0064958dae6:5b6740315c7830310000000000000b45c67103d07d7b95acd12dea11230e0000000052920b85f78d013c31cdb3b92f5d765c783030
Cet outil possède de nombreuses fonctionnalités, mais celle qui nous intéresse est d’inviter les utilisateurs à communiquer leurs identifiants lorsqu’ils demandent certains services réseau. Il est alors possible de capturer les mots de passe en texte clair ou les hachages de mots de passe.
Dans ce type d’attaque, l’outil est utilisé pour capturer des paquets LLMNR et extraire le hachage à partir de la stimulation /réponse. Pour reproduire cette attaque, nous avons configuré l’outil pour écouter certains paquets spécifiques sur le réseau, puis nous avons essayé, à partir de la machine victime, d’accéder à une ressource réseau qui en réalité n’existe pas. Cette technique doit nous permettre de capturer le trafic et de là, obtenir le hachage NTLM.
Nous avons donc tenté d’accéder à un partage inexistant appelé « MadeUpNetworkShare » à partir d’un ordinateur sur le réseau et parallèlement, nous avons exécuté l’outil sur une machine du même réseau et enregistré la stimulation / réponse, ce qui nous a permis d’intercepter les hachages NTLM.
Utilisations possibles des hachages de mots de passe
À présent que nous disposons du hachage, plusieurs méthodes sont possibles pour tenter d’extraire le mot de passe en texte clair.
Attaque par dictionnaire / force brute – Cette méthode consiste à utiliser une liste de mots à comparer aux mots de passe. Pour ce faire, il est possible d’utiliser des outils accessibles à tous, notamment John the Ripper, hashcat, Cain & Abel et Ophcrack.
Attaque par table arc-en-ciel (rainbow table) – Cette attaque convient mieux au craquage d’un hachage, mais il faut une base de données existante de mots de passe possibles et de leurs hachages précalculés.
Exemple de craquage d’un mot de passe NTLMv1 avec une table arc-en-ciel (extraite du site https://crackstation.net/) :
Notez que seuls les hachages « non salés » connus peuvent être reconvertis en mots de passe de cette façon.
Si le mot de passe est trop difficile à craquer, d’autres options sont possibles, notamment une attaque dite Pass-the-Hash (PtH). Il s’agit ici d’exploiter n’importe quel service du réseau demandant une authentification en utilisant un hachage du mot de passe au lieu du mot de passe lui-même. psexec et d’autres services communiquant via SMB en sont un bon exemple.
Recommandations pour la prévention de l’exfiltration d’identifiants
Pour éviter la collecte et l’exfiltration des identifiants, il est recommandé aux entreprises de vérifier qu’aucun système plus ancien du réseau ne possède encore des mots de passe chiffrés avec l’algorithme LM dans la base de données SAM et que LM (désactivé par défaut) n’a pas été activé sur des systèmes plus récents. Les mots de passe LM utilisent un jeu de caractères limité et sont faciles à craquer.
Il est également recommandé de désactiver NTLMv1. Il est relativement simple d’extraire le mot de passe d’un hachage NTLMv1 et, pour autant qu’il n’ait pas été configuré autrement, la plupart des services fonctionnant avec NTLMv1 peuvent également utiliser NTLMv2.
Pour s’assurer que LM et NTLMv1 sont désactivés, vous pouvez accéder à la page Objet stratégie de groupe (GPO) :
Apportez les modifications de configuration suivantes à l’objet GPO pour empêcher l’utilisation de NTLMv1 :
Il est plus difficile de craquer le hachage NTLMv2 si le mot de passe est long et unique. Par ailleurs, même si le cyberpirate dispose du hachage, il ne lui servira pas à grand-chose si aucun service n’utilise les hachages NTLM pour l’authentification.
Il est également recommandé d’activer Credential Guard sur les ordinateurs Windows 10 qui le prennent en charge afin de bénéficier d’une protection supplémentaire pour les identifiants NTLM et Kerberos.
Le moyen le plus efficace pour une entreprise de réduire sa surface d’attaque et de se protéger contre l’exfiltration d’identifiants consiste à déployer une solution de sécurité de nouvelle génération, par exemple SentinelOne qui utilise l’apprentissage automatique et ActiveEDR.
Conclusion
Il est possible d’éviter ces attaques basiques en portant attention à votre architecture réseau et aux services utilisés dans votre environnement. Ces types d’attaques sont tout particulièrement efficaces contre les cibles Windows 7 (et versions antérieures) qui, en dépit de leur fin de vie, restent très répandues dans de nombreux réseaux d’entreprise. De nos jours, bon nombre d’entreprises utilisent à raison des implémentations mieux sécurisées comme Kerberos dans un domaine de groupe pour éviter précisément le type de vulnérabilités présentées ici, et déploient une plateforme de sécurité pour endpoints fiable et récente pour protéger leurs équipements et leur réseau.
Références MITRE ATT&CK
Collecte d’identifiants – T1003
Pass-the-Hash – T1075
Force brute – T1110