Skip to content

LorDCristhian/enumerate-iam-pro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔐 enumerate-iam PRO

Herramienta Profesional de Enumeración de Permisos AWS IAM

Python Version License AWS


📖 ¿Para Qué Sirve Esta Herramienta?

enumerate-iam PRO es una herramienta avanzada de pentesting y auditoría de seguridad diseñada para enumerar y descubrir permisos IAM en AWS sin necesidad de acceso administrativo.

🎯 Casos de Uso

  1. Pentesting y Red Team

    • Descubrir permisos de credenciales comprometidas
    • Identificar vectores de escalación de privilegios
    • Mapear superficie de ataque en entornos AWS
  2. Auditoría de Seguridad

    • Validar permisos reales vs. permisos documentados
    • Detectar permisos excesivos en usuarios/roles
    • Compliance y revisiones de seguridad
  3. Análisis de Credenciales

    • Determinar alcance de credenciales filtradas
    • Evaluar impacto de exposición de access keys
    • Investigación de incidentes de seguridad

🔍 ¿Cómo Funciona?

La herramienta realiza pruebas de fuerza bruta inteligente ejecutando 2,387 operaciones seguras de AWS para determinar qué permisos tiene un conjunto de credenciales. Solo prueba operaciones de solo lectura (list, describe, get) que no modifican recursos ni generan costos.


✨ Características PRO

🚀 Mejoras de Esta Versión

Esta es una versión mejorada y actualizada del proyecto original iam-vulnerable de BishopFox, con las siguientes mejoras profesionales:

Característica Original enumerate-iam PRO
Detección de Región Manual ✅ Automática desde perfil AWS
Generación de Tests SDK JavaScript ✅ Directo desde boto3 instalado
Soporte SSO-Admin ❌ No incluido ✅ 81 operaciones SSO-Admin
Mapeo de Servicios A veces incorrecto ✅ Siempre correcto
Manejo de Errores Nivel ERROR ✅ Nivel DEBUG (salida limpia)
Flag de Actualización ❌ No disponible --update para regenerar tests
Imports Optimizados Estáticos ✅ Lazy loading para mejor rendimiento
Logging DEBUG por defecto ✅ INFO por defecto (más limpio)

🎯 Características Principales

  • 🌍 Detección Automática de Región: Lee la región directamente de tu perfil AWS configurado
  • 🔄 Generación desde boto3: Genera tests de bruteforce directamente desde tu versión instalada de boto3
  • 📊 Logging Limpio: Salida clara con nivel INFO, DEBUG disponible para troubleshooting
  • 🛡️ Solo Operaciones Seguras: Prueba únicamente operaciones de lectura (list_, describe_, get_*)
  • ⚡ Auto-actualización: Regenera definiciones de tests con el flag --update
  • 🔧 Mapeo Correcto de Servicios: Corrige problemas de mapeo como SSO/SSO-Admin
  • 🎨 Salida Colorizada: Resumen visual organizado por servicios
  • 📦 2,387+ Operaciones: Cobertura exhaustiva de APIs de AWS
  • 🚀 Multi-threading: Ejecución paralela para mayor velocidad
  • 💾 Exportación JSON: Guarda resultados en formato JSON

📋 Prerequisitos

Antes de instalar y usar la herramienta, asegúrate de tener:

Requisitos del Sistema

  • Sistema Operativo: Linux, macOS, o Windows (WSL)
  • Python: Versión 3.6 o superior
  • pip: Gestor de paquetes de Python

Requisitos de AWS

  • Credenciales AWS: Access Key + Secret Key o perfil AWS configurado
  • Permisos Mínimos: Las credenciales que vas a probar (no necesitas admin)
  • Región AWS: Configurada en tu perfil o especificada manualmente

Verificar Prerequisitos

# Verificar versión de Python
python --version
# Debe mostrar: Python 3.6.x o superior

# Verificar pip
pip --version

# Verificar AWS CLI (opcional pero recomendado)
aws --version

# Verificar configuración de AWS
aws configure list --profile tu-perfil

🔧 Instalación

Paso 1: Clonar el Repositorio

# Clonar el repositorio
git clone https://github.com/LorDCristhian/enumerate-iam-pro.git

# Entrar al directorio
cd enumerate-iam-pro

Paso 2: Instalar Dependencias

# Instalar dependencias de Python
pip install -r requirements.txt

# O si prefieres usar pip3
pip3 install -r requirements.txt

Dependencias instaladas:

  • boto3: SDK de AWS para Python
  • botocore: Librería core de boto3

Paso 3: Generar Tests de Bruteforce

# Generar tests desde tu versión de boto3
python enumerate-iam.py --profile tu-perfil --update

