praetorian-inc/aurelian
GitHub: praetorian-inc/aurelian
Aurelian 是一个统一多云安全侦察框架,用 Go 编写,通过单一 CLI 在 AWS、Azure、GCP 中发现机密泄露、公开暴露资源和 IAM 权限提升路径。
Stars: 12 | Forks: 0
Aurelian
开源云安全侦察框架
通过单一 CLI 检测 AWS、Azure 和 GCP 中的机密信息、错误配置、公开暴露及权限提升路径。
Aurelian 是什么? •
核心能力 •
安装 •
快速入门 •
模块 •
文档 •
常见问题
## Aurelian 是什么?
Aurelian 是一个用 Go 构建的开源多云安全侦察框架。它为 Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud Platform (GCP) 提供了一个统一命令行接口,用于云安全评估。
其他工具通常要求您针对每个云服务提供商学习不同的工作流程,而 Aurelian 为您提供**一套适用于所有平台的命令结构**:`aurelian [platform] recon [module]`。每个模块将复杂的多步骤安全工作流程(资源枚举、内容提取、机密扫描、策略分析、访问评估)封装在单个命令之后。
Aurelian 由 [Praetorian](https://www.praetorian.com) 的攻击安全团队构建,基于数百个企业环境中多年的云渗透测试和红队演练经验。
### 为什么选择 Aurelian?
| 挑战 | Aurelian 如何解决 |
|-----------|----------------------|
| **工具碎片化** — 每个云平台、每个任务都有不同的工具 | 统一的 CLI:在 AWS、Azure 和 GCP 中使用相同的命令和输出格式 |
| **复杂的枚举工作流** — 单个发现需要数十次 API 调用 | 每个模块在一个命令后编排完整的工作流 |
| **机密信息分散在云服务中** — 用户数据、环境变量、配置、日志 | `find-secrets` 从 30 多种源类型提取内容,并使用 [Titus](https://github.com/praetorian-inc/titus) 进行扫描 |
| **评估期间的检测** — CloudTrail 日志会暴露侦察活动 | OPSEC 感知技术可最小化日志痕迹 |
| **理解 IAM 爆炸半径** — 权限复杂且相互关联 | 使用 Neo4j 进行图分析,可视化权限提升路径 |
## 核心能力
### 机密发现
枚举云资源,从 30 多种源类型(EC2 user data、Lambda 代码、CloudFormation 模板、CloudWatch 日志、ECS 任务定义、环境变量、存储 Blobs、应用程序配置)中提取内容,并使用 [Titus](https://github.com/praetorian-inc/titus) 扫描硬编码凭证、API 密钥和令牌。可选验证功能可确认发现的机密是否处于活动状态。
### 公开资源检测
结合资源列表、属性丰富、策略获取和访问评估,识别可公开访问的资源 —— 开放的 S3 存储桶、暴露的数据库、公共 IP、允许匿名访问的存储账户等。
### IAM 权限提升分析
收集 IAM 数据(Get Account Authorization Details、资源策略、组织策略),评估有效权限,并检测权限提升路径。输出 JSON 或填充 Neo4j 图数据库以进行交互式探索。
### 子域名接管检测
根据已知的云特定接管模式,检查 Route53、Azure DNS 和 Cloud DNS 中的 DNS 记录 —— 指向未认领云资源的悬空 CNAME。
### 云错误配置扫描
基于 Azure Resource Graph 模板检测弱身份验证、禁用 RBAC、过于宽松的访问规则及其他配置问题。
### OPSEC 感知侦察
避免 CloudTrail 日志记录的隐蔽技术。`whoami` 模块利用在错误消息中泄露身份且不生成审计日志条目的 API 来识别调用者 ARN。
## 支持的云平台
| 平台 | 别名 | 模块 | 能力 |
|----------|-------|---------|--------------|
| **Amazon Web Services (AWS)** | `aws`, `amazon` | 12 | 机密、公开资源、IAM 图、子域名接管、OPSEC whoami、成本分析、CDK/CloudFront 接管 |
| **Microsoft Azure** | `azure`, `az` | 6 | 机密、公开资源、配置扫描、子域名接管、条件访问策略 |
| **Google Cloud Platform (GCP)** | `gcp`, `google` | 4 | 机密、公开资源、子域名接管、资源枚举 |
## 安装说明
### 从源码构建(推荐)
```
git clone https://github.com/praetorian-inc/aurelian.git
cd aurelian
go build -o aurelian main.go
```
需要 **Go 1.24+**。
### Docker
```
docker build -t aurelian .
docker run --rm -v ~/.aws:/root/.aws aurelian aws recon whoami
```
包含一个 `docker-compose.yml`,其中包含所有三个云提供商的凭证卷挂载。
### 构建选项
```
# 标准构建
go build -o aurelian .
# SQLite 支持的存储 (适用于内存受限环境)
go build -tags cache_sqlite -o aurelian .
```
## 快速入门
### 验证您的身份(OPSEC 安全)
```
# 无需 CloudTrail 日志即可识别调用者 ARN
aurelian aws recon whoami
```
### 查找硬编码机密
```
# 扫描所有 AWS 区域中的 EC2 user data、Lambda 代码、CloudWatch 日志等中的 secrets
aurelian aws recon find-secrets
# 扫描 Azure subscriptions
aurelian azure recon find-secrets --subscription-id
# 扫描 GCP projects
aurelian gcp recon find-secrets --project-id
```
### 检测公开资源
```
# 查找公开可访问的 AWS 资源 (S3 buckets、RDS instances 等)
aurelian aws recon public-resources
# Azure 公开资源
aurelian azure recon public-resources --subscription-id
# GCP 公开资源
aurelian gcp recon public-resources --project-id
```
### 分析 IAM 权限提升
```
# 构建 IAM 图并检测 escalation paths
aurelian aws recon graph --neo4j-uri bolt://localhost:7687
# 基于 GAAD export 的离线分析
aurelian aws analyze analyze-iam-permissions --gaad-file gaad.json
```
### 检测子域名接管
```
aurelian aws recon subdomain-takeover
aurelian azure recon subdomain-takeover --subscription-id
aurelian gcp recon subdomain-takeover --project-id
```
### 列出所有模块
```
aurelian list-modules
```
## 模块
### AWS 侦察
| 模块 | 描述 |
|--------|-------------|
| `find-secrets` | 枚举资源,从 30 多种源类型提取内容,使用 Titus 扫描 |
| `public-resources` | 通过策略和属性评估检测可公开访问的资源 |
| `graph` | 收集 IAM 数据,评估权限,检测权限提升路径 |
| `subdomain-takeover` | 检查 Route53 DNS 中是否存在悬空 CNAME 云接管模式 |
| `whoami` | 通过 CloudTrail 静默 API 技术进行 OPSEC 安全的身份检查 |
| `list-all` | 枚举跨区域的所有 Cloud Control 资源 |
| `account-auth-details` | 导出 IAM Get Account Authorization Details (GAAD) |
| `resource-policies` | 提取基于资源的策略以供分析 |
| `org-policies` | 获取 AWS Organizations SCPs 和策略 |
| `cost-summary` | 汇总 AWS 成本和使用数据 |
| `cdk-bucket-takeover` | 检测孤立的 CDK 引导存储桶 |
| `cloudfront-s3-takeover` | 检测指向未认领 S3 源的 CloudFront 分配 |
### AWS 分析
| 模块 | 描述 |
|--------|-------------|
| `analyze-iam-permissions` | 离线 IAM 分析 — 权限提升、跨账户访问、先创建后使用模式 |
| `expand-actions` | 将 IAM 通配符操作扩展为具体权限 |
| `access-key-to-account-id` | 将 AWS 访问密钥解析为账户 ID |
| `ip-lookup` | 识别给定 IP 地址的 AWS IP 范围 |
| `known-account` | 检查账户 ID 是否属于已知的 AWS 服务账户 |
### Azure 侦察
| 模块 | 描述 |
|--------|-------------|
| `find-secrets` | 发现 Azure 服务中的机密 — Key Vaults、App Settings、Cosmos DB 等 |
| `public-resources` | 检测公开暴露的 Azure 资源 |
| `configuration-scan` | 基于 Resource Graph 模板的错误配置检测 |
| `subdomain-takeover` | 检查 Azure DNS 区域是否存在悬空 CNAME |
| `conditional-access-policies` | 枚举条件访问策略以查找弱点 |
| `list-all` | 枚举跨订阅的所有资源 |
### GCP 侦察
| 模块 | 描述 |
|--------|-------------|
| `find-secrets` | 发现 GCP 服务中的机密 — 元数据、环境变量、存储对象 |
| `public-resources` | 识别可公开访问的 GCP 资源 |
| `subdomain-takeover` | 检查 Cloud DNS 中是否存在悬空 CNAME 记录 |
| `list-all` | 枚举跨项目的所有资源 |
## 架构
Aurelian 构建在三个核心模式之上:
- **模块 (Modules)** — 实现 `plugin.Module` 的入口点。通过 `init()` 注册,自动发现,接入 CLI。每个模块封装了一个完整的安全工作流。
- **管道 (Pipelines)** — `pipeline.P[T]` 是一个支持背压的泛型流式原语。模块链接管道阶段以并发处理资源。
- **组件 (Components)** — `pkg///` 中的可复用构建块,具有兼容管道的方法。无状态处理器通过 `pipeline.Pipe` 接入模块。
```
Module → Pipeline.Pipe(Lister) → Pipeline.Pipe(Enricher) → Pipeline.Pipe(Evaluator) → Output
```
Aurelian 的插件架构意味着添加新模块非常简单,只需实现 `plugin.Module` 接口并调用 `plugin.Register()` —— CLI、标志和参数绑定都会自动处理。
## 库用法
将 Aurelian 模块直接导入 Go 应用程序:
```
import (
"github.com/praetorian-inc/aurelian/pkg/plugin"
_ "github.com/praetorian-inc/aurelian/pkg/modules/aws/recon"
)
mod, _ := plugin.Get("aws", "recon", "whoami")
results, err := mod.Run(cfg)
```
## 文档
[`docs/`](docs/) 目录中提供了详细的各模块文档:
| 章节 | 描述 |
|---------|-------------|
| [`docs/aurelian_aws_recon.md`](docs/aurelian_aws_recon.md) | AWS 侦察模块参考 |
| [`docs/aurelian_aws_analyze.md`](docs/aurelian_aws_analyze.md) | AWS 分析模块参考 |
| [`docs/aurelian_azure_recon.md`](docs/aurelian_azure_recon.md) | Azure 侦察模块参考 |
| [`docs/aurelian_gcp_recon.md`](docs/aurelian_gcp_recon.md) | GCP 侦察模块参考 |
| [DEVELOPMENT.md](DEVELOPMENT.md) | 架构深度剖析、管道生命周期、集成测试 |
| [CONTRIBUTING.md](CONTRIBUTING.md) | 如何添加模块、组件及提交 PR |
## Aurelian 对比
Aurelian 在云安全工具领域占据独特地位 —— 它是专为**攻击安全侦察**而构建的统一多云接口,而大多数替代品专注于合规性扫描或单云利用。
| 能力 | Aurelian | Prowler | ScoutSuite | Pacu | Cartography |
|------------|----------|---------|------------|------|-------------|
| **多云统一 CLI** | AWS, Azure, GCP | AWS, Azure, GCP, K8s | AWS, Azure, GCP | 仅 AWS | AWS, Azure, GCP |
| **机密发现(30+ 源)** | 是 | 有限 | 否 | 否 | 否 |
| **OPSEC 感知(CloudTrail 规避)** | 是 | 否 | 否 | 部分 | 否 |
| **IAM 权限提升图** | 是 (Neo4j) | 否 | 否 | 是 | 是 (Neo4j) |
| **子域名接管检测** | 是 | 否 | 否 | 否 | 否 |
| **公开资源检测** | 是 | 是 | 是 | 否 | 否 |
| **错误配置扫描** | 是 (Azure) | 是 | 是 | 否 | 否 |
| **合规框架 (CIS, NIST)** | 否 | 是 | 是 | 否 | 否 |
| **编写语言** | Go | Python | Python | Python | Python |
| **插件架构** | 是 | 是 | 否 | 是 | 否 |
**在以下情况选择 Aurelian**:您需要跨多个云进行攻击侦察 —— 机密、暴露、IAM 分析和接管检测 —— 并具备 OPSEC 意识。**在以下情况选择 Prowler/ScoutSuite**:您需要具有 CIS 基准报告的合规性重点态势管理。
## 常见问题
### Aurelian 支持哪些云提供商?
Aurelian 支持 Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud Platform (GCP)。这三者都使用相同的命令结构:`aurelian [platform] recon [module]`。
### Aurelian 需要什么权限?
Aurelian 使用只读 API 访问。对于 AWS,`SecurityAudit` 托管策略覆盖了大多数模块。Azure 模块需要 `Reader` 角色。GCP 模块需要 `Viewer` 角色。`whoami` 模块不需要任何权限 —— 它使用在错误响应中泄露身份的 API。
### Aurelian 会写入 CloudTrail 吗?
大多数模块会生成标准的只读 CloudTrail 条目。`whoami` 模块通过使用隐蔽 API 技术(Timestream、Pinpoint、SQS 错误消息)专门避免 CloudTrail 日志记录。设置 `--opsec_level` 以控制日志记录行为。
### Aurelian 与 Prowler 有何不同?
Prowler 是一个专注于 CIS Benchmarks 和 NIST 等合规框架的云安全态势管理 (CSPM) 工具。Aurelian 是一个为攻击安全构建的侦察框架 —— 它在 30 多种云源类型中查找机密,检测 IAM 权限提升路径,识别子域名接管机会,并使用最小化检测的 OPSEC 感知技术。它们是互补的工具。
### Aurelian 与 Pacu 有何不同?
Pacu 是一个用于主动攻击(权限提升、持久化、数据渗出)的 AWS 利用框架。Aurelian 是一个用于发现弱点的侦察框架 —— 它扫描并报告但不进行利用。Aurelian 还支持 Azure 和 G,而 Pacu 仅限 AWS。
### 我可以将 Aurelian 作为 Go 库使用吗?
可以。所有模块都可以通过 `github.com/praetorian-inc/aurelian/pkg/plugin` 导入。调用 `plugin.Get()` 检索模块,调用 `mod.Run()` 以编程方式执行它。
### 如何添加新模块?
实现 `plugin.Module` 接口并在 `init()` 中使用 `plugin.Register()` 注册。CLI、标志和参数绑定会自动处理。有关完整演练,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
### 什么是 Titus?
[Titus](https://github.com/praetorian-inc/titus) 是 Praetorian 的开源机密检测引擎。Aurelian 的 `find-secrets` 模块从云资源中提取内容,并通过 Titus 进行基于模式的扫描,并提供可选的机密验证。
## 安全
有关漏洞报告指南,请参阅 [SECURITY.md](SECURITY.md)。请仅针对您拥有或获得明确授权评估的云环境运行 Aurelian。
## 贡献
有关开发设置、模块创建和 PR 指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
Apache 2.0 — 详情请参阅 [LICENSE](LICENSE)。
## 关于 Praetorian
Aurelian 由 [Praetorian](https://www.praetorian.com) 开发和维护,这是一家攻击安全公司,帮助企业发现并修复其最关键的漏洞。我们的工具构建于真实的云渗透测试和红队演练经验。
- [Praetorian 官网](https://www.praetorian.com)
- [Praetorian GitHub](https://github.com/praetorian-inc)
- [Titus — 机密检测引擎](https://github.com/praetorian-inc/titus)标签:CSPM, EVTX分析, GCP 安全, Golang, SMB, StruQ, TinkerPop, Web报告查看器, 云合规, 协议分析, 安全侦察, 安全编程, 开源安全工具, 日志审计, 权限提升, 请求拦截, 足迹分析, 逆向工程平台, 错误配置检测