Zum Inhalt

Bluthochdruck Cheat Sheet

Überblick

BloodHound ist ein Open-Source-Tool, das Graph-Theorie verwendet, um versteckte und oft unbeabsichtigte Beziehungen innerhalb einer Active Directory (AD) Umgebung zu offenbaren. Es hilft Sicherheitsexperten, komplexe Angriffspfade zu identifizieren, die sonst nicht manuell zu finden wären. BloodHound besteht aus zwei Hauptkomponenten:

  1. SharpHound: Der Datensammler, der Informationen aus Active Directory sammelt
  2. *BloodHound GUI: Die grafische Schnittstelle, die die gesammelten Daten visualisiert und analysiert

Installation

Windows

Neo4j Installation

```powershell

Download Neo4j from https://neo4j.com/download/

Extract the ZIP file

Open command prompt as administrator

cd C:\path\to\neo4j\bin neo4j.bat install-service neo4j.bat start ```_

BlutHound Installation

```powershell

Download BloodHound from https://github.com/BloodHoundAD/BloodHound/releases

Extract the ZIP file

Run BloodHound.exe

```_

Linux (Kali)

```bash sudo apt update sudo apt install bloodhound neo4j

Start Neo4j service

sudo neo4j start

Launch BloodHound

bloodhound ```_

macOS

```bash

Install Homebrew if not already installed

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Install Neo4j and BloodHound

brew install neo4j bloodhound

Start Neo4j service

brew services start neo4j

Launch BloodHound

bloodhound ```_

BloodHound Community Edition (Docker)

```bash

Install BloodHound CLI

curl -L https://github.com/SpecterOps/BloodHound/releases/latest/download/bloodhound-cli-linux-amd64 -o bloodhound-cli chmod +x bloodhound-cli sudo mv bloodhound-cli /usr/local/bin/

Deploy BloodHound CE

bloodhound-cli deploy ```_

Datenerhebung

SharpHound (Windows Ausführbar)

Grunderhebung

```powershell

Download SharpHound

Invoke-WebRequest -Uri https://github.com/BloodHoundAD/SharpHound/releases/latest/download/SharpHound.exe -OutFile SharpHound.exe

Run SharpHound with default collection methods

.\SharpHound.exe --CollectionMethods All ```_

Erhebungsmethoden

| | 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 | |

Erweiterte Auswahloptionen

```powershell

Collect specific data types

.\SharpHound.exe --CollectionMethods Group,LocalGroup,Session,ACL

Collect data with stealth options (slower but less noisy)

.\SharpHound.exe --CollectionMethods All --Stealth

Collect data from specific domain

.\SharpHound.exe --CollectionMethods All --Domain example.com

Collect data with LDAP filtering

.\SharpHound.exe --CollectionMethods All --LdapFilter "(objectClass=user)"

Collect data from specific OU

.\SharpHound.exe --CollectionMethods All --SearchBase "OU=Servers,DC=example,DC=com"

Collect data with specific naming context

.\SharpHound.exe --CollectionMethods All --DomainController dc01.example.com ```_

SharpHound PowerShell Modul

Grunderhebung

```powershell

Import SharpHound module

Import-Module .\SharpHound.ps1

Run SharpHound with default collection methods

Invoke-BloodHound -CollectionMethod All ```_

Erweiterte Auswahloptionen

```powershell

Collect specific data types

Invoke-BloodHound -CollectionMethod Group,LocalGroup,Session,ACL

Collect data with stealth options

Invoke-BloodHound -CollectionMethod All -Stealth

Collect data from specific domain

Invoke-BloodHound -CollectionMethod All -Domain example.com

Collect data with LDAP filtering

Invoke-BloodHound -CollectionMethod All -LdapFilter "(objectClass=user)"

Collect data from specific OU

Invoke-BloodHound -CollectionMethod All -SearchBase "OU=Servers,DC=example,DC=com" ```_

BloodHound.py (Linux/macOS)

Installation

bash pip install bloodhound_

Grunderhebung

bash bloodhound-python -u username -p password -d domain.local -ns 10.10.10.10 -c All_

Erweiterte Auswahloptionen

```bash

Collect specific data types

bloodhound-python -u username -p password -d domain.local -ns 10.10.10.10 -c Group,LocalAdmin,Session,ACL

Collect data with Kerberos authentication

bloodhound-python -u username -p password -d domain.local -ns 10.10.10.10 -c All --kerberos

Collect data with specific domain controller

bloodhound-python -u username -p password -d domain.local -ns 10.10.10.10 -c All --dns-tcp

Collect data with LDAP SSL

bloodhound-python -u username -p password -d domain.local -ns 10.10.10.10 -c All --secure ```_

