praetorian-inc/aurelian

GitHub: praetorian-inc/aurelian

Aurelian 是一个统一多云安全侦察框架,用 Go 编写,通过单一 CLI 在 AWS、Azure、GCP 中发现机密泄露、公开暴露资源和 IAM 权限提升路径。

Stars: 12 | Forks: 0

Aurelian — Open-Source Multi-Cloud Security Reconnaissance Framework for AWS, Azure, and GCP

Aurelian

开源云安全侦察框架
通过单一 CLI 检测 AWS、Azure 和 GCP 中的机密信息、错误配置、公开暴露及权限提升路径。

Aurelian CI Build Status Aurelian Latest Release Apache 2.0 License GitHub Stars Go Report Card

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报告查看器, 云合规, 协议分析, 安全侦察, 安全编程, 开源安全工具, 日志审计, 权限提升, 请求拦截, 足迹分析, 逆向工程平台, 错误配置检测