
BadZure automatiza a implantação de locatários do Entra ID e assinaturas do Azure intencionalmente mal configurados, preenchendo-os com diversas entidades e caminhos de ataque configuráveis e percorríveis.
BadZure é uma ferramenta Python que automatiza a criação de ambientes Azure mal configurados, permitindo que equipes de segurança simulem técnicas adversárias, desenvolvam e testem controles de detecção e realizem exercícios de equipe roxa na infraestrutura do Entra ID e Azure. Ela usa Terraform para preencher locatários do Entra ID e assinaturas do Azure com entidades e configurações incorretas intencionais, produzindo caminhos de ataque completos que abrangem camadas de identidade e infraestrutura em nuvem.
BadZure automatiza a criação de usuários, grupos, registros de aplicativos, diretores de serviço, unidades administrativas e recursos do Azure, como Cofres de Chaves, Contas de Armazenamento, Máquinas Virtuais, Aplicativos Lógicos, Contas de Automação, Aplicativos de Função, Contas do Cosmos DB e Grupos de Recursos. Para simular um locatário realista, ela atribui aleatoriamente funções do Entra ID, permissões do Graph e permissões de acesso a recursos do Azure a entidades de segurança selecionadas, imitando a proliferação orgânica de permissões encontrada em ambientes reais. Sobre essa linha de base realista, o BadZure adiciona configurações incorretas intencionais por meio de caminhos de ataque configuráveis, produzindo cadeias de escalonamento de privilégio exploráveis para simulação de adversários.
A principal vantagem do BadZure é sua capacidade de preencher e limpar rapidamente locatários com configurações, acesso inicial pré-configurado e caminhos de ataque intencionais, facilitando a simulação contínua e iterativa de adversários e o desenvolvimento de detecção. É projetado para profissionais de segurança interessados em explorar e entender a segurança do Entra ID e Azure, configurações incorretas de recursos em nuvem e técnicas modernas de ataque nativas da nuvem.
BadZure foi inicialmente escrito para sediar o workshop Azure AD Battle School: Hands-on Attack and Defense na X33fcon 2023.
Um ambiente Azure populado com BadZure agora permite que equipes vermelhas e azuis:
BadZure cria caminhos de ataque que assumem que a identidade de acesso inicial já foi comprometida. Cada caminho de ataque começa com uma conta de usuário ou diretor de serviço comprometido, simulando cenários do mundo real onde um atacante obteve acesso através de roubo de credenciais, phishing, adversário no meio ou outras técnicas de acesso inicial.
BadZure fornece as credenciais para essas identidades comprometidas, permitindo que profissionais de segurança comecem imediatamente a explorar caminhos de escalonamento de privilégio sem precisar simular o comprometimento inicial. Essa abordagem permite que as equipes se concentrem em entender e se defender contra técnicas de ataque pós-comprometimento em ambientes Azure e Entra ID.
BadZure suporta sete caminhos distintos de escalonamento de privilégio que introduzem configurações incorretas nas camadas de identidade do Entra ID e infraestrutura em nuvem do Azure:
Cada caminho de ataque pode ser configurado com atribuições de função específicas ou aleatórias e suporta vários tipos de entidades dependendo da técnica. Para opções de configuração detalhadas e descrições dos caminhos de ataque, consulte a documentação.
Um gráfico gerado pelo BloodHound, mostrando os caminhos de ataque que o BadZure pode criar, é exibido abaixo.
Criar uma assinatura do Azure também fornecerá um locatário do Entra ID.
Nota: O BadZure usa apenas recursos do nível Gratuito do Entra ID e não incorrerá em custos adicionais de licenciamento, embora recursos do Azure como Máquinas Virtuais e Aplicativos de Função gerem encargos padrão de computação.
git clone https://github.com/mvelazc0/BadZure
cd BadZure
# Crie um ambiente virtual
python -m venv venv
# Ative o ambiente virtual
# No Windows
venv\Scripts\activate
# No Unix ou MacOS
source venv/bin/activate
# Instale as dependências
pip install -r requirements.txt
Você deve estar logado como Administrador Global no Entra ID e ter a função Proprietário RBAC na assinatura do Azure:
az login
# Exibe o menu de ajuda
python badzure.py --help
# Popula um locatário e configura todos os caminhos de ataque usando o arquivo de configuração padrão badzure.yml
python badzure.py build
# Popula um locatário e configura todos os caminhos de ataque com um arquivo de configuração diferente
python badzure.py build --config config.yml
# Mostra os recursos criados no locatário do Entra ID
python badzure.py show
# Destroi todas as identidades criadas com log detalhado
python badzure.py destroy --verbose
A documentação completa está disponível em www.badzure.com, incluindo o guia Introdução, a Referência de Configuração e descrições detalhadas dos Caminhos de Ataque.
Este projeto está licenciado sob a Licença Apache 2.0 - consulte o arquivo LICENSE para obter detalhes.