vegefox.com - stock.adobe.com

AD-Pentest mit BloodHound, CrackMapExec und PowerView

Pentesting in Active Directory kann mit den Tools PowerView, BloodHound und CrackMapExec durchgeführt werden. Damit lassen sich Benutzerrechte und Angriffswege präzise analysieren.

Ein effektiver Einstieg in das Pentesting einer Windows-Domäne erfordert die richtigen Werkzeuge und einen strukturierten, methodischen Ansatz. Die Komplexität moderner AD-Umgebungen (Active Directory) erfordert ein tiefgreifendes Verständnis der zugrunde liegenden Technologien sowie spezialisierte Tools, die es Sicherheitsexperten ermöglichen, potenzielle Schwachstellen systematisch zu identifizieren.

In der heutigen Cybersicherheitslandschaft ist die Fähigkeit, Active-Directory-Netzwerke gründlich zu analysieren, nicht nur für offensive Sicherheitstests, sondern auch für präventive Verteidigungsstrategien von entscheidender Bedeutung. Wer sich systematisch durch die vielschichtigen Strukturen eines AD-Netzwerks bewegen möchte, kann auf eine Reihe bewährter Open-Source-Tools zurückgreifen. Diese sind sowohl für professionelle Penetrationstester als auch für Systemadministratoren zugänglich.

Mit diesen Werkzeugen können mit vergleichsweise geringem Aufwand und wenigen gezielten Befehlen tiefgreifende Informationen über Benutzer, Gruppen, Rechte, Vertrauensstellungen und potenzielle Schwachstellen gewonnen werden. Die Stärke dieser Methodik liegt in der Kombination verschiedener spezialisierter Tools, die jeweils unterschiedliche Aspekte der AD-Infrastruktur beleuchten und zusammen ein umfassendes Bild der Sicherheitslage vermitteln. Im Mittelpunkt dieser Toolchain stehen die leistungsstarken Open-Source-Werkzeuge PowerView, BloodHound und CrackMapExec. Sie haben sich durch ihre Effektivität, Flexibilität und kontinuierliche Weiterentwicklung in der Sicherheitsgemeinschaft etabliert.

BloodHound und SharpHound für die Datenerfassung nutzen

BloodHound basiert auf einem Graphmodell und analysiert Beziehungen und Berechtigungen innerhalb von Active Directory. Die Installation unter Kali Linux erfolgt durch:

sudo apt-get install bloodhound

Nach dem Start des Neo4j-Dienstes und der Anmeldung an der Neo4j-Konsole über

sudo neo4j console

(Standard-Login für Nutzernamen und Passwort: neo4j) wird BloodHound über den Befehl bloodhound als Desktop-Anwendung geöffnet.

SharpHound ist das Datensammlungswerkzeug für BloodHound und wird direkt auf einem Windows-Rechner innerhalb der Domäne eingesetzt. Die Ausführung benötigt keine administrativen Rechte, was den Einsatz auch mit einem kompromittierten Standardbenutzerkonto erlaubt. Nach dem Download von GitHub wird das Archiv extrahiert und über die Befehlszeile gestartet. Für eine vollständige Sammlung der auslesbaren AD-Daten genügt folgender Befehl:

SharpHound.exe --CollectionMethods All

Dieser Vorgang erzeugt eine ZIP-Datei, in der sämtliche erfassten Informationen gespeichert sind. Die Datei wird anschließend zu Bloodhound übertragen, zum Beispiel in eine Kali-Linux-Umgebung. In Bloodhound kann die Datei dann importiert werden. Dort lassen sich die Beziehungen zwischen Konten, Gruppen, Rechten und Trusts visuell analysieren.

Hinweis: Microsoft Defender blockiert SharpHound meist als potenziell schädlich, daher sollte Microsoft Defender vor dem Scanvorgang gezielt deaktiviert werden (das erfolgt auf eigene Gefahr).

SharpHound liest Informationen aus dem Netzwerk.
Abbildung 1: SharpHound liest Informationen aus dem Netzwerk, die wiederum von BloodHound verwendet werden können.

