
Analizzatore offline dei percorsi di attacco AD/Entra per JSON di SharpHound/AzureHound. Evidenzia risultati prioritizzati su escalation dei privilegi, credenziali ed errori di configurazione senza BloodHound o Neo4j.
Un progetto open source di SquidSec
SquidOffense.com ·
GitHub
BloodBash è un analizzatore JSON offline open source per SharpHound e AzureHound, creato e gestito da SquidSec. Costruisce un grafo, mette in evidenza percorsi di attacco e configurazioni errate di AD/Entra e stampa i risultati prioritizzati. Non richiede Neo4j né l'interfaccia BloodHound.
I merge su main compilano automaticamente i binari Linux e Windows e pubblicano una GitHub Release (tag v1.4.2-build.N).
BloodBash è sviluppato e mantenuto da SquidSec per la community della sicurezza: red teamer, pentester e difensori che necessitano di un'analisi AD/Entra offline rapida senza dover configurare un'infrastruttura BloodHound.
Eseguibili BloodBash standalone SquidSec - non sono richiesti Python, pip o venv:
| Piattaforma | Ultimo download |
|---|---|
| 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
[No content provided in the INPUT section. Please paste the Markdown text you wish to have translated.]```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
Oppure da un clone:```bash
git clone https://github.com/DotNetRussell/BloodBash.git
cd BloodBash
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
Dependencies: networkx, rich, tqdm, pyyaml.
Inizia con questi 3 (indica una directory SharpHound/AzureHound o un .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
Da un checkout del sorgente, `python3 BloodBash.py` è equivalente a `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
Una directory passata senza flag di controllo esegue il triage quick-wins. Usa --all per un'analisi completa del percorso di attacco (non inventario), oppure --wizard per un selettore interattivo.
Con --all e --quick-wins, le sezioni vuote dei rilevatori vengono soppresse per mantenere la console leggibile. I flag selettivi stampano comunque le righe verdi "none found" per i controlli richiesti.
Dati di esempio: SampleSharphoundADData/ e SampleAzurehoundData/.```bash
bloodbash --help # start-here + cheat sheet
bloodbash --help-advanced # full flag tables + all examples
More recipes: [docs/cookbook.md](https://github.com/squidsec/bloodbash/blob/HEAD/docs/cookbook.md).
## Cosa trova
| Area | Controlli |
|------|--------|
| **Privilegi AD** | DCSync (GetChanges+GetChangesAll; DA/EA nidificati trattati come previsto), ACL pericolose su oggetti di alto valore, **interessante abuso ACL non-HV** (ForceChangePassword / GenericAll / GenericWrite su utenti/computer/gruppi; soppresso il rumore dei computer in blocco con GenericWrite), abuso GPO, RBCD (configurato + *può configurare*), delega vincolata/non vincolata (sezioni **DC vs non-DC**), cronologia SID, **trust di dominio** (`--trust`) |
| **Credenziali AD** | Kerberoastable, AS-REP roastable (con tag **AdminCount / OWNED / LASTLOG**), **roast privilegiato** (`--privileged-roast`: roastable + DA/EA nidificati / AdminCount), credenziali shadow, password nella descrizione, PasswordNeverExpires / PasswordNotRequired. SharpHound `sensitive` (NOT_DELEGATED) **non** esclude i candidati al roast |
| **ADCS** | ESC1-ESC7 (+ ESC8/ESC9/ESC13 quando esistono le proprietà del collector). ESC10-12 richiedono dati di ruolo registry/HTTP spesso assenti da SharpHound. Messaggio soft quando lo zip non ha oggetti certificato |
| **Azure / Entra** | Ruoli privilegiati, percorsi di *controllo* delle credenziali di app/SP, disattivazione esplicita MFA, utenti guest, diritti di abuso SP |
| **Percorsi** | Percorsi più brevi verso obiettivi di alto valore (set limitato in `--fast`; HV include Administrators predefiniti e **computer controller di dominio**), principal posseduti (`--owned` = in entrata), `--path-from` / `--path-to` personalizzati |
| **Dossier di compromissione** | `--from-user` / `--compromise`: appartenenze in uscita, conteggi AdminTo/RDP/ACL, gruppi nidificati, percorsi automatici verso HV, esportazione txt/csv inclusi **elenchi host AdminTo in blocco** |
| **Rimedi dei percorsi** | Classifica dei percorsi più trafficati (`--busiest-paths`), raccomandazioni per la rimozione di edge (`--path-break`) |
| **Inventario** | Scale di età delle password, account obsoleti/inattivi, gruppi di privilegi, strutturali (domini/DC/trust), inventario degli oggetti posseduti, **dashboard statistiche con %** |
| **Pacchetto CSV stile PlumHound** | `--csv-pack DIR`: inventario multi-CSV (domini, DA, roastable, LAPS, edge Everyone/overpriv, computer AdminTo computer, doppio admin privilegiato+locale, host AdminTo in blocco) + `index.csv` |
| **Input multiplo** | `--merge PATH…` unisce directory/zip aggiuntivi in un unico grafo (multi-dominio / raccolte duali low-priv+DA) |
| **Altro** | **Banner di salute della raccolta** (conteggi oggetti, copertura sessioni/AdminTo/RDP, presenza ADCS), copertura LAPS (`haslaps`) + **lettori di password LAPS** (`ReadLAPSPassword`), XML GPO (`--gpo-content-dir`), edge `Trusts[]` di dominio, nidificazione gruppi, `--list-domains` |
I risultati vengono valutati e riepilogati in una tabella **Prioritized Findings** (le categorie di igiene ad alto volume collassano; usa `--all-findings` per l'elenco completo collassato). I pannelli di abuso suggeriscono strumenti/comandi per categoria.
Questo è un **analizzatore euristico offline** di SquidSec, non un sostituto completo di BloodHound CE. Preferisci validare con BloodHound CE sullo stesso zip per parità dei percorsi.
---
## Esempi di comandi
Sostituisci `./sharpout` con la tua directory o zip di SharpHound/AzureHound. Checkout dal sorgente: usa `python3 BloodBash.py` invece di `bloodbash`.
### Nozioni di base```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-winsSet curato ad alto segnale (implica --fast, riepilogo dettagliato, tabella completa dei risultati). Non è un dump completo di inventario/Azure. Le sezioni vuote restano silenziose.
| Area | Moduli |
|---|---|
| Privilegi | DCSync (unexpected), ADCS, ACL pericolose + ACL non-HV interessanti, RBCD + can-configure, unconstrained (DC vs non-DC), constrained, shadow creds, LAPS (+ lettori), trust |
Profilo equivalente: --profile quick-wins (vedi profiles/quick-wins.yaml).
Vista in uscita: "Ho appena compromesso questo principal: cosa può fare?"
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
**Layout di esportazione** (per principal):```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]'
### Controlli AD selettivi```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
### Contenuti del pacchetto CSV in stile PlumHound
`--csv-pack DIR` scrive un CSV per ogni attività di inventario più `index.csv` / `README.txt` (senza Neo4j):
| CSV | Descrizione |
|-----|-------------|
| `domains.csv` | Domini AD nella raccolta |
| `domain_admins.csv` | Principal annidati in gruppi in stile DA/EA |
| `users.csv` / `computers.csv` / `groups.csv` | Inventario degli oggetti principali |
| `kerberoastable.csv` / `asrep_roastable.csv` | Candidati per credential roasting (+ tag) |
| `password_never_expires.csv` | Utenti PNE |
| `laps_not_enabled.csv` | Computer senza LAPS |
| `local_admins_users.csv` | Utente/gruppo → computer AdminTo/LocalAdmin |
| `user_sessions.csv` | HasSession computer ↔ utente |
| `relationships_everyone.csv` (e Auth Users, Domain Users, …) | Relazioni da principal eccessivamente ampi |
| `overprivileged_relationships.csv` | Relazioni combinate di Everyone/Auth/Domain Users/… |
| `computer_adminto_computer.csv` | Macchina → macchina AdminTo |
| `dual_privileged_and_local_admin.csv` | Membri DA/EA che hanno anche AdminTo (tiering) |
| `bulk_adminto_hosts.csv` | Principal classificati in base al numero di host AdminTo |
| `index.csv` | Indice del report (file → conteggio righe) |
### 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
---
## Riferimento flag
### Pacchetti report, profili, dossier, deliverable (v1.4+)
| Flag | Scopo |
|------|---------|
| `--from-user` / `--compromise USER` | **Dossier di compromissione** (in uscita): gruppi annidati, conteggi AdminTo/RDP/ACL, percorsi verso target ad alto valore |
| `--from-user-export [DIR]` | Esporta dossier txt/csv/json + elenchi **adminto_hosts** (predefinito `compromise-<user>/`) |
| `--busiest-paths [short\|all]` | Classifica i principal con il maggior numero di percorsi verso target ad alto valore |
| `--path-break` | Consiglia quali relazioni rimuovere per spezzare il maggior numero di percorsi di attacco |
| `--inventory` | Inventario strutturale + età password + account stagnanti + privilegi |
| `--password-age` / `--stale-accounts` / `--privilege-inventory` | Moduli di inventario individuali |
| `--owned-inventory` | Inventario AdminTo / MemberOf per i principal specificati da `--owned` / `--owned-file` |
| `--owned-file FILE` | Principal posseduti delimitati per riga (si uniscono a `--owned`) |
| `--from-user-file FILE` | Foothold delimitati per riga per i dossier di compromissione (si uniscono a `--from-user`) |
| `--report-pack DIR` | Suite HTML multipagina + `index.html` + CSV per sezione |
| `--csv-pack DIR` | **Pacchetto multi-CSV in stile PlumHound** (inventario + overpriv + report AdminTo + `index.csv`) |
| `--export-zip [FILE]` | Comprime in uno zip una directory `--report-pack` o `--csv-pack` in un unico deliverable |
| `--profile FILE\|name` | Profilo di analisi YAML (`quick`, `quick-wins`, `adcs-heavy`, `hygiene`, o percorso) |
| `--log-file [FILE]` | Log di esecuzione append-friendly (default `bloodbash.log`) |
| `--all-findings` | Al termine dell'esecuzione: stampa una tabella di **ogni** finding (anche se vuota) |
### Altre flag utili
| Flag | Scopo |
|------|---------|
| `--all` | Esegue ogni modulo di analisi (le sezioni AD vuote sono soppresse) |
| `--quick-wins` | **Triage day-0 ad alto segnale** (anche il **default** senza flag di check; implica `--fast`) |
| `--merge PATH…` | Directory o zip SharpHound/AzureHound aggiuntivi da unire in un unico grafo |
| `--trust` | Controlli su trust di dominio / abuso del SID filtering |
| `--wizard` | Selettore interattivo di modalità (quick-wins / full / dossier / profile) |
| `--help-advanced` | Tabelle complete delle flag + tutti gli esempi (il `--help` breve è solo start-here) |
| `--fast` | Limita il pathfinding ai target principali in stile DA/EA (non uno skip completo). Si attiva automaticamente per grafi grandi con `--all` |
| `--domain X` | Filtra su un singolo dominio AD o Azure `tenantId` (senza distinzione tra maiuscole e minuscole) |
| `--list-domains` | Elenca i domini AD / tenant Azure nella raccolta ed esce |
| `--owned a,b` | Percorsi **verso** i principal posseduti (in ingresso) |
| `--owned-file FILE` | Come `--owned`, da un file delimitato per righe (commenti `#` consentiti) |
| `--from-user-file FILE` | Come `--from-user`, da un file delimitato per righe |
| `--path-from` / `--path-to` | Percorsi più brevi arbitrari |
| `--inspect NODE` | Scarica proprietà + archi per un nodo |
| `--indirect` | Includi percorsi/diritti mediati da gruppi |
| `--deep-analysis` | Nesting dei gruppi lento + rilevamento cicli |
| `--privileged-roast` | Utenti Kerberoast/AS-REP annidati in gruppi DA/EA/altri gruppi privilegiati (o AdminCount) |
| `--gpo-content-dir DIR` | Analizza XML GPO (attività, script, cPassword) |
| `--export {md,json,html,csv,yaml}` | Scrivi un report (target ad alto valore + finding prioritizzati) |
| `--export-bh` | JSON del grafo in stile BloodHound |
| `--dot [FILE]` | Esportazione Graphviz DOT |
| `--db FILE` | Percorso SQLite del grafo (default: auto-cache in base all'impronta della raccolta in `~/.cache/bloodbash/`) |
| `--cache-dir DIR` | Sostituisce la directory auto-cache del grafo |
| `--no-cache` | Re-ingesta sempre; non leggere/scrivere la cache del grafo |
| `--rebuild-cache` | Forza la re-ingestione e aggiorna la cache del grafo |
| `--debug` | Log dettagliati di parsing/build |
Anche inclusi sotto `--all` / flag selettive: banner di stato della raccolta; interessante abuso ACL non-HV; tag di contesto privilegi sui finding roast; split DCSync inatteso; DC unconstrained vs non-DC; lettori LAPS; RBCD can-configure; percentuali della dashboard delle statistiche; sezioni vuote soppresse nelle esecuzioni ampie.
Toggle solo Azure: `--azure-privileged-roles`, `--azure-app-secrets`, `--azure-mfa-bypass`, `--azure-guest-access`, `--azure-sp-abuse`.
Esegui `bloodbash --help` per start-here + cheat sheet, oppure `--help-advanced` per le tabelle complete delle flag e gli esempi.
## Note su SharpHound CE
L'ingestione riconosce l'output dei collector moderni: `Members` dei gruppi, `AllowedToAct` (RBCD), Sessions / LocalGroups, `Trusts[]` del dominio, SID history, alias dei nomi delle proprietà CE ed estrazione zip sicura (Zip Slip bloccato). DCSync richiede **GetChanges + GetChangesAll**. Le etichette ADCS seguono SpecterOps ESC1-ESC8 (+ candidati ESC9/ESC13 quando le flag sono presenti). Gli oggetti computer dei domain controller restano target ad alto valore. Le flag `highvalue` delle workstation sui gruppi di amministratori locali non inondano il set HV.
## Modulo Metasploit
È un wrapper per la CLI SquidSec BloodBash (v1.4+) e riporta i finding nel database di Metasploit.
Le opzioni rispecchiano la CLI: controlli AD/Azure, inventario, busiest-paths / path-break,
dossier di compromissione `--from-user`, profili, report pack, esportazioni e cache del grafo (`--db` / auto-cache).```bash
cp modules/auxiliary/analyzer/bloodbash_analyzer.rb \
/opt/metasploit-framework/modules/auxiliary/analyzer/
# then in msfconsole: reload_all
I didn't receive any content to translate. The input field after "INPUT:" is empty. Please provide the chunk text you'd like translated.```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
I don't see any content after the "INPUT:" marker. The chunk appears to be empty, so there's nothing to translate.```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
Imposta PYTHON se python3 non è nel PATH. Indirizza BLOODBASH_PATH verso un binario
autonomo (non-.py) per bypassare l'interprete Python. Il filtraggio dei domini non fa
distinzione tra maiuscole e minuscole (corrisponde alla 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
### Corpus sintetico SharpHound (regressione ad alta entropia)
I dump di esempio pubblici sono piccoli e a bassa entropia. Per la regressione dei rilevatori forniamo un **lab sintetico SharpHound CE** (`testData/synthetic-corp-lab/`) con ground truth noto (DCSync inatteso, scrittura GPO per Auth Users, bulk can-configure RBCD, ESC1, roast, miscela LAPS, ecc.). Nessun dato reale di engagement.```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) esegue i test unitari/di integrazione e run_scenario_battery.py --count 20 --seed 42
(20 catene di engagement). La protezione del branch richiede lo status check test.
Helper di accuratezza (nessun dato cliente):```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
### Build locale del binario```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 (a ogni push su main) esegue i test, compila binari single-file per Linux + Windows con PyInstaller e pubblica una Release con nomi di asset stabili per i link /releases/latest/download/... sopra. I tag hanno la forma v1.4.1-build.N.
MIT - solo per test di sicurezza autorizzati e red teaming.
BloodBash è un progetto open source creato e gestito da SquidSec.
| Organizzazione | SquidSec |
| Sito web | https://squidoffense.com/ |
| Versione app | v1.4.2 |
| Ultimo binario | |
| Licenza | MIT |
| Runtime (sorgente) | Python 3.9+ |
| Credenziali | Kerberoast, AS-REP, privileged roast, password-in-description, PasswordNotRequired |
| Operazioni | Sessioni / riepilogo amministratori locali, stato della raccolta |
| Percorsi | Percorsi più brevi per HV, percorsi brevi più trafficati, path-break |
| Flag | Significato |
|---|
--from-user / --compromise | Crea dossier (gruppi annidati, diritti, percorsi HV) |
--from-user-export [DIR] | Scrive elenchi txt/csv/json (predefinito compromise-<user>/) |
--owned / --owned-file | Diverso: percorsi verso quel principal (in entrata); il file è delimitato da linee |