ParmeetGill422/AWS-Incident-Response-Lab

GitHub: ParmeetGill422/AWS-Incident-Response-Lab

一个基于AWS的事件响应实战实验,通过三个真实安全场景的完整模拟,配合自定义Python取证工具,系统演练云安全事件的检测、调查、修复和预防全流程。

Stars: 0 | Forks: 0

# 🛡️ AWS 事件响应实验 ![Status](https://img.shields.io/badge/Status-Complete-brightgreen?style=for-the-badge) ![Platform](https://img.shields.io/badge/Platform-AWS-FF9900?style=for-the-badge&logo=amazonaws&logoColor=white) ![Language](https://img.shields.io/badge/Language-Python-3776AB?style=for-the-badge&logo=python&logoColor=white) ![Focus](https://img.shields.io/badge/Focus-Incident%20Response-red?style=for-the-badge) ## 📌 项目概述 本项目模拟了升级工程师每天需要响应的**真实 AWS 安全事件**。从零开始构建了三个完整的突发事件场景,每个场景都贯穿了完整的事件响应生命周期:**检测 → 调查 → 修复 → 预防**。 本项目还包含一个自定义的 **Python 取证工具**,可自动解析 S3 访问日志并生成结构化的事件报告——这与安全运营中心 (SOC) 用于大规模对泄露事件进行分诊的工具类型相同。 此类事件处理工作由 Amazon、Capital One 以及所有以云为先的大型企业中的 **AWS 升级工程师 (ES2)、安全运营团队和事件响应分析师**每天执行。 ## 🛠️ 使用的技术 | 服务 / 工具 | 用途 | |---|---| | Amazon EC2 | 模拟生产服务器 | | Amazon CloudWatch | 监控、警报和指标仪表板 | | AWS CloudTrail | API 调用审计和取证调查 | | AWS IAM | 身份和访问管理 | | Amazon S3 | 对象存储和存储桶策略 | | AWS CloudShell | 基于浏览器的 AWS CLI | | Python 3 | 自定义取证工具 | | S3 服务器访问日志 | 泄露分析的取证数据源 | ## 🚨 事件场景 ### 事件 1 — CloudWatch 警报分诊 (高 CPU) **场景:** 触发了一个 CloudWatch 警报,指示 `prod-web-server` 上的 CPU 利用率超过了 40% 的阈值。作为值班工程师,我进行了调查、记录了时间线并解决了该事件。 **严重级别:** P2 性能事件 **响应操作:** - 配置了带有 SNS 通知的 CloudWatch 警报 `HighCPU-prod-web-server` - 通过对 EC2 实例进行压力测试触发了受控的 CPU 飙升 - 在 EC2 监控选项卡中调查了 CPU、网络和磁盘指标 - 记录了从检测到解决的事件时间线 - 验证了 CPU 恢复正常后警报已恢复至 OK 状态 **展示技能:** 监控、警报、指标分析、事件文档记录 ### 事件 2 — 未授权访问调查 **场景:** 一个用户账户 (`temp-contractor`) 尝试跨 EC2、IAM 和 CloudTrail 服务进行多次未授权的 API 调用。我使用 CloudTrail 取证进行了调查,确定了来源并锁定了该账户。 **严重级别:** P1 安全事件 **响应操作:** - 创建了仅具有 S3 ReadOnly 访问权限的有限权限 IAM 用户 - 通过 AWS CloudShell 模拟了未授权的 API 尝试 - 在 CloudTrail 事件历史记录中调查了被拒绝的调用 - 提取了取证数据:源 IP、时间戳、错误代码、请求 ID - 停用了用户的访问密钥作为即时遏制措施 - 应用了显式的 `EmergencyLockout` 拒绝策略作为纵深防御 **展示技能:** CloudTrail 取证、IAM 安全、遏制程序、纵深防御 ### 事件 3 — S3 公开暴露泄露 (Capital One 模式) **场景:** 一个包含敏感客户数据 (`customer-database.csv`、`employee-salaries.csv`、`internal-passwords.txt`) 的 S3 存储桶被错误配置为允许公共互联网访问——复现了曾影响 Capital One 的确切泄露模式。我检测到了该暴露,调查了其影响,并完全修复了该存储桶。 **严重级别:** P0 严重安全事件 **响应操作:** - 创建了包含看似敏感测试数据的 S3 存储桶 - 启用了 S3 服务器访问日志以提供取证能力 - 配置了授予 `Principal: "*"` `s3:GetObject` 权限的公共存储桶策略 - **演示了主动暴露**——在没有 AWS 凭证的情况下通过隐身浏览器访问了文件 - 在 CloudTrail 中调查了 `PutBucketPolicy` 事件,以确定发生更改的时间和方式 - 分析了 S3 访问日志以识别所有未授权的访问尝试 - 移除了公共存储桶策略 - 在存储桶和账户级别重新启用了 `Block Public Access` - 通过确认先前暴露的 URL 上返回 `AccessDenied` 响应来验证了修复结果 **展示技能:** S3 安全、存储桶策略、泄露取证、数据暴露分析、账户级别预防性控制 ## 🐍 自定义 Python 取证工具 构建了一个自定义的 Python 脚本 (`s3_forensics.py`),用于在发生泄露后自动分析 S3 访问日志。该工具能够: - 解析来自任何存储桶的原始 S3 访问日志 - 识别未授权的 GET 请求 - 提取源 IP、时间戳、请求 ID 和被访问的文件名 - 计算被窃取的总字节数和暴露的文件数量 - 输出结构化的 JSON 事件报告,可直接交接给 SOC 这展示了编写**运维工具**的能力——这是 ES2 和云安全工程角色的关键技能,在这些角色中,工程师需要自动化可重复的调查工作流。 ## 📸 截图 ### 事件 1 — CloudWatch 警报分诊 **配置为 OK 状态的警报** ![CloudWatch 警报 OK](HighCPU-prod-web-server in OK) **CPU 飙升期间处于警报状态的警报** ![CloudWatch 警报已触发](CPU spike graph visible) **指标图上可见的 CPU 飙升** ![CloudWatch 指标飙升](metrics graph) ![CloudWatch 指标飙升](metrics graph1) **事件期间显示所有指标的 EC2 监控选项卡** ![EC2 监控](EC2 Monitoring tab) **解决后警报恢复至 OK 状态** ![CloudWatch 警报已解决](CloudWatch alarm back in OK ) ### 事件 2 — 未授权访问调查 **CloudShell 中 temp-contractor 的多个 Access Denied 错误** ![CloudShell Access Denied](CloudShell showing multiple Access Denied) **显示所有被拒绝 API 调用的 CloudTrail 事件历史记录** ![CloudTrail 事件历史记录](CloudTrail event history showing all denied API calls) **包含源 IP 和错误代码的 CloudTrail 事件详情** ![CloudTrail 事件详情](CloudTrail event detail showing sourceIPAddress) **作为遏制措施已停用访问密钥** ![访问密钥已停用](temp-contractor access key status changed to Inactive) **应用 EmergencyLockout 策略后账户被锁定** ![已应用紧急锁定](temp-contractor showing both the deactivated key and EmergencyLockout policy) ### 事件 3 — S3 公开暴露泄露 **在禁用 Block Public Access 的情况下创建了存储桶(引入了漏洞)** ![S3 Block Public Access 已禁用](lock Public Access disabled showing the warning) **敏感文件已上传到存储桶** ![S3 敏感文件](showing 3 sensitive-looking files uploaded with file sizes and dates) **存储桶显示“Publicly accessible”徽章——泄露正在进行中** ![S3 公开徽章](Publicly accessible red badge ) **在无凭证情况下通过隐身浏览器公开访问文件** ![公开文件访问](Browser showing the customer-database csv) ![公开文件访问](Screenshot 2026-04-26 163206) **CloudTrail PutBucketPolicy 事件显示是谁进行了更改** ![CloudTrail PutBucketPolicy](CloudTrail event detail showing PutBucketPolicy) **显示未授权 GET 请求的 S3 访问日志** ![S3 访问日志]() **存储桶已完全修复——Block Public Access 已开启** ![S3 已修复](Block all public access) **修复后在隐身浏览器中确认了 AccessDenied** ![修复后的 Access Denied](Incognito browser showing AccessDenied error after remediation) **作为预防性控制措施启用了账户级别的 Block Public Access** ![账户 Block Public Access](S3 account-level Block Public Access) ## 🔑 涵盖的关键概念 - **事件响应生命周期** — 检测、调查、遏制、根除、恢复和经验教训 - **CloudWatch 监控** — 指标警报、SNS 通知和仪表板分析 - **CloudTrail 取证** — 在安全事件期间识别谁在什么时间、从哪里做了什么 - **IAM 安全** — 最小权限、访问密钥管理和紧急锁定策略 - **S3 安全** — 存储桶策略、ACL、Block Public Access 和访问日志记录 - **泄露遏制** — 立即撤销访问权限和纵深防御控制 - **预防性控制** — 可防止整类事件发生的账户级别配置 - **安全工具** — 编写 Python 自动化程序以大规模分诊事件 ## 🎯 为什么这个项目很重要 这三种事件类型代表了当今生产环境中 **AWS 升级工程师和云安全团队处理的最常见的升级事件**: - **EC2 性能问题**是客户联系 AWS Support 的首要原因 - **未授权 API 访问调查**是安全运营中心的日常工作 - **S3 公开暴露事件**曾导致 Capital One(罚款 8000 万美元)、Twilio、Verizon、Accenture 等许多公司发生泄露 通过亲自动手构建、破坏和解决每个场景,本实验展示了在事件压力下**在真实生产 AWS 环境中自信操作的能力**。 ## 🔗 相关项目 - [LogSentinel](https://github.com/ParmeetGill422/LogSentinel) — Python 日志分析和事件报告自动化工具 - [Active Directory Azure Lab](https://github.com/ParmeetGill422/Active-Directory-Azure-Lab) — 将本地 AD 同步到 Microsoft Entra ID 的混合身份实验 ## 👤 作者 **Parmeet Gill** - LinkedIn: [linkedin.com/in/parmeet-gill57](https://linkedin.com/in/parmeet-gill57) - GitHub: [github.com/ParmeetGill422](https://github.com/ParmeetGill422) - 电子邮件: parmeetgill422@gmail.com *构建此项目作为网络安全作品集的一部分,旨在应聘 SOC 分析师、IAM 分析师和云升级工程师等职位。*
标签:AWS, CloudTrail, CloudWatch, DevSecOps, DPI, EC2, IaC, IAM身份管理, OPA, PB级数据处理, Python, S3存储桶, 上游代理, 公开曝光修复, 安全培训, 安全工程师, 安全模拟, 安全运维, 库, 应急响应, 数字取证, 无后门, 未授权访问, 网络安全, 自动化脚本, 逆向工具, 隐私保护, 靶场