
Strumento offensivo di dump e analisi GPO che sfrutta e arricchisce i dati di BloodHound
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.
git clone "https://github.com/cogiceo/GPOHound"
cd GPOHound
pip install .
pipx install "git+https://github.com/cogiceo/GPOHound"
È 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.
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.
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
Recuperare tutti i dati necessari da LDAP:
gpohound ldap --dc $DC_HOST -d $DOMAIN -u $USER -p $PASSWORD
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.
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
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]
- 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.
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:
I trustee privilegiati predefiniti, così come gli account di servizio con SID che iniziano con S-1-5-8, sono esclusi dall'analisi.
| Gruppo | Arco |
|---|
| Administrators | AdminTo |
| Remote Desktop Users | CanRDP |
| Distributed COM Users | ExecuteDCOM |
| Remote Management Users | CanPSRemote |
| Backup Operators | CanPrivEsc |
| Print Operators | CanPrivEsc |
| Network Configuration Operators | CanPrivEsc |
| 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 | — |
| 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 |