
Kit de ferramentas Go para avaliações de segurança autorizadas no Azure: enumera assinaturas e recursos, audita configurações incorretas e ataca o armazenamento público de Blob de forma anônima.
azpt)🚧 Beta pública. O
azptestá em desenvolvimento ativo — comandos, flags e formatos de saída ainda podem mudar entre versões. Relatos de bugs e feedback são bem-vindos via issues no GitHub.
O azpt é um toolkit em Go para avaliações de segurança autorizadas no Azure. Ele funciona
a partir de duas perspectivas:
⚠️ Apenas para uso autorizado. Execute isto somente contra tenants, assinaturas e contas de armazenamento para as quais você tenha permissão escrita explícita de teste. Os comandos anônimos de
blobacessam infraestrutura de terceiros pela internet — limite-os ao seu engajamento.
Todos os exemplos abaixo têm como alvo uma fictícia Acme Corp, cujo site de marketing estático
é hospedado em uma conta de armazenamento do Azure chamada acmewebsite
(https://acmewebsite.blob.core.windows.net).
A documentação completa está em docs/:
docs/guides/) — por recurso: como a
técnica funciona, a permissão exata de RBAC do Azure / Microsoft Graph necessária,
as principais flags explicadas, exemplos e notas de OPSEC / detecção — organizados por
fase do engajamento.docs/guides/scenarios/)
— narrativas de ataque ponta a ponta que encadeiam comandos entre fases (token →
Global Admin, tomada de controle via Golden SAML, roubo de PRT, phishing de consentimento → M365,
movimento lateral com identidade gerenciada, caça offline no diretório, phishing por
device-code), cada uma com OPSEC e limpeza.docs/reference/) — uma página
gerada automaticamente por comando com todas as flags (nome, abreviação, tipo, valor padrão,
descrição). Regenere com azpt gen-docs docs/reference; as mesmas informações
são exibidas por azpt <command> --help.Baixe o arquivo para sua plataforma na última release, verifique-o e extraia:```bash
tar -xzf azpt_.tar.gz sha256sum -c --ignore-missing SHA256SUMS
Os binários são estáticos (`CGO_ENABLED=0`) e não precisam de dependências de runtime.
As builds são publicadas para linux e darwin em amd64 e arm64.
Os binários para Windows não são publicados. Os helpers exclusivos para Windows (`prt extract`,
`adconnect sync-creds`, DPAPI) ainda podem ser compilados a partir do código-fonte com `go build -o
azpt.exe .` num host Windows.
### A partir do código-fonte
Requer Go 1.26+.```bash
git clone https://github.com/hac01/azure-pentesting-suite.git
cd azure-pentesting-suite
go build -o azpt .
Isso produz um binário azpt autocontido na raiz do repositório. Você também pode executar
sem compilar via go run . <command> a partir do diretório do repositório.
Não é necessário login no Azure para os comandos anônimos blob:```bash
./azpt blob hunt --account acmewebsite
Com credenciais Azure (`az login`), avalie a partir do interior — tanto o plano de recursos (ARM) quanto o diretório (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)
Uma cadeia comum: recuperar uma credencial anonimamente com blob hunt, iniciar sessão como
esse utilizador (az login), verificar o que pode fazer com enum access, e depois saquear quaisquer
Key Vaults que consiga alcançar:```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)
---
## Autenticação
Os comandos anônimos `blob` **não** precisam de autenticação. Todo o resto usa
a **cadeia de credenciais padrão** do Azure, que tenta, em ordem: variáveis
de ambiente, identidade de carga de trabalho, identidade gerenciada e a CLI do Azure (`az login`).```bash
az login
./azpt enum subscriptions
Forçar autenticação explícita com service-principal (útil para uma identidade de avaliação com escopo definido) com flags ou variáveis de ambiente. Ainda não tem uma? az ad sp create-for-rbac --name azpt-assessment --role Reader --scopes /subscriptions/<subscription-id> cria uma — consulte Getting
started para o
passo a passo completo, incluindo as permissões do Graph que o RBAC sozinho não concede:```bash
./azpt --tenant --client-id --client-secret
enum subscriptions
export AZURE_TENANT_ID=... AZURE_CLIENT_ID=... AZURE_CLIENT_SECRET=... ./azpt enum subscriptions
**Autenticação baseada em certificado** (PFX ou PEM):```bash
./azpt --tenant <tenant-id> --client-id <app-id> \
--certificate ./cert.pfx --cert-password 'P@ss' \
enum subscriptions
Restrinja execuções autenticadas a assinaturas específicas com --subscription
(repetível); o padrão é todas as assinaturas que o principal consegue alcançar:```bash
./azpt --subscription 00000000-1111-2222-3333-444444444444 audit storage
---
## Referência de comandos
🧪 marca um comando ainda em **beta**: implementado e utilizável, mas menos
testado em batalha do que o resto do conjunto — espere arestas mais ásperas, e por favor
reporte os problemas que encontrar.