
Outil OSINT multi-cloud. Énumère les ressources publiques dans AWS, Azure et Google Cloud.
J'ai construit cet outil en 2019 pour un test d'intrusion impliquant Azure, car aucun autre outil d'énumération ne le supportait à l'époque. Il a grandi à partir de là, et j'ai beaucoup appris en ajoutant des fonctionnalités.
Construire des outils est amusant, mais les maintenir est difficile. Je n'ai pas moi-même activement utilisé cet outil depuis un moment, mais j'ai fait de mon mieux pour corriger les bugs et examiner les pull requests.
À l'avenir, il est logique de consolider cette fonctionnalité dans un projet bien maintenu qui gère l'essentiel (requêtes web/DNS, threading, I/O, logging, etc.). Nuclei est vraiment bien adapté pour cela. Vous pouvez voir ma première PR pour migrer la fonctionnalité de cloud_enum vers Nuclei ici.
J'encourage les autres à contribuer des templates à Nuclei, nous permettant de nous concentrer sur la détection des ressources cloud tout en laissant le travail de base à Nuclei.
Je vais encore essayer de revoir les PR ici pour corriger les bugs lorsque le temps le permet, mais je n'aurai probablement pas le temps pour des changements majeurs.
Merci à tous les excellents contributeurs. Bonne chance pour votre recon !
Outil OSINT multi-cloud. Énumérez les ressources publiques dans AWS, Azure et Google Cloud.
Énumère actuellement :
Amazon Web Services :
Microsoft Azure :
Google Cloud Platform :
Voyez-le en action dans la démo vidéo de Codingo ici.
Ce projet utilise uv pour la gestion des dépendances. Installez uv, puis exécutez :
uv sync
Le seul argument obligatoire est au moins un mot-clé. Vous pouvez utiliser les chaînes de fuzzing intégrées, mais vous obtiendrez de meilleurs résultats si vous fournissez les vôtres avec -m et/ou -b.
Vous pouvez fournir plusieurs mots-clés en spécifiant l'argument -k plusieurs fois.
Les mots-clés sont mutés automatiquement à l'aide des chaînes de enum_tools/fuzz.txt ou d'un fichier que vous fournissez avec l'option -m. Les services nécessitant un second niveau de force brute (Conteneurs Azure et Fonctions GCP) utiliseront également fuzz.txt par défaut ou un fichier que vous fournissez avec l'option -b.
Supposons que vous recherchiez "somecompany" dont le site web est "somecompany.io" et qui fabrique un produit appelé "blockchaindoohickey". Vous pourriez exécuter l'outil comme ceci :
uv run cloud_enum -k somecompany -k somecompany.io -k blockchaindoohickey
Le scraping HTTP et les recherches DNS utilisent chacun 5 threads par défaut. Vous pouvez essayer d'augmenter cette valeur, mais éventuellement les fournisseurs cloud vous limiteront. Voici un exemple pour passer à 10.
uv run cloud_enum -k keyword -t 10
IMPORTANT : Certaines ressources (Conteneurs Azure, Fonctions GCP) sont découvertes par région. Pour gagner du temps lors de l'analyse, une variable "REGIONS" est définie dans cloudenum/azure_regions.py et cloudenum/gcp_regions.py, qui par défaut n'utilise qu'1 région. Vous devriez consulter ces fichiers et les modifier pour qu'ils soient pertinents pour votre propre travail.
Détails d'utilisation complets
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
Jusqu'à présent, j'ai emprunté à :