
GPOHound — Updated!
Strumento offensivo di dump e analisi GPO che sfrutta e arricchisce i dati di BloodHound
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
jardi 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:
Gruppo Arco Administrators AdminToRemote Desktop Users CanRDPDistributed COM Users ExecuteDCOMRemote Management Users CanPSRemoteBackup Operators CanPrivEscPrint Operators CanPrivEscNetwork Configuration Operators CanPrivEsc
Registro
| Analisi | Proprietà |
|---|---|
| Il gruppo "Everyone" include "Anonymous Logon" | — |
| La firma della sessione del server SMB non è abilitata | smbSigningEnabled: false |
| La firma della sessione del server SMB non è richiesta | smbSigningRequired: false |
| L'autenticazione NTLMv1 è supportata | NTLMv1Support: 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.
| Privilegio | Descrizione | Arco |
|---|---|---|
| SeDebugPrivilege | Consente all'utente di eseguire il debug e interagire con qualsiasi processo | CanPrivEsc |
| SeBackupPrivilege | Concede l'accesso a file sensibili | CanPrivEsc |
| SeRestorePrivilege | Ignora le autorizzazioni degli oggetti durante il ripristino | CanPrivEsc |
| SeAssignPrimaryTokenPrivilege | Abilita l'impersonificazione dei token per l'escalation a SYSTEM | CanPrivEsc |
| SeImpersonatePrivilege | Permette la creazione di processi nel contesto di un altro utente | CanPrivEsc |
| SeTakeOwnershipPrivilege | Consente di assumere la proprietà di oggetti di sistema | CanPrivEsc |
| SeTcbPrivilege | Concede la possibilità di agire come parte del sistema operativo | CanPrivEsc |
| SeCreateTokenPrivilege | Permette la creazione di token di autenticazione | CanPrivEsc |
| SeLoadDriverPrivilege | Autorizza il caricamento/scaricamento dei driver | CanPrivEsc |
| SeManageVolumePrivilege | Concede privilegi di gestione di volumi o dischi | CanPrivEsc |
| SeEnableDelegationPrivilege | Abilita 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