Bloodhound

Extra: https://hausec.com/2019/09/09/bloodhound-cypher-cheatsheet/

Start Neo4j

Open a web browser and navigate to http://localhost:7474/

C:\Tools\neo4j\bin>neo4j.bat console
2021-05-11 10:03:21.143+0000 INFO  Starting...
2021-05-11 10:03:28.065+0000 INFO  ======== Neo4j 4.2.3 ========
2021-05-11 10:03:32.143+0000 INFO  Performing postInitialization step for component 'security-users' with version 2 and status CURRENT
2021-05-11 10:03:32.143+0000 INFO  Updating the initial password in component 'security-users'
2021-05-11 10:03:33.128+0000 INFO  Bolt enabled on localhost:7687.
2021-05-11 10:03:36.096+0000 INFO  Remote interface available at http://localhost:7474/
2021-05-11 10:03:36.096+0000 INFO  Started.

SharpHound.exe

SharpHound has a number of different collection methods (all documented on the repository):

  • Default - Performs group membership collection, domain trust collection, local group collection, session collection, ACL collection, object property collection, and SPN target collection

  • Group - Performs group membership collection

  • LocalAdmin - Performs local admin collection

  • RDP - Performs Remote Desktop Users collection

  • DCOM - Performs Distributed COM Users collection

  • PSRemote - Performs Remote Management Users collection

  • GPOLocalGroup - Performs local admin collection using Group Policy Objects

  • Session - Performs session collection

  • ComputerOnly - Performs local admin, RDP, DCOM and session collection

  • LoggedOn - Performs privileged session collection (requires admin rights on target systems)

  • Trusts - Performs domain trust enumeration

  • ACL - Performs collection of ACLs

  • Container - Performs collection of Containers

  • DcOnly - Performs collection using LDAP only. Includes Group, Trusts, ACL, ObjectProps, Container, and GPOLocalGroup.

  • ObjectProps - Performs Object Properties collection for properties such as LastLogon or PwdLastSet

  • All - Performs all Collection Methods except GPOLocalGroup.

C:\> SharpHound.exe -c DcOnly
C:\> SharpHound.exe -c DcOnly -d vulnableone.local
C:\> SharpHound.exe --CollectionMethod All,GPOLocalGroup --Domain vulnableone.local
C:\> SharpHound.exe --CollectionMethod All --Domain vulnableone.local --LdapUsername khan.chanthou --LdapPassword Password123 --ZipFileName output.zip

SharpHound.ps1

Invoke-BloodHound -CollectionMethod All

Bloodhound Query

Service Principal Name (SPN)

MATCH (u:User {hasspn:true}) RETURN u

Shortest Paths from Kerberoastable Users

MATCH (u:User {hasspn:true}), (c:Computer), p=shortestPath((u)-[*1..]->(c)) RETURN p

Unconstrained Delegation

MATCH (c:Computer {unconstraineddelegation:true}) RETURN c

AllowedToDelegate to other computers

MATCH (c:Computer), (t:Computer), p=((c)-[:AllowedToDelegate]->(t)) RETURN p

ASREP Roasting

MATCH (u:User {dontreqpreauth:true}) RETURN u

Constrained Delegation

MATCH (c:Computer), (t:Computer), p=((c)-[:AllowedToDelegate]->(t)) RETURN p

GPO Query

MATCH (gr:Group), (gp:GPO), p=((gr)-[:GenericWrite]->(gp)) RETURN p

Discretionary Access Control Lists

MATCH (g1:Group), (g2:Group), p=((g1)-[:GenericAll]->(g2)) RETURN p
MATCH (g1:Group {name:"IT_Support"}), (g2:Group), p=((g1)-[:GenericAll]->(g2)) RETURN p

Potential MS SQL Admins

MATCH p=(u:User)-[:SQLAdmin]->(c:Computer) RETURN p

LAPS

MATCH (c:Computer {haslaps: true}) RETURN c
MATCH p=(g:Group)-[:ReadLAPSPassword]->(c:Computer) RETURN p

Last updated