Blog
Informativ, aktuell und spannend - der Oneconsult Cybersecurity Blog.
Die Sicherheit des eigenen Active Directory (AD) verbessern

Die grosse Mehrheit der Unternehmen nutzt heutzutage Windows und somit auch Active Directory. Die Standardeinstellungen sind oft eher auf Funktionalität denn auf Sicherheit ausgelegt. Auch aufgrund der Tatsache, dass eine Umgebung über die Jahre wächst, schleichen sich leicht Fehlkonfigurationen ein. Ausserdem gefährden auch schwache Passwörter im Active Directory dessen Sicherheit. All dies kann dazu führen, dass Angreifer leichtes Spiel haben, sobald diese einen initialen Zugriff auf das Active Directory erlangt haben.

Wie können Sie sich selbst schützen? Finden Sie solche Fehlkonfigurationen und schwachen Passwörter mit geeigneten Tools in Ihrem Active Directory selbst, bevor Angreifer dies tun!

Die Sicherheit des eigenen Active Directory (AD) verbessern

Vertrauen vs. Kontrolle: Dilemma bei der Nutzung von Online-Tools

Wenn Sie Ihre eigene Infrastruktur untersuchen möchten, sollten Sie ein Offline-Backup aller relevanten Daten besitzen – für alle Fälle. Ausserdem wird sich Ihnen früher oder später die Frage stellen, ob ein Tool oder Code aus dem Internet vertrauenswürdig ist und im internen Netzwerk ausgeführt werden kann. Vertrauen ist zwar gut, doch Kontrolle ist in dem Fall besser. Falls beispielsweise der Quellcode verfügbar ist, so kann in einem Review überprüft werden, ob ausschliesslich die versprochene Funktionalität enthalten ist.

Vermutlich werden Verteidigungsmassnamen wie Microsoft Defender oder PowerShell Execution Policies bei der Ausführung entsprechender Tools und Codes dazwischenfunken. Diese sollten in Rücksprache mit den Systemverantwortlichen für den Selbstaudit des eigenen Active Directory temporär deaktiviert werden.

Die Sicherheit von Active Directory mit PingCastle erhöhen

Es gibt einige Tools wie PingCastle und Purple Knight, mit deren Hilfe Sie die erwähnten Fehlkonfigurationen und andere Schwachstellen im eigenen Active Directory (AD) identifizieren können. Im Folgenden betrachten wir beispielhaft PingCastle.

PingCastle wird von Vincent Le Touc entwickelt und ist seit 2017 verfügbar. Es ist sowohl unter einer proprietären Lizenz als auch unter der Non-Profit Open Source License 3.0 lizensiert – somit können Unternehmen PingCastle kostenlos gegen ihre eigene AD-Umgebung einsetzen. Die aktuelle Version von PingCastle ist von der Webseite per Download erhältlich. Dort findet sich auch eine übersichtliche Dokumentation der verschiedenen Funktionalitäten.

Der standardmässige Healthcheck von PingCastle läuft selbst in grossen, komplexen AD-Umgebungen relativ schnell durch:

PS > .\PingCastle.exe --healthcheck --no-enum-limit

Die Resultate liefert PingCastle als interaktive HTML-Datei und kann im Webbrowser betrachtet werden. Das Risikolevel der überprüften Domäne wird dabei als Zahlenwert zwischen 0 und 100 angegeben, wobei 100 das höchste Risikolevel beschreibt. Das Risikolevel ergibt sich als Maximum der Risikolevel der vier von PingCastle verwendeten Indikatoren: Vorgänge im Zusammenhang mit Benutzer- und Computerobjekten (Stale Objects), Vertrauensbeziehungen zwischen verschiedenen Active Directories (Trusts), privilegierte Konten (Privileged Accounts), und allen Sicherheitsaspekten, die in keine der vorherigen Kategorien passen (Anomalies).

Healthcheck – Bewertung des Risikolevels der Domäne und einzelner Indikatoren
Abbildung 1: Healthcheck – Bewertung des Risikolevels der Domäne und einzelner Indikatoren

Darunter befindet sich eine tabellarische Übersicht der Risiken pro Indikator, das Risikomodell. Die farbliche Kodierung hilft Ihnen bei der Priorisierung. Allerdings sollten die Risiken auch im Kontext der eigenen Umgebung bewertet werden, was Änderungen in der Priorisierung zur Folge haben kann.

Risikomodell – ein erste (farbkodierte) Übersicht über detektierte Schwachstellen
Abbildung 2: Risikomodell – ein erste (farbkodierte) Übersicht über detektierte Schwachstellen