AzureHound (Azure AD)

Installation

```powershell

Download AzureHound

Invoke-WebRequest -Uri https://github.com/BloodHoundAD/AzureHound/releases/latest/download/azurehound-windows-amd64.zip -OutFile azurehound.zip Expand-Archive -Path azurehound.zip -DestinationPath . ```_

Grunderhebung

```powershell

Authenticate to Azure

Connect-AzAccount

Run AzureHound

.\azurehound.exe -o azure_data.zip ```_

Verwenden von BloodHound

Neo4j Datenbankanschluss

  • Standard-URL: Bolzen://localhost:7687
  • Standard Anmeldeinformationen: neo4j/neo4j (erste Anmeldung erfordert Passwortänderung)

Datenimport

  1. BloodHound
  2. Verbindung mit der Datenbank Neo4j
  3. Ziehen Sie die ZIP-Datei mit SharpHound-Daten
  4. Warten Sie auf Import komplett

Zurück zur Übersicht

BloodHound kommt mit mehreren vorgefertigten Abfragen aus der Registerkarte "Queries" zugänglich:

Suche Vorrechte Benutzer

  • Alle Domain Admins finden
  • Alle Enterprise Admins finden
  • Finden Sie kürzeste Pfade zu Domain Admins
  • Finden Sie kürzeste Wege zu hohen Wertzielen

Angriffswege finden

  • Finden Sie kürzeste Pfade zu Domain Admins
  • Finden Sie kürzeste Wege zu hohen Wertzielen
  • Finden Sie kürzeste Pfade zu Untrainierten Delegationssystemen

Vulnerable Konfigurationen finden

  • Finden Sie Kerberoastable Benutzer
  • AS-REP finden Roastable Users
  • Finden Sie Computer mit Unconstrained Delegation
  • Computer mit eingeschränkter Delegation suchen
  • Domain Trusts finden

Benutzerdefinierte Cypher Quers

Finden Sie kürzeste Pfade zu Domain Admins

cypher MATCH (n:User),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=shortestPath((n)-[*1..]->(m)) RETURN p_

Finden Sie Kerberoastable Benutzer mit Pfad zu Domain Admins

cypher MATCH (n:User \\\\{hasspn:true\\\\}),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=shortestPath((n)-[*1..]->(m)) RETURN p_

Finden Sie Computer mit lokalen Admin-Rechten

cypher MATCH (u:User),(c:Computer),p=(u)-[:AdminTo]->(c) RETURN p_

Finden Sie Benutzer mit DCSync Rights

cypher MATCH (u:User),(d:Domain),p=(u)-[:DCSync]->(d) RETURN p_

Computer mit eingeschränkter Delegation suchen

cypher MATCH (c:Computer \\\\{trustedtoauth:true\\\\}) RETURN c_

Finden Sie Angriffspfade von bestimmten Benutzern

cypher MATCH (n:User \\\\{name:'USER@DOMAIN.LOCAL'\\\\}),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=shortestPath((n)-[*1..]->(m)) RETURN p_

Finden Sie alle Benutzer mit Pfad zu High Value Targets

cypher MATCH (u:User),(g:Group),p=shortestPath((u)-[*1..]->(g)) WHERE g.highvalue=true RETURN p_

Computer suchen Wo Domain Benutzer lokale Admin-Rechte haben

cypher MATCH (g:Group \\\\{name:'DOMAIN USERS@DOMAIN.LOCAL'\\\\}),(c:Computer),p=(g)-[:AdminTo]->(c) RETURN p_

Computer mit RDP-Rechten suchen

cypher MATCH (u:User),(c:Computer),p=(u)-[:CanRDP]->(c) RETURN p_

Finden Sie Benutzer mit Passwort Nie mehr

cypher MATCH (u:User \\\\{pwdneverexpires:true\\\\}) RETURN u_

Angriffstechniken

Kerberoasen

Targets Service Konten mit SPNs zu extrahieren Service Ticket hashes für Offline-Cracking.

Finden von Kerberoastable Benutzer

cypher MATCH (u:User \\\\{hasspn:true\\\\}) RETURN u_

Finden von Kerberoastable Benutzer mit Pfad zu Domain Admins

