Torna agli aggiornamenti
UpdatedJul 16, 2026

GPOHound — Updated!

Strumento offensivo di dump e analisi GPO che sfrutta e arricchisce i dati di BloodHound

Condividi

GPOHound

GPOHound è uno strumento per scaricare e analizzare oggetti Criteri di Gruppo (GPO) estratti dalla condivisione SYSVOL.

Fornisce un formato strutturato e formalizzato per aiutare a individuare configurazioni errate, impostazioni insicure e percorsi di escalation dei privilegi in ambienti Active Directory.

Lo strumento si integra con il database Neo4j di BloodHound, usandolo come una fonte simile a LDAP per le informazioni di Active Directory, arricchendolo allo stesso tempo aggiungendo nuove relazioni (archi) e proprietà dei nodi basate sull'analisi.

Caratteristiche

Dump

  • Scarica GPO in formato JSON strutturato o ad albero
  • Gestisce più domini
  • Risolve i nomi GPO con i GUID GPO
  • Filtra l'output per file GPO, GUID GPO e domini
  • Cerca coppie chiave/valore usando regex

Analisi

  • Raggruppa le impostazioni per oggetto interessato (ad es., Gruppi locali, Registro)
  • Rileva membri aggiunti a gruppi locali privilegiati
  • Rileva impostazioni di registro insicure, credenziali memorizzate e diritti di privilegio
  • Supporta la decifratura delle credenziali VNC e delle password GPP
  • Trova domini, contenitori e OU interessati dai GPO
  • Ottiene GPO applicati a un utente, computer, OU, contenitore o dominio specifico
  • Arricchisce i dati di BloodHound con relazioni e proprietà

Installazione

Installare con pip

git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .

Installare con pipx

pipx install "git+https://github.com/cogiceo/GPOHound"

Configurare APOC per Neo4j

È necessario configurare Neo4j APOC per l'arricchimento dei dati di BloodHound:

  • Se si utilizza l'installazione standard di Neo4j, è possibile abilitare APOC copiando il file jar di APOC nella cartella dei plugin e riavviando Neo4j:

    cp /var/lib/neo4j/labs/apoc-* /var/lib/neo4j/plugins/
    neo4j restart
    
  • Se si installa Neo4j con "Docker Compose", aggiungere la variabile d'ambiente NEO4J_PLUGINS=["apoc"]:

    neo4j:
      image: neo4j:latest
      environment:
        - NEO4J_PLUGINS=["apoc"]
    

Per maggiori dettagli o metodi di installazione alternativi, fare riferimento alla documentazione ufficiale di APOC.

Aggiungere Query BloodHound

Per visualizzare le relazioni e le proprietà aggiunte da GPOHound, è possibile importare le query personalizzate dal file customqueries.json in BloodHound. Per impostazione predefinita, questo file si trova in ~/.config/bloodhound/customqueries.json.

Prerequisiti

Scaricare SYSVOL

Iniziare scaricando i contenuti di SYSVOL dal controller di dominio.

  • Scaricare l'intero SYSVOL:

    gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
    
  • Scaricare solo i GPO:

    gpohound sysvol --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD --gpos
    
  • Scaricare con esclusioni:

    gpohound sysvol --dc $DC_HOST -u $USER -p $PASSWORD --exclude '/Policydefinitions/','/scripts/' --max-size 100
    

Scaricare LDAP

Recuperare tutti i dati necessari da LDAP:

gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD

BloodHound

Per l'arricchimento dei dati di BloodHound, è necessario raccogliere i dati di BloodHound utilizzando un collector come bloodhound.py o SharpHound.exe e importare i dati raccolti nell'interfaccia di BloodHound.

Utilizzo

I file GPOHound di esempio sono disponibili in example.zip. Estraggili con unzip example.zip.

Vedere CONFIG.md per istruzioni sulla personalizzazione dei valori predefiniti e delle configurazioni.

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

Analysis

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

Analisi e arricchimento correnti

[!IMPORTANT]

  • Condizioni come filtri di sicurezza, filtri WMI e targeting a livello di elemento non vengono interpretate.
  • I conflitti tra GPO non vengono simulati, per evitare di perdere impostazioni valide.