Per Klick auf einzelne Einträge der Tabelle werden Kurzinfos zum Risiko eingeblendet, inklusive einem Link zu den Rohdaten weiter unten im Bericht. Unter dem Risikomodell findet sich der Abschnitt Maturitätslevel, in dem die detektierten Schwachstellen aufgelistet sind. Die Schwachstellen der unterschiedlichen Maturitätslevel können dabei durch Auswahl des entsprechenden Tabs angezeigt werden. Klickt man auf einzelne Schwachstellen in der Liste, so werden technische Details der Schwachstelle sowie Massnahmenempfehlungen und Links zu weiterführenden Informationen angezeigt.

Maturitätslevel – Auflistung der detektierten Schwachstellen inklusive Gewichtung (Punktzahl)
Abbildung 3: Maturitätslevel – Auflistung der detektierten Schwachstellen inklusive Gewichtung (Punktzahl)

Etwas versteckt in der Tabelle der Kontrollpfadanalyse gibt es Links, welche Analysen in Form von Graphen öffnen. In diesen Graphen werden die Beziehungen verschiedener Objekte des Active Directory dargestellt, und es werden Details zu den Beziehungen angezeigt, wenn man mit dem Mauszeiger über die Verbindung fährt.

Kontrollpfadanalyse – Graphen zu Veranschaulichung von Beziehungen zwischen AD-Objekten
Abbildung 4: Kontrollpfadanalyse – Graphen zu Veranschaulichung von Beziehungen zwischen AD-Objekten

