
Offensives GPO-Dumping- und Analyse-Tool, das BloodHound-Daten nutzt und anreichert
GPOHound ist ein Tool zum Dumpen und Analysieren von Group Policy Objects (GPOs), die aus der SYSVOL-Freigabe extrahiert wurden.
Es bietet ein strukturiertes, formalisiertes Format, um Fehlkonfigurationen, unsichere Einstellungen und Privilegieneskalationspfade in Active Directory-Umgebungen aufzudecken.
Das Tool integriert sich in die Neo4j-Datenbank von BloodHound, nutzt diese als LDAP-ähnliche Quelle für Active Directory-Informationen und reichert sie durch Hinzufügen neuer Beziehungen (Kanten) und Knoteneigenschaften basierend auf der Analyse an.
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
pipx install "git+https://github.com/cogiceo/GPOHound"
Sie müssen Neo4j APOC für die Anreicherung der BloodHound-Daten einrichten:
Wenn Sie die Standard-Neo4j-Installation verwenden, können Sie APOC aktivieren, indem Sie die APOC-jar-Datei in den Plugin-Ordner kopieren und dann Neo4j neu starten:
cp /var/lib/neo4j/labs/apoc-* /var/lib/neo4j/plugins/
neo4j restart
Wenn Sie Neo4j mit "Docker Compose" installieren, fügen Sie die Umgebungsvariable NEO4J_PLUGINS=["apoc"] hinzu:
neo4j:
image: neo4j:latest
environment:
- NEO4J_PLUGINS=["apoc"]
Weitere Details oder alternative Installationsmethoden finden Sie in der offiziellen APOC-Dokumentation.
Um die von GPOHound hinzugefügten Beziehungen und Eigenschaften zu visualisieren, können Sie die benutzerdefinierten Abfragen aus der Datei customqueries.json in BloodHound importieren. Standardmäßig befindet sich diese Datei unter ~/.config/bloodhound/customqueries.json.
Laden Sie zunächst die SYSVOL-Inhalte vom Domänencontroller herunter.
Laden Sie das vollständige SYSVOL herunter:
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
Laden Sie nur die GPOs herunter:
gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD --gpos
Laden Sie mit Ausschlüssen herunter:
gpohound sysvol --dc $DC_HOST -u $USER -p $PASSWORD --exclude '/Policydefinitions/','/scripts/' --max-size 100
Rufen Sie alle erforderlichen Daten von LDAP ab:
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
Für die BloodHound-Datenanreicherung müssen Sie BloodHound-Daten mit einem Collector wie bloodhound.py oder SharpHound.exe sammeln und die gesammelten Daten in die BloodHound-Oberfläche importieren.
Beispiel-GPOHound-Dateien sind in example.zip verfügbar. Entpacken Sie sie mit unzip example.zip.
Siehe CONFIG.md für Anweisungen zum Anpassen von Standardwerten und Konfigurationen.
gpohound --neo4j-user $USER --neo4j-pass $PASS dump
gpohound --neo4j-user $USER --neo4j-pass $PASS analysis
gpohound parse "gpos/sysvols/$DOMAIN/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol"
gpohound dump
gpohound dump --list
gpohound dump --guid 31B2F340-016D-11D2-945F-00C04FB984F9
gpohound dump --policies scripts psscripts
gpohound dump --search 'VNC.*Server' --show
gpohound analysis
gpohound analysis --affected
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL'
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --list
gpohound analysis --trustee 'SRV01.SEVENKINGDOMS.LOCAL' --dump
gpohound analysis --enrich
gpohound analysis --enrich-ce
[!IMPORTANT]
- Bedingungen wie Sicherheitsfilter, WMI-Filter und Item-Level-Targeting werden nicht interpretiert.
- GPO-Konflikte werden nicht simuliert, um gültige Einstellungen nicht zu übersehen.
sAMAccountName-EntführungStandardmäßige privilegierte Treuhänder sowie Dienstkonten mit SIDs, die mit S-1-5-8 beginnen, werden von der Analyse ausgeschlossen.
| Gruppe | Kante |
|---|
| Administratoren | AdminTo |
| Remotedesktopbenutzer | CanRDP |
| Verteilte COM-Benutzer | ExecuteDCOM |
| Remoteverwaltungsbenutzer | CanPSRemote |
| Sicherungsoperatoren | CanPrivEsc |
| Druckoperatoren | CanPrivEsc |
| Netzwerkkonfigurationsoperatoren | CanPrivEsc |
| Analyse | Eigenschaft |
|---|
| „Everyone“-Gruppe enthält „Anonyme Anmeldung“ | — |
| SMB-Serversitzungssignierung ist nicht aktiviert | smbSigningEnabled: false |
| SMB-Serversitzungssignierung ist nicht erforderlich | smbSigningRequired: false |
| NTLMv1-Authentifizierung wird unterstützt | NTLMv1Support: true |
| Standardkennwort für automatische Windows-Anmeldung | — |
| VNC-Anmeldedaten (Generisch: RealVNC, TightVNC, TigerVNC, etc.) | *VNC*PASS* (verschiedene) |
| In FileZilla gespeicherte Passwörter | — |
| PuTTY-Proxy-Passwort | — |
| Gespeicherte TeamViewer-Anmeldedaten | — |
| WinSCP-gespeicherte Sitzungen | — |
| Gespeichertes Picasa-Passwort | — |
| Privileg | Beschreibung | Kante |
|---|
| SeDebugPrivilege | Erlaubt dem Benutzer, jeden Prozess zu debuggen und zu interagieren | CanPrivEsc |
| SeBackupPrivilege | Gewährt Zugriff auf vertrauliche Dateien | CanPrivEsc |
| SeRestorePrivilege | Umgeht Objektberechtigungen während der Wiederherstellung | CanPrivEsc |
| SeAssignPrimaryTokenPrivilege | Ermöglicht Token-Impersonation zur SYSTEM-Eskalation | CanPrivEsc |
| SeImpersonatePrivilege | Erlaubt die Erstellung eines Prozesses im Kontext eines anderen Benutzers | CanPrivEsc |
| SeTakeOwnershipPrivilege | Erlaubt Benutzern, den Besitz von Systemobjekten zu übernehmen | CanPrivEsc |
| SeTcbPrivilege | Gewährt die Fähigkeit, als Teil des Betriebssystems zu agieren | CanPrivEsc |
| SeCreateTokenPrivilege | Erlaubt die Erstellung von Authentifizierungstokens | CanPrivEsc |
| SeLoadDriverPrivilege | Autorisieret das Laden/Entladen von Treibern | CanPrivEsc |
| SeManageVolumePrivilege | Gewährt Volumen- oder Datenträgerverwaltungsberechtigungen | CanPrivEsc |
| SeEnableDelegationPrivilege | Aktiviert Computer- und Benutzerkonten, um für die Delegierung vertrauenswürdig zu sein |