Varshith-CS/AWS-Cloud-IAM-Security-Assessment-Remediation-Lab

GitHub: Varshith-CS/AWS-Cloud-IAM-Security-Assessment-Remediation-Lab

该项目模拟了真实的 AWS IAM 与云安全配置错误,演示了完整的漏洞利用、监控检测与最小权限修复流程。

Stars: 0 | Forks: 0

# ☁️ AWS 云 IAM 安全评估与修复实验 ![AWS](https://img.shields.io/badge/AWS-Cloud%20Security-FF9900?style=for-the-badge&logo=amazonaws&logoColor=white) ![Prowler](https://img.shields.io/badge/Prowler-Security%20Scanner-blue?style=for-the-badge) ![NIST](https://img.shields.io/badge/NIST-CSF%20Aligned-green?style=for-the-badge) ![CIS](https://img.shields.io/badge/CIS-AWS%20Foundations-red?style=for-the-badge) ![Status](https://img.shields.io/badge/Status-Completed-brightgreen?style=for-the-badge) ## 📌 概述 本项目模拟了企业环境中真实存在的 AWS IAM 和云安全配置错误。它展示了从构建易受攻击的环境并加以利用,到使用行业标准的工具和框架进行检测、修复和验证修复结果的**完整安全生命周期**。 **为什么这个项目很重要:** 云 IAM 配置错误一直是导致云数据泄露的最主要原因之一。构建此实验是为了培养在识别、利用、检测和强化这些漏洞方面的实战技能,模拟真实的云安全工程师或 SOC 分析师的工作流程。 **涵盖的完整安全生命周期:** ``` Vulnerability Creation → Exploitation → Detection & Monitoring → Remediation → Validation ``` ## 🎯 目标 - 在受控的实验环境中模拟不安全的 AWS IAM 配置 - 演示通过滥用 `AssumeRole` 实现的权限提升 - 利用包含敏感凭证的公开暴露 S3 存储 - 使用 **Prowler** 安全扫描器检测配置错误 - 通过 **AWS CloudTrail** 实施集中式日志记录 - 配置 **CloudWatch** 检测规则和 **SNS** 告警 - 使用最小权限原则对环境进行强化 - 通过重新扫描和修复前后的对比来验证修复效果 ## 🏗️ 架构图 该实验环境包括: - **IAM 用户与角色** - 故意配置了过度宽松的策略 - **S3 Bucket** - 公开暴露,包含模拟的敏感凭证 - **CloudTrail** - 捕获所有 API 活动的多区域追踪 - **CloudWatch** - 用于检测可疑事件的指标过滤器和警报 - **SNS** - 在触发警报时自动发送电子邮件告警 - **Prowler** - 外部安全扫描器,用于在修复前后验证安全态势 ## 🚨 识别出的漏洞 | # | 漏洞 | 严重程度 | 状态 | |---|---|---|---| | 1 | 过度宽松的 IAM 策略 (`*:*`) | 严重 | 已修复 | | 2 | 通过 AssumeRole 实现的权限提升 | 严重 | 已修复 | | 3 | 公开的 S3 Bucket 暴露 | 高 | 已修复 | | 4 | S3 中暴露的敏感凭证 | 高 | 已修复 | | 5 | 缺失 CloudTrail 日志记录 | 高 | 已修复 | | 6 | IAM 用户未启用 MFA | 中 | 已修复 | ## ⚔️ 利用阶段 ### 1. 公开的 S3 Bucket 暴露 故意将一个 S3 Bucket 配置为允许公开访问。上传了一个包含模拟凭证的文件,并使其可被公开访问。 **攻击路径:** ``` Attacker discovers public bucket → Downloads credentials file → Uses credentials for unauthorized AWS access ``` **影响:** - 访问敏感文件和数据 - 枚举云资源 - 使用暴露的凭证进一步入侵账户 **证据:** 通过浏览器确认了公开的 Bucket 访问权限;凭证文件可以在没有身份验证的情况下从外部访问。 ### 2. 通过 AssumeRole 实现的 IAM 权限提升 一个过度宽松的 IAM 策略允许 `security-lab-user` 担任特权 IAM 角色,包括管理员角色。 **利用命令:** ``` aws sts assume-role \ --role-arn arn:aws:iam:::role/vulnerable-admin-role \ --role-session-name privilege-escalation-test ``` **结果:** 成功生成临时管理员凭证,实现了完整的权限提升。 **攻击路径:** ``` Low-privilege user → AssumeRole abuse → Temporary admin credentials → Full environment control ``` **影响:** - 获得 AWS 环境的完全管理访问权限 - 能够创建/删除资源、修改策略、窃取数据 - 跨 AWS 环境的横向移动 ## 🔍 检测与监控 ### Prowler 安全评估 使用 Prowler 扫描 AWS 环境,以发现 IAM 配置错误、公开存储暴露、缺失 MFA、日志记录漏洞以及违反安全最佳实践的行为。 **初始扫描结果:** | 指标 | 值 | |---|---| | 总发现数 | 342 | | 未通过的发现数 | 216 | | 已通过的发现数 | 126 | ### AWS CloudTrail 日志记录 CloudTrail 被配置为**多区域追踪**,以捕获: | 事件类型 | 目的 | |---|---| | IAM 活动 | 跟踪策略更改和用户修改 | | 控制台登录 | 检测未经授权的访问尝试 | | API 调用 | AWS 操作的完整审计追踪 | | 角色担任 | 检测 `AssumeRole` 滥用 | | 安全相关事件 | 识别可疑模式 | **已启用的功能:** 多区域日志记录 · 日志文件验证 · S3 日志存储 · CloudWatch 集成 ### CloudWatch 检测工程 创建了 CloudWatch 指标过滤器和警报,以实时检测可疑活动。 | 检测规则 | 目的 | |---|---| | `Root-Account-Login-Alert` | 检测 Root 账户控制台登录 | | `Console-Login-Without-MFA-Alert` | 检测没有 MFA 的不安全控制台访问 | ### SNS 告警 将 AWS SNS 与 CloudWatch 警报集成,为所有触发的安全事件提供**自动化电子邮件通知**,模拟真实的 SOC 告警流水线。 ## 🛡️ 修复与强化 ### 1. 公开的 S3 暴露 — 已修复 **采取的措施:** - 移除了公开的 Bucket 策略 - 重新启用了阻止公开访问设置 - 限制了所有对象级别的访问 **验证:** ``` AccessDenied Access Denied ``` 凭证文件不再可被公开访问。 ### 2. IAM 强化 — 已修复 **采取的措施:** - 移除了用户的 `AdministratorAccess` 策略 - 删除了 `AssumeAnyRolePolicy` - 实施最小权限,将权限范围限定为仅限必要的操作 **验证:** ``` An error occurred (AccessDenied) when calling the AssumeRole operation ``` 权限提升路径已被完全阻断。 ### 3. MFA 强制执行 — 已修复 为 IAM 用户启用了 MFA,以降低凭证泄露和未经授权的控制台访问风险。 ## 📉 修复前后对比 | 安全指标 | 修复前 | 修复后 | |---|---|---| | 未通过的 Prowler 发现数 | 216 | 1 | | 公开的 S3 访问 | 启用 | 禁用 | | 权限提升 | 成功 | 阻断 | | MFA 强制执行 | 禁用 | 启用 | | CloudTrail 日志记录 | 禁用 | 启用 | | CloudWatch 监控 | 未配置 | 已配置 | | SNS 告警 | 未配置 | 已配置 | **最终 Prowler 扫描结果:** | 指标 | 值 | |---|---| | 总发现数 | 1 | | 未通过的发现数 | 1* | ## 🧩 框架映射 (NIST / CIS) | 安全控制 | CIS AWS Foundations | NIST CSF 功能 | |---|---|---| | MFA 强制执行 | CIS 1.10 | 保护 (PR.AC) | | 最小权限 IAM | CIS 1.16 | 保护 (PR.AC) | | 阻止公开的 S3 访问 | CIS 2.1 | 保护 (PR.DS) | | CloudTrail 日志记录 | CIS 3.1 | 检测 (DE.CM) | | CloudWatch 监控 | CIS 3.x | 检测 (DE.CM) | | SNS 告警 | — | 响应 (RS.CO) | | IAM 强化 | CIS 1.x | 保护 (PR.AC) | | 检测工程 | — | 检测 (DE.AE) | ## 📚 关键经验 - **微小的 IAM 配置错误可能导致整个云环境被完全入侵** — 单个过度宽松的策略即可实现完整的权限提升 - **最小权限原则是不可妥协的** — IAM 策略中的通配符 (`*:*`) 会造成严重的攻击面 - **公开的云存储仍然是首要风险** — S3 配置错误一直是最常见的真实云泄露事件之一 - **集中式日志记录极大地提高了检测能力** — CloudTrail + CloudWatch 实现了对攻击者活动的完全可见性 - **CloudWatch 指标过滤器是强大的检测工具** — 自定义规则可以近乎实时地检测特定的攻击模式 - **验证至关重要** — 修复后使用 Prowler 重新扫描确认了修复结果,并展示了可衡量的改进 - **云安全需要攻防兼备的思维** — 了解攻击者如何利用配置错误对于有效的防御至关重要 ## 📁 仓库结构 ``` cloud-iam-security-assessment-lab/ │ ├── README.md ├── architecture/ ├── screenshots/ ├── Reports/ ``` ## 🛠️ 使用的技术与服务 **AWS 服务** ![IAM](https://img.shields.io/badge/AWS-IAM-FF9900?style=flat&logo=amazonaws) ![S3](https://img.shields.io/badge/AWS-S3-FF9900?style=flat&logo=amazonaws) ![CloudTrail](https://img.shields.io/badge/AWS-CloudTrail-FF9900?style=flat&logo=amazonaws) ![CloudWatch](https://img.shields.io/badge/AWS-CloudWatch-FF9900?style=flat&logo=amazonaws) ![SNS](https://img.shields.io/badge/AWS-SNS-FF9900?style=flat&logo=amazonaws) **安全工具** ![Prowler](https://img.shields.io/badge/Prowler-Scanner-blue?style=flat) ![AWS CLI](https://img.shields.io/badge/AWS-CLI-232F3E?style=flat&logo=amazonaws) **框架** ![NIST](https://img.shields.io/badge/NIST-CSF-green?style=flat) ![CIS](https://img.shields.io/badge/CIS-AWS%20Foundations%20Benchmark-red?style=flat) ![SOC2](https://img.shields.io/badge/SOC%202-Aligned-purple?style=flat)
标签:AWS, DPI, GitHub Advanced Security, IAM, URL发现, 后端开发, 安全加固, 安全实验室, 安全检测