Domänencontroller im Netzwerk lassen sich wiederum auch mit Nmap identifizieren und danach mit SharpHound und BloodHound näher analysieren. Um im Netzwerk nach potenziellen Domänencontrollern zu suchen, lässt sich ein gezielter Port-Scan mit Nmap durchführen. Dabei werden die typischen Ports abgefragt, über die zentrale AD-Dienste bereitgestellt werden, konkret Port 389 für LDAP, Port 88 für Kerberos und Port 53 für DNS. Der Befehl dazu lautet:

nmap -p 389,88,53 -oG scan.txt 10.0.0.0/16 && cat scan.txt | grep "\:53\b" > domain_controllers.txt

Der Scan durchforstet das gesamte Subnetz 10.0.0.0/16 und speichert die Ergebnisse im sogenannten greppable Format in der Datei scan.txt. Anschließend wird mit einem einfachen grep-Befehl nach Zeilen gesucht, in denen Port 53 als offen markiert ist. Systeme mit aktivem DNS-Dienst sind ein starker Hinweis auf Domänencontroller, da diese üblicherweise DNS für die interne Namensauflösung bereitstellen.

Nmap hilft dabei, Domänencontroller im Netzwerk zu identifizieren.
Abbildung 2: Nmap hilft dabei, Domänencontroller im Netzwerk zu identifizieren, findet darin aber auch andere Geräte, die einen Blick wert sind.

Die so gefilterten IP-Adressen werden in die Datei domain_controllers.txt geschrieben und stehen damit für die weitere Analyse zur Verfügung.

CrackMapExec für schnelle Einblicke

Zusammen mit Bloodhound und SharpHound sorgt CrackMapExec ebenfalls für Informationen, die sich aus dem Active Directory analysieren lassen. Das Tool ist unter Kali Linux bereits vorinstalliert. Die Version, die unter Kali in /usr/bin/crackmapexec zu finden ist, unterstützt verschiedene Protokolle wie SMB, RDP und WinRM. Ein typischer Aufruf zur Auflistung erreichbarer Hosts innerhalb des Netzes lautet:

crackmapexec smb 10.0.0.0/16 --shares

Ergibt sich aus der BloodHound-Analyse, dass Benutzer Schreibrechte auf einem Dateiserver besitzen, lässt sich mit CrackMapExec prüfen, ob Remote-Befehle ausgeführt werden können:

crackmapexec smb 10.0.1.230 -u user -p pass -x "whoami"

Der Befehl crackmapexec smb 10.0.0.0/16 --shares dient dazu, sämtliche erreichbaren Systeme im gesamten Subnetz 10.0.0.0/16 nach SMB-Freigaben zu durchsuchen. Dabei nutzt CrackMapExec das SMB-Protokoll, um von außen sichtbar zu machen, welche Dateifreigaben auf den einzelnen Hosts existieren. Die Option --shares sorgt dafür, dass gezielt nur nach diesen Freigaben gefragt wird.

CrackMapExec liest alle Informationen von entdeckten Servern aus.
Abbildung 3: CrackMapExec kann nicht alle Informationen von entdeckten Servern auslesen, aber für die Informationssammlung von identifizierten Servern im Netzwerk reicht es vollkommen.

Während des Scans stellt CrackMapExec für jede IP-Adresse im definierten Bereich eine Verbindung über Port 445 her und fragt die Liste der verfügbaren Freigaben ab. Die Ausgabe enthält nicht nur die Namen der Shares, sondern auch Informationen über die Zugriffsrechte: ob anonym zugegriffen werden kann, ob Leserechte bestehen oder ob Schreibzugriff möglich ist. Gerade Letzteres ist aus sicherheitstechnischer Sicht hochrelevant, etwa wenn ungeschützte Verzeichnisse existieren, in denen beliebige Dateien abgelegt oder verändert werden können.

Dieser Scan ist ein effizienter erster Schritt, um unzureichend gesicherte Freigaben in einer AD-Umgebung wie joost.int sichtbar zu machen, bevor gezieltere Analysen folgen.

PowerView herunterladen und importieren

