Die Passwort Hashes der AD User auszulesen, stellt sich leichter dar als vermutet. Natürlich sind diese Hashes nicht in Klartext umzuwandeln, aber diese als Hashes wieder in eine neue/andere Umgebung einzulesen, sollte auf diesem Wege möglich sein.
Zunächst wird ein Abbild der NTDS.dit Datenbank benötigt, in der diese Hashes abgelegt sind. Dies lässt sich über NTDSUtil realisieren. Der entsprechende Befehl lautet:
ntdsutil “ac i ntds” “ifm” “create full c:\temp” q q
Anstelle von C:\Temp können Sie natürlich jedes beliebige Verzeichnis wählen.
Nach Abschluss dieses Snapshots sehen Sie im Temp (oder Ihrem eigenen) Verzeichnis zwei Unterverzeichnisse.
Im Verzeichnis Active Directory befindet sich der Snapshot der NTDS.dit. Im Verzeichnis registry befindet sich unter anderem der sogenannte Boot Key, den Sie zum Entschlüssen benötigen. Die vorhandene Kopie der NTDS.dit können Sie nun mit Get-ADDBAccount aus den DSInternal Tools auslesen. Auf die Beschreibung der Installation der DSInternal Tools verzichte ich hier. Diese sollte im angegebenen Link hinreichend beschrieben sein.
Nach erfolgreicher Einrichtung der DSInternals müssen Sie zunächst den Boot Key auslesen.
$key = Get-BootKey -SystemHivePath ‘C:\Temp\registry\SYSTEM’
Anschließend können Sie unter Verwendung dieses Keys die Hashes erhalten und z.B. in einer TXT ablegen.
Get-ADDBAccount -all -DBPath C:\_Marco\NTDS\ntds.dit -BootKey $key |fl Samaccountname,displayname,*hash* |Format-Custom -View HashcatNT |Out-File C:\_Marco\NTDS\hashes.txt -Encoding ASCII
Damit werden alle User und deren Passwort Hashes in der Datei hashes.txt gespeichert.
Sie können auch nach einzelnen Usern suchen.
Get-ADDBAccount -samaccountname name -DBPath C:\_Marco\NTDS\ntds.dit -BootKey $key |fl samaccountname,displayname,*hash* |Format-Custom -View HashcatNT