
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.