
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).

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.

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.

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.

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 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.