
BadZure automatise le déploiement de locataires Entra ID et d'abonnements Azure volontairement mal configurés, les peuplant de diverses entités et de chemins d'attaque configurables et exploitables.
BadZure est un outil Python qui automatise la création d'environnements Azure mal configurés, permettant aux équipes de sécurité de simuler des techniques d'adversaire, de développer et tester des contrôles de détection, et d'exécuter des exercices d'équipe pourpre à travers l'infrastructure Entra ID et Azure. Il utilise Terraform pour peupler les locataires Entra ID et les abonnements Azure avec des entités et des configurations erronées intentionnelles, produisant des chemins d'attaque complets qui couvrent les couches d'identité et d'infrastructure cloud.
BadZure automatise la création d'utilisateurs, de groupes, d'inscriptions d'application, de principaux de service, d'unités administratives et de ressources Azure telles que des coffres de clés, des comptes de stockage, des machines virtuelles, des applications logiques, des comptes d'automatisation, des applications de fonction, des comptes Cosmos DB et des groupes de ressources. Pour simuler un locataire réaliste, il attribue aléatoirement des rôles Entra ID, des autorisations Graph et des autorisations d'accès aux ressources Azure à des principaux de sécurité sélectionnés, imitant la prolifération organique des autorisations présente dans les environnements réels. Par-dessus cette base réaliste, BadZure superpose des configurations erronées intentionnelles via des chemins d'attaque configurables, produisant des chaînes d'élévation de privilèges exploitables pour la simulation d'adversaire.
L'avantage clé de BadZure est sa capacité à peupler et vider rapidement les locataires avec des configurations, un accès initial préconfiguré et des chemins d'attaque intentionnels, facilitant une simulation d'adversaire et un développement de détection continus et itératifs. Il est conçu pour les praticiens de la sécurité souhaitant explorer et comprendre la sécurité d'Entra ID et d'Azure, les mauvaises configurations des ressources cloud et les techniques d'attaque modernes natives du cloud.
BadZure a été initialement écrit pour héberger l'atelier Azure AD Battle School: Hands-on Attack and Defense à X33fcon 2023.
Un environnement Azure peuplé avec BadZure permet désormais aux équipes rouges et bleues de :
BadZure crée des chemins d'attaque qui supposent que l'identité d'accès initial a déjà été compromise. Chaque chemin d'attaque commence par un compte utilisateur ou un principal de service compromis, simulant des scénarios réels où un attaquant a obtenu l'accès par vol d'identifiants, hameçonnage, adversaire au milieu ou d'autres techniques d'accès initial.
BadZure fournit les identifiants de ces identités compromises, permettant aux praticiens de la sécurité de commencer immédiatement à explorer les chemins d'élévation de privilèges sans avoir à simuler la compromission initiale. Cette approche permet aux équipes de se concentrer sur la compréhension et la défense contre les techniques d'attaque post-compromission dans les environnements Azure et Entra ID.
BadZure prend en charge sept chemins d'attaque distincts d'élévation de privilèges qui introduisent des configurations erronées à travers les couches d'identité Entra ID et d'infrastructure cloud Azure :
Chaque chemin d'attaque peut être configuré avec des attributions de rôles spécifiques ou aléatoires et prend en charge divers types de principaux selon la technique. Pour des options de configuration détaillées et des descriptions des chemins d'attaque, reportez-vous à la documentation.
Un graphique généré par BloodHound, illustrant les chemins d'attaque que BadZure peut créer, est présenté ci-dessous.
La création d'un abonnement Azure vous fournira également un locataire Entra ID.
Remarque : BadZure utilise uniquement les fonctionnalités du niveau gratuit d'Entra ID et n'engendre pas de frais de licence supplémentaires, bien que les ressources Azure comme les machines virtuelles et les applications de fonction entraînent des frais de calcul standard.
git clone https://github.com/mvelazc0/BadZure
cd BadZure
# Créer un environnement virtuel
python -m venv venv
# Activer l'environnement virtuel
# Sur Windows
venv\Scripts\activate
# Sur Unix ou MacOS
source venv/bin/activate
# Installer les dépendances
pip install -r requirements.txt
Vous devez être connecté en tant qu'Administrateur général dans Entra ID et avoir le rôle Propriétaire RBAC sur l'abonnement Azure :
az login
# Afficher le menu d'aide
python badzure.py --help
# Peupler un locataire et configurer tous les chemins d'attaque avec le fichier de configuration par défaut badzure.yml
python badzure.py build
# Peupler un locataire et configurer tous les chemins d'attaque avec un fichier de configuration différent
python badzure.py build --config config.yml
# Afficher les ressources créées dans le locataire Entra ID
python badzure.py show
# Détruire toutes les identités créées avec une journalisation détaillée
python badzure.py destroy --verbose
La documentation complète est disponible sur www.badzure.com, y compris le guide Démarrage, la Référence de configuration et les descriptions détaillées des Chemins d'attaque.
Ce projet est sous licence Apache 2.0 - consultez le fichier LICENSE pour plus de détails.