
Eine interaktive Kommandozeilen-Shell für die BloodHound-API.
Eine interaktive Kommandozeilen-Shell für BloodHound. Suche Active-Directory-Objekte, jage nach Schwachstellen und finde Angriffspfade vom Terminal aus, ohne die Web-UI zu öffnen.
Erfordert Python 3.11+ und einen BloodHound CE v9-Server (getestet auf v9.7.1).
pipx install bhshell # empfohlen
# oder
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
Dieselben Befehle laufen nicht-interaktiv für Skripting: bhshell -c "hunt --json" > hunt.json.
| Befehl | Zeigt |
|---|---|
user, computer, group, lookup | Kerberoastable / AS-REP roastable, Delegation, Passwortalter, Tier-Zero- und Owned-Flags, plus Gruppenverschachtelung, eingehende/ausgehende ACL-Kontrolle, Sitzungen und lokale Admin-Rechte |
search | Objekte, die auf Eigenschaftsfilter passen (search -t user hasspn enabled), mit Datumsangaben, Altersangaben (90d) und Wildcards |
path | Kürzeste Pfade zu einem Ziel oder zu Tier Zero, von allem Owned, oder über --via-Schritte; ausgegeben als Hop-Ketten, ein Terminal-Graph oder SVG/PNG für Berichte |
hunt | Domänenweite Prüfungen nach Schweregrad: DCSync, Kontrolle über Tier Zero, AD CS (ESC*), Kerberoasting, privilegierte Sitzungen, LAPS/gMSA-Leser, Passwörter in Attributen, Takeover-Primitive (Shadow Credentials, RBCD), GPO-Kontrolle, NTLM-Relay, Trusts, mögliche Honeytokens...; hunt --owned beschränkt sie auf das, was deine Owned-Objekte tun können |
cypher, query | Rohes Cypher und eine Bibliothek gespeicherter Abfragen: mitgelieferte, deine eigenen .cyp-Dateien (~/.bhshell/queries/ oder ein beliebiger Ordner, der mit config query_dirs festgelegt wurde) und die auf dem Server gespeicherten |
owned, hvt | Owned- und Tier-Zero-Objekte markieren oder die Markierung aufheben |
domains, trusts | Zählungen pro Domäne und die Trust-Map mit SID-Filtering-Status |
Um deine eigene Abfrage hinzuzufügen, speichere sie als .cyp-Datei in ~/.bhshell/queries/ und führe sie über ihren Namen aus:
$ 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
Siehe Query library für das Format und für das Ablegen von Abfragen in anderen Ordnern (ein Team-Repository, ein Ordner pro Engagement).
Die meisten Befehle akzeptieren --json und -o FILE (JSON oder CSV). Login funktioniert mit einem Passwort (plus MFA) oder
einem API-Token; Secrets werden abgefragt oder aus der Umgebung gelesen, niemals als Argumente übergeben.
Die vollständige Nutzungsanleitung (jeder Befehl, View-Flag, Suchfilter, Pfadoption, Hunt-Check und
Konfigurationseinstellung) findest du in docs/USAGE.md.
Innerhalb der Shell führe help oder help <command> aus.
Fehlerberichte und Pull Requests sind willkommen unter 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
Die Tests mocken die BloodHound-API mit responses, sodass kein BloodHound-Server benötigt wird.
Vertrieben unter der MIT-Lizenz. Siehe LICENSE für Details.
BloodHound ist eine Marke von SpecterOps. bhshell ist ein unabhängiges Projekt und ist nicht mit SpecterOps verbunden oder von SpecterOps unterstützt.