Nachdem die Anmeldung am AD meistens immer noch über Username und Passwort erfolgt, ist es wichtig, dass sichere Kennwörter verwendet werden. Viele Passwörter wurden jedoch durch Hackerangriffe kompromittiert und sollten vermieden werden. Ob User ein solches verwenden, kann man mit HaveIBeenPwned.com ermitteln.
Im Internet kursieren Listen mit Unmengen von gehackten Passwörtern. Sie sind in der Regel frei zugänglich und können von böswilligen Akteuren für Brute-Force-Angriffe verwendet werden.
Um herauszufinden, ob Benutzer im Active Directory kompromittierte Passwörter verwenden, kann man HaveIBeenPwned.com abfragen. Sie Website enthält eine Datenbank mit hunderten Millionen gestohlenen Passwörtern.
Um die AD-Passwörter automatisch zu prüfen, muss man allerdings einige Vorbereitungen treffen und benötigt dafür etwas PowerShell-Code. Einfacher geht es mit dem kostenlosen Specops Password Auditor.
HaveIBeenPwned konsultieren
Die Website bietet für die interaktive Nutzung ein Formular, in das man ein Passwort zur Überprüfung eingeben kann. Dies ist zum Beispiel hilfreich, wenn man vor der Vergabe oder dem Wechsel eines Kennworts herausfinden möchte, ob dieses bereits kompromittiert wurde.
Für Admins, die Kennwörter im Active Directory mit den Listen von HaveIBeenPwned abgleichen wollen, ist diese Funktion indes wertlos, weil die AD-Passwörter bekanntlich als Hash gespeichert werden.
API-Funktion aufrufen
Für diese Aufgabe bietet die Website jedoch ein API, dem man die ersten fünf Zeichen des Hashes übergibt. Als Ergebnis erhält man alle Hashes aus der Datenbank, die mit dieser Zeichenfolge beginnen, aber gekürzt um die ersten fünf Zeichen.
Für den Hash
198ffc97717b69d5b8227a1dde33bada
würde man die Funktion so aufrufen:
https://api.pwnedpasswords.com/range/198ff?mode=ntlm
In der Antwort wäre dann "c97717b69d5b8227a1dde33bada" enthalten, falls es sich um ein kompromittiertes Passwort handelt.
Hashes aus dem AD auslesen
Die erste Hürde besteht darin, dass man weder mit den GUI-Bordmitteln noch mit dem PowerShell-Modul für Active Directory an die gespeicherten Passwort-Hashes herankommt. Einige Anleitungen empfehlen zu diesem Zweck das Anlegen eines Datenbank-Dumps mit Hilfe einer Schattenkopie.
Eine elegantere Variante bietet sich mit dem PowerShell-Modul DSInternals. Es enthält das Cmdlet Get-ADReplAccount, das ein Replikat der AD-Datenbank über MS-DRSR erzeugt. Daher muss man es mit den Credentials eines Kontos aufrufen, das sie entsprechenden Replikationsrechte hat.
DSInternals installieren und Replikations-User konfigurieren
Im ersten Schritt installiert man DSInternals:
Install-Module DSInternals
Anschließend stattet man den User, den man für diese Aufgabe verwenden möchte, mit den erforderlichen Berechtigungen aus. Grundsätzlich könnte man dazu auch einen Domänen-Admin verwenden, aber das empfiehlt sich in produktiven Umgebungen nicht.
Für diese Aufgabe öffnet man in AD-Benutzer und -Computer die Eigenschaften aus dem Kontextmenü der Domäne und wechselt zur Registerkarte Sicherheit.
Dort erteilt man dem gewünschten Benutzer oder der betreffenden Gruppe die Berechtigungen Alle Verzeichnisänderungen replizieren ("Replicating Directory Changes All") und Verzeichnisänderungen replizieren ("Replicating Directory Changes").
Nun kann man den Passwort-Hash für ein Konto abrufen und die ersten fünf Zeichen an die API-Funktion von HaveIBeenPwned übergeben.
Dazu muss man jedoch eine weitere Hürde nehmen, weil der Hash nicht als String vorliegt, sondern als Byte-Array aus dezimalen Zahlen. Diese muss man auf ins hexadezimale Format konvertieren und zu einem String zusammenfügen.
Das komplette Script würde dann so aussehen:
Das Script erweitert die Abfrage für einen einzelnen User um eine praktische Anwendung. Es ermittelt alle Benutzer, die ihr Passwort seit einem bestimmten Datum geändert haben, beispielsweise seit Beginn des aktuellen Monats, und sieht nach, ob das neue Kennwort kompromittiert wurde.
Specops Password Auditor als komfortable Alternative
Specops Password Auditor ist ein kostenloses Tool, mit dem man Active Directory schnell und einfach auf passwortrelevante Schwachstellen untersuchen kann. Nach der Installation der Software muss man keine weiteren Voraussetzungen schaffen, etwa in Form eines speziellen Kontos, sondern kann sofort loslegen.
Das Programm greift nur lesend auf das AD zu und vergleicht die Passwort-Hashes untereinander sowie mit einer Liste mit über 1 Milliarde bereits kompromittierten Kennwörtern.
Führt man das Programm als Domain-Admin aus, dann kann es den NTHash aller Passwörter vergleichen und die Benutzer aufzeigen, die ein identisches, schwaches oder kompromittiertes Passwort haben. Für diesen Check werden keine Daten außerhalb Ihres Active Directory gesendet.
Specops Password Auditor prüft zudem alle für authentifizierte Nutzer zugänglichen Informationen in der Domäne, etwa die Passwortrichtlinien, die festgelegten Ablauffristen von Kennwörtern und vieles mehr.
Sie können das Tool hier kostenlos herunterladen »
Zusammenfassung
Nachdem die Anmeldung am Active Directory zumeist nur mit Benutzername und Passwort erfolgt, ist es wichtig, sichere Kennwörter zu verwenden. Dies können Admins zu einem gewissen Grad über die Password Policy sicherstellen.
Um jedoch zu verhindern, dass kompromittierte Kennwörter verwendet werden, muss man externe Dienste konsultieren. HaveIBeenPwned verfügt über eine riesige Sammlung an gestohlenen Passwörtern, die man für diesen Zweck nutzen kann. Der Aufruf einer API-Funktion mit PowerShell gibt Aufschluss darüber, ob Kennwörter kompromittiert wurden.
Als Alternative kann man zum kostenlosen Specops Password Auditor greifen, der AD-Passwörter ebenfalls mit einem enormen Fundus an offengelegten Kennwörter vergleicht. Das Tool generiert darüber hinaus noch eine ganze Reihe von Reports, mit denen sich die Passwortsicherheit erhöhen lässt.
*Dies ist ein bezahlter Beitrag von Specops Software.
Weitere Beiträge von diesem Anbieter