Gayatri-Nakar/aws-cloud-security-lab
GitHub: Gayatri-Nakar/aws-cloud-security-lab
一个 AWS 云蜜罐实验室,通过故意暴露 EC2 实例收集真实攻击数据,并提供完整的多源日志分析与 MITRE ATT&CK 映射 pipeline。
Stars: 0 | Forks: 0
# AWS 云蜜罐:攻击面分析实验室
## 目标
我希望获得云安全和日志分析的实战经验。我构建了一个故意配置不当的 AWS EC2 实例,上面运行着一家虚构公司的内网,将其在互联网上暴露了 8 个小时,收集了所有能收集到的各层级日志,并对攻击情况进行了分析。这个代码库包含了一切:基础设施代码、Web 应用程序以及分析 pipeline。
该实例运行着 Apache、PHP 和 SQLite,托管了一个虚构的“Meridian Corp”员工门户,包含登录页面、管理员板块、文档下载和搜索功能。其安全组(security group)被故意配置错误:SSH、HTTP 和 HTTPS 均对 0.0.0.0/0 开放。这种错误配置正是本实验的核心目的。
## 代码库结构
```
aws-cloud-security-lab/
├── terraform/ # Full IaC for the lab environment
│ ├── main.tf
│ ├── vpc.tf
│ ├── security_group.tf # The intentional misconfiguration
│ ├── ec2.tf # Auto-terminates after 8 hours
│ ├── iam.tf # Least-privilege instance role
│ ├── s3.tf # Hardened log bucket
│ ├── cloudtrail.tf
│ ├── flow_logs.tf
│ ├── guardduty.tf # Optional, disabled during this run
│ ├── user_data.sh.tpl # First-boot deployment script
│ └── terraform.tfvars.example
│
├── webapp/ # The fake Meridian Corp employee portal
│ ├── public/ # What Apache serves to the internet
│ │ ├── index.php
│ │ ├── login.php
│ │ ├── admin.php
│ │ ├── search.php
│ │ ├── docs.php
│ │ ├── contact.php
│ │ └── policy_documents/
│ ├── db/ # SQLite schema, outside the web root
│ └── scripts/ # Setup and log sync helpers
│
├── analyze_logs.py # Five-phase log analysis pipeline
└── README.md
```
## 分析 pipeline 的功能
`analyze_logs.py` 从 S3 获取原始日志,并通过五个阶段对其进行处理:
1. **净化(Sanitize)** -- 在进行任何其他数据处理之前,掩码自身的 IP 地址
2. **解析(Parse)** -- 将所有七种日志源标准化为同一个 SQLite 表
3. **关联(Correlate)** -- 跨日志源按源 IP 分组,以发现多源攻击者
4. **映射(Map)** -- 使用 MITRE ATT&CK 技术 ID 标记观察到的行为
5. **报告(Report)** -- 编写 Markdown 结果报告
它处理的日志源包括:Apache access log、Apache error log、Linux auth.log、自定义 PHP 应用程序日志、SQLite 登录尝试快照、VPC Flow Logs 和 CloudTrail。
## 映射至 MITRE ATT&CK 的发现
在这 8 小时的窗口期内,该实例记录了来自 5,405 个不同源 IP 的 14,711 起事件。其中大部分是互联网背景噪音。值得关注的发现如下:
| 技术 | 实际发生的情况 |
|---|---|
| T1595.002 Active Scanning: Vulnerability Scanning | 两个 IP 以同步波次(间隔 5 小时,时间戳精确到秒)运行了一份完全相同的多 CVE 利用清单。这是一次扫描操作,使用了两个源地址。探测了 CVE-2021-41773、CVE-2017-9841、CVE-2018-20062、pearcmd RCE 和 Docker API。均未成功。 |
| T1595.001 Active Scanning: Scanning IP Blocks | Censys 和 Palo Alto Xpanse 均在第一个小时内表明身份并对该实例进行了索引。 |
| T1190 Exploit Public-Facing Application | 来自上述同步扫描器的特定 CVE payload。 |
| T1046 Network Service Discovery | 两个 IP 进行了系统性的端口扫描:一个扫描了 VNC 范围(5900-5999,62 个 TCP 端口),另一个扫描了 UDP 端口 4051-4099。两者均被安全组拒绝。 |
| T1083 File and Directory Discovery | 一个使用真实 iPhone Safari 用户代理的 IP 浏览了该站点并下载了一份文档。这可能是一个真实的人类用户发现了这个暴露的 IP。 |
同样值得注意的还有两件没有发生的事情:没有任何人提交过一次登录表单,也没有发生经典的 SSH 暴力破解。确实发生的 SSH 活动均属于侦察、抓取 banner 以及来自四个 IP 的身份验证前断开连接,其中包含一次中止的 root 登录尝试。
## 分为三部分的系列文章
本项目在 Medium 上通过三篇文章进行了记录:
- **第 1 部分:构建云蜜罐** -- 目的初衷、基础设施设计、Web 应用程序、遇到的 Bug 以及我是如何使其运行的
- **第 2 部分:设计日志净化与标准化 Pipeline** -- 分析 pipeline 的工作原理及其结构设计背后的原因
- **第 3 部分:技术发现报告** -- 全面分解针对该实例的攻击行为,结合所有日志源进行关联并映射至 ATT&CK
[在 Medium 上阅读](#) *(发布后添加链接)*
标签:AWS, DPI, ECS, PB级数据处理, Terraform, 安全运维, 漏洞探索, 蜜罐, 证书利用, 逆向工具