PowerView ist ein Modul aus PowerSploit und kann direkt von GitHub heruntergeladen werden. Danach wird PowerView.ps1 auf das Zielsystem kopiert. Das Projekt wird nicht mehr supportet, das ändert aber nichts daran, dass PowerView noch immer problemlos Informationen aus dem Active Direcory auslesen kann. Um PowerView zu verwenden, lädt man den PowerSploit-Source-Code auf einen Rechner herunter. Nach dem Extrahieren reicht es aus, den Ordner recon in das Verzeichnis \Dokumente\WindowsPowerShell\Modules zu kopieren. Brauchen Admins das Modul nicht mehr, kann es einfach gelöscht werden. Wichtig ist noch, die Ausführungsrichtlinie der PowerShell mit Set-ExecutionPolicy -ExecutionPolicy Unrestricted zu deaktivieren. Nach einem Neustart der PowerShell steht das Modul mit import-module recon zur Verfügung.

PowerView lässt sich zur Analyse von Active Directory nutzen.
Abbildung 4: PowerView lässt sich zur umfangreichen Analyse von Active Directory nutzen.

Sobald PowerView aktiv ist, lassen sich gezielt Informationen zur gewünschten Domäne abrufen, in diesem Fall die Domäne joos.int. Der aktuelle Domänenname wird mit Get-NetDomain ermittelt. Die Domänencontroller werden mit folgendem Befehl aufgelistet:

Get-NetDomainController

Alle Benutzerkonten lassen sich wie folgt anzeigen:

Get-NetUser | Select-Object cn, lastlogon

Dabei erscheinen nicht nur die Benutzernamen, sondern auch Zeitstempel der letzten Anmeldungen. So lassen sich inaktive Konten oder potenziell interessante Ziele identifizieren. Um Gruppenmitgliedschaften zu untersuchen, wird folgender Befehl genutzt:

Get-NetGroupMember -GroupName "Domain Admins"

Informationen zu einer bestimmten Person können detailliert ausgegeben werden:

Get-NetUser -Username "joost" | Format-List

So lassen sich Telefonnummern, Abteilungen oder Standortdaten einsehen. Verwendet werden solche Daten oft für Social Engineering oder gezielte Angriffe.

Systeme im Netzwerk mit PowerView erkennen

Eine Liste aller Computer in der Domäne liefert Get-NetComputer. Mit dem Zusatz -Ping wird geprüft, ob die Systeme aktuell erreichbar sind:

Get-NetComputer -Ping | Select-Object name, operatingsystem

Ein aktiver Zugriff auf laufende Sessions oder angemeldete Nutzer eines Rechners ist mit den folgenden Cmdlets möglich:

Get-NetLoggedon -ComputerName dc1.joost.int

Get-NetSession -ComputerName dc1.joost.int

Angemeldete Administratoren auf Systemen lassen sich mit Invoke-UserHunter ermitteln. Wenn ein Domain-Admin dort aktiv ist, kann das Zielsystem für einen Token-Diebstahl genutzt werden. Netzwerklaufwerke und Freigaben im Netzwerk werden mit folgendem Befehl analysiert:

Invoke-ShareFinder

Interessante Dateien wie Passwortlisten lassen sich gezielt suchen:

Find-InterestingDomainShareFile -Include *pass*
PowerView findet Freigaben im Netzwerk
Abbildung 5: PowerView findet in Sekundenschnelle die Freigaben im Netzwerk.

PowerView stellt zahlreiche weitere Cmdlets zur Untersuchung von Active Directory bereit. Eine Liste lässt sich nach dem Laden des Moduls mit dem folgenden Befehl anzeigen:

Get-Command -Modul recon

Gemeinsamer Einsatz von PowerView, Boodhound und CrackMapExec

Im Zusammenspiel ergänzen sich die Tools. Mit PowerView wird die Struktur des Netzwerks transparent, BloodHound visualisiert die Rechtebeziehungen, und CrackMapExec ermöglicht den Praxistest. Hat PowerView etwa gezeigt, dass ein Benutzer zur Gruppe Server Operators gehört, lässt sich mit CrackMapExec überprüfen, ob dies zur Ausführung von Befehlen auf Servern führt. Die aus SharpHound extrahierten Informationen können wiederum zur gezielten Jagd nach Lateral-Movement-Pfaden genutzt werden.

PowerView stellt dabei das analytische Fundament. Die gezielte Suche nach Trust-Beziehungen, Gruppenmitgliedschaften oder Berechtigungsausreißern ist mit den enthaltenen Funktionen schnell realisierbar. Wer eine Domäne durchdringen will, nutzt diese Tools im Verbund.

Erfahren Sie mehr über Netzwerksoftware