Este paso:

  • ✅ Lee todos los servicios disponibles en tu boto3
  • ✅ Extrae operaciones seguras (list_, describe_, get_)
  • ✅ Filtra operaciones sin parámetros requeridos
  • ✅ Genera el archivo bruteforce_tests.py

Paso 4: Verificar Instalación

# Ver ayuda del comando
python enumerate-iam.py --help

¡Instalación completa! 🎉


🎯 Uso de la Herramienta

Uso Básico

Opción 1: Usando Perfil AWS (Recomendado)

# Enumerar permisos usando perfil AWS
python enumerate-iam.py --profile nombre-del-perfil

Ventajas:

  • ✅ Lee credenciales de ~/.aws/credentials
  • ✅ Detecta región automáticamente
  • ✅ Más seguro (no expones credenciales en terminal)

Ejemplo:

python enumerate-iam.py --profile production

Opción 2: Usando Access Keys Directamente

# Enumerar usando credenciales explícitas
python enumerate-iam.py \
  --access-key AKIAIOSFODNN7EXAMPLE \
  --secret-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

Cuándo usar:

  • Credenciales temporales
  • Credenciales obtenidas en pentesting
  • Testing rápido sin configurar perfil

Comandos Avanzados

Actualizar Tests de Bruteforce

# Regenerar tests desde boto3 y ejecutar enumeración
python enumerate-iam.py --profile mi-perfil --update

Cuándo usar --update:

  • 🔄 Actualizaste boto3 a una versión más reciente
  • 🆕 AWS lanzó nuevos servicios
  • 🔧 Quieres máxima cobertura de APIs
  • 🐛 El archivo bruteforce_tests.py está corrupto

Especificar Región Manualmente

# Usar región específica (sobrescribe región del perfil)
python enumerate-iam.py --profile mi-perfil --region us-west-2

Regiones comunes:

  • us-east-1 - Virginia del Norte
  • us-west-2 - Oregón
  • eu-west-1 - Irlanda
  • eu-north-1 - Estocolmo
  • ap-southeast-1 - Singapur

Usar Credenciales Temporales (STS)

# Usar credenciales con session token
python enumerate-iam.py \
  --access-key AKIAIOSFODNN7EXAMPLE \
  --secret-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \
  --session-token IQoJb3JpZ2luX2VjEH8aCXVzLWVhc3QtMSJHMEUCIQDN...

Cuándo usar:

  • Credenciales de roles asumidos (AssumeRole)
  • Credenciales de instancias EC2
  • Credenciales de AWS SSO

📊 Ejemplo de Salida

Using region from profile: eu-north-1
2026-02-13 19:13:58 - [INFO] Starting permission enumeration for access-key-id "AKIA..."
2026-02-13 19:13:58 - [INFO] -- Account ARN : arn:aws:iam::123456789012:user/analytics-usr
2026-02-13 19:13:58 - [INFO] -- Account Id  : 123456789012
2026-02-13 19:13:58 - [INFO] -- Account Path: user/analytics-usr
2026-02-13 19:13:58 - [INFO] Total API calls to test: 2387

Testing permissions: 100%|████████████████████████████| 2387/2387 [01:23<00:00, 28.6 ops/s]

═══════════════════════════════════════════════════════════════════════════════
RESUMEN DE PERMISOS
═══════════════════════════════════════════════════════════════════════════════

Total de permisos encontrados: 18
Total de servicios: 6

▸ DYNAMODB (1)
  ✓ describe_endpoints

▸ LAMBDA (3)
  ✓ list_functions
  ✓ list_layers
  ✓ get_account_settings

▸ S3 (5)
  ✓ list_buckets
  ✓ get_bucket_location
  ✓ get_bucket_versioning
  ✓ get_bucket_encryption
  ✓ list_directory_buckets

▸ SQS (3)
  ✓ list_queues
  ✓ get_queue_attributes
  ✓ list_dead_letter_source_queues

▸ SSO-ADMIN (4)
  ✓ list_instances
  ✓ list_application_providers
  ✓ describe_instance
  ✓ list_applications

▸ STS (2)
  ✓ get_caller_identity
  ✓ get_session_token

═══════════════════════════════════════════════════════════════════════════════
Total: 18 permisos en 6 servicios AWS
═══════════════════════════════════════════════════════════════════════════════

📖 Referencia de Comandos

Sintaxis General

python enumerate-iam.py [OPCIONES]

Opciones de Autenticación (elige una)

Opción Descripción Ejemplo
--profile PERFIL Nombre del perfil AWS en ~/.aws/credentials --profile production
--access-key KEY AWS Access Key ID --access-key AKIA...
--secret-key KEY AWS Secret Access Key --secret-key wJalr...

