
Azure 보안 평가를 위한 Go 툴킷: 구독 및 리소스를 열거하고, 잘못된 구성을 감사하며, 공용 Blob 스토리지를 익명으로 공격합니다.
azpt)🚧 퍼블릭 베타.
azpt는 활발히 개발 중입니다 — 명령, 플래그, 출력 형식은 릴리스 간에 변경될 수 있습니다. 버그 리포트와 피드백은 GitHub 이슈를 통해 환영합니다.
azpt는 승인된 Azure 보안 평가를 위한 Go 툴킷입니다. 두 가지
관점에서 동작합니다:
⚠️ 승인된 사용만 허용. 명시적인 서면 허가를 받아 테스트할 수 있는 테넌트, 구독, 스토리지 계정에만 이 도구를 실행하세요. 익명
blob명령은 인터넷을 통해 제3자 인프라에 접근합니다 — 반드시 계약 범위 내로 한정하세요.
아래 모든 예시는 정적 마케팅 사이트를 acmewebsite
(https://acmewebsite.blob.core.windows.net)라는 Azure 스토리지 계정에서
호스팅하는 가상의 Acme Corp을 대상으로 합니다.
전체 문서는 docs/에 있습니다:
docs/guides/) — 기능별: 기법이
어떻게 동작하는지, 필요한 정확한 Azure RBAC / Microsoft Graph 권한,
주요 플래그 설명, 예시, OPSEC / 탐지 노트 — 참여 단계별로 구성.docs/guides/scenarios/)
— 단계를 넘나드는 명령을 연결한 엔드투엔드 공격 서사 (토큰 →
Global Admin, Golden SAML 탈취, PRT 탈취, 동의 피싱 → M365,
관리 ID 측면 이동, 오프라인 디렉터리 헌트, 디바이스 코드
피싱), 각각 OPSEC과 정리 절차 포함.docs/reference/) — 명령별로
자동 생성된 페이지로 모든 플래그 (이름, 축약형, 타입, 기본값,
설명) 포함. azpt gen-docs docs/reference로 재생성; 동일한 정보가
azpt <command> --help로도 출력됩니다.최신 릴리스에서 사용 중인 플랫폼용 아카이브를 다운로드하고, 검증한 뒤 압축을 풉니다:```bash
tar -xzf azpt_.tar.gz sha256sum -c --ignore-missing SHA256SUMS
바이너리는 정적(`CGO_ENABLED=0`)이며 런타임 의존성이 필요하지 않습니다.
빌드는 linux와 darwin의 amd64 및 arm64용으로 게시됩니다.
Windows 바이너리는 게시되지 않습니다. Windows 전용 헬퍼(`prt extract`,
`adconnect sync-creds`, DPAPI)는 여전히 Windows 호스트에서 `go build -o
azpt.exe .`로 소스에서 빌드할 수 있습니다.
### 소스에서 빌드
Go 1.26+가 필요합니다.```bash
git clone https://github.com/hac01/azure-pentesting-suite.git
cd azure-pentesting-suite
go build -o azpt .
이것은 저장소 루트에 자체 포함된 azpt 바이너리를 생성합니다. 저장소 디렉터리에서 go run . <command>를 통해 빌드 없이 실행할 수도 있습니다.
익명 blob 명령에는 Azure 로그인이 필요하지 않습니다:```bash
./azpt blob hunt --account acmewebsite
Azure 자격 증명(`az login`)을 사용하여 내부에서 리소스 플레인(ARM)과 디렉터리(Entra ID / Graph)를 모두 평가합니다:```bash
./azpt enum whoami # who am I authenticated as?
./azpt enum subscriptions # what subscriptions can this principal see?
./azpt audit storage # misconfigured storage accounts
./azpt enum users # dump the Entra ID directory (Graph)
일반적인 체인: blob hunt로 자격 증명을 익명으로 복구하고, 해당 사용자로 로그인한 뒤(az login), enum access로 무엇을 할 수 있는지 확인하고, 접근 가능한 Key Vault를 탈취합니다:```bash
./azpt enum access # token scopes, directory roles, groups, RBAC roles
./azpt enum resources # find Key Vaults (type: vaults)
./azpt vault list --vault ext-contractors # secrets, keys, certs in that vault
./azpt vault dump --vault ext-contractors # read every secret value (the loot)
---
## 인증
익명 `blob` 명령은 인증이 **필요하지 않습니다**. 그 외의 모든 것은 Azure **기본 자격 증명 체인**을 사용하며, 이는 환경 변수, 워크로드 아이덴티티, 관리 ID, Azure CLI(`az login`) 순서로 시도합니다.```bash
az login
./azpt enum subscriptions
service-principal 인증을 플래그나 환경 변수로 명시적으로 강제합니다(범위가 지정된 평가 ID에 유용). 아직 없다면 az ad sp create-for-rbac --name azpt-assessment --role Reader --scopes /subscriptions/<subscription-id>로 하나를 생성할 수 있습니다 — RBAC만으로는 부여되지 않는 Graph 권한을 포함한 전체 안내는 시작하기를 참조하세요:```bash
./azpt --tenant --client-id --client-secret
enum subscriptions
export AZURE_TENANT_ID=... AZURE_CLIENT_ID=... AZURE_CLIENT_SECRET=... ./azpt enum subscriptions
**인증서 기반** 인증(PFX 또는 PEM):```bash
./azpt --tenant <tenant-id> --client-id <app-id> \
--certificate ./cert.pfx --cert-password 'P@ss' \
enum subscriptions
--subscription으로 인증된 실행 범위를 특정 구독으로 제한합니다(반복 가능). 기본값은 주체가 접근할 수 있는 모든 구독입니다:```bash
./azpt --subscription 00000000-1111-2222-3333-444444444444 audit storage
---
## 명령 레퍼런스
🧪는 아직 **베타** 단계인 명령을 나타냅니다: 구현되어 사용 가능하지만, 나머지 도구 모음보다 실전 검증이 덜 되어 있습니다 — 거친 부분이 있을 수 있으니, 문제가 발생하면 알려주시기 바랍니다.