
BadZure는 의도적으로 잘못 구성된 Entra ID 테넌트와 Azure 구독의 배포를 자동화하며, 다양한 엔티티와 구성 가능하고 탐색 가능한 공격 경로로 채웁니다.
BadZure는 보안 팀이 적의 기술을 시뮬레이션하고, 탐지 제어를 개발 및 테스트하며, Entra ID 및 Azure 인프라 전반에 걸쳐 퍼플 팀 훈련을 수행할 수 있도록, 잘못 구성된 Azure 환경 생성을 자동화하는 Python 도구입니다. Terraform을 사용하여 Entra ID 테넌트와 Azure 구독에 엔터티와 의도적인 잘못된 구성을 채워, ID 및 클라우드 인프라 계층에 걸친 완전한 공격 경로를 생성합니다.
BadZure는 사용자, 그룹, 애플리케이션 등록, 서비스 주체, 관리 단위, 그리고 Key Vault, Storage Accounts, Virtual Machines, Logic Apps, Automation Accounts, Function Apps, Cosmos DB Accounts, Resource Groups와 같은 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 클라우드 인프라 계층 모두에 걸쳐 잘못된 구성을 도입하는 일곱 가지의 고유한 권한 상승 공격 경로를 지원합니다.
각 공격 경로는 특정 또는 무작위 역할 할당으로 구성할 수 있으며, 기술에 따라 다양한 주체 유형을 지원합니다. 자세한 구성 옵션과 공격 경로 설명은 문서를 참조하세요.
아래는 BadZure가 생성할 수 있는 공격 경로를 보여주는 BloodHound 생성 그래프입니다.
Azure 구독을 생성하면 Entra ID 테넌트도 제공됩니다.
참고: BadZure는 Entra ID Free 계층 기능만 사용하며 추가 라이선스 비용이 발생하지 않지만, Virtual Machines 및 Function Apps와 같은 Azure 리소스는 표준 컴퓨팅 요금이 부과됩니다.
git clone https://github.com/mvelazc0/BadZure
cd BadZure
# 가상 환경 생성
python -m venv venv
# 가상 환경 활성화
# Windows의 경우
venv\Scripts\activate
# Unix 또는 MacOS의 경우
source venv/bin/activate
# 종속성 설치
pip install -r requirements.txt
Entra ID에서 전역 관리자로, Azure 구독에서 Owner RBAC 역할을 가진 상태로 로그인해야 합니다.
az login
# 도움말 메뉴 표시
python badzure.py --help
# 기본 badzure.yml 구성 파일을 사용하여 테넌트를 채우고 모든 공격 경로 구성
python badzure.py build
# 다른 구성 파일로 테넌트를 채우고 모든 공격 경로 구성
python badzure.py build --config config.yml
# 생성된 리소스를 Entra ID 테넌트에 표시
python badzure.py show
# 생성된 모든 ID를 상세 로깅과 함께 제거
python badzure.py destroy --verbose
전체 문서는 www.badzure.com에서 확인할 수 있으며, 시작하기 가이드, 구성 참조, 상세한 공격 경로 설명이 포함되어 있습니다.
이 프로젝트는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.