Parte: 10 — Seguridad en la nube y contenedores · Fuente: MITRE ATT&CK for Cloud (IaaS matrix) y Rhino Security Labs — AWS Pentesting research ⏱️ Duración estimada: 150 min · Nivel: Avanzado
⚠️ Aviso ético. Esta clase enseña técnicas ofensivas. Practícalas únicamente en tu propia cuenta de laboratorio o con autorización escrita y explícita del propietario. El pentest de la nube además requiere respetar las políticas de pruebas del proveedor. Atacar recursos ajenos es ilegal.
Aprender la metodología de pentest en la nube: reconocimiento, enumeración de recursos e IAM, explotación de misconfiguraciones (credenciales expuestas, buckets, metadatos, roles), escalada de privilegios, movimiento lateral y persistencia, todo mapeado a MITRE ATT&CK for Cloud.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Reconocimiento externo | OSINT, buckets y subdominios expuestos |
| 2 | Credenciales y sesiones expuestas | Evaluar validez, alcance y revocación sin asumir frecuencia universal |
| 3 | Enumeración IAM | Descubrir qué se puede hacer con lo que hay |
| 4 | Abuso de metadatos (IMDS/SSRF) | Robo de credenciales de rol de instancia |
| 5 | Escalada de privilegios | De acceso limitado a administrador |
| 6 | Movimiento lateral y persistencia | Mantener acceso y expandirse |
| 7 | Mapeo a MITRE ATT&CK Cloud | Lenguaje común para reporte |
Un pentest cloud autorizado evalúa relaciones de confianza y decisiones API, no solo puertos. El contrato debe identificar cuentas, suscripciones o proyectos; regiones; identidades de prueba; técnicas prohibidas; límites de costo y disponibilidad; tratamiento de datos; contactos y destrucción de recursos. Además se verifica la política vigente del proveedor: la autorización del cliente no permite afectar infraestructura compartida ni otros tenants.
El diagrama impone puntos de control. Descubrir un nombre de bucket no autoriza leer objetos; obtener una credencial de laboratorio no autoriza enumerar otras cuentas; hallar una ruta teórica no obliga a ejecutarla si su impacto excede las reglas. Cada paso registra comando, identidad, hora, respuesta y recurso creado.
Una clave o token puede estar expirado, revocado, limitado por sesión o sujeto a condiciones. Primero se identifica la cuenta y principal con una API inocua y autorizada. Luego se enumeran capacidades mediante documentación, simuladores, mensajes de error y llamadas controladas. Los AccessDenied no justifican fuerza bruta indiscriminada: también son evidencia de límites y pueden activar controles.
Las rutas de escalada combinan acciones. Crear una función solo importa si se puede elegir rol, código, invocación y salida. Modificar una policy requiere una versión efectiva y capacidad de usar el principal. El reporte dibuja precondiciones y separa ruta potencial, ruta validada e impacto demostrado.
IMDS está disponible desde instancias según plataforma y configuración. En AWS, IMDSv2 usa un token obtenido por PUT y hop limit configurable, lo que reduce varias rutas de SSRF, pero no corrige una aplicación que permite solicitudes arbitrarias desde la propia instancia ni un rol excesivo. La mitigación combina validación de URL, controles de egress, IMDSv2 requerido, hop limit, roles mínimos y monitoreo.
Crear claves, usuarios, roles, funciones o suscripciones puede simular persistencia, pero cada artefacto genera riesgo y costo. Se usan nombres etiquetados, TTL, presupuesto y lista de limpieza. La prueba termina verificando que no quedan recursos ni credenciales y que los logs permiten reconstruirla. ATT&CK ayuda a comunicar la técnica; no sustituye impacto, precondiciones o remediación específica.
En CloudGoat, una aplicación permite solicitar una URL interna y el tester obtiene una sesión temporal desde IMDS. Antes de celebrar «compromiso de AWS», identifica rol, expiración y permisos. La sesión solo puede leer un objeto concreto. Esa lectura demuestra impacto limitado; no demuestra control de cuenta.
El informe separa falla de aplicación, acceso a metadatos y exceso o adecuación del rol. La mitigación exige corregir SSRF y requerir IMDSv2, pero también prueba que retirar el permiso innecesario reduce el impacto incluso si la aplicación recae. Finalmente revoca la sesión cuando procede, destruye el escenario y confirma el evento en CloudTrail.
Dominas la clase cuando defines reglas de compromiso cloud, conviertes una credencial en un grafo de capacidades, validas una ruta con impacto mínimo, mapeas técnica sin exagerar alcance y entregas evidencia de limpieza, costo y detección.
# Desplegar un escenario vulnerable de laboratorio
python3 cloudgoat.py create iam_privesc_by_rollback
# Enumerar permisos de una credencial obtenida (en laboratorio)
enumerate-iam --access-key AKIA... --secret-key ...
Todo se ejecuta en tu cuenta de laboratorio con CloudGoat. No apuntes a infraestructura ajena.
iam_privesc_by_rollback de CloudGoat; recibirás credenciales de acceso limitado.enumerate-iam y aws iam get-user, mapea qué permisos tienes.iam:CreatePolicyVersion con --set-as-default) que permite reescribir una política.*:* y márcala por defecto; verifica que ahora eres admin.ec2_ssrf: explota una app con SSRF para leer http://169.254.169.254/latest/meta-data/iam/security-credentials/ y roba las credenciales del rol.cloudgoat destroy para no dejar recursos ni coste.Resuelve de principio a fin un escenario de CloudGoat que empiece con acceso limitado y termine en administrador, documentando el camino y luego aplicando las remediaciones que lo cierren.
Criterio de aceptación: el informe incluye cada paso con el comando usado, la técnica ATT&CK correspondiente y la evidencia; tras aplicar las remediaciones, reejecutar el ataque falla en el punto de escalada.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
AccessDenied al enumerar |
Permisos realmente mínimos; prueba rutas indirectas (assume-role, passrole). |
| Metadatos devuelven 401 | IMDSv2 activo; necesitas un token PUT primero, o el ataque está mitigado. |
| Recursos de CloudGoat siguen facturando | Olvidaste cloudgoat destroy; destrúyelos siempre al terminar. |
| El proveedor bloquea el escaneo | Actividad marcada como abuso; respeta la política de pentest del proveedor. |
| No hay evidencia para el informe | No se registró la salida; captura comandos y respuestas desde el inicio. |
❓ ¿Necesito permiso del proveedor para hacer pentest en la nube? Depende. Muchas pruebas a tus propios recursos están permitidas sin aviso previo, pero ciertas actividades (p. ej. stress/DoS) requieren autorización. Revisa siempre la política de pruebas del proveedor y ten permiso escrito del dueño de la cuenta.
❓ ¿Por qué el robo de credenciales de instancia es tan crítico? Porque el rol de la instancia suele tener permisos amplios; con esas credenciales el atacante actúa como el servicio legítimo, sin contraseña que romper. Por eso IMDSv2 y roles mínimos son clave.
❓ ¿CloudGoat es seguro para practicar? Sí, despliega recursos vulnerables en tu propia cuenta de forma intencionada y reproducible. Aun así, aíslalos y destrúyelos al terminar para evitar exposición y coste.
Clase 225 — Seguridad en Google Cloud Platform