cypher MATCH (n:User \\\\{hasspn:true\\\\}),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=shortestPath((n)-[*1..]->(m)) RETURN p_

AS-REP Roasing

Ziele Benutzerkonten mit "Benötigen Sie keine Kerberos Preauthentication" Einstellung aktiviert.

AS-REP finden Roastable Users

cypher MATCH (u:User \\\\{dontreqpreauth:true\\\\}) RETURN u_

ACL Missbrauch

Erkunden Sie falsche Zugangskontrolllisten, um erhöhte Privilegien zu gewinnen.

Schreib-Dacl-Berechtigungen finden

cypher MATCH (n:User),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=(n)-[:WriteDacl]->(m) RETURN p_

GenericAll Berechtigungen finden

cypher MATCH (n:User),(m:Group \\\\{name:'DOMAIN ADMINS@DOMAIN.LOCAL'\\\\}),p=(n)-[:GenericAll]->(m) RETURN p_

Unzuständige Delegation

Erforscht Computer mit nicht eingeschränkter Delegation, um Benutzerkarten zu stehlen.

Computer mit nicht eingeschränkter Delegation finden

cypher MATCH (c:Computer \\\\{unconstraineddelegation:true\\\\}) RETURN c_

Zuständige Delegation

Exploits misconfigured constrained delegation to impersonate user to specific services.

Computer mit eingeschränkter Delegation finden

cypher MATCH (c:Computer \\\\{trustedtoauth:true\\\\}) RETURN c_

Resource-Based Constrained Delegation

Exploits misskonfigurierte ressourcenbasierte eingeschränkte Delegation, um Zugang zu Ressourcen zu erhalten.

Computer mit Ressourcen-basierter eingeschränkter Delegation suchen

cypher MATCH (c:Computer)-[:AllowedToAct]->(t:Computer) RETURN c,t_

DCSync

Erkunden Sie die Replikationsrechte, um Domain-Controller-Synchronisation durchzuführen und Passwort hashes zu extrahieren.

Nutzer mit DCSync-Rechten finden

cypher MATCH (u:User),(d:Domain),p=(u)-[:DCSync]->(d) RETURN p_

BloodHound Edge Arten

| | 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 | |

Operationelle Sicherheitsüberlegungen

Minimierung des Erkennungsrisikos

  • Verwenden Sie den --Stealth Parameter, um Geräusche zu reduzieren
  • Daten während der Geschäftszeiten sammeln, wenn die Netzwerkaktivität hoch ist
  • Vermeiden Sie das Sammeln aller Daten auf einmal; Verbreitung der Sammlung über die Zeit
  • Verwenden Sie LDAP-Filterung, um den Erfassungsbereich zu begrenzen
  • Verwenden Sie BloodHound.py anstelle von SharpHound in sensiblen Umgebungen

Reinigung

  • Löschen Sie SharpHound Binaries und Ausgabedateien nach Gebrauch
  • Klare Leistung Shell History: Clear-History_
  • Entfernen Sharp Hound Modul aus dem Speicher: Remove-Module SharpHound_
  • Löschen Sie Neo4j Datenbank, wenn die Analyse abgeschlossen ist

Fehlerbehebung

Gemeinsame Themen

Neo4j Verbindungsprobleme

  • Stellen Sie sicher, dass Neo4j-Service läuft: neo4j.bat status oder systemctl status neo4j_
  • Überprüfen Sie, ob die richtige Bolzen-URL verwendet wird (Standard: Bolzen://localhost:7687)
  • Beglaubigung (Standard: neo4j/neo4j)
  • Überprüfen Sie, ob ein anderer Prozess den Port 7687 verwendet

SharpHound Collection Issues

  • Stellen Sie sicher, dass Sie ausreichende Privilegien haben (domain user at minimum)
  • Versuchen Sie mit erhöhten Privilegien zu laufen
  • Überprüfen Sie die Netzwerkverbindung zu Domänencontrollern
  • Verifizieren Sie LDAP/LDAPS-Konnektivität
  • Geben Sie einen Domänencontroller an --DomainController_

Probleme der Datenimporte

  • Stellen Sie sicher, dass die ZIP-Datei gültige JSON-Dateien enthält
  • Überprüfen Sie, ob die Datenbank Neo4j ausreichend Speicherplatz hat
  • Versuchen Sie, die Datenbank vor dem Import zu löschen: MATCH (n) DETACH DELETE n_
  • Überprüfen Sie, dass die ZIP-Datei nicht beschädigt ist

Ressourcen