
Une interface de ligne de commande interactive pour l'API BloodHound.
Un shell interactif en ligne de commande pour BloodHound. Recherchez des objets Active Directory, traquez les faiblesses et trouvez des chemins d'attaque depuis le terminal, sans ouvrir l'interface web.
Nécessite Python 3.11+ et un serveur BloodHound CE v9 (testé sur la v9.7.1).
pipx install bhshell # recommandé
# ou
pip install bhshell
$ bhshell --url http://127.0.0.1:8080
[bh: shell] > login -u admin
[+] Logged in as admin on 127.0.0.1:8080
[bh: shell] > hunt
Severity Check Count Example Description
critical dcsync 2 [email protected] Non-Tier-Zero principals with replication rights
high kerberoastable 2 [email protected] Kerberoastable users
...
[*] Details: 'hunt CHECK' (e.g. 'hunt kerberoastable'), or 'hunt --all'.
[bh: shell] > user CORP\svc_sql --all -o svc_sql.csv
[bh: shell] > path --owned -g
Les mêmes commandes s'exécutent de manière non interactive pour le scripting : bhshell -c "hunt --json" > hunt.json.
| Commande | Affiche |
|---|---|
user, computer, group, lookup | Kerberoastable / AS-REP roastable, délégation, âge du mot de passe, indicateurs Tier Zero et owned, ainsi que l'imbrication des groupes, le contrôle ACL entrant/sortant, les sessions et les droits d'administrateur local |
search | Objets correspondant aux filtres de propriétés (search -t user hasspn enabled), avec dates, âges (90d) et jokers |
path | Chemins les plus courts vers une cible ou vers Tier Zero, depuis tout ce qui est owned, ou via des étapes --via ; affichés sous forme de chaînes de sauts, de graphe terminal, ou en SVG/PNG pour les rapports |
hunt | Vérifications à l'échelle du domaine par sévérité : DCSync, contrôle de Tier Zero, AD CS (ESC*), Kerberoasting, sessions privilégiées, lecteurs LAPS/gMSA, mots de passe dans les attributs, primitives de prise de contrôle (Shadow Credentials, RBCD), contrôle GPO, relais NTLM, approbations, honeytokens possibles... ; hunt --owned les limite à ce que vos objets owned peuvent faire |
cypher, query | Cypher brut, et une bibliothèque de requêtes sauvegardées : incluses, vos propres fichiers .cyp (~/.bhshell/queries/ ou tout dossier défini avec config query_dirs) et celles sauvegardées sur le serveur |
owned, hvt | Marquer ou démarquer les objets owned et Tier Zero |
domains, trusts | Comptages par domaine, et la carte des approbations avec l'état du filtrage SID |
Pour ajouter votre propre requête, enregistrez-la comme fichier .cyp dans ~/.bhshell/queries/ et exécutez-la par son nom :
$ cat ~/.bhshell/queries/stale-admins.cyp
// description: Enabled adminCount users who have not logged on for a year
MATCH (u:User) WHERE u.admincount = true AND u.enabled = true
AND u.lastlogontimestamp < (datetime().epochseconds - 31536000) RETURN u
[bh: shell] > query run stale-admins -o stale-admins.csv
Voir Query library pour le format et pour conserver les requêtes dans d'autres dossiers (un dépôt d'équipe, un dossier par engagement).
La plupart des commandes acceptent --json et -o FILE (JSON ou CSV). La connexion fonctionne avec un mot de passe (plus MFA) ou
un jeton API ; les secrets sont demandés ou lus depuis l'environnement, jamais passés en arguments.
Le guide d'utilisation complet (chaque commande, option d'affichage, filtre de recherche, option de chemin, vérification hunt et
paramètre de configuration) se trouve dans docs/USAGE.md.
Dans le shell, exécutez help ou help <command>.
Les rapports de bugs et les pull requests sont les bienvenus sur github.com/kr0no/bloodhound-shell/issues.
git clone https://github.com/kr0no/bloodhound-shell.git
cd bloodhound-shell
python3 -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
python -m pytest
Les tests simulent l'API BloodHound avec responses, donc aucun serveur BloodHound n'est nécessaire.
Distribué sous la licence MIT. Voir LICENSE pour plus de détails.
BloodHound est une marque déposée de SpecterOps. bhshell est un projet indépendant et n'est ni affilié à SpecterOps ni approuvé par celui-ci.