
BadZure automatisiert die Bereitstellung von absichtlich falsch konfigurierten Entra ID-Mandanten und Azure-Abonnements und füllt diese mit verschiedenen Entitäten und konfigurierbaren, durchquerbaren Angriffspfaden.
BadZure ist ein Python-Tool, das die Erstellung fehlkonfigurierter Azure-Umgebungen automatisiert, sodass Sicherheitsteams Angreifertechniken simulieren, Erkennungskontrollen entwickeln und testen sowie Purple-Team-Übungen über Entra ID und die Azure-Infrastruktur hinweg durchführen können. Es verwendet Terraform, um Entra ID-Mandanten und Azure-Abonnements mit Entitäten und absichtlichen Fehlkonfigurationen zu befüllen, wodurch vollständige Angriffspfade entstehen, die sich über Identitäts- und Cloud-Infrastrukturebenen erstrecken.
BadZure automatisiert die Erstellung von Benutzern, Gruppen, Anwendungsregistrierungen, Dienstprinzipalen, Verwaltungseinheiten und Azure-Ressourcen wie Key Vaults, Storage Accounts, Virtual Machines, Logic Apps, Automation Accounts, Function Apps, Cosmos DB-Konten und Ressourcengruppen. Um einen realistischen Mandanten zu simulieren, weist es ausgewählten Sicherheitsprinzipalen zufällig Entra ID-Rollen, Graph-Berechtigungen und Azure-Ressourcenzugriffsberechtigungen zu und ahmt so die organisatorische Berechtigungsausbreitung nach, die in echten Umgebungen vorkommt. Auf dieser realistischen Grundlage legt BadZure durch konfigurierbare Angriffspfade absichtliche Fehlkonfigurationen an, wodurch ausnutzbare Privilegieneskalationsketten für die Angreifersimulation entstehen.
Der entscheidende Vorteil von BadZure ist die Fähigkeit, Mandanten schnell mit Konfigurationen, vorkonfiguriertem Erstzugriff und absichtlichen Angriffspfaden zu befüllen und zu bereinigen, was eine kontinuierliche und iterative Angreifersimulation und Erkennungsentwicklung ermöglicht. Es wurde für Sicherheitspraktiker entwickelt, die sich für die Erkundung und das Verständnis von Entra ID- und Azure-Sicherheit, Cloud-Ressourcen-Fehlkonfigurationen und modernen Cloud-nativen Angriffstechniken interessieren.
BadZure wurde ursprünglich geschrieben, um den Workshop Azure AD Battle School: Hands-on Attack and Defense auf der X33fcon 2023 zu hosten.
Eine mit BadZure befüllte Azure-Umgebung ermöglicht es roten und blauen Teams nun:
BadZure erstellt Angriffspfade, die davon ausgehen, dass die Identität für den Erstzugriff bereits kompromittiert ist. Jeder Angriffspfad beginnt mit einem kompromittierten Benutzerkonto oder Dienstprinzipal und simuliert reale Szenarien, in denen ein Angreifer durch Credential Diebstahl, Phishing, Man-in-the-Middle oder andere Techniken des Erstzugriffs Zugang erhalten hat.
BadZure stellt die Anmeldeinformationen für diese kompromittierten Identitäten bereit, sodass Sicherheitspraktiker sofort mit der Erkundung von Privilegieneskalationspfaden beginnen können, ohne die anfängliche Kompromittierung simulieren zu müssen. Dieser Ansatz ermöglicht es Teams, sich auf das Verständnis und die Verteidigung gegen Post-Kompromittierungs-Angriffstechniken in Azure- und Entra ID-Umgebungen zu konzentrieren.
BadZure unterstützt sieben verschiedene Privilegieneskalations-Angriffspfade, die Fehlkonfigurationen sowohl auf der Entra ID-Identitäts- als auch auf der Azure-Cloud-Infrastrukturebene einführen:
Jeder Angriffspfad kann mit spezifischen oder zufälligen Rollenzuweisungen konfiguriert werden und unterstützt je nach Technik verschiedene Prinzipaltypen. Detaillierte Konfigurationsoptionen und Angriffspfadbeschreibungen finden Sie in der Dokumentation.
Ein mit BloodHound erstellter Graph, der die Angriffspfade zeigt, die BadZure erstellen kann, ist unten dargestellt.
Das Erstellen eines Azure-Abonnements stellt Ihnen auch einen Entra ID-Mandanten zur Verfügung.
Hinweis: BadZure verwendet ausschließlich Funktionen des kostenlosen Entra ID-Tarifs und verursacht keine zusätzlichen Lizenzkosten. Allerdings fallen für Azure-Ressourcen wie Virtual Machines und Function Apps die üblichen Compute-Gebühren an.
git clone https://github.com/mvelazc0/BadZure
cd BadZure
# Virtuelle Umgebung erstellen
python -m venv venv
# Virtuelle Umgebung aktivieren
# Unter Windows
venv\Scripts\activate
# Unter Unix oder MacOS
source venv/bin/activate
# Abhängigkeiten installieren
pip install -r requirements.txt
Sie müssen als Globaler Administrator in Entra ID angemeldet sein und die Owner-RBAC-Rolle für das Azure-Abonnement besitzen:
az login
# Hilfemenü anzeigen
python badzure.py --help
# Einen Mandanten befüllen und alle Angriffspfade mit der Standardkonfigurationsdatei badzure.yml konfigurieren
python badzure.py build
# Einen Mandanten befüllen und alle Angriffspfade mit einer anderen Konfigurationsdatei konfigurieren
python badzure.py build --config config.yml
# Die erstellten Ressourcen im Entra ID-Mandanten anzeigen
python badzure.py show
# Alle erstellten Identitäten mit ausführlicher Protokollierung löschen
python badzure.py destroy --verbose
Die vollständige Dokumentation ist verfügbar unter www.badzure.com, einschließlich der Anleitung Erste Schritte, der Konfigurationsreferenz und detaillierten Angriffspfad-Beschreibungen.
Dieses Projekt ist unter der Apache 2.0-Lizenz lizenziert – siehe die LICENSE-Datei für Details.