
Интерактивная командная оболочка для BloodHound API.
Интерактивная командная оболочка для BloodHound. Поиск объектов Active Directory, выявление слабых мест и нахождение путей атак прямо из терминала, без открытия веб-интерфейса.
Требуется Python 3.11+ и сервер BloodHound CE v9 (протестировано на v9.7.1).
pipx install bhshell # recommended
# or
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
Те же команды можно выполнять неинтерактивно для скриптов: bhshell -c "hunt --json" > hunt.json.
| Команда | Показывает |
|---|---|
user, computer, group, lookup | Kerberoastable / AS-REP roastable, делегирование, возраст пароля, флаги Tier Zero и owned, а также вложенность групп, входящий/исходящий контроль ACL, сессии и права локального администратора |
search | Объекты, соответствующие фильтрам по свойствам (search -t user hasspn enabled), с датами, возрастом (90d) и подстановочными знаками |
path | Кратчайшие пути к цели или к Tier Zero, от всех owned-объектов или через шаги --via; вывод в виде цепочек переходов, графа в терминале или SVG/PNG для отчётов |
hunt | Проверки в масштабе домена по уровню критичности: DCSync, контроль над Tier Zero, AD CS (ESC*), Kerberoasting, привилегированные сессии, читатели LAPS/gMSA, пароли в атрибутах, примитивы захвата (Shadow Credentials, RBCD), контроль GPO, NTLM relay, доверительные отношения, возможные honeytokens...; hunt --owned ограничивает их тем, что могут сделать ваши owned-объекты |
cypher, query | Необработанный Cypher и библиотека сохранённых запросов: встроенные, ваши собственные файлы .cyp (~/.bhshell/queries/ или любая папка, заданная через config query_dirs), а также сохранённые на сервере |
owned, hvt | Отметить или снять отметку с owned- и Tier Zero-объектов |
domains, trusts | Количество объектов по доменам и карта доверительных отношений со статусом фильтрации SID |
Чтобы добавить собственный запрос, сохраните его как файл .cyp в ~/.bhshell/queries/ и запустите по имени:
$ 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
См. Query library для описания формата и хранения запросов в других папках (командный репозиторий, отдельная папка для каждого проекта).
Большинство команд принимают --json и -o FILE (JSON или CSV). Вход выполняется по паролю (плюс MFA) или
по API-токену; секреты запрашиваются в интерактивном режиме или читаются из окружения и никогда не передаются как аргументы.
Полное руководство по использованию (каждая команда, флаг представления, фильтр поиска, опция path, проверка hunt и
параметр конфигурации) находится в docs/USAGE.md.
Внутри оболочки выполните help или help <command>.
Отчёты об ошибках и pull request'ы приветствуются на 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
Тесты имитируют BloodHound API с помощью responses, поэтому сервер BloodHound не требуется.
Распространяется под лицензией MIT. Подробности см. в LICENSE.
BloodHound является товарным знаком SpecterOps. bhshell — независимый проект, не связанный со SpecterOps и не поддерживаемый им.