
Herramienta de OSINT multi-nube. Enumera recursos públicos en AWS, Azure y Google Cloud.
Construí esta herramienta en 2019 para una prueba de penetración que involucraba Azure, ya que en ese momento ninguna otra herramienta de enumeración lo soportaba. Creció a partir de ahí y aprendí mucho mientras añadía funcionalidades.
Construir herramientas es divertido, pero mantenerlas es difícil. Hace un tiempo que no uso activamente esta herramienta, pero he hecho lo posible por corregir errores y revisar las solicitudes de extracción.
De cara al futuro, tiene sentido consolidar esta funcionalidad en un proyecto bien mantenido que maneje lo esencial (solicitudes web/dns, hilos, E/S, registro, etc.). Nuclei es realmente adecuado para esto. Puedes ver mi primer PR para migrar la funcionalidad de cloud_enum a Nuclei aquí.
Animo a otros a contribuir con plantillas a Nuclei, permitiéndonos centrarnos en detectar recursos en la nube mientras dejamos el trabajo base a Nuclei.
Seguiré intentando revisar los PR aquí para solucionar errores según el tiempo lo permita, pero probablemente no tendré tiempo para cambios importantes.
Gracias a todos los grandes contribuyentes. ¡Buena suerte con tu reconocimiento!
Herramienta OSINT multi-nube. Enumera recursos públicos en AWS, Azure y Google Cloud.
Actualmente enumera lo siguiente:
Amazon Web Services:
Microsoft Azure:
Google Cloud Platform
Míralo en acción en la demostración en video de Codingo aquí.
Este proyecto utiliza uv para la gestión de dependencias. Instala uv y luego ejecuta:
uv sync
El único argumento requerido es al menos una palabra clave. Puedes usar las cadenas de fuzzing integradas, pero obtendrás mejores resultados si proporcionas las tuyas propias con -m y/o -b.
Puedes proporcionar múltiples palabras clave especificando el argumento -k varias veces.
Las palabras clave se mutan automáticamente usando cadenas de enum_tools/fuzz.txt o un archivo que proporciones con la bandera -m. Los servicios que requieren un segundo nivel de fuerza bruta (Contenedores de Azure y Funciones de GCP) también usarán fuzz.txt por defecto o un archivo que proporciones con la bandera -b.
Digamos que estás investigando "somecompany" cuyo sitio web es "somecompany.io" y que fabrica un producto llamado "blockchaindoohickey". Podrías ejecutar la herramienta así:
uv run cloud_enum -k somecompany -k somecompany.io -k blockchaindoohickey
El raspado HTTP y las consultas DNS utilizan 5 hilos cada uno por defecto. Puedes intentar aumentarlos, pero eventualmente los proveedores de nube te limitarán la velocidad. Aquí hay un ejemplo para aumentarlos a 10.
uv run cloud_enum -k keyword -t 10
IMPORTANTE: Algunos recursos (Contenedores de Azure, Funciones de GCP) se descubren por región. Para ahorrar tiempo de escaneo, hay una variable "REGIONS" definida en cloudenum/azure_regions.py y cloudenum/gcp_regions.py que por defecto solo utiliza 1 región. Quizás quieras revisar estos archivos y editarlos para que sean relevantes para tu trabajo.
Detalles de uso completos
usage: cloud_enum.py [-h] -k KEYWORD [-m MUTATIONS] [-b BRUTE]
Multi-cloud enumeration utility. All hail OSINT!
optional arguments:
-h, --help show this help message and exit
-k KEYWORD, --keyword KEYWORD
Keyword. Can use argument multiple times.
-kf KEYFILE, --keyfile KEYFILE
Input file with a single keyword per line.
-m MUTATIONS, --mutations MUTATIONS
Mutations. Default: enum_tools/fuzz.txt
-b BRUTE, --brute BRUTE
List to brute-force Azure container names. Default: enum_tools/fuzz.txt
-t THREADS, --threads THREADS
Threads for HTTP brute-force. Default = 5
-ns NAMESERVER, --nameserver NAMESERVER
DNS server to use in brute-force.
-l LOGFILE, --logfile LOGFILE
Will APPEND found items to specified file.
-f FORMAT, --format FORMAT
Format for log file (text,json,csv - defaults to text)
--disable-aws Disable Amazon checks.
--disable-azure Disable Azure checks.
--disable-gcp Disable Google checks.
-qs, --quickscan Disable all mutations and second-level scans
Hasta ahora, he tomado prestado de: