BloodHound Foglio di formaggio¶
Panoramica¶
BloodHound è uno strumento open source che utilizza la teoria dei grafici per rivelare relazioni nascoste e spesso indesiderate all'interno di un ambiente Active Directory (AD). Aiuta i professionisti della sicurezza a identificare percorsi di attacco complessi che altrimenti sarebbero impossibili da trovare manualmente. BloodHound è composto da due componenti principali:
- ♪SharpHound ♪ Il raccoglitore di dati che raccoglie informazioni da Active Directory
- BloodHound GUI: L'interfaccia grafica che visualizza e analizza i dati raccolti
Installazione¶
Windows¶
Installazione Neo4j¶
Traduzione:
Installazione di BloodHound¶
Traduzione:
Linux (Kali)¶
Traduzione:
mac.¶
Traduzione:
BloodHound Community Edition (Docker)¶
Traduzione:
Raccolta dei dati¶
SharpHound (Windows Executable)¶
Collezione di base¶
Traduzione:
Metodi di raccolta¶
Method | Description |
---|---|
All |
Collect all data |
Group |
Collect group membership information |
LocalGroup |
Collect local admin information |
GPOLocalGroup |
Collect local admin information via GPO |
Session |
Collect session information |
LoggedOn |
Collect logged-on user information |
Trusts |
Collect domain trust information |
ACL |
Collect ACL information |
Container |
Collect container information |
RDP |
Collect Remote Desktop Users information |
ObjectProps |
Collect object properties |
DCOM |
Collect DCOM information |
SPNTargets |
Collect Service Principal Name information |
PSRemote |
Collect PowerShell Remoting information |
Opzioni di raccolta avanzate¶
Traduzione:
Modulo SharpHound PowerShell¶
Collezione di base¶
Traduzione:
Opzioni di raccolta avanzate¶
Traduzione:
BloodHound.py (Linux/macOS)¶
Installazione¶
Traduzione:
Collezione di base¶
Traduzione:
Opzioni di raccolta avanzate¶
Traduzione:
AzureHound (Azure AD)¶
Installazione¶
¶
Collezione di base¶
Traduzione:
Utilizzo di BloodHound¶
Connessione Database Neo4j¶
- URL predefinito: bullone://localhost:7687
- credenziali di default: neo4j/neo4j (primo login richiede la modifica della password)
Importazione dei dati¶
- Avviare BloodHound
- Collegamento al database Neo4j
- Trascina e rilascia il file ZIP contenente dati SharpHound
- Attendere l'importazione per completare
Query Pre-Built¶
BloodHound viene fornito con diverse query pre-costruite accessibili dalla scheda "Queries":
Trovare Privileged Utenti¶
- Trova tutti gli amministratori di dominio
- Trova tutti gli amministratori aziendali
- Trova i percorsi più brevi per Domain Admins
- Trova i percorsi più brevi per obiettivi di alto valore
Trovare percorsi di attacco¶
- Trova i percorsi più brevi per Domain Admins
- Trova i percorsi più brevi per obiettivi di alto valore
- Trova i percorsi più brevi per sistemi di delega senza ostacoli
Trovare configurazioni vulnerabili¶
- Trova Kerberoastable Utenti
- Trova AS-REP Utenti discutibili
- Trova Computer con Delegazione Non Contrattata
- Trova Computer con Delegazione Constrained
- Trovare Domain Trusts
Query Cypher personalizzate¶
Trova i percorsi più brevi per Domain Admins¶
Traduzione:
Trova Kerberoastable Utenti con Path to Domain Admins¶
Traduzione:
Trova computer con i diritti di amministratore locale¶
Traduzione:
Trova utenti con i diritti DCSync¶
Traduzione:
Trova Computer con Delegazione Constrained¶
Traduzione:
Trova i percorsi di attacco da utente specifico¶
Traduzione:
Trova tutti gli utenti con Path to High Value Targets¶
Traduzione:
Trova computer Dove gli utenti di dominio hanno diritti di amministratore locale¶
Traduzione:
Trova computer con diritti RDP¶
Traduzione:
Trova gli utenti con Password Mai Scade¶
Traduzione:
Tecniche di attacco¶
Kerberoasing¶
Targets account di servizio con SPNs per estrarre i biglietti di servizio hashes per cracking offline.
Trovare Kerberoastable Utenti¶
Traduzione:
Trovare Kerberoastable Utenti con Path to Domain Admins¶
Traduzione:
AS-REP Roasting¶
Gli account utente di destinazione con "Non richiedono l'impostazione Kerberos preauthentication" abilitata.
Trovare AS-REP Utenti discutibili¶
Traduzione:
ACL Abusi¶
Sfrutta elenchi di controllo accessi non configurati per ottenere privilegi elevati.
Trovare le autorizzazioni WriteDacl¶
Traduzione:
Trovare GenericAll Permissions¶
Traduzione:
Delegazione senza ostacoli¶
Sfrutta computer con delegazione non vincolata per rubare i biglietti degli utenti.
Trovare computer con Delegazione Non Contrattata¶
Traduzione:
Delegazione limitata¶
Sfrutta la delegazione contrattata erronea per impersonare gli utenti a servizi specifici.
Trovare computer con retrocessione¶
Traduzione:
Delegazione limitata basata sulle risorse¶
Sfrutta la delegazione contrattata basata sulle risorse per accedere alle risorse.
Trovare computer con la Delegazione Constrainata basata sulle risorse¶
Traduzione:
DCSync¶
Sfrutta i diritti di replica per eseguire la sincronizzazione del controller di dominio ed estrarre le hashes password.
Trovare gli utenti con i diritti DCSync¶
Traduzione:
Tipi di bordo di BloodHound¶
Edge Type | Description |
---|---|
MemberOf | User/Group is a member of a group |
AdminTo | User/Group has local admin rights on a computer |
HasSession | User has a session on a computer |
CanRDP | User can RDP to a computer |
ExecuteDCOM | User can execute DCOM on a computer |
AllowedToDelegate | Computer is allowed to delegate to a service |
AddAllowedToAct | Computer can act on behalf of another principal |
AllowedToAct | Principal is allowed to act on behalf of another principal |
Contains | OU/Container contains an object |
GpLink | GPO is linked to an OU/Domain/Site |
HasSIDHistory | Object has SID history of another object |
TrustedBy | Domain is trusted by another domain |
DCSync | User has rights to perform DCSync operation |
GenericAll | User has full control over an object |
GenericWrite | User can write to certain properties of an object |
WriteDacl | User can modify the security descriptor of an object |
WriteOwner | User can take ownership of an object |
AddMember | User can add members to a group |
ForceChangePassword | User can change another user's password |
Considerazioni di sicurezza operative¶
Rischio di rilevamento minimizzante¶
- Utilizzare il parametro
--Stealth
_ per ridurre il rumore - Raccogli dati durante le ore di lavoro quando l'attività di rete è alta
- Evitare di raccogliere tutti i dati contemporaneamente; diffondere la raccolta nel tempo
- Utilizzare il filtraggio LDAP per limitare la portata della raccolta
- Considerare l'utilizzo di BloodHound.py invece di SharpHound in ambienti sensibili
Pulizia¶
- Eliminare i binari SharpHound e i file di output dopo l'uso
- Potenza chiara Storia di Shell: Traduzione:
- Rimuovi Sharp Modulo Hound da memoria: Traduzione:
- Eliminare il database Neo4j quando l'analisi è completa
Risoluzione dei problemi¶
Questioni comuni¶
Problemi di connessione Neo4j¶
- Assicurare il servizio Neo4j è in esecuzione: _____________________________________________________________________________________________
- Controllare se viene utilizzato l'URL corretto del bullone (default: bullone://localhost:7687)
- Verificare le credenziali (default: neo4j/neo4j)
- Controlla se un altro processo sta usando la porta 7687
Problemi della collezione SharpHound¶
- Assicurarsi di avere privilegi sufficienti (utilizzatore principale al minimo)
- Prova a correre con privilegi elevati
- Controlla la connettività di rete ai controller di dominio
- Verificare la connettività LDAP/LDAPS
- Prova a specificare un controller di dominio con
--DomainController
Questioni di importazione dei dati¶
- Assicurarsi che il file ZIP contenga file JSON validi
- Controllare se il database Neo4j ha spazio su disco sufficiente
- Prova a cancellare il database prima dell'importazione: Traduzione:
- Verificare che il file ZIP non sia danneggiato