
Kit de herramientas en Go para evaluaciones de seguridad autorizadas en Azure: enumera suscripciones y recursos, audita configuraciones incorrectas y ataca el almacenamiento público de Blob de forma anónima.
azpt)🚧 Beta pública.
azptestá en desarrollo activo — los comandos, flags y formatos de salida aún pueden cambiar entre versiones. Los informes de errores y comentarios son bienvenidos a través de los issues de GitHub.
azpt es un toolkit de Go para evaluaciones de seguridad de Azure autorizadas. Funciona
desde dos perspectivas:
⚠️ Solo para uso autorizado. Ejecuta esto únicamente contra tenants, suscripciones y cuentas de almacenamiento para las que tengas permiso escrito explícito de realizar pruebas. Los comandos
blobanónimos tocan infraestructura de terceros a través de internet — delimítalos al alcance de tu encargo.
Todos los ejemplos a continuación apuntan a una ficticia Acme Corp cuyo sitio de marketing estático
está alojado en una cuenta de almacenamiento de Azure llamada acmewebsite
(https://acmewebsite.blob.core.windows.net).
La documentación completa se encuentra en docs/:
docs/guides/) — por funcionalidad: cómo
funciona la técnica, el permiso exacto de Azure RBAC / Microsoft Graph que necesita,
los flags clave explicados, ejemplos y notas de OPSEC / detección — organizadas por
fase del encargo.docs/guides/scenarios/)
— narrativas de ataque de extremo a extremo que encadenan comandos a través de fases (token →
Global Admin, toma de control mediante Golden SAML, robo de PRT, phishing de consentimiento → M365,
movimiento lateral con identidad administrada, búsqueda offline en el directorio, phishing
por código de dispositivo), cada una con OPSEC y limpieza.docs/reference/) — una página
autogenerada por comando con todos los flags (nombre, abreviatura, tipo, valor predeterminado,
descripción). Regenera con azpt gen-docs docs/reference; la misma información
se imprime desde azpt <command> --help.Descarga el archivo para tu plataforma desde la última versión, verifícalo y extráelo:```bash
tar -xzf azpt_.tar.gz sha256sum -c --ignore-missing SHA256SUMS
Los binarios son estáticos (`CGO_ENABLED=0`) y no necesitan dependencias en tiempo de ejecución.
Las compilaciones se publican para linux y darwin en amd64 y arm64.
Los binarios de Windows no se publican. Los asistentes exclusivos de Windows (`prt extract`,
`adconnect sync-creds`, DPAPI) todavía se compilan desde el código fuente con `go build -o
azpt.exe .` en un host Windows.
### Desde el código fuente
Requiere Go 1.26+.```bash
git clone https://github.com/hac01/azure-pentesting-suite.git
cd azure-pentesting-suite
go build -o azpt .
Esto produce un binario azpt autocontenido en la raíz del repositorio. También puedes ejecutarlo
sin compilar mediante go run . <command> desde el directorio del repositorio.
No se necesita iniciar sesión en Azure para los comandos anónimos de blob:```bash
./azpt blob hunt --account acmewebsite
Con credenciales de Azure (`az login`), evalúa desde dentro — tanto el plano de recursos (ARM) como el directorio (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)
Una cadena común: recuperar una credencial de forma anónima con blob hunt, iniciar sesión como
ese usuario (az login), comprobar qué puede hacer con enum access, y luego saquear cualquier
Key Vault al que puedas llegar:```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)
---
## Autenticación
Los comandos anónimos de `blob` **no** requieren autenticación. Todo lo demás utiliza
la **cadena de credenciales predeterminada** de Azure, que intenta, en orden: variables
de entorno, identidad de carga de trabajo, identidad administrada y la CLI de Azure (`az login`).```bash
az login
./azpt enum subscriptions
Forzar autenticación explícita con service-principal (útil para una identidad de evaluación con alcance limitado) mediante flags o variables de entorno. ¿Aún no tienes una? az ad sp create-for-rbac --name azpt-assessment --role Reader --scopes /subscriptions/<subscription-id> genera una — consulta Getting
started para la
guía completa, incluidos los permisos de Graph que RBAC por sí solo no te otorga:```bash
./azpt --tenant --client-id --client-secret
enum subscriptions
export AZURE_TENANT_ID=... AZURE_CLIENT_ID=... AZURE_CLIENT_SECRET=... ./azpt enum subscriptions
**Autenticación basada en certificados** (PFX o PEM):```bash
./azpt --tenant <tenant-id> --client-id <app-id> \
--certificate ./cert.pfx --cert-password 'P@ss' \
enum subscriptions
Limita las ejecuciones autenticadas a suscripciones específicas con --subscription
(repetible); el valor predeterminado es todas las suscripciones a las que el principal puede acceder:```bash
./azpt --subscription 00000000-1111-2222-3333-444444444444 audit storage
---
## Referencia de comandos
🧪 marca un comando que aún está en **beta**: implementado y usable, pero menos
probado en combate que el resto de la suite — espera asperezas, y por favor
reporta los problemas que encuentres.