Mithilfe dieser Graphen können mögliche Angriffspfade erkannt werden, die beispielsweise zu einer Ausweitung von Berechtigungen in der AD-Umgebung führen können. Sie ähneln jenen Graphen, die sich mit BloodHound (https://github.com/BloodHoundAD/BloodHound) erzeugen lassen. BloodHound wird häufig dazu verwendet, nach potenziellen Angriffspfaden in AD-Umgebungen zu suchen. Ein Beispiel für solche Angriffspfade sind Wege zum Konto des Domäneadministrators oder anderen privilegierten Benutzerkonten.

Passwortkontrolle mit «Have I Been Pwned?»

Ein grundlegender Baustein für die Sicherheit eines Active Directory sind starke Passwörter. Dabei sollten Sie nicht nur auf hochprivilegierte Konten schauen – jedes mit dem Active Directory verbundene Gerät kann als Einfallstor für Angreifer dienen. Starke Passwörter schützen vor diversen Angriffen wie Kerberoasting, Password Spraying und Brute-Force-Angriffen auf abgefangene Passwort-Hashes (in dieser Form werden Passwörter gespeichert). Empfehlungen zu Password Policies für starke Passwörter finden Sie in unserem Blogartikel «Passwörter: Häufige Fehler, Best Practices & Tipps». Zur Überprüfung der Passwortsicherheit im eigenen Active Directory können die Passwort-Hashes gegen bekannte Passwort-Hashes aus Datenlecks abgeglichen werden.

Der australische Sicherheitsexperte Troy Hunt betreibt die Dienste «Have I Been Pwned» und «Pwned Passwords». Bei letzterem handelt es sich um eine Sammlung von bekannten kompromittierten Passwörtern bzw. deren Hashes. Dieser Datenschatz kann zur Offline-Nutzung heruntergeladen werden. Dazu gibt es mittlerweile den PwnedPasswordsDownloader – dieser benötigt .NET 6.0. Der PwnedPasswordsDownload kann wie folgt per PowerShell installiert werden:

PS > dotnet tool install --global haveibeenpwned-downloader

Sollte das Paket nicht gefunden werden, so schafft das Hinzufügen folgender Paketquelle Abhilfe:

PS > dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org

Die Passwort-Hashes (SHA1, NTLM) können im Anschluss durch folgende Befehle heruntergeladen und als Textdatei abgespeichert werden:

PS > haveibeenpwned-downloader.exe pwnedpasswords_sha1.txt
PS > haveibeenpwned-downloader.exe -n pwnedpasswords_ntlm.txt

Der Download dauert eine Weile, denn der Download funktioniert über die HTTP-Anfragen auf eine API. Beide Dateien sind im Sommer 2023 zwischen 30 und 40 GByte gross.

Passwort Audit mit DSInternals

Das Cmdlet «Test-PasswordQuality» des Frameworks DSInternals erlaubt die Passwörter im eigenen Active Directory auf geleakte Passwörter hin zu überprüfen. Die Installation von DSInternals via PowerShell funktioniert wie folgt:

# Aktivierung von TLS1.2 auf älteren Windowsversionen
PS > [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12


# Download des NuGet Paketmanagers
PS > Install-PackageProvider -Name NuGet -Force


# Installation DSInternals
PS > Install-Module -Name DSInternals -Force

Das Cmdlet «Test-PasswordQuality» untersucht alle AD-Passwörter auf schwache Einträge, Duplikate, Standardpasswörter oder nicht gesetzte Passwörter. Die Analyse kann online (Variante DCSync) oder offline (Variante ntds.dit) durchgeführt werden.

Für die Online-Variante werden die Rechte eines Domäneadministrators (oder vergleichbar) benötigt:

# Durchführung der Passwordqualitätstests (DCSync)
PS > Get-ADReplAccount -All -Server DC -NamingContext "dc=windomain,dc=local" |
Test-PasswordQuality -WeakPasswordHashesFile E:\pwnedpasswords_ntlm.txt -
IncludeDisabledAccounts

Ausführung des Cmdlets "Test-passwordQuality"
Abbildung 5: Ausführung des Cmdlets «Test-passwordQuality»

Für die Offline-Variante muss zunächst eine Kopie der Datei ntds.dit erstellt werden, welche die NT-Hashes der Passwörter enthält. Da sie kontinuierlich vom Active Directory verwendet wird, ist sie gesperrt und lässt sich nicht auf herkömmliche Weise kopieren. Im Folgenden wird dies per Kommandozeile über eine Schattenkopie bewerkstelligt:

C:\Windows\system32>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: {e776fc8c-8b9d-424e-a558-11db177a56f4}
Shadow Copy Volume Name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1I

C:\Windows\system32>copy
\\?\GLOBALROOT\Device\HarddiskVolumeShadow
Copy1\Windows\NTDS\ntds.dit C:\tmp\ntds.dit
1 file(s) copied.

C:\Windows\system32>reg SAVE HKLM\SYSTEM C:\tmp\SYS
The operation completed successfully.

C:\Windows\system32>vssadmin delete shadows /shadow={e776fc8c-8b9d-424e-a558-11db177a56f4}
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.

Do you really want to delete 1 shadow copies (Y/N): [N]? y

Successfully deleted 1 shadow copies.

Dabei wurde auch eine Kopie des Registry-Eintrags «HKLM/SYSTEM» erstellt, da dieser den Boot Key für die Entschlüsselung der kopierten ntds.dit enthält. Das Passwort Audit mit dem PowerShell-Cmdlet «Test-PasswordQuality» funktioniert dann wie folgt:

PS > $key = Get-BootKey -SystemHivePath C:\tmp\SYS
PS > Get-ADDBAccount -All -BootKey $key -DBPath C:\tmp\ntds.dit | Test-PasswordQuality -WeakPasswordHashesFile E:\pwnedpasswords_ntlm.txt

Falls dabei die Fehlermeldung «The database is not in a clean state.» zurückgegeben wird, so muss ntds.dit erst noch repariert werden:

# Reparieren von ntds.dit, falls die Fehlermeldung "The database is not in a clean state." erscheint.
PS > ESENTUTL /p C:\tmp\ntds.dit /!10240 /8 /o

Fazit

Mit den vorgestellten Tools lassen sich grundlegende Fehlkonfigurationen im Active Directory gut selbst erkennen. In der iX-Tutorialreihe «Sich selbst hacken» werden noch weitere Möglichkeiten vorgestellt, die eigene IT-Umgebung auf eigene Faust unter die Lupe zu nehmen (bisher erschienen: externes Netzwerk, Webanwendungen, internes Netzwerk). Simple Fehlkonfigurationen und schwache Passwörter können Sie somit gut in den Griff bekommen.

Um komplexere Schwachstellen und Angriffsvektoren zu identifizieren, empfehlen wir einen ausführlichen Penetration Test durch unsere Experten.

Eine Awareness-Schulung zum Umgang mit Passwörtern durch die Cyber Security Academy kann als Beitrag zu nachhaltig sicheren Passwörtern dienen. In diesen wie auch in allen weiteren Cyber-Security-Themen helfen wir gerne weiter. Wir freuen uns auf Ihre Kontaktaufnahme:

Publiziert am: 13.09.2023

Teilen

Nie mehr Aktuelles über Cyber-Security-Themen verpassen? Dann abonnieren Sie jetzt unseren Newsletter

Autor

Georg Bube

Georg Bube ist Senior Penetration Tester bei der Oneconsult Deutschland AG. Er ist Certified Red Team Operator (CRTO) und Offensive Security Certified Professional (OSCP).

Nichts verpassen! Melden Sie sich für unseren kostenlosen Newsletter an.

Ihre Sicherheit hat höchste Priorität – unsere Spezialisten unterstützen Sie kompetent.

Erreichbarkeit von Montag bis Freitag 08.00 – 18.00 Uhr (Ausnahme: Kunden mit SLA – Bitte über die 24/7 IRR-Notfallnummer anrufen).

Privatpersonen wenden sich bitte an Ihren IT-Dienstleister des Vertrauens oder die lokale Polizeidienststelle.

Weitere Informationen zu unseren DFIR-Services finden Sie hier:

QR_CSIRT_2022@2x
CSIRT zu den Kontakten hinzufügen