AWS Pentesting
Información Básica
Antes de comenzar a pentesting un entorno AWS hay algunas cosas básicas que necesitas saber sobre cómo funciona AWS para ayudarte a entender qué necesitas hacer, cómo encontrar configuraciones erróneas y cómo explotarlas.
Conceptos como la jerarquía de la organización, IAM y otros conceptos básicos se explican en:
AWS - Basic InformationLaboratorios para aprender
Herramientas para simular ataques:
Metodología de Pentester/Red Team en AWS
Para auditar un entorno AWS es muy importante saber: qué servicios se están utilizando, qué está expuesto, quién tiene acceso a qué, y cómo están conectados los servicios internos de AWS y los servicios externos.
Desde el punto de vista de un Red Team, el primer paso para comprometer un entorno AWS es lograr obtener algunas credenciales. Aquí tienes algunas ideas sobre cómo hacerlo:
Leaks en github (o similar) - OSINT
Ingeniería Social
Reutilización de contraseñas (password leaks)
Vulnerabilidades en Aplicaciones alojadas en AWS
Server Side Request Forgery con acceso al endpoint de metadata
Lectura de Archivos Locales
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
3ras partes comprometidas
Empleado Interno
Cognito credenciales
O comprometiendo un servicio no autenticado expuesto:
AWS - Unauthenticated Enum & AccessO si estás haciendo una revisión podrías simplemente pedir credenciales con estos roles:
AWS - Permissions for a PentestDespués de haber logrado obtener credenciales, necesitas saber a quién pertenecen esas credenciales, y a qué tienen acceso, por lo que necesitas realizar una enumeración básica:
Enumeración Básica
SSRF
Si encontraste un SSRF en una máquina dentro de AWS, revisa esta página para trucos:
Whoami
Una de las primeras cosas que necesitas saber es quién eres (en qué cuenta estás y otra información sobre el entorno AWS):
Nota que las empresas pueden usar canary tokens para identificar cuándo se están robando y utilizando tokens. Se recomienda verificar si un token es un canary token o no antes de usarlo. Para más información consulta esta página.
Org Enumeration
AWS - Organizations EnumIAM Enumeration
Si tienes suficientes permisos, verificar los privilegios de cada entidad dentro de la cuenta de AWS te ayudará a entender qué puedes hacer tú y otras identidades y cómo escalar privilegios.
Si no tienes suficientes permisos para enumerar IAM, puedes robarlos mediante fuerza bruta para descubrirlos. Consulta cómo hacer la enumeración y fuerza bruta en:
AWS - IAM, Identity Center & SSO EnumAhora que tienes algo de información sobre tus credenciales (y si eres un red teamer, con suerte no has sido detectado). Es hora de averiguar qué servicios se están utilizando en el entorno. En la siguiente sección puedes consultar algunas formas de enumerar algunos servicios comunes.
Services Enumeration, Post-Exploitation & Persistence
AWS tiene una cantidad asombrosa de servicios, en la siguiente página encontrarás información básica, cheatsheets de enumeración, cómo evitar la detección, obtener persistencia y otros trucos de post-explotación sobre algunos de ellos:
AWS - ServicesNota que no necesitas realizar todo el trabajo manualmente, más abajo en este post puedes encontrar una sección sobre herramientas automáticas.
Además, en esta etapa podrías haber descubierto más servicios expuestos a usuarios no autenticados, podrías ser capaz de explotarlos:
AWS - Unauthenticated Enum & AccessPrivilege Escalation
Si puedes verificar al menos tus propios permisos sobre diferentes recursos, podrías verificar si puedes obtener más permisos. Deberías enfocarte al menos en los permisos indicados en:
AWS - Privilege EscalationPublicly Exposed Services
Mientras enumeras servicios de AWS, podrías haber encontrado algunos de ellos exponiendo elementos a Internet (puertos de VM/Contenedores, bases de datos o servicios de colas, snapshots o buckets...). Como pentester/red teamer, siempre deberías verificar si puedes encontrar información sensible / vulnerabilidades en ellos, ya que podrían proporcionarte más acceso a la cuenta de AWS.
En este libro deberías encontrar información sobre cómo encontrar servicios de AWS expuestos y cómo verificarlos. Sobre cómo encontrar vulnerabilidades en servicios de red expuestos, te recomendaría buscar el servicio específico en:
Compromising the Organization
From the root/management account
Cuando la cuenta de administración crea nuevas cuentas en la organización, se crea un nuevo rol en la nueva cuenta, por defecto llamado OrganizationAccountAccessRole
y otorgando la política de AdministratorAccess a la cuenta de administración para acceder a la nueva cuenta.
Entonces, para acceder como administrador a una cuenta secundaria necesitas:
Comprometer la cuenta de administración y encontrar el ID de las cuentas secundarias y los nombres del rol (OrganizationAccountAccessRole por defecto) que permite a la cuenta de administración acceder como administrador.
Para encontrar cuentas secundarias, ve a la sección de organizaciones en la consola de aws o ejecuta
aws organizations list-accounts
No puedes encontrar el nombre de los roles directamente, así que revisa todas las políticas IAM personalizadas y busca alguna que permita
sts:AssumeRole
sobre las cuentas secundarias descubiertas previamente.Comprometer un principal en la cuenta de administración con permiso
sts:AssumeRole
sobre el rol en las cuentas secundarias (incluso si la cuenta permite a cualquiera de la cuenta de administración hacerse pasar por otro, como es una cuenta externa, se necesitan permisos específicos dests:AssumeRole
).
Automated Tools
Recon
aws-recon: Una herramienta de recolección de inventario enfocada en la seguridad de AWS, escrita en Ruby.
cloudlist: Cloudlist es una herramienta multi-cloud para obtener Activos (Nombres de Host, Direcciones IP) de Proveedores de Cloud.
cloudmapper: CloudMapper te ayuda a analizar tus entornos de Amazon Web Services (AWS). Ahora contiene mucha más funcionalidad, incluyendo auditorías para problemas de seguridad.
cartography: Cartography es una herramienta en Python que consolida activos de infraestructura y las relaciones entre ellos en una vista gráfica intuitiva impulsada por una base de datos Neo4j.
starbase: Starbase recopila activos y relaciones de servicios y sistemas, incluyendo infraestructura en la nube, aplicaciones SaaS, controles de seguridad y más, en una vista gráfica intuitiva respaldada por la base de datos Neo4j.
aws-inventory: (Usa python2) Esta es una herramienta que intenta descubrir todos los recursos de AWS creados en una cuenta.
aws_public_ips: Es una herramienta para obtener todas las direcciones IP públicas (tanto IPv4/IPv6) asociadas con una cuenta de AWS.
Privesc & Exploiting
SkyArk: Descubre los usuarios más privilegiados en el entorno de AWS escaneado, incluyendo los AWS Shadow Admins. Usa powershell. Puedes encontrar la definición de políticas privilegiadas en la función
Check-PrivilegedPolicy
en https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1.pacu: Pacu es un framework de explotación de AWS de código abierto, diseñado para pruebas de seguridad ofensiva contra entornos en la nube. Puede enumerar, encontrar configuraciones incorrectas y explotarlas. Puedes encontrar la definición de permisos privilegiados en https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 dentro del diccionario
user_escalation_methods
.Ten en cuenta que pacu solo verifica tus propios caminos de privescs (no a nivel de cuenta).
PMapper: Principal Mapper (PMapper) es un script y una biblioteca para identificar riesgos en la configuración de AWS Identity and Access Management (IAM) para una cuenta de AWS o una organización de AWS. Modela los diferentes IAM Users y Roles en una cuenta como un grafo dirigido, lo que permite verificar la escalada de privilegios y los caminos alternativos que un atacante podría tomar para obtener acceso a un recurso o acción en AWS. Puedes verificar los permisos utilizados para encontrar caminos de privesc en los archivos que terminan en
_edges.py
en https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
cloudsplaining: Cloudsplaining es una herramienta de evaluación de seguridad de AWS IAM que identifica violaciones del principio de privilegio mínimo y genera un informe HTML priorizado por riesgo. Te mostrará clientes potencialmente sobreprivilegiados, políticas en línea y de aws, y qué principales tienen acceso a ellas. (No solo verifica privesc sino también otros tipos de permisos interesantes, se recomienda usar).
cloudjack: CloudJack evalúa cuentas de AWS en busca de vulnerabilidades de secuestro de subdominios como resultado de configuraciones desacopladas de Route53 y CloudFront.
ccat: Listar repos ECR -> Extraer repo ECR -> Infiltrarlo -> Subir imagen infiltrada
Dufflebag: Dufflebag es una herramienta que busca a través de snapshots públicos de Elastic Block Storage (EBS) secretos que pueden haber sido dejados accidentalmente.
Auditoría
cloudsploit: CloudSploit de Aqua es un proyecto de código abierto diseñado para permitir la detección de riesgos de seguridad en cuentas de infraestructura en la nube, incluyendo: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) y GitHub (No busca ShadowAdmins).
Prowler: Prowler es una herramienta de seguridad de código abierto para realizar evaluaciones de mejores prácticas de seguridad en AWS, auditorías, respuesta a incidentes, monitoreo continuo, endurecimiento y preparación forense.
CloudFox: CloudFox te ayuda a obtener conocimiento situacional en entornos de nube desconocidos. Es una herramienta de línea de comandos de código abierto creada para ayudar a los pentesters y otros profesionales de seguridad ofensiva a encontrar rutas de ataque explotables en la infraestructura de la nube.
ScoutSuite: Scout Suite es una herramienta de auditoría de seguridad multi-nube de código abierto, que permite la evaluación de la postura de seguridad de entornos en la nube.
cs-suite: Cloud Security Suite (usa python2.7 y parece no estar mantenido)
Zeus: Zeus es una herramienta poderosa para AWS EC2 / S3 / CloudTrail / CloudWatch / KMS mejores prácticas de endurecimiento (parece no estar mantenido). Solo verifica credenciales configuradas por defecto dentro del sistema.
Auditoría Constante
cloud-custodian: Cloud Custodian es un motor de reglas para gestionar cuentas y recursos de nube pública. Permite a los usuarios definir políticas para habilitar una infraestructura de nube bien gestionada, que sea segura y optimizada en costos. Consolida muchos de los scripts ad hoc que las organizaciones tienen en una herramienta ligera y flexible, con métricas y reportes unificados.
pacbot: Policy as Code Bot (PacBot) es una plataforma para monitoreo continuo de cumplimiento, reporte de cumplimiento y automatización de seguridad para la nube. En PacBot, las políticas de seguridad y cumplimiento se implementan como código. Todos los recursos descubiertos por PacBot se evalúan contra estas políticas para medir la conformidad con las políticas. El marco de auto-fix de PacBot proporciona la capacidad de responder automáticamente a las violaciones de políticas tomando acciones predefinidas.
streamalert: StreamAlert es un marco de análisis de datos en tiempo real sin servidor que te permite ingestar, analizar y alertar sobre datos de cualquier entorno, usando fuentes de datos y lógica de alertas que defines. Los equipos de seguridad informática usan StreamAlert para escanear terabytes de datos de registro todos los días para la detección y respuesta a incidentes.
DEBUG: Capturar solicitudes de AWS cli
Referencias
Last updated