Opciones Adicionales

Opción Descripción Ejemplo
--session-token TOKEN Token de sesión STS (credenciales temporales) --session-token IQoJ...
--region REGION Región AWS (sobrescribe región del perfil) --region us-east-1
--update Regenerar bruteforce_tests.py desde boto3 --update

Ejemplos Completos

# 1. Uso básico con perfil
python enumerate-iam.py --profile mi-perfil

# 2. Con región específica
python enumerate-iam.py --profile mi-perfil --region us-east-1

# 3. Actualizar tests y enumerar
python enumerate-iam.py --profile mi-perfil --update

# 4. Con access keys
python enumerate-iam.py \
  --access-key AKIAIOSFODNN7EXAMPLE \
  --secret-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

# 5. Con credenciales temporales
python enumerate-iam.py \
  --access-key AKIAIOSFODNN7EXAMPLE \
  --secret-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \
  --session-token IQoJb3JpZ2luX2VjEH... \
  --region us-west-2

🛡️ Consideraciones de Seguridad

Operaciones Seguras Únicamente

Esta herramienta SOLO prueba operaciones de solo lectura:

Operaciones Permitidas:

  • list_* - Listar recursos (ej: list_buckets, list_users)
  • describe_* - Describir recursos (ej: describe_instances)
  • get_* - Obtener información (ej: get_caller_identity)

Operaciones NUNCA Probadas:

  • create_* - Crear recursos
  • delete_* - Eliminar recursos
  • update_* - Modificar recursos
  • put_* - Escribir datos
  • attach_* - Adjuntar políticas
  • detach_* - Remover políticas
  • terminate_* - Terminar instancias

Impacto en CloudTrail

⚠️ IMPORTANTE: Esta herramienta genera 2,387 llamadas a APIs de AWS que serán registradas en CloudTrail.

Consideraciones:

  • 🔍 Alto volumen de llamadas puede disparar alertas de seguridad
  • 📊 Todos los intentos quedan registrados en CloudTrail
  • ⚠️ Usa solo en cuentas donde tengas autorización
  • 💰 CloudTrail puede generar costos si excedes el tier gratuito

Mejores Prácticas

  1. Autorización: Usa solo en cuentas AWS donde tengas permiso explícito
  2. Notificación: Informa al equipo de seguridad antes de ejecutar en producción
  3. Rate Limiting: La herramienta respeta límites de AWS pero genera alto volumen
  4. Credenciales: Nunca commitees credenciales AWS a repositorios
  5. Logs: Revisa CloudTrail después de la ejecución para validar actividad

🔄 Cómo Funciona Internamente

Flujo de Ejecución

1. Autenticación
   ├─ Valida credenciales AWS
   └─ Obtiene información de cuenta (ARN, Account ID)

2. Detección de Región
   ├─ Lee región del perfil AWS (si existe)
   └─ Usa región especificada con --region (si se proporciona)

3. Carga de Tests
   ├─ Importa bruteforce_tests.py
   └─ Carga 2,387+ operaciones seguras de AWS

4. Enumeración (Multi-threading)
   ├─ Ejecuta operaciones en paralelo
   ├─ Captura respuestas exitosas
   └─ Registra errores en nivel DEBUG

5. Recolección de Resultados
   ├─ Agrupa permisos por servicio
   └─ Cuenta total de permisos

6. Presentación
   ├─ Muestra resumen colorizado
   └─ Organiza por servicio AWS

Generación de Tests

La herramienta incluye dos generadores:

generate_from_boto3.py ✅ (Recomendado)

Ventajas:

  • ✅ Lee directamente de tu boto3 instalado
  • ✅ Siempre sincronizado con tu versión
  • ✅ Mapeo correcto de nombres de servicios
  • ✅ Filtra operaciones que requieren parámetros

Proceso:

  1. Obtiene lista de servicios de boto3.Session()
  2. Para cada servicio, extrae operaciones del modelo
  3. Filtra por prefijos seguros (list_, describe_, get_)
  4. Valida que no requieran parámetros obligatorios
  5. Genera archivo bruteforce_tests.py

generate_bruteforce_tests.py (Original)

Características:

  • Lee desde AWS SDK for JavaScript
  • Puede tener desajustes de nombres de servicios
  • Requiere clonar repositorio aws-sdk-js

📁 Estructura del Proyecto

