initstring/cloud_enum
GitHub: initstring/cloud_enum
多云 OSINT 枚举工具,通过关键词变形在 AWS、Azure 和 GCP 上发现公开暴露的云资源。
Stars: 2119 | Forks: 298
# cloud_enum
## cloud_enum 的未来
我在 2019 年构建了这个工具,用于一次涉及 Azure 的渗透测试,因为当时没有其他枚举工具支持它。它从那时起不断发展,我在添加功能的过程中学到了很多。
构建工具很有趣,但维护工具却很困难。我已经有一段时间没有亲自积极使用这个工具了,但我已经尽最大努力修复 bug 并审查 pull request。
展望未来,将此功能合并到一个维护良好且能处理基础操作(web/dns 请求、多线程、I/O、日志记录等)的项目中是合理的。[Nuclei](https://github.com/projectdiscovery/nuclei) 非常适合这项工作。你可以在[这里](https://github.com/projectdiscovery/nuclei-templates/pull/6865)查看我将 cloud_enum 功能迁移到 Nuclei 的第一个 PR。
我鼓励其他人向 Nuclei 贡献模板,这让我们可以专注于检测云资源,而将基础工作交给 Nuclei。
只要时间允许,我仍然会尝试在这里审查 PR 以修复 bug,但可能没有时间进行重大更改。
## 概述
多云 OSINT 工具。枚举 AWS、Azure 和 Google Cloud 中的公开资源。
目前枚举以下内容:
**Amazon Web Services**:
- 公开 / 受保护的 S3 Buckets
- awsapps(WorkMail、WorkDocs、Connect 等)
**Microsoft Azure**:
- Storage Accounts
- 公开的 Blob Storage Containers
- 托管数据库
- 虚拟机
- Web Apps
**Google Cloud Platform**
- 公开 / 受保护的 GCP Buckets
- 公开 / 受保护的 Firebase Realtime Databases
- Google App Engine 站点
- Cloud Functions(枚举存在函数的项目/区域,然后暴力破解实际的函数名)
- 公开的 Firebase Apps
请在[这里](https://www.youtube.com/embed/pTUDJhWJ1m0)观看 [Codingo](https://github.com/codingo) 的视频演示以查看实际操作。
## 用法
### 设置
该项目使用 [uv](https://github.com/astral-sh/uv) 进行依赖管理。安装 uv 后,运行:
```
uv sync
```
### 运行
唯一必需的参数是至少一个关键字。你可以使用内置的模糊测试字符串,但如果你使用 `-m` 和/或 `-b` 提供自己的字符串,将会得到更好的结果。
你可以通过多次指定 `-k` 参数来提供多个关键字。
关键字会使用 `enum_tools/fuzz.txt` 中的字符串或你通过 `-m` 标志提供的文件自动进行变形(mutate)。需要进行二级暴力破解的服务(Azure Containers 和 GCP Functions)默认也会使用 `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 Containers、GCP Functions)是按区域发现的。为了节省扫描时间,在 `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
```
## 致谢
到目前为止,我借鉴了:
- 来自 [GCPBucketBrute](https://github.com/RhinoSecurityLabs/GCPBucketBrute/blob/master/permutations.txt) 的一些排列组合
## 用法
### 设置
该项目使用 [uv](https://github.com/astral-sh/uv) 进行依赖管理。安装 uv 后,运行:
```
uv sync
```
### 运行
唯一必需的参数是至少一个关键字。你可以使用内置的模糊测试字符串,但如果你使用 `-m` 和/或 `-b` 提供自己的字符串,将会得到更好的结果。
你可以通过多次指定 `-k` 参数来提供多个关键字。
关键字会使用 `enum_tools/fuzz.txt` 中的字符串或你通过 `-m` 标志提供的文件自动进行变形(mutate)。需要进行二级暴力破解的服务(Azure Containers 和 GCP Functions)默认也会使用 `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 Containers、GCP Functions)是按区域发现的。为了节省扫描时间,在 `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
```
## 致谢
到目前为止,我借鉴了:
- 来自 [GCPBucketBrute](https://github.com/RhinoSecurityLabs/GCPBucketBrute/blob/master/permutations.txt) 的一些排列组合标签:Python, 多云计算, 实时处理, 无后门, 枚举工具, 逆向工具