
Suite d'outils pour BloodHound permettant l'audit des mots de passe de domaine, l'analyse des chemins de privilèges, la manipulation des arêtes et les requêtes Cypher personnalisées afin de maximiser la cartographie de la surface d'attaque Active Directory.
Nouvelle version :
Une simple suite d'outils :
Ceci a été publié avec des captures d'écran et des cas d'utilisation sur les blogs suivants : Max Release, Updates & Primitives & DPAT
Une nouvelle primitive d'attaque potentielle a été ajoutée à cet outil lors de mes recherches, voir la section add-spns pour tous les détails.
Idéalement, il ne devrait pas y avoir grand-chose à installer, mais j'ai inclus un fichier requirements.txt au cas où. Testé sur Kali Linux et Windows 10, toutes les fonctionnalités devraient fonctionner sous Linux et Windows.
pip3 install -r requirements.txt
Les identifiants Neo4j peuvent être codés en dur au début du script, fournis comme arguments CLI, ou stockés comme variables d'environnement. Si l'un ou l'autre paramètre est laissé vide, le nom d'utilisateur/mot de passe vous sera demandé. Pour utiliser les variables d'environnement, il est probablement plus simple d'ajouter une ligne (par exemple, export NEO4J_USERNAME='neo4j') dans ~/.bashrc ou ~/.zshrc pour stocker le nom d'utilisateur puisque ce n'est pas vraiment sensible. Le mot de passe de la base de données peut être défini dans l'onglet de votre shell avant d'exécuter Max. Ajouter un espace avant la commande export devrait l'empêcher d'apparaître dans l'historique.
export NEO4J_PASSWORD='bloodhound' # Remarquez l'espace avant 'export'
python3 max.py {module} {args}
python3 max.py -u neo4j -p neo4j {module} {args}
python3 max.py {module} {args}
Neo4j Username: neo4j
Neo4j Password:
Obtenir de l'aide générale et spécifique à un module
python3 max.py -h
python3 max.py {module} -h
Importer des objets possédés dans BH
python3 max.py mark-owned -f owned.txt
python3 max.py mark-owned -f owned.txt --add-note "Possédé par admin local répété"
Obtenir la liste des utilisateurs
python3 max.py get-info --users
python3 max.py get-info --users --enabled
[email protected]
[email protected]
...
Obtenir la liste des objets dans un groupe cible
python3 max.py get-info --group-members "domain [email protected]"
Obtenir une liste des ordinateurs sur lesquels un utilisateur a des droits d'administration
python3 max.py get-info --adminto [email protected]
Obtenir une liste des objets possédés avec les notes pour chacun
python3 max.py get-info --owned --get-note
Exécuter une requête - retourner une liste de tous les utilisateurs ayant un chemin vers DA
python3 max.py query -q "MATCH (n:User),(m:Group {name:'DOMAIN [email protected]'}) MATCH (n)-[*1..]->(m) RETURN DISTINCT(n.name)"
Supprimer une arête de la base de données
python3 max.py del-edge CanRDP
Ajouter une relation HasSPNConfigured en utilisant les informations stockées dans BloodHound, ou avec un fichier GetUserSPNs d'impacket
python3 max.py add-spns -b
python3 max.py add-spns -i getuserspns-raw-output.txt
DPAT
python3 max.py dpat -n ~/client/ntds.dit -c ~/.hashcat/hashcat.potfile -o ouputdir --html --sanitize
Pet max
python3 max.py pet-max
Les objets dans le fichier doivent contenir le FQDN, la casse n'a pas d'importance. Cela s'applique également lorsqu'un nom d'utilisateur/nom d'ordinateur est fourni en ligne de commande.
[email protected] <- sera ajouté / entrée CLI correcte
[email protected] <- sera ajouté / entrée CLI correcte
computer01.domain.local <- sera ajouté / entrée CLI correcte
ComPutEr01.doMAIn.LOcaL <- sera ajouté / entrée CLI correcte
user02 <- ne sera pas ajouté / entrée CLI incorrecte
computer02 <- ne sera pas ajouté / entrée CLI incorrecte
J'espère inclure une fonction analyze pour offrir une fonctionnalité similaire à PlumHound/Cypheroth. Enfin, je pense à créer une version Powershell pour ceux qui exécutent Neo4j sous Windows, mais je suis nul en Powershell donc à déterminer.
Toutes les autres fonctionnalités et améliorations sont les bienvenues, retrouvez-moi @knavesec sur le canal Slack BloodHoundGang et sur Twitter.
Je tiens à remercier tout particulièrement ceux qui ont contribué de leur temps au développement et à l'amélioration de cet outil :