BloodHound ⚙️
Theory
Practice
Collection
SharpHound.exe --collectionmethod All# Perform stealth collection methods
SharpHound.exe --collectionmethod All --Stealth
# Loop collections (especially useful for session collection)
# e.g. collect sessions every 10 minutes for 3 hours
SharpHound.exe --collectionmethod Session --Loop --loopduration 03:00:00 --loopinterval 00:10:00
# Use LDAPS instead of plaintext LDAP
SharpHound.exe --secureldapBloodHound.py
bloodhound.py --zip -c All -d $DOMAIN -u $USERNAME -p $PASSWORD -dc $DOMAIN_CONTROLLERnetexec ldap $TARGET -u $USERNAME -p $PASSWORD --bloodhound --dns-server $DC_IP -c All [--dns-tcp]Bloodhound.py for Trusted domains
bloodhound-python --crawl --zip -c All -d $DOMAIN -u $USERNAME -p $PASSWORD -dc $DOMAIN_CONTROLLERLdapsearch to Bloodhound
# Dump LDAP with ldapsearch
# The second -E argument is needed so that ACLs are also dumped.
# In case StartTLS does not work, remove the -ZZ flag and replace ldap:// with ldaps://
$ for base in "" "CN=Schema,CN=Configuration," ; do \
LDAPTLS_REQCERT=never ldapsearch \
-H ldap://<DC> \
-D <USERNAME>@corp.local \
-w <PASSWORD> \
-b "${base}DC=corp,DC=local" \
-x \
-o ldif-wrap=no \
-E pr=1000/noprompt \
-E '!1.2.840.113556.1.4.801=::MAMCAQc=' \
-LLL \
-ZZ \
'(objectClass=*)' \
; done >> output_$(date +%s).ldif
# Convert LDIF to JSON files ingestible by BloodHound
$ ldif2bloodhound output_*.ldif -o /tmp/OutputFolderAnalysis

Resources

Last updated