
BadZureは、意図的に誤構成されたEntra IDテナントとAzureサブスクリプションの展開を自動化し、多様なエンティティと設定可能で横断可能な攻撃経路を設定します。
BadZure は、セキュリティチームが敵対的技術のシミュレーション、検出制御の開発とテスト、Entra ID および Azure インフラストラクチャ全体でのパープルチーム演習を実施できるようにするために、設定ミスのある Azure 環境の作成を自動化する Python ツールです。Terraform を使用して Entra ID テナントと Azure サブスクリプションにエンティティと意図的な設定ミスを設定し、ID とクラウドインフラストラクチャのレイヤーにわたる完全な攻撃経路を生成します。
BadZure は、ユーザー、グループ、アプリケーション登録、サービスプリンシパル、管理単位、および Key Vault、ストレージアカウント、仮想マシン、Logic Apps、Automation Accounts、Function Apps、Cosmos DB アカウント、リソースグループなどの Azure リソースの作成を自動化します。現実的なテナントをシミュレートするために、選択したセキュリティプリンシパルに Entra ID ロール、Graph 権限、Azure リソースアクセス権限をランダムに割り当て、実際の環境に見られる有機的な権限の散乱を模倣します。この現実的なベースラインに加えて、BadZure は設定可能な攻撃経路を通じて意図的な設定ミスを重ね、敵対的シミュレーションのための悪用可能な権限昇格チェーンを生成します。
BadZure の主な利点は、テナントの設定、事前構成された初期アクセス、意図的な攻撃経路を迅速に構築および削除できることです。これにより、継続的かつ反復的な敵対的シミュレーションと検出制御の開発が容易になります。Entra ID および Azure セキュリティ、クラウドリソースの設定ミス、現代のクラウドネイティブ攻撃技術の調査と理解に興味があるセキュリティ実践者向けに設計されています。
BadZure は当初、X33fcon 2023 で開催された Azure AD Battle School: Hands-on Attack and Defense ワークショップをホストするために作成されました。
BadZure で構築された Azure 環境により、レッドチームとブルーチームは以下を実行できます。
BadZure は、初期アクセス ID がすでに侵害されていることを前提とした攻撃経路を作成します。各攻撃経路は、資格情報の盗難、フィッシング、中間者攻撃、またはその他の初期アクセス技術によって攻撃者がアクセスを獲得した現実世界のシナリオをシミュレートして、侵害されたユーザーアカウントまたはサービスプリンシパルから始まります。
BadZure はこれらの侵害された ID の資格情報を提供するため、セキュリティ実践者は初期侵害をシミュレートすることなく、すぐに権限昇格経路の探索を開始できます。このアプローチにより、チームは Azure および Entra ID 環境における侵害後の攻撃技術の理解と防御に集中できます。
BadZure は、Entra ID の ID レイヤーと Azure クラウドインフラストラクチャレイヤーの両方に設定ミスを導入する、7 つの異なる権限昇格攻撃経路をサポートしています。
各攻撃経路は、特定のロール割り当てまたはランダムなロール割り当てで設定でき、手法に応じてさまざまなプリンシパルタイプをサポートします。詳細な設定オプションと攻撃経路の説明については、ドキュメントを参照してください。
以下は、BadZure が作成できる攻撃経路を示す BloodHound が生成したグラフです。
Azure サブスクリプションを作成すると、Entra ID テナントも提供されます。
注: BadZure は Entra ID Free 層の機能のみを使用し、追加のライセンスコストは発生しませんが、仮想マシンや Function Apps などの Azure リソースには標準のコンピューティング料金が発生します。
git clone https://github.com/mvelazc0/BadZure
cd BadZure
# Create a virtual environment
python -m venv venv
# Activate the virtual environment
# On Windows
venv\Scripts\activate
# On Unix or MacOS
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
Entra ID のグローバル管理者としてログインし、Azure サブスクリプションでOwner RBAC ロールを持っている必要があります。
az login
# Display the help menu
python badzure.py --help
# Populate a tenant and configure all attack paths using the default badzure.yml config file
python badzure.py build
# Populate a tenant and configure all attack paths with a different config file
python badzure.py build --config config.yml
# Show the created resources in Entra ID tenant
python badzure.py show
# Destroy all created identities with verbose logging
python badzure.py destroy --verbose
完全なドキュメントは www.badzure.com で公開されており、Getting Started ガイド、Configuration Reference、および詳細な Attack Path の説明が含まれています。
このプロジェクトは Apache 2.0 ライセンスの下で提供されています。詳細については LICENSE ファイルを参照してください。