Zurück zu den Updates
UpdatedJul 16, 2026

GPOHound — Updated!

Offensives GPO-Dumping- und Analyse-Tool, das BloodHound-Daten nutzt und anreichert

Teilen

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

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:
GruppeKante
AdministratorenAdminTo
RemotedesktopbenutzerCanRDP
Verteilte COM-BenutzerExecuteDCOM
RemoteverwaltungsbenutzerCanPSRemote
SicherungsoperatorenCanPrivEsc
DruckoperatorenCanPrivEsc
NetzwerkkonfigurationsoperatorenCanPrivEsc

Registry

AnalyseEigenschaft
„Everyone“-Gruppe enthält „Anonyme Anmeldung“—
SMB-Serversitzungssignierung ist nicht aktiviertsmbSigningEnabled: false
SMB-Serversitzungssignierung ist nicht erforderlichsmbSigningRequired: false
NTLMv1-Authentifizierung wird unterstütztNTLMv1Support: 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.

Kategorien