enumerate-iam-pro/
│
├── enumerate-iam.py                 # Script principal de entrada
├── requirements.txt                 # Dependencias de Python
├── README.md                        # Este archivo
├── LICENSE                          # Licencia GPLv2
├── CHANGELOG.md                     # Historial de versiones
│
└── enumerate_iam/                   # Paquete principal
    ├── __init__.py                  # Inicializador del módulo
    ├── main.py                      # Lógica core de enumeración
    ├── bruteforce_tests.py          # Definiciones de operaciones AWS
    ├── generate_from_boto3.py       # Generador desde boto3 (NUEVO)
    ├── generate_bruteforce_tests.py # Generador original (JS SDK)
    ├── progress_tracker.py          # Barra de progreso
    │
    └── utils/                       # Utilidades
        ├── __init__.py
        ├── json_utils.py            # Manejo de JSON
        └── remove_metadata.py       # Limpieza de metadata

🐛 Solución de Problemas

Error: "ModuleNotFoundError: No module named 'enumerate_iam.bruteforce_tests'"

Causa: El archivo bruteforce_tests.py no existe.

Solución:

python enumerate-iam.py --profile tu-perfil --update

Error: "No region configured in profile"

Causa: El perfil AWS no tiene región configurada.

Soluciones:

Opción 1: Configurar región en el perfil

aws configure set region us-east-1 --profile tu-perfil

Opción 2: Especificar región manualmente

python enumerate-iam.py --profile tu-perfil --region us-east-1

Advertencia: "ERROR: Remove sso.list_instances action"

Causa: Normal. Algunas operaciones en el archivo de tests pueden no existir en tu versión de boto3.

Solución: No requiere acción. Estos errores se registran en nivel DEBUG y se omiten automáticamente.


Ejecución Lenta

Causa: La herramienta prueba 2,387 operaciones.

Factores que afectan velocidad:

  • Latencia de red a AWS
  • Número de permisos que tienes
  • Rate limits de AWS API

Tiempo típico: 30-90 segundos

Optimización: No hay forma de acelerar sin reducir cobertura.


🆕 Novedades en Esta Versión

Versión 2.0 (PRO Edition)

Mejoras Principales:

Detección automática de región desde perfiles AWS
Generación de tests desde boto3 para mapeo preciso
Soporte completo de SSO-Admin (81 operaciones)
Manejo mejorado de errores con logging DEBUG
Imports lazy para soportar flag --update
Salida limpia con logging INFO por defecto
Corrección de mapeo de servicios (SSO vs SSO-Admin)

Comparativa con Original:

Característica iam-vulnerable (Original) enumerate-iam PRO
Detección de Región ❌ Manual ✅ Automática
Generación de Tests AWS SDK JS ✅ boto3 nativo
SSO-Admin ❌ No incluido ✅ 81 operaciones
Mensajes de Error ERROR (ruidoso) ✅ DEBUG (limpio)
Flag --update ❌ No disponible ✅ Disponible
Mapeo de Servicios ⚠️ A veces incorrecto ✅ Siempre correcto
Imports Estáticos ✅ Lazy loading
Logging Default DEBUG ✅ INFO

🤝 Contribuciones

¡Las contribuciones son bienvenidas! Si quieres mejorar esta herramienta:

  1. Fork el repositorio
  2. Crea una rama de feature (git checkout -b feature/mejora-increible)
  3. Commit tus cambios (git commit -m 'Agrega mejora increíble')
  4. Push a la rama (git push origin feature/mejora-increible)
  5. Abre un Pull Request

Áreas de Mejora

  • 🎨 Mejorar visualización de resultados
  • 📊 Agregar exportación a diferentes formatos
  • 🔍 Implementar filtros por servicio
  • ⚡ Optimizar velocidad de enumeración
  • 📝 Agregar más documentación

📄 Licencia

Este proyecto está licenciado bajo GNU General Public License v2.0.

Ver archivo LICENSE para más detalles.


🙏 Créditos

Proyecto Original

Versión PRO

Esta versión incluye mejoras significativas en:

  • Usabilidad y experiencia de usuario
  • Precisión en mapeo de servicios AWS
  • Mantenibilidad del código
  • Documentación en español

Desarrollado por: LorDCristhian


⚠️ Disclaimer Legal

Esta herramienta es para pruebas de seguridad autorizadas y propósitos educativos únicamente.

Los usuarios son responsables de:

  • Obtener autorización adecuada antes de realizar pruebas
  • Cumplir con los Términos de Servicio de AWS
  • Seguir leyes y regulaciones aplicables
  • Cualquier consecuencia del mal uso

Los autores NO asumen responsabilidad por mal uso o daños causados por esta herramienta.


📞 Soporte


🌟 Agradecimientos

Gracias a la comunidad de seguridad por:

  • Reportar bugs y sugerir mejoras
  • Contribuir con código y documentación
  • Compartir casos de uso y feedback

Hecho con ❤️ para la comunidad de seguridad hispana

🔒 Hackea responsablemente

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages