
Una shell interattiva a riga di comando per l'API di BloodHound.
Una shell interattiva a riga di comando per BloodHound. Cerca oggetti di Active Directory, scova debolezze e trova percorsi di attacco dal terminale, senza aprire la web UI.
Richiede Python 3.11+ e un server BloodHound CE v9 (testato su v9.7.1).
pipx install bhshell # consigliato
# oppure
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
Gli stessi comandi possono essere eseguiti in modalità non interattiva per lo scripting: bhshell -c "hunt --json" > hunt.json.
| Comando | Mostra |
|---|---|
user, computer, group, lookup | Kerberoastable / AS-REP roastable, delegation, età della password, flag Tier Zero e owned, oltre a group nesting, controllo ACL in entrata/uscita, sessioni e diritti di amministratore locale |
search | Oggetti che corrispondono a filtri sulle proprietà (search -t user hasspn enabled), con date, età (90d) e wildcard |
path | Percorsi più brevi verso un target o verso Tier Zero, da tutto ciò che è owned, o attraverso passaggi --via; stampati come catene di hop, un grafo nel terminale, o SVG/PNG per i report |
hunt | Controlli a livello di dominio per severità: DCSync, controllo di Tier Zero, AD CS (ESC*), Kerberoasting, sessioni privilegiate, lettori LAPS/gMSA, password negli attributi, primitive di takeover (Shadow Credentials, RBCD), controllo GPO, NTLM relay, trust, possibili honeytoken...; hunt --owned li limita a ciò che i tuoi oggetti owned possono fare |
cypher, query | Cypher grezzo, e una libreria di query salvate: incluse, i tuoi file .cyp (~/.bhshell/queries/ o qualsiasi cartella impostata con config query_dirs) e quelle salvate sul server |
owned, hvt | Contrassegna o rimuove il contrassegno di oggetti owned e Tier Zero |
domains, trusts | Conteggi per dominio, e la mappa dei trust con lo stato del SID filtering |
Per aggiungere una tua query, salvala come file .cyp in ~/.bhshell/queries/ ed eseguila per nome:
$ 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
Consulta Query library per il formato e per mantenere le query in altre cartelle (un repository di team, una cartella per engagement).
La maggior parte dei comandi accetta --json e -o FILE (JSON o CSV). Il login funziona con una password (più MFA) o
un API token; i segreti vengono richiesti o letti dall'ambiente, mai passati come argomenti.
La guida completa all'uso (ogni comando, flag di visualizzazione, filtro di ricerca, opzione di path, controllo hunt e
impostazione di configurazione) è in docs/USAGE.md.
All'interno della shell, esegui help o help <command>.
Segnalazioni di bug e pull request sono benvenute su 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
I test simulano l'API di BloodHound con responses, quindi non è necessario un server BloodHound.
Distribuito sotto la licenza MIT. Vedi LICENSE per i dettagli.
BloodHound è un marchio di SpecterOps. bhshell è un progetto indipendente e non è affiliato né approvato da SpecterOps.