AWS Pentesting
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Antes de comenzar el pentesting en un entorno de 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 incorrectas y cómo explotarlas.
Conceptos como la jerarquía de organización, IAM y otros conceptos básicos se explican en:
AWS - Basic InformationHerramientas para simular ataques:
Para auditar un entorno de AWS, es muy importante saber: qué servicios se están utilizando, qué está siendo 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 de AWS es lograr obtener algunas credenciales. Aquí tienes algunas ideas sobre cómo hacerlo:
Filtraciones en github (o similar) - OSINT
Ingeniería Social
Reutilización de contraseñas (filtraciones de contraseñas)
Vulnerabilidades en Aplicaciones Alojadas en AWS
Server Side Request Forgery con acceso al endpoint de metadatos
Lectura de Archivos Locales
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
terceros comprometidos
Empleado Interno
Credenciales de Cognito
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, así que necesitas realizar alguna enumeración básica:
Si encontraste un SSRF en una máquina dentro de AWS, revisa esta página para trucos:
Una de las primeras cosas que necesitas saber es quién eres (en qué cuenta estás y otra información sobre el entorno de 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.
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 averiguarlos. Consulta cómo hacer la enumeración y la fuerza bruta en:
AWS - IAM, Identity Center & SSO EnumAhora que tienes algo de información sobre tus credenciales (y si eres un red team, espero que no hayas 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.
AWS tiene una asombrosa cantidad de servicios, en la siguiente página encontrarás información básica, enumeración cheatsheets**,** 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, a continuación 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 & AccessSi puedes ver al menos tus propios permisos sobre diferentes recursos, podrías ver si puedes obtener más permisos. Deberías enfocarte al menos en los permisos indicados en:
AWS - Privilege EscalationMientras enumerabas los servicios de AWS, podrías haber encontrado algunos de ellos exponiendo elementos a Internet (puertos de VM/Contenedores, bases de datos o servicios de cola, instantáneas 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:
Cuando la cuenta administrativa 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 administrativa para acceder a la nueva cuenta.
Así que, para acceder como administrador a una cuenta secundaria necesitas:
Comprometer la cuenta administrativa y encontrar el ID de las cuentas secundarias y los nombres del rol (OrganizationAccountAccessRole por defecto) que permite a la cuenta administrativa 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 cualquier que permita sts:AssumeRole
sobre las cuentas secundarias descubiertas previamente.
Comprometer un principal en la cuenta administrativa con sts:AssumeRole
permiso sobre el rol en las cuentas secundarias (incluso si la cuenta permite a cualquiera de la cuenta administrativa suplantar, como es una cuenta externa, son necesarios permisos específicos de sts:AssumeRole
).
aws-recon: Una herramienta de colección de inventario enfocada en la seguridad de AWS, multihilo, escrita en Ruby.
cloudlist: Cloudlist es una herramienta multi-nube para obtener Activos (Nombres de host, Direcciones IP) de Proveedores de Nube.
cloudmapper: CloudMapper te ayuda a analizar tus entornos de Amazon Web Services (AWS). Ahora contiene mucha más funcionalidad, incluyendo auditoría para problemas de seguridad.
cartography: Cartography es una herramienta de Python que consolida los 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.
SkyArk: Descubre los usuarios más privilegiados en el entorno de AWS escaneado, incluyendo a los AWS Shadow Admins. Utiliza 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 ofensivas 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 privesc (no a nivel de cuenta).
PMapper: Principal Mapper (PMapper) es un script y 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 Usuarios y Roles de IAM en una cuenta como un grafo dirigido, lo que permite verificar escaladas de privilegios y 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 nombres de archivo 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 menor privilegio y genera un informe HTML priorizado por riesgo. Te mostrará clientes sobre privilegiados potencialmente, políticas en línea y de aws, y qué principales tienen acceso a ellas. (No solo verifica el privesc, sino también otros tipos de permisos interesantes, se recomienda su uso).
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 repositorios ECR -> Extraer repositorio ECR -> Insertar puerta trasera -> Subir imagen con puerta trasera
Dufflebag: Dufflebag es una herramienta que busca a través de instantáneas públicas de Elastic Block Storage (EBS) en busca de secretos que pueden haber sido dejados accidentalmente.
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 las mejores prácticas de seguridad de AWS, auditorías, respuesta a incidentes, monitoreo continuo, endurecimiento y preparación forense.
CloudFox: CloudFox te ayuda a obtener conciencia 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 la 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 los entornos en la nube.
cs-suite: Cloud Security Suite (usa python2.7 y parece no estar mantenido)
Zeus: Zeus es una herramienta poderosa para las mejores prácticas de endurecimiento de AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (parece no estar mantenida). Solo verifica las credenciales configuradas por defecto dentro del sistema.
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, reportes 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 son evaluados 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 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 ingresar, 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 utilizan StreamAlert para escanear terabytes de datos de registro todos los días para la detección y respuesta a incidentes.
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)