Gruppi locali

  • Rilevamento di utenti assegnati a gruppi locali privilegiati durante l'accesso

  • Rilevamento di gruppi locali privilegiati predefiniti rinominati

  • Rilevamento di trustee aggiunti a gruppi locali privilegiati utilizzando "Variabili di processo preferenza" (ad es., %ComputerName%, %DomainName%)

  • Rilevamento di trustee abusabili tramite hijacking di sAMAccountName

  • Rilevamento di qualsiasi trustee aggiunto a gruppi locali privilegiati:

    GruppoArco
    AdministratorsAdminTo
    Remote Desktop UsersCanRDP
    Distributed COM UsersExecuteDCOM
    Remote Management UsersCanPSRemote
    Backup OperatorsCanPrivEsc
    Print OperatorsCanPrivEsc
    Network Configuration OperatorsCanPrivEsc

Registro

AnalisiProprietà
Il gruppo "Everyone" include "Anonymous Logon"
La firma della sessione del server SMB non è abilitatasmbSigningEnabled: false
La firma della sessione del server SMB non è richiestasmbSigningRequired: false
L'autenticazione NTLMv1 è supportataNTLMv1Support: true
Password predefinita per accesso automatico di Windows
Credenziali VNC (Generic: RealVNC, TightVNC, TigerVNC, ecc.)*VNC*PASS* (vari)
Password memorizzate di FileZilla
Password proxy di PuTTY
Credenziali memorizzate di TeamViewer
Sessioni salvate di WinSCP
Password memorizzata di Picasa

Diritti di privilegio

I trustee privilegiati predefiniti, così come gli account di servizio con SID che iniziano con S-1-5-8, sono esclusi dall'analisi.

PrivilegioDescrizioneArco
SeDebugPrivilegeConsente all'utente di eseguire il debug e interagire con qualsiasi processoCanPrivEsc
SeBackupPrivilegeConcede l'accesso a file sensibiliCanPrivEsc
SeRestorePrivilegeIgnora le autorizzazioni degli oggetti durante il ripristinoCanPrivEsc
SeAssignPrimaryTokenPrivilegeAbilita l'impersonificazione dei token per l'escalation a SYSTEMCanPrivEsc
SeImpersonatePrivilegePermette la creazione di processi nel contesto di un altro utenteCanPrivEsc
SeTakeOwnershipPrivilegeConsente di assumere la proprietà di oggetti di sistemaCanPrivEsc
SeTcbPrivilegeConcede la possibilità di agire come parte del sistema operativoCanPrivEsc
SeCreateTokenPrivilegePermette la creazione di token di autenticazioneCanPrivEsc
SeLoadDriverPrivilegeAutorizza il caricamento/scaricamento dei driverCanPrivEsc
SeManageVolumePrivilegeConcede privilegi di gestione di volumi o dischiCanPrivEsc
SeEnableDelegationPrivilegeAbilita gli account computer e utente a essere attendibili per la delega

Miglioramento

  • Migliorare la registrazione
  • Integrare LDAP
  • Integrare SMB
  • Analizzare le estensioni rimanenti
  • Interfaccia web
  • Evidenziare potenziali conflitti tra GPO

Documentazione GPO

SYSVOL e LDAP

  • [MS-GPAC] Estensione di configurazione del controllo
  • [MS-GPCAP] Estensione del protocollo per i criteri di accesso centralizzato
  • [MS-GPEF] Estensione del file system di crittografia
  • [MS-GPFAS] Struttura dei dati del firewall e della sicurezza avanzata
  • [MS-GPFR] Estensione del protocollo di reindirizzamento delle cartelle
  • [MS-GPIE] Estensione di manutenzione di Internet Explorer
  • [MS-GPNAP] Estensione per la protezione dell'accesso alla rete (NAP)
  • [MS-GPNRPT] Estensione dati della tabella dei criteri di risoluzione dei nomi (NRPT)
  • [MS-GPOL] Protocollo principale
  • [MS-GPPREF] Struttura dati dell'estensione delle preferenze
  • [MS-GPREG] Codifica dell'estensione del registro
  • [MS-GPSB] Estensione del protocollo di sicurezza
  • [MS-GPSCR] Codifica dell'estensione degli script
  • [MS-GPSI] Estensione del protocollo di installazione software

Solo LDAP

  • [MS-GPDPC] Estensione per le connessioni di stampante distribuite
  • [MS-GPWL] Estensione del protocollo Wireless/Cablaggio

Categorie