
Ferramenta de OSINT multi-cloud. Enumera recursos públicos na AWS, no Azure e no Google Cloud.
Construí esta ferramenta em 2019 para um pentest envolvendo Azure, já que nenhuma outra ferramenta de enumeração a suportava na época. Ela cresceu a partir daí, e aprendi muito enquanto adicionava funcionalidades.
Construir ferramentas é divertido, mas mantê-las é difícil. Não uso ativamente esta ferramenta há algum tempo, mas fiz o meu melhor para corrigir bugs e revisar pull requests.
Seguindo em frente, faz sentido consolidar essa funcionalidade em um projeto bem mantido que lide com o essencial (requisições web/dns, threading, I/O, logging, etc.). O Nuclei é realmente muito adequado para isso. Você pode ver meu primeiro PR para migrar a funcionalidade do cloud_enum para o Nuclei aqui.
Incentivo outros a contribuir com templates para o Nuclei, permitindo que nos concentremos em detectar recursos em nuvem enquanto deixamos a base para o Nuclei.
Ainda tentarei revisar PRs aqui para corrigir bugs conforme o tempo permitir, mas provavelmente não terei tempo para grandes mudanças.
Obrigado a todos os excelentes contribuidores. Boa sorte com seu recon!
Ferramenta OSINT multi-nuvem. Enumere recursos públicos na AWS, Azure e Google Cloud.
Atualmente enumera o seguinte:
Amazon Web Services:
Microsoft Azure:
Google Cloud Platform
Veja em ação na demonstração em vídeo do Codingo aqui.
Este projeto usa uv para gerenciamento de dependências. Instale o uv e execute:
uv sync
O único argumento obrigatório é pelo menos uma palavra-chave. Você pode usar as strings de fuzzing embutidas, mas obterá melhores resultados se fornecer as suas próprias com -m e/ou -b.
Você pode fornecer várias palavras-chave especificando o argumento -k várias vezes.
As palavras-chave são mutadas automaticamente usando strings de enum_tools/fuzz.txt ou um arquivo que você fornecer com a flag -m. Serviços que exigem um segundo nível de brute force (Contêineres Azure e Funções GCP) também usarão fuzz.txt por padrão ou um arquivo que você fornecer com a flag -b.
Digamos que você esteja pesquisando "somecompany" cujo site é "somecompany.io" e que fabrica um produto chamado "blockchaindoohickey". Você poderia executar a ferramenta assim:
uv run cloud_enum -k somecompany -k somecompany.io -k blockchaindoohickey
O scraping HTTP e as consultas DNS usam 5 threads cada por padrão. Você pode tentar aumentar, mas eventualmente os provedores de nuvem vão limitar sua taxa. Aqui está um exemplo para aumentar para 10.
uv run cloud_enum -k keyword -t 10
IMPORTANTE: Alguns recursos (Contêineres Azure, Funções GCP) são descobertos por região. Para economizar tempo de varredura, há uma variável "REGIONS" definida em cloudenum/azure_regions.py e cloudenum/gcp_regions.py que está configurada por padrão para usar apenas 1 região. Talvez você queira olhar esses arquivos e editá-los para serem relevantes ao seu próprio trabalho.
Detalhes Completos de Uso
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
Até agora, peguei emprestado de: