
GPOHound — Updated!
Offensives GPO-Dumping- und Analyse-Tool, das BloodHound-Daten nutzt und anreichert
GPOHound
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.
Funktionen
Dump
- Dump von GPOs in einem strukturierten JSON- oder Baumformat
- Unterstützt mehrere Domänen
- Löst GPO-Namen mit GPO-GUIDs auf
- Filtert Ausgabe nach GPO-Dateien, GPO-GUIDs und Domänen
- Durchsucht Schlüssel/Wert-Paare mit Regex
Analyse
- Gruppiert Einstellungen nach betroffenem Objekt (z.B. Lokale Gruppen, Registry)
- Erkennt Mitglieder, die zu lokalen privilegierten Gruppen hinzugefügt wurden
- Erkennt unsichere Registrierungseinstellungen, gespeicherte Anmeldedaten und Privilegienrechte
- Unterstützt Entschlüsselung von VNC-Anmeldedaten und GPP-Passwörtern
- Findet von GPOs betroffene Domänen, Container und OUs
- Ermittelt auf einen bestimmten Benutzer, Computer, OU, Container oder Domäne angewandte GPOs
- Reichert BloodHound-Daten mit Beziehungen und Eigenschaften an
Installation
Installieren mit pip
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
Installieren mit pipx
pipx install "git+https://github.com/cogiceo/GPOHound"
APOC für Neo4j einrichten
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.
BloodHound-Abfragen hinzufügen
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.
Voraussetzungen
Auslesen von SYSVOL
Laden Sie zunächst die SYSVOL-Inhalte vom Domänencontroller herunter.
-
Laden Sie das vollständige
SYSVOLherunter: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
Auslesen von LDAP
Rufen Sie alle erforderlichen Daten von LDAP ab:
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
BloodHound
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.
Verwendung
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
Parse
gpohound parse "gpos/sysvols/$DOMAIN/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Registry.pol"
Dump
gpohound dump
gpohound dump --list
gpohound dump --guid 31B2F340-016D-11D2-945F-00C04FB984F9
gpohound dump --policies scripts psscripts
gpohound dump --search 'VNC.*Server' --show
Analyse
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
Aktuelle Analyse und Anreicherung
[!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.
Lokale Gruppen
- Erkennung von Benutzern, die bei der Anmeldung privilegierten lokalen Gruppen zugewiesen wurden
- Erkennung umbenannter integrierter privilegierter lokaler Gruppen.
- Erkennung von Treuhändern, die privilegierten lokalen Gruppen mithilfe von "Präferenz-Prozessvariablen" (z.B. %ComputerName%, %DomainName%) hinzugefügt wurden
- Erkennung von missbrauchbaren Treuhändern durch
sAMAccountName-Entführung - Erkennung aller Treuhänder, die privilegierten lokalen Gruppen hinzugefügt wurden:
| Gruppe | Kante |
|---|---|
| Administratoren | AdminTo |
| Remotedesktopbenutzer | CanRDP |
| Verteilte COM-Benutzer | ExecuteDCOM |
| Remoteverwaltungsbenutzer | CanPSRemote |
| Sicherungsoperatoren | CanPrivEsc |
| Druckoperatoren | CanPrivEsc |
| Netzwerkkonfigurationsoperatoren | CanPrivEsc |
Registry
| 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 | — |
Privilegienrechte
Standardmäßige privilegierte Treuhänder sowie Dienstkonten mit SIDs, die mit S-1-5-8 beginnen, werden von der Analyse ausgeschlossen.
| 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 |
Verbesserung
- Verbessertes Logging
- Integration von LDAP
- Integration von SMB
- Parsen der verbleibenden Erweiterungen
- Weboberfläche
- Hervorhebung potenzieller Konflikte zwischen GPOs
GPO-Dokumentation
SYSVOL und LDAP
- [MS-GPAC] Erweiterung zur Überwachungskonfiguration
- [MS-GPCAP] Erweiterung für zentrale Zugriffsrichtlinien
- [MS-GPEF] Erweiterung für verschlüsselnde Dateisysteme
- [MS-GPFAS] Datenstruktur für Firewall und erweiterte Sicherheit
- [MS-GPFR] Erweiterung für Ordnerumleitung
- [MS-GPIE] Erweiterung für Internet Explorer-Wartung
- [MS-GPNAP] Erweiterung für Netzwerkzugriffsschutz (NAP)
- [MS-GPNRPT] Datenerweiterung für Namensauflösungsrichtlinientabelle (NRPT)
- [MS-GPOL] Kernprotokoll
- [MS-GPPREF] Datenstruktur für Präferenzerweiterungen
- [MS-GPREG] Codierung der Registrierungserweiterung
- [MS-GPSB] Erweiterung für Sicherheitsprotokoll
- [MS-GPSCR] Codierung der Skripterweiterung
- [MS-GPSI] Erweiterung für Softwareinstallation
LDAP Only
- [MS-GPDPC] Erweiterung für bereitgestellte Druckerverbindungen
- [MS-GPWL] Erweiterung für drahtlose/drahtgebundene Protokolle