Vai al contenuto

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:

  1. ♪SharpHound ♪ Il raccoglitore di dati che raccoglie informazioni da Active Directory
  2. 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

  1. Avviare BloodHound
  2. Collegamento al database Neo4j
  3. Trascina e rilascia il file ZIP contenente dati SharpHound
  4. 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

Risorse