
BadZure automatizza la distribuzione di tenant Entra ID e sottoscrizioni Azure intenzionalmente configurati in modo errato, popolandoli con diverse entità e percorsi di attacco configurabili e percorribili.
BadZure è uno strumento Python che automatizza la creazione di ambienti Azure malconfigurati, consentendo ai team di sicurezza di simulare tecniche avversarie, sviluppare e testare controlli di rilevamento ed eseguire esercitazioni purple team attraverso l'infrastruttura Entra ID e Azure. Utilizza Terraform per popolare i tenant Entra ID e le sottoscrizioni Azure con entità e malconfigurazioni intenzionali, producendo percorsi di attacco completi che attraversano i livelli di identità e infrastruttura cloud.
BadZure automatizza la creazione di utenti, gruppi, registrazioni di applicazioni, entità servizio, unità amministrative e risorse Azure come Key Vault, account di archiviazione, macchine virtuali, app per la logica, account di automazione, app per le funzioni, account Cosmos DB e gruppi di risorse. Per simulare un tenant realistico, assegna in modo casuale ruoli Entra ID, autorizzazioni Graph e autorizzazioni di accesso alle risorse Azure a entità selezionate, imitando la proliferazione organica di permessi presente negli ambienti reali. Su questa base realistica, BadZure aggiunge malconfigurazioni intenzionali attraverso percorsi di attacco configurabili, producendo catene di escalation dei privilegi sfruttabili per la simulazione avversaria.
Il vantaggio principale di BadZure è la capacità di popolare e ripulire rapidamente i tenant con configurazioni, accesso iniziale preconfigurato e percorsi di attacco intenzionali, facilitando simulazioni avversarie e lo sviluppo di rilevamento continui e iterativi. È progettato per professionisti della sicurezza interessati a esplorare e comprendere la sicurezza di Entra ID e Azure, le malconfigurazioni delle risorse cloud e le moderne tecniche di attacco native del cloud.
BadZure è stato scritto inizialmente per ospitare il workshop Azure AD Battle School: Hands-on Attack and Defense a X33fcon 2023.
Un ambiente Azure popolato con BadZure consente ora ai team red e blue di:
BadZure crea percorsi di attacco che presuppongono che l'identità con accesso iniziale sia già stata compromessa. Ogni percorso di attacco inizia con un account utente o un'entità servizio compromessi, simulando scenari reali in cui un attaccante ha ottenuto l'accesso attraverso furto di credenziali, phishing, adversary in the middle o altre tecniche di accesso iniziale.
BadZure fornisce le credenziali per queste identità compromesse, consentendo ai professionisti della sicurezza di iniziare immediatamente ad esplorare percorsi di escalation dei privilegi senza dover simulare la compromissione iniziale. Questo approccio permette ai team di concentrarsi sulla comprensione e difesa delle tecniche di attacco post-compromissione in ambienti Azure e Entra ID.
BadZure supporta sette distinti percorsi di attacco di escalation dei privilegi che introducono malconfigurazioni sia a livello di identità Entra ID che di infrastruttura cloud Azure:
Ogni percorso di attacco può essere configurato con assegnazioni di ruolo specifiche o casuali e supporta vari tipi di entità a seconda della tecnica. Per opzioni di configurazione dettagliate e descrizioni dei percorsi di attacco, fare riferimento alla documentazione.
Un grafico generato da BloodHound, che mostra i percorsi di attacco che BadZure può creare, è mostrato di seguito.
La creazione di una sottoscrizione Azure fornirà anche un tenant Entra ID.
Nota: BadZure utilizza solo funzionalità del livello gratuito di Entra ID e non comporterà costi di licenza aggiuntivi, sebbene risorse Azure come Macchine virtuali e App per le funzioni comporteranno i normali costi di calcolo.
git clone https://github.com/mvelazc0/BadZure
cd BadZure
# Crea un ambiente virtuale
python -m venv venv
# Attiva l'ambiente virtuale
# Su Windows
venv\Scripts\activate
# Su Unix o MacOS
source venv/bin/activate
# Installa le dipendenze
pip install -r requirements.txt
Devi aver effettuato l'accesso come Amministratore globale in Entra ID e avere il ruolo RBAC Proprietario sulla sottoscrizione Azure:
az login
# Visualizza il menu di aiuto
python badzure.py --help
# Popola un tenant e configura tutti i percorsi di attacco utilizzando il file di configurazione predefinito badzure.yml
python badzure.py build
# Popola un tenant e configura tutti i percorsi di attacco con un file di configurazione diverso
python badzure.py build --config config.yml
# Mostra le risorse create nel tenant Entra ID
python badzure.py show
# Distrugge tutte le identità create con log dettagliati
python badzure.py destroy --verbose
La documentazione completa è disponibile su www.badzure.com, inclusa la guida Per Iniziare, il Riferimento alla Configurazione e le descrizioni dettagliate dei Percorsi di Attacco.
Questo progetto è concesso in licenza con la licenza Apache 2.0 - vedere il file LICENSE per i dettagli.