我在2019年构建了这个工具,用于一次涉及Azure的渗透测试,因为当时没有其他枚举工具支持它。它从那里发展起来,在添加功能的过程中我学到了很多。
构建工具很有趣,但维护工具很难。我有一段时间没有积极使用这个工具了,但我已尽力修复错误和审查拉取请求。
向前看,将这些功能整合到一个维护良好、处理基本事项(Web/DNS请求、线程、I/O、日志等)的项目中是合理的。Nuclei 非常适合这个目的。你可以看到我第一个将 cloud_enum 功能迁移到 Nuclei 的拉取请求此处。
我鼓励其他人向 Nuclei 贡献模板,这样我们就可以专注于检测云资源,而将基础工作留给 Nuclei。
我仍会尽力在时间允许的情况下审查这里的拉取请求以修复错误,但可能没有时间进行重大改动。
感谢所有优秀的贡献者。祝你的侦察工作好运!
多云OSINT工具。枚举AWS、Azure和Google Cloud中的公共资源。
目前枚举以下内容:
亚马逊云服务:
微软Azure:
谷歌云平台
本项目使用 uv 进行依赖管理。安装 uv,然后运行:
uv sync
唯一必需的参数是至少一个关键词。你可以使用内置的模糊测试字符串,但如果使用 -m 和/或 -b 提供自己的字符串,将会得到更好的结果。
你可以通过多次指定 -k 参数来提供多个关键词。
关键词会根据 enum_tools/fuzz.txt 或你通过 -m 标志提供的文件中的字符串自动进行变异。需要二级暴力破解的服务(Azure 容器和 GCP 函数)默认也会使用 fuzz.txt,或使用你通过 -b 标志提供的文件。
假设你正在研究一家名为"somecompany"的公司,其网站是"somecompany.io",产品叫做"blockchaindoohickey"。你可以这样运行该工具:
uv run cloud_enum -k somecompany -k somecompany.io -k blockchaindoohickey
HTTP 抓取和 DNS 查找默认各使用 5 个线程。你可以尝试增加,但最终云提供商会对你进行速率限制。下面是一个增加到 10 的示例。
uv run cloud_enum -k keyword -t 10
重要提示:某些资源(Azure 容器、GCP 函数)是按区域发现的。为节省扫描时间,cloudenum/azure_regions.py 和 cloudenum/gcp_regions.py 中定义了一个"REGIONS"变量,默认设置为仅使用 1 个区域。你可能需要查看这些文件并编辑以适用于你的工作。
完整使用详情
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
到目前为止,我借鉴了: