
Strumento OSINT multi-cloud. Enumera risorse pubbliche in AWS, Azure e Google Cloud.
Ho creato questo strumento nel 2019 per un pentest che coinvolgeva Azure, poiché all'epoca nessun altro strumento di enumerazione lo supportava. Da lì è cresciuto, e ho imparato molto aggiungendo funzionalità.
Costruire strumenti è divertente, ma mantenerli è difficile. Non uso attivamente questo strumento da un po' di tempo, ma ho fatto del mio meglio per correggere bug e revisionare pull request.
Andando avanti, ha senso consolidare questa funzionalità in un progetto ben mantenuto che gestisca l'essenziale (richieste web/dns, threading, I/O, logging, ecc.). Nuclei è davvero adatto a questo. Puoi vedere la mia prima PR per migrare la funzionalità di cloud_enum a Nuclei qui.
Incoraggio altri a contribuire con template a Nuclei, permettendoci di concentrarci sul rilevamento delle risorse cloud mentre lasciamo le fondamenta a Nuclei.
Cercherò comunque di revisionare le PR qui per risolvere bug quando il tempo lo permette, ma probabilmente non avrò tempo per modifiche importanti.
Grazie a tutti i grandi contributori. Buona fortuna con il vostro recon!
Strumento OSINT multi-cloud. Enumera risorse pubbliche in AWS, Azure e Google Cloud.
Attualmente enumera quanto segue:
Amazon Web Services:
Microsoft Azure:
Google Cloud Platform
Guardalo in azione nella demo video di Codingo qui.
Questo progetto utilizza uv per la gestione delle dipendenze. Installa uv, poi esegui:
uv sync
Oppure installalo come strumento standalone:
uv tool install git+https://github.com/initstring/cloud_enum
L'unico argomento richiesto è almeno una keyword. Puoi usare le stringhe di fuzzing integrate, ma otterrai risultati migliori se ne fornisci di tue con -m e/o -b.
Puoi fornire più keyword specificando l'argomento -k più volte.
Le keyword vengono mutate automaticamente usando stringhe da enum_tools/fuzz.txt o da un file che fornisci con il flag -m. I servizi che richiedono un secondo livello di brute forcing (Azure Containers e GCP Functions) useranno anch'essi fuzz.txt per impostazione predefinita o un file che fornisci con il flag -b.
Supponiamo che tu stia ricercando "somecompany" il cui sito web è "somecompany.io" che produce un prodotto chiamato "blockchaindoohickey". Potresti eseguire lo strumento così:
uv run cloud_enum -k somecompany -k somecompany.io -k blockchaindoohickey
Lo scraping HTTP e le ricerche DNS usano 5 thread ciascuno per impostazione predefinita. Puoi provare ad aumentarlo, ma alla fine i provider cloud ti limiteranno. Ecco un esempio per aumentare a 10.
uv run cloud_enum -k keyword -t 10
IMPORTANTE: Alcune risorse (Azure Containers, GCP Functions) vengono scoperte per regione. Per risparmiare tempo nella scansione, c'è una variabile "REGIONS" definita in enum_tools/azure_regions.py e enum_tools/gcp_regions.py che è impostata per impostazione predefinita per usare solo 1 regione. Potresti voler dare un'occhiata a questi file e modificarli per renderli rilevanti al tuo lavoro.
Dettagli completi sull'utilizzo
usage: cloud_enum [-h] (-k KEYWORD | -kf KEYFILE) [-m MUTATIONS] [-b BRUTE] [-t THREADS]
[-ns NAMESERVER] [-nsf NAMESERVERFILE] [-l LOGFILE] [-f FORMAT] [--disable-aws]
[--disable-azure] [--disable-gcp] [-qs]
Multi-cloud enumeration utility. All hail OSINT!
options:
-h, --help show this help message and exit
-k, --keyword KEYWORD
Keyword. Can use argument multiple times.
-kf, --keyfile KEYFILE
Input file with a single keyword per line.
-m, --mutations MUTATIONS
Mutations. Default: enum_tools/fuzz.txt
-b, --brute BRUTE List to brute-force Azure container names. Default: enum_tools/fuzz.txt
-t, --threads THREADS
Threads for HTTP brute-force. Default = 5
-ns, --nameserver NAMESERVER
DNS server to use in brute-force. Default: 1.1.1.1
-nsf, --nameserverfile NAMESERVERFILE
Path to the file containing nameserver IPs
-l, --logfile LOGFILE
Appends found items to specified file.
-f, --format FORMAT Format for log file (text,json,csv) - default: 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
Finora ho preso in prestito da: