eloirey/aegis-project
GitHub: eloirey/aegis-project
Aegis 是一个 AWS 自愈型云安全靶场,通过部署、攻击、检测、自动修复并映射合规框架的方式,端到端重现云安全事件的完整生命周期。
Stars: 0 | Forks: 0
# Aegis 项目
### 针对 AWS 的自愈型云安全靶场
**攻击、检测、自动修复,并将每一项发现映射到 ENS、NIS2 和 CIS。**
部署 intentionally vulnerable AWS infrastructure,对其进行攻击,并观察它在几秒钟内完成自我检测和修复 —— 每一项发现都与西班牙 ENS 和欧盟 NIS2 框架紧密关联。
[]()
[]()
[]()
[]()
[]()
[]()
## 演示
▶️ **[观看 2 分钟演示](https://youtu.be/ur0KWMKvw1Y)** — 左侧发起攻击,右侧的实时发现面板同步响应:琥珀色表示已检测,绿色表示已自动修复,耗时约 3 秒。
## 项目简介
大多数“云安全”作品集项目要么只是现有扫描器的一个简单封装,要么就是一个静态的*“我在 AWS 上部署了一个 Web 应用程序”*演示。Aegis 采取了不同的切入点:它重现了**真实云安全事件的完整生命周期**,实现了端到端的自动化。
**部署 → 攻击 → 检测 → 响应 → 映射** — 这是云安全事件的完整生命周期,实现了端到端的自动化。
你不只是*口头讨论*配置错误 —— 而是真正去部署它们、利用它们、捕获它们、自动修复它们,并证明它们各自违反了哪些合规控制措施。
我是一名正在学习云安全的计算机工程专业学生,我构建这个项目是为了通过实践去深入理解云安全平台内部的运作机制,而不是仅仅停留在点击使用某个托管工具的层面。
## 差异化优势:将合规性作为上下文
每一项检测都会结合其在三个框架中违反的具体控制措施进行丰富:
- **ENS** — *Esquema Nacional de Seguridad*(皇家法令 311/2022),西班牙公共部门的国家级安全框架。
- **NIS2** — 欧盟关于网络和信息安全的指令。
- **CIS AWS Foundations Benchmark v3.0.0** — 国际基线标准。
因此,Aegis 不再只是简单地提示*“SSH 对全世界开放”*,而是生成一项经过丰富且具有可操作性的发现:
在公开的作品集项目中,这种与 ENS 的映射是很少见的。对于西班牙的雇主以及任何处理欧盟公共部门数据的组织来说,这表明开发者深刻理解了他们实际所处的监管环境。
## 工作原理

当发生危险的变更时,CloudTrail 会将其记录下来。EventBridge 规则会触发一个 **detection Lambda**,该函数**根据事件内容而非触发者**来识别威胁。随后,发现的内容会结合其合规控制措施进行信息丰富,通过 SNS 发出警报,其生命周期会被记录在 DynamoDB 中,最后第二个 **remediation Lambda** 会以**精准且可逆的方式**修复该问题。整个周期在几秒钟内即可运行完成,完全采用 serverless 架构,并完全由 Terraform 定义。
| 层级 | 功能说明 | 核心 AWS 服务 |
|-------|--------------|------------------|
| **Core (核心)** | 共享的日志记录、告警和持久化主干 | CloudTrail, SNS, S3, DynamoDB |
| **Scenarios (场景)** | 独立的易受攻击配置 | S3, IAM, EC2, VPC / Security Groups |
| **Detection (检测)** | 根据内容将高风险事件与规则匹配 | EventBridge → Lambda |
| **Remediation (修复)** | 以可逆的方式自动修复配置错误 | Lambda + boto3 |
| **Engine (引擎)** | 合规性映射、信息丰富、通知和持久化 | Python (boto3),使用 pytest 测试 |
| **Dashboards (面板)** | 实时发现流 + 合规覆盖率 | Streamlit + Altair |
每个场景都是完全模块化的,并遵循相同的内部模式,因此只需添加一个文件夹即可扩展靶场。
### 关于区域的一点说明
大多数资源都位于 `eu-west-1`。**IAM 是一项全局服务**,因此其 CloudTrail 事件仅传递到 `us-east-1` 的 EventBridge — 这意味着 IAM 场景的检测和修复会在 `us-east-1` 运行,同时仍会将发现结果**跨区域**写回 `eu-west-1` 的 DynamoDB 表中。正确处理这个特性是本项目构建过程中最具启发性的部分之一。
## 场景目录
这三个场景均已**完全实现并针对真实的 AWS 完成了验证** — 部署 → 攻击 → 检测 → 响应 → 映射,每个场景都提交了各自的 README 和经过验证的 `mapping.yaml`。
| # | 场景 | 技术 (MITRE ATT&CK) | 修复方式 | 区域 |
|---|----------|--------------------------|-------------|--------|
| 01 | 公开的 S3 bucket | T1530 — Data from Cloud Storage | 恢复公共访问阻止 / bucket policy | `eu-west-1` |
| 02 | 过度特权的 IAM | T1078 — Valid Accounts | 附加可逆的隔离拒绝策略 | `us-east-1` |
| 03 | 暴露的 SSH (`0.0.0.0/0`) | T1133 — External Remote Services | 仅撤销违规的 SG 规则 | `eu-west-1` |
修复策略特意设计为**精准且可逆**:IAM 场景从不分离原始策略(而是在其上叠加一层隔离拒绝策略),而 SSH 场景仅撤销特定的违规规则,而不是清空整个安全组。
## 仓库结构
```
aegis-project/
├── infra/core/ # shared backbone: CloudTrail, SNS, S3, DynamoDB
├── scenarios/ # one folder per attack scenario (the heart of the range)
│ ├── 01-public-s3-bucket/
│ │ ├── infra/ # Terraform: the vulnerable resource
│ │ ├── attack/ # Python: reproduce the exploit
│ │ ├── detection/ # EventBridge rule + detection Lambda
│ │ ├── remediation/ # Lambda that fixes it, reversibly
│ │ ├── mapping.yaml # ENS / NIS2 / CIS mapping for this scenario
│ │ └── README.md # the scenario's story
│ ├── 02-overprivileged-iam/
│ └── 03-exposed-ssh/
├── engine/ # shared Python: mapping, notifier, findings store
│ └── store/ # DynamoDB persistence for the finding lifecycle
├── dashboard/ # Streamlit: live findings + compliance coverage
├── scripts/ # deploy / destroy / run-attack helpers
├── tests/ # pytest suite for the engine
└── docs/ # architecture & compliance notes
```
## 引擎与持久化
`engine/` 包是共享的大脑,拥有一个经过测试的小型核心:
- **Mapper (映射器)** — 将原始检测转化为包含 ENS / NIS2 / CIS 控制措施、严重程度和 MITRE 技术的丰富发现结果,由每个场景的 `mapping.yaml` 驱动。
- **Notifier (通知器)** — 格式化并通过 SNS 发送丰富的警报。
- **Findings store (发现存储)** (`engine/store/`) — 在 DynamoDB 中记录生命周期:`record_detection()` 将发现结果写入为 `detected`;`record_remediation()` 将其更新为 `remediated`。这正是为实时面板提供实时、感知区域的视图的关键所在 — 包括来自 IAM 场景的跨区域写入。
引擎由 **pytest 套件**覆盖(使用 `moto` 模拟 AWS),因此无需触及真实账号即可验证映射和持久化逻辑。
## 面板
多页的 Streamlit 应用 (`dashboard/`):
- **Live Findings (实时发现)** — 实时读取 DynamoDB,显示每项发现从 **detected**(琥珀色)变为 **remediated**(绿色)的过程,并提供修复时间指标以及每项发现对应的合规控制措施。这是演示的核心部分。
- **Coverage (覆盖率)** — 读取每个场景的 `mapping.yaml`,并可视化该靶场练习了多少项 ENS / NIS2 / CIS 控制措施,同时通过 Altair 提供按框架细分的图表。
## 快速开始
```
git clone https://github.com/eloirey/aegis-project.git
cd aegis-project
python -m venv .venv && source .venv/Scripts/activate # Linux/macOS: source .venv/bin/activate
pip install -r requirements.txt
# 部署共享 backbone (CloudTrail, SNS, S3, DynamoDB)
./scripts/deploy.sh core
# 端到端部署一个 scenario (包含漏洞的 infra + 检测 + remediation)
./scripts/deploy.sh 03-exposed-ssh
# 发起攻击 — 它会自动从 Terraform outputs 中解析 targets
./scripts/run-attack.sh 03-exposed-ssh
# (可选) 观看实时演示
streamlit run dashboard/app.py
# 销毁 scenario (为了成本和安全非常重要!)
./scripts/destroy.sh 03-exposed-ssh
```
核心主干(CloudTrail、SNS、S3 日志、按需 DynamoDB 表)旨在以几乎为零的成本保持运行;每次会话结束后,只需销毁场景基础设施即可。
## 安全与成本
- **仅在专用的 AWS 沙箱账号中运行。** 绝不在生产环境中运行。
- 场景设计符合 **AWS Free Tier** 的额度范围;唯一具有实际按小时成本的资源是 SSH 场景中的 EC2 实例 —— 使用完毕后请务必执行 `destroy`。
- 在开始之前,请设置一个 **AWS Budget alert**。
- 这些易受攻击的资源在安全性上存在故意设计的缺陷 —— 在靶场运行期间,请将整个账号视为不受信任的状态。
- `alert_email` 被排除在版本控制之外,保存在被 gitignore 忽略的 `.tfvars` 文件中。
## 技术栈
`Terraform` · `AWS (CloudTrail, EventBridge, Lambda, SNS, IAM, S3, EC2, DynamoDB)` · `Python 3.12` · `boto3` · `pytest` + `moto` · `Checkov / tfsec` · `GitHub Actions` · `Streamlit` · `Altair`
**合规框架:** ENS (RD 311/2022) · NIS2 (Art. 21) · CIS AWS Foundations Benchmark v3.0.0
## 路线图
Aegis 目前发布了三个完整且经过验证的场景。这是一个持续进行的学习项目,自然的后续步骤是:
1. 覆盖更多 ENS / NIS2 控制措施的新场景(该模式专门设计为可通过添加文件夹来扩展)。
2. 一个蓝队配套项目 —— 在此基础设施之上进行威胁狩猎 / 迷你 SIEM 操作。
3. 更强的弹性:在检测路径上增加 dead-letter queues 和重试机制。
## 作者
**Eloi Rey** — 计算机工程专业学生,专注于云安全与合规。
[LinkedIn](https://www.linkedin.com/in/eloi-rey/) · [GitHub](https://github.com/eloirey) · [作品集](https://eloirey.github.io)
Aegis (希腊神话):宙斯和雅典娜的盾牌 —— 象征着保护。
标签:AWS, DPI, ECS, Kubernetes, OPA, Python, Terraform, 合规框架, 安全规则引擎, 无后门, 模块化设计, 漏洞利用检测, 自动化修复, 逆向工具, 靶场, 靶机