
Автономный анализатор путей атак для AD/Entra на основе JSON-файлов SharpHound/AzureHound. Выявляет приоритизированные находки по повышению привилегий, учётным данным и ошибкам конфигурации без использования BloodHound или Neo4j.
Проект с открытым исходным кодом SquidSec
SquidOffense.com ·
GitHub
BloodBash — это анализатор JSON-файлов SharpHound и AzureHound с открытым исходным кодом, работающий в офлайн-режиме, созданный и поддерживаемый SquidSec. Он строит граф, выявляет пути атак и ошибки конфигурации AD/Entra и выводит отсортированные по приоритету результаты. Neo4j или интерфейс BloodHound не требуются.
Слияния в main автоматически собирают бинарные файлы для Linux и Windows и публикуют релиз на GitHub (тег v1.4.2-build.N).
BloodBash создан и поддерживается SquidSec для сообщества специалистов по безопасности — red team-специалистов, пентестеров и защитников, которым нужен быстрый офлайн-анализ AD/Entra без развёртывания инфраструктуры BloodHound.
Автономные исполняемые файлы BloodBash от SquidSec — Python, pip или venv не нужны:
| Платформа | Последняя версия для скачивания |
|---|---|
| Linux x64 | bloodbash-linux-x64 |
| Windows x64 | bloodbash-windows-x64.exe |
curl -sL -o bloodbash
https://github.com/DotNetRussell/BloodBash/releases/latest/download/bloodbash-linux-x64
chmod +x bloodbash
./bloodbash /path/to/json --all
The input chunk is empty — no Markdown content was provided to translate. Please supply the actual text for chunk 3 of 45.```powershell
# Windows (PowerShell)
Invoke-WebRequest -Uri "https://github.com/DotNetRussell/BloodBash/releases/latest/download/bloodbash-windows-x64.exe" `
-OutFile bloodbash.exe
.\bloodbash.exe C:\path\to\json --all
pipx install git+https://github.com/DotNetRussell/BloodBash
Или из клона:```bash
git clone https://github.com/DotNetRussell/BloodBash.git
cd BloodBash
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
Зависимости: networkx, rich, tqdm, pyyaml.
Начните с этих 3 (укажите на каталог SharpHound/AzureHound или .zip):```bash
bloodbash /path/to/json
bloodbash /path/to/json --quick-wins
bloodbash ./sharpout --from-user alice --from-user-export
bloodbash /path/to/json --all --fast
bloodbash /path/to/json --all --inventory
Из исходной копии репозитория `python3 BloodBash.py` эквивалентно `bloodbash`.```bash
# Binary / pipx
./bloodbash /path/to/json
bloodbash /path/to/json --from-user alice --from-user-export
# Multi-collection merge (low-priv + DA zip, multi-domain forest)
bloodbash ./lowpriv.zip --merge ./da.zip ./child-domain.zip --all --fast
Bare directory (без флагов проверки) запускает триаж quick-wins. Используйте --all для полного анализа путей атак (не инвентаризации) или --wizard для интерактивного выбора.
При использовании --all и --quick-wins пустые секции детекторов скрываются, чтобы консоль оставалась читаемой. Выборочные флаги по-прежнему выводят зелёные строки "none found" для запрошенных проверок.
Пример данных: SampleSharphoundADData/ и SampleAzurehoundData/.```bash
bloodbash --help # start-here + cheat sheet
bloodbash --help-advanced # full flag tables + all examples
Дополнительные рецепты: [docs/cookbook.md](https://github.com/squidsec/bloodbash/blob/HEAD/docs/cookbook.md).
## Что он находит
| Область | Проверки |
|------|--------|
| **Привилегии AD** | DCSync (GetChanges+GetChangesAll; вложенные DA/EA обрабатываются как ожидается), опасные ACL на высокоценных объектах, **интересное злоупотребление ACL на не-HV объектах** (ForceChangePassword / GenericAll / GenericWrite для пользователей/компьютеров/групп; массовый шум GenericWrite на компьютерах подавляется), злоупотребление GPO, RBCD (настроенный + *возможность настройки*), ограниченное/неограниченное делегирование (**разделы DC vs non-DC**), история SID, **доверительные отношения доменов** (`--trust`) |
| **Учётные данные AD** | Kerberoastable, AS-REP roastable (с тегами **AdminCount / OWNED / LASTLOG**), **привилегированный roast** (`--privileged-roast`: roastable + вложенные DA/EA / AdminCount), теневые учётные данные, пароль в описании, PasswordNeverExpires / PasswordNotRequired. SharpHound `sensitive` (NOT_DELEGATED) **не** исключает кандидатов на roast |
| **ADCS** | ESC1-ESC7 (+ ESC8/ESC9/ESC13 при наличии свойств сборщика). ESC10-12 требуют данных реестра/HTTP-ролей, часто отсутствующих в SharpHound. Мягкое сообщение, если в zip нет объектов сертификатов |
| **Azure / Entra** | Привилегированные роли, пути *управления* учётными данными приложений/SP, явное отключение MFA, гостевые пользователи, права на злоупотребление SP |
| **Пути** | Кратчайшие пути к высокоценным целям (ограниченный набор в `--fast`; HV включает встроенных администраторов и **компьютеры контроллеров домена**), owned-субъекты (`--owned` = входящие), пользовательские `--path-from` / `--path-to` |
| **Досье компрометации** | `--from-user` / `--compromise`: исходящие членства, счётчики AdminTo/RDP/ACL, вложенные группы, автоматические пути к HV, экспорт в txt/csv, включая **массовые списки хостов AdminTo** |
| **Исправление путей** | Ранжирование самых загруженных путей (`--busiest-paths`), рекомендации по удалению рёбер (`--path-break`) |
| **Инвентаризация** | Лестницы возраста паролей, устаревшие/неактивные учётные записи, привилегированные группы, структурная информация (домены/DC/доверия), инвентаризация owned-объектов, **панель статистики с %** |
| **CSV-пакет в стиле PlumHound** | `--csv-pack DIR`: инвентаризация в нескольких CSV-файлах (домены, DA, roastables, LAPS, рёбра Everyone/overpriv, компьютер AdminTo компьютер, двойное привилегированное+локальное администрирование, массовые хосты AdminTo) + `index.csv` |
| **Несколько источников** | `--merge PATH…` объединяет дополнительные каталоги/zip-архивы в один граф (несколько доменов / двойные коллекции low-priv+DA) |
| **Другое** | Баннер **состояния сбора данных** (количество объектов, покрытие сеансов/AdminTo/RDP, наличие ADCS), покрытие LAPS (`haslaps`) + **читатели паролей LAPS** (`ReadLAPSPassword`), XML GPO (`--gpo-content-dir`), рёбра `Trusts[]` домена, вложенность групп, `--list-domains` |
Результаты оцениваются и обобщаются в таблице **Prioritized Findings** (категории гигиены с большим количеством записей сворачиваются; используйте `--all-findings` для полного свёрнутого списка). Панели атак предлагают инструменты/команды для каждой категории.
Это **автономный эвристический анализатор** от SquidSec, а не полная замена BloodHound CE. Для проверки соответствия путей предпочтительно сверяться с BloodHound CE на том же zip-архиве.
---
## Примеры команд
Замените `./sharpout` на ваш каталог SharpHound/AzureHound или zip-файл. При работе из исходников используйте `python3 BloodBash.py` вместо `bloodbash`.
### Основы```bash
# Help (tables + examples)
bloodbash --help
bloodbash --help-advanced
# Default = quick wins (high-signal day-0 triage)
bloodbash ./sharpout
bloodbash ./sharpout --quick-wins
bloodbash ./sharpout --quick-wins --domain CORP.LOCAL
bloodbash ./2024-collection.zip --quick-wins
# Interactive picker
bloodbash ./sharpout --wizard
# Full attack analysis (--all auto --fast on large graphs; inventory is separate)
bloodbash ./sharpout --all
bloodbash ./sharpout --all --fast
bloodbash ./2024-collection.zip --all
bloodbash ./sharpout --all --inventory
# Merge multiple collections into one graph
bloodbash ./lowpriv.zip --merge ./da.zip --all --fast
bloodbash ./forest-root --merge ./child-a.zip ./child-b.zip --quick-wins
# One domain / tenant only
bloodbash ./sharpout --all --domain CORP.LOCAL
bloodbash ./azureout --azure-privileged-roles --domain <tenantId>
# Domain trusts
bloodbash ./sharpout --trust
bloodbash ./sharpout --all --trust
# In-repo samples
bloodbash SampleSharphoundADData --quick-wins
bloodbash SampleSharphoundADData --all --fast --all-findings
bloodbash SampleAzurehoundData --azure-privileged-roles --azure-guest-access --all-findings
--quick-winsКурируемый набор с высокой информативностью (подразумевает --fast, подробную сводку, полную таблицу результатов). Не является полным инвентарём/дампом Azure. Пустые разделы остаются без вывода.
| Область | Модули |
|---|---|
| Привилегии | DCSync (unexpected), ADCS, dangerous ACLs + interesting non-HV ACLs, RBCD + can-configure, unconstrained (DC vs non-DC), constrained, shadow creds, LAPS (+ readers), trusts |
Эквивалентный профиль: --profile quick-wins (см. profiles/quick-wins.yaml).
Исходящий обзор: «Я только что скомпрометировал этого субъекта — что он может сделать?»
bloodbash ./sharpout --from-user alice bloodbash ./sharpout --compromise [email protected]
bloodbash ./sharpout --from-user alice --from-user-export bloodbash ./sharpout --from-user alice --from-user-export ./alice-dossier
bloodbash ./sharpout --from-user alice,bob,svc_backup --from-user-export ./footholds
bloodbash ./sharpout --from-user alice --domain CORP.LOCAL --from-user-export --all-findings
bloodbash SampleSharphoundADData --from-user SCOTT --from-user-export ./scott-out --fast
bloodbash ./sharpout --from-user alice --inspect alice bloodbash ./sharpout --path-from alice --path-to 'domain [email protected]'
bloodbash ./sharpout --owned alice --owned-inventory --shortest-paths bloodbash ./sharpout --owned-file ./owned.txt --owned-inventory
bloodbash ./sharpout --from-user-file ./footholds.txt --from-user-export ./out
**Схема экспорта** (на субъект):```text
compromise-alice/
summary.md README.txt counts.csv
membership_direct.txt membership_effective.txt
adminto_hosts.txt adminto_hosts.csv # bulk AdminTo/LocalAdmin host list
paths_to_high_value.txt paths_to_high_value.csv
dossier.json
rights/
AdminTo.txt AdminTo.csv CanRDP.txt LocalAdmin.txt GenericAll.txt ...
bloodbash ./sharpout --shortest-paths bloodbash ./sharpout --shortest-paths --indirect --fast
bloodbash ./sharpout --shortest-paths --path-mode abuse
bloodbash ./sharpout --deep-paths bloodbash ./sharpout --path-mode deep --path-depth 16 --path-sources 400 --max-paths 20
bloodbash ./sharpout --golden-path
bloodbash ./sharpout --golden-path --from-user alice --domain CORP.LOCAL
bloodbash ./sharpout --busiest-paths short --busiest-paths-top 10
bloodbash ./sharpout --busiest-paths all --busiest-paths-top 5
bloodbash ./sharpout --path-break --path-break-top 20
bloodbash ./sharpout --busiest-paths short --path-break --fast
--report-pack ./path-reports --export-zip path-reports.zip
bloodbash ./sharpout --path-from helpdesk --path-to 'domain [email protected]'
bloodbash ./sharpout --path-from alice,bob --path-to 'domain admins,enterprise admins'
bloodbash ./sharpout --deep-analysis
bloodbash ./sharpout --inspect 'DOMAIN [email protected]'
### Выборочные проверки AD```bash
# Critical / common engagement set
bloodbash ./sharpout --dcsync --adcs --dangerous-permissions --verbose
bloodbash ./sharpout --dcsync --adcs --dangerous-permissions --all-findings
# Credentials (+ privilege-context tags on roast findings)
bloodbash ./sharpout --kerberoastable --as-rep-roastable --password-descriptions
# High-priority: roastable users nested into DA/EA/...
bloodbash ./sharpout --privileged-roast
bloodbash ./sharpout --password-never-expires --password-not-required --password-age
# Delegation / RBCD (configured + who can configure AllowedToAct) / shadow creds
bloodbash ./sharpout --unconstrained-delegation --constrained-delegation --rbcd
bloodbash ./sharpout --shadow-credentials
# Trusts, sessions, LAPS (coverage + ReadLAPSPassword readers), SID history, GPO
bloodbash ./sharpout --trust --sessions --laps --sid-history
bloodbash ./sharpout --gpo-abuse --gpo-parsing
bloodbash ./sharpout --gpo-abuse --gpo-content-dir ./sysvol-gpo-xml
bloodbash ./sharpout --list-domains
bloodbash ./sharpout --inventory bloodbash ./sharpout --stale-accounts --password-age --privilege-inventory bloodbash ./sharpout --owned alice --owned-inventory
bloodbash ./sharpout --profile quick bloodbash ./sharpout --profile quick-wins # same set as --quick-wins bloodbash ./sharpout --profile adcs-heavy bloodbash ./sharpout --profile hygiene bloodbash ./sharpout --profile ./my-engagement.yaml
bloodbash ./sharpout --inventory --busiest-paths short --path-break
--report-pack ./reports --export-zip bloodbash-reports.zip --log-file ./bloodbash.log
bloodbash ./sharpout --csv-pack ./ph-reports bloodbash ./sharpout --csv-pack ./ph-reports --export-zip ph-reports.zip bloodbash ./sharpout --all --fast --csv-pack ./ph-full --export-zip ph-full.zip
bloodbash ./sharpout --all --export=md bloodbash ./sharpout --all --export=html bloodbash ./sharpout --all --export=csv bloodbash ./sharpout --all --export=json --export-bh --dot graph.dot bloodbash ./sharpout --all --export=yaml
bloodbash ./sharpout --dcsync # builds + caches graph bloodbash ./sharpout --kerberoastable # cache hit; only runs kerberoast check bloodbash ./sharpout --all --rebuild-cache # force re-ingest bloodbash ./sharpout --all --no-cache # disable cache bloodbash ./sharpout --cache-dir /tmp/bb-cache --all
bloodbash ./sharpout --all --db bloodbash.db bloodbash . --db bloodbash.db --from-user alice --from-user-export
### Содержимое CSV-пакета в стиле PlumHound
`--csv-pack DIR` записывает по одному CSV на каждую задачу инвентаризации, а также `index.csv` / `README.txt` (без Neo4j):
| CSV | Описание |
|-----|-------------|
| `domains.csv` | Домены AD в коллекции |
| `domain_admins.csv` | Субъекты, вложенные в группы в стиле DA/EA |
| `users.csv` / `computers.csv` / `groups.csv` | Базовая инвентаризация объектов |
| `kerberoastable.csv` / `asrep_roastable.csv` | Кандидаты для credential roast (+ теги) |
| `password_never_expires.csv` | Пользователи PNE |
| `laps_not_enabled.csv` | Компьютеры без LAPS |
| `local_admins_users.csv` | Пользователь/группа → компьютер AdminTo/LocalAdmin |
| `user_sessions.csv` | HasSession: компьютер ↔ пользователь |
| `relationships_everyone.csv` (и Auth Users, Domain Users, …) | Рёбра от излишне широких субъектов |
| `overprivileged_relationships.csv` | Совокупные рёбра Everyone/Auth/Domain Users/… |
| `computer_adminto_computer.csv` | Машина → машина AdminTo |
| `dual_privileged_and_local_admin.csv` | Члены DA/EA, у которых также есть AdminTo (тиринг) |
| `bulk_adminto_hosts.csv` | Субъекты, ранжированные по количеству хостов AdminTo |
| `index.csv` | Индекс отчёта (файл → количество строк) |
### Azure / Entra```bash
bloodbash ./azureout --azure-privileged-roles
bloodbash ./azureout --azure-app-secrets --azure-sp-abuse
bloodbash ./azureout --azure-mfa-bypass --azure-guest-access
bloodbash ./azureout \
--azure-privileged-roles --azure-app-secrets --azure-mfa-bypass \
--azure-guest-access --azure-sp-abuse --all-findings --export=html
bloodbash SampleAzurehoundData \
--azure-privileged-roles --azure-guest-access --all-findings
bloodbash ./sharpout --all --fast --all-findings
--report-pack ./nightly --export-zip nightly.zip --log-file nightly.log
bloodbash ./lowpriv.zip --merge ./da.zip --all --fast --csv-pack ./ph-full
bloodbash ./sharpout --from-user alice --from-user-export ./dossiers bloodbash ./sharpout --profile hygiene --report-pack ./hygiene --export-zip hygiene.zip
bloodbash ./sharpout --profile adcs-heavy --path-break --busiest-paths short
--report-pack ./adcs-paths --export-zip adcs-paths.zip
---
## Справочник по флагам
### Отчётные пакеты, профили, досье, результаты (v1.4+)
| Флаг | Назначение |
|------|---------|
| `--from-user` / `--compromise USER` | **Досье компрометации** (исходящее): вложенные группы, счётчики AdminTo/RDP/ACL, пути к высокоценным целям |
| `--from-user-export [DIR]` | Экспорт досье в txt/csv/json + списки **adminto_hosts** (по умолчанию `compromise-<user>/`) |
| `--busiest-paths [short\|all]` | Ранжирование субъектов по количеству путей к высокоценным целям |
| `--path-break` | Рекомендации, какие связи удалить, чтобы разорвать большинство путей атак |
| `--inventory` | Инвентаризация структуры + возраста паролей + устаревших учётных записей + привилегий |
| `--password-age` / `--stale-accounts` / `--privilege-inventory` | Отдельные модули инвентаризации |
| `--owned-inventory` | Инвентаризация AdminTo / MemberOf для субъектов `--owned` / `--owned-file` |
| `--owned-file FILE` | Список скомпрометированных субъектов по одному в строке (объединяется с `--owned`) |
| `--from-user-file FILE` | Точки входа по одной в строке для досье компрометации (объединяется с `--from-user`) |
| `--report-pack DIR` | Многостраничный HTML-комплект + `index.html` + CSV по каждому разделу |
| `--csv-pack DIR` | **Набор CSV-файлов в стиле PlumHound** (инвентаризация + overpriv + отчёты AdminTo + `index.csv`) |
| `--export-zip [FILE]` | Упаковка каталога `--report-pack` или `--csv-pack` в один артефакт |
| `--profile FILE\|name` | YAML-профиль анализа (`quick`, `quick-wins`, `adcs-heavy`, `hygiene` или путь) |
| `--log-file [FILE]` | Журнал выполнения с дозаписью (по умолчанию `bloodbash.log`) |
| `--all-findings` | По завершении: вывод таблицы **всех** находок (даже пустых) |
### Другие полезные флаги
| Флаг | Назначение |
|------|---------|
| `--all` | Запуск всех модулей анализа (пустые разделы AD скрываются) |
| `--quick-wins` | **Высокосигнальный триаж day-0** (также **по умолчанию** при отсутствии флагов проверки; подразумевает `--fast`) |
| `--merge PATH…` | Дополнительные каталоги или ZIP-архивы SharpHound/AzureHound для объединения в один граф |
| `--trust` | Проверки доверия доменов / злоупотреблений SID-фильтрацией |
| `--wizard` | Интерактивный выбор режима (quick-wins / full / dossier / profile) |
| `--help-advanced` | Полные таблицы флагов + все примеры (короткий `--help` — только вводная справка) |
| `--fast` | Ограничение поиска путей целями уровня DA/EA (не полный пропуск). Автоматически включается для больших графов с `--all` |
| `--domain X` | Фильтрация по одному домену AD или Azure `tenantId` (без учёта регистра) |
| `--list-domains` | Список доменов AD / арендаторов Azure в коллекции и выход |
| `--owned a,b` | Пути **к** скомпрометированным субъектам (входящие) |
| `--owned-file FILE` | То же, что `--owned`, из файла с записями по одной в строке (комментарии `#` допустимы) |
| `--from-user-file FILE` | То же, что `--from-user`, из файла с записями по одной в строке |
| `--path-from` / `--path-to` | Произвольные кратчайшие пути |
| `--inspect NODE` | Вывод свойств + рёбер узла |
| `--indirect` | Включение путей/прав, опосредованных группами |
| `--deep-analysis` | Медленный анализ вложенности групп + обнаружение циклов |
| `--privileged-roast` | Kerberoast/AS-REP пользователи, вложенные в DA/EA/другие привилегированные группы (или AdminCount) |
| `--gpo-content-dir DIR` | Разбор XML-файлов GPO (задачи, скрипты, cPassword) |
| `--export {md,json,html,csv,yaml}` | Запись отчёта (высокоценные цели + приоритизированные находки) |
| `--export-bh` | JSON графа в стиле BloodHound |
| `--dot [FILE]` | Экспорт в Graphviz DOT |
| `--db FILE` | Путь к SQLite-графу (по умолчанию: автоматический кэш по отпечатку коллекции в `~/.cache/bloodbash/`) |
| `--cache-dir DIR` | Переопределение каталога автоматического кэша графа |
| `--no-cache` | Всегда повторный импорт; не читать/писать кэш графа |
| `--rebuild-cache` | Принудительный повторный импорт и обновление кэша графа |
| `--debug` | Подробное журналирование разбора/построения |
Также включается при использовании `--all` / выборочных флагов: баннер о состоянии коллекции; интересные злоупотребления ACL на не-HV объектах; теги контекста привилегий в результатах roasting; неожиданное разделение DCSync; DC с неограниченным делегированием vs не-DC; читатели LAPS; возможность настройки RBCD; проценты панели статистики; скрытие пустых разделов при широких запусках.
Переключатели только для Azure: `--azure-privileged-roles`, `--azure-app-secrets`, `--azure-mfa-bypass`, `--azure-guest-access`, `--azure-sp-abuse`.
Запустите `bloodbash --help`, чтобы получить вводную справку + шпаргалку, или `--help-advanced` для полных таблиц флагов и примеров.
## Примечания по SharpHound CE
Модуль импорта распознаёт вывод современных коллекторов: свойство `Members` групп, `AllowedToAct` (RBCD), сеансы / локальные группы, доменные `Trusts[]`, историю SID, псевдонимы имён свойств CE и безопасное извлечение ZIP (Zip Slip заблокирован). Для DCSync требуются права **GetChanges + GetChangesAll**. Метки ADCS соответствуют SpecterOps ESC1-ESC8 (+ кандидаты ESC9/ESC13 при наличии флагов). Компьютерные объекты контроллеров домена остаются высокоценными целями. Флаги `highvalue` на локальных группах администраторов рабочих станций не засоряют набор HV.
## Модуль Metasploit
Обёртка над CLI SquidSec BloodBash (v1.4+), сохраняющая находки в БД Metasploit.
Опции соответствуют CLI: проверки AD/Azure, инвентаризация, busiest-paths / path-break,
досье компрометации `--from-user`, профили, отчётные пакеты, экспорт и кэш графа (`--db` / автоматический кэш).```bash
cp modules/auxiliary/analyzer/bloodbash_analyzer.rb \
/opt/metasploit-framework/modules/auxiliary/analyzer/
# then in msfconsole: reload_all
[No content provided to translate.]```text use auxiliary/analyzer/bloodbash_analyzer set BLOODBASH_PATH /path/to/BloodBash/BloodBash.py set JSON_DIR /path/to/collector_json_or.zip set ALL_CHECKS true run
[Ожидание содержимого для перевода. Пожалуйста, предоставьте Markdown-текст.]```text
# Foothold dossier + hygiene (parity with CLI examples)
set FROM_USER alice
set FROM_USER_EXPORT
set PASSWORD_NEVER_EXPIRES true
set KERBEROASTABLE true
set ALL_FINDINGS true
run
Установите PYTHON, если python3 отсутствует в PATH. Укажите BLOODBASH_PATH на автономный
бинарный файл (не .py), чтобы пропустить интерпретатор Python. Фильтрация доменов не учитывает регистр
(соответствует CLI).
pip install -r requirements-dev.txt
python3 -m pytest test_bloodbash.py test_members_ingest.py
test_detection_variations.py test_compromise_dossier.py
test_synthetic_corpus.py test_ludus_collections.py
test_real_data_reliability.py test_graph_cache.py
test_owned_file.py test_golden_path.py test_deep_paths.py
test_ci_pytest_suite.py -q
### Синтетический корпус SharpHound (высокоэнтропийная регрессия)
Публичные образцы дампов малы и обладают низкой энтропией. Для регрессионного тестирования детекторов мы поставляем
**синтетический лабораторный стенд SharpHound CE** (`testData/synthetic-corp-lab/`) с известными
эталонными данными (неожиданный DCSync, запись GPO для Auth Users, массовое can-configure RBCD,
ESC1, roast, микс LAPS и т.д.). Данных реальных engagements нет.```bash
# Regenerate corpus + ground_truth.json
python3 tools/generate_synthetic_sharphound.py --out testData/synthetic-corp-lab
# Smoke BloodBash against it
python3 BloodBash.py testData/synthetic-corp-lab --all --fast --all-findings
python3 BloodBash.py testData/synthetic-corp-lab --from-user alice.low --fast
# 20 multi-hop engagement scenarios (classic + common debt paths)
python3 tools/run_scenario_battery.py
python3 tools/run_scenario_battery.py --count 20 --seed 42 -v
python3 tools/run_scenario_battery.py --list-profiles
python3 tools/run_scenario_battery.py --keep --work-dir /tmp/bb-engagements
CI (PR + main) запускает модульные/интеграционные тесты и run_scenario_battery.py --count 20 --seed 42
(20 цепочек взаимодействий). Защита ветки требует проверки статуса test.
Хелперы точности (без пользовательских данных):```bash
python3 tools/mutate_corpus.py --in testData/synthetic-corp-lab --out /tmp/mut --seed 1 python3 BloodBash.py /tmp/mut --all --fast
python3 BloodBash.py testData/synthetic-corp-lab
--gpo-content-dir testData/gpo-xml-fixtures --gpo-parsing
### Локальная сборка бинарного файла```bash
python3 -m venv .venv-build && source .venv-build/bin/activate
pip install -r requirements.txt -r requirements-build.txt
pyinstaller --onefile --console --name bloodbash-linux-x64 BloodBash.py
# -> dist/bloodbash-linux-x64
CI (при каждом пуше в main) запускает тесты, собирает однофайловые бинарники для Linux и Windows с помощью PyInstaller и публикует релиз со стабильными именами артефактов для ссылок /releases/latest/download/... выше. Теги выглядят как v1.4.1-build.N.
MIT - только для авторизованного тестирования безопасности и red teaming.
BloodBash — это проект с открытым исходным кодом, созданный и управляемый SquidSec.
| Организация | SquidSec |
| Веб-сайт | https://squidoffense.com/ |
| Версия приложения | v1.4.2 |
| Последний бинарный файл | |
| Лицензия | MIT |
| Среда выполнения (исходный код) | Python 3.9+ |
| Учётные данные | Kerberoast, AS-REP, privileged roast, password-in-description, PasswordNotRequired |
| Операции | Sessions / local admin summary, collection health |
| Пути | Shortest paths to HV, busiest short paths, path-break |
| Флаг | Значение |
|---|
--from-user / --compromise | Создать досье (вложенные группы, права, пути HV) |
--from-user-export [DIR] | Записать списки txt/csv/json (по умолчанию compromise-<user>/) |
--owned / --owned-file | Другое: пути к этому субъекту (входящие); файл содержит по одному элементу в строке |