PeteAndrews1289/aws-iam-abuse-detection-lab

GitHub: PeteAndrews1289/aws-iam-abuse-detection-lab

一个 AWS IAM 滥用检测实验室,通过在受控环境中模拟身份活动并将 CloudTrail 日志接入 Splunk,演示如何构建云身份安全检测工作流。

Stars: 0 | Forks: 0

# AWS IAM 滥用检测实验室 ## 概述 本项目是一个专注于 AWS 身份安全的实验室,旨在了解 IAM 活动在 CloudTrail 中的呈现方式,以及如何在 Splunk 中分析这些事件。它解决了一个常见的云安全问题:许多影响重大的 AWS 攻击都是从身份枚举、角色扮演、策略更改或失败的权限尝试开始的,但如果没有结构化的日志分析,这些行为很容易被忽略。 该实验室在受控的 AWS 环境中模拟与 IAM 相关的活动,收集生成的 CloudTrail 事件,并构建用于身份检测的 Splunk 搜索。它通过专门关注用户、角色、策略、STS 活动和访问控制失败,补充了更广泛的云基础设施监控。 最终结果是一个实用的检测工作流,展示了如何将 IAM 操作转化为安全信号,供云安全分析师、SOC 分析师和检测工程师使用。 ## 主要功能 - 创建了受控的 AWS IAM 实验室环境,用于身份活动分析。 - 生成了用于 IAM 用户创建、策略更改、角色扮演和枚举的 CloudTrail 事件。 - 通过 AWS CLI 和控制台活动模拟了资源发现。 - 将 CloudTrail JSON 日志接入 Splunk 进行集中搜索。 - 使用 `spath` 和 `mvexpand` 解析嵌套的 CloudTrail 记录。 - 构建了针对 IAM 管理操作、角色扮演、失败的 API 调用和身份枚举的检测搜索。 - 记录了关于高价值 IAM 信号和多服务可见性要求的发现。 - 添加了展示实验室期间创建的 IAM 用户、策略和角色活动的截图。 ## 架构 该实验室使用 AWS IAM 作为活动源,CloudTrail 作为审计日志源,S3 作为日志存储层,Splunk Enterprise 作为 SIEM 分析层。模拟的身份操作会产生 CloudTrail 事件,随后在 Splunk 中搜索这些事件,以识别可疑或高风险的 IAM 行为。 ``` flowchart LR Analyst[Analyst / Lab Operator] -->|AWS CLI and Console Actions| IAM[AWS IAM] Analyst -->|STS Calls| STS[AWS STS] IAM --> CloudTrail[AWS CloudTrail] STS --> CloudTrail CloudTrail --> S3[S3 Log Storage] S3 --> Splunk[Splunk Enterprise] Splunk --> Searches[Detection Searches] Searches --> Findings[Identity Security Findings] ``` ## 工具与技术 ### 云 / 基础设施 - AWS IAM - AWS STS - Amazon S3 - AWS CloudTrail ### 安全工具 - Splunk Enterprise - Splunk 搜索处理语言 - CloudTrail 事件历史记录 ### 编程 / 脚本 - AWS CLI - JSON 日志解析 - Splunk SPL 搜索 ### 监控 / 日志 - CloudTrail IAM 和 STS 事件 - 基于 S3 的 CloudTrail 日志存储 - Splunk 索引的 CloudTrail 记录 ### 自动化 / CI/CD - 本实验室不包含 CI/CD pipeline ## 展示的安全概念 本项目演示了专注于身份的云检测工程。它展示了为什么 IAM 事件在 AWS 中是高价值信号:它们揭示了谁在进行更改、正在使用哪些权限、哪些访问失败了,以及某个身份是否在尝试更具影响力的操作之前正在进行发现。 该实验室还演示了角色扮演如何代表特权边界的更改。`AssumeRole` 事件尤为重要,因为它们显示了何时颁发了临时凭证以及哪个身份发起了该操作。 Splunk 部分演示了实用的 SIEM 工作:接入 CloudTrail 日志、解析嵌套的 JSON、编写搜索,以及将原始身份事件转化为有意义的安全发现。 ## 实施步骤 1. 在 AWS 中创建了 IAM 实验室用户、角色和策略。 2. 使用列出用户和角色等操作模拟了身份枚举。 3. 使用 AWS STS 验证了调用者身份。 4. 通过列出 S3 存储桶和描述 EC2 资源模拟了资源发现。 5. 使用 AWS STS 扮演实验室角色,以生成角色扮演遥测数据。 6. 执行了管理 IAM 活动,包括用户和策略更改。 7. 收集了生成的 CloudTrail 日志。 8. 将 CloudTrail JSON 记录接入 Splunk。 9. 使用 `spath` 和 `mvexpand` 解析了 `Records` 数组结构。 10. 构建了用于用户创建、用户删除、角色扮演、失败的 API 调用和身份枚举的 Splunk 搜索。 11. 记录了从生成的遥测数据中获得的关键发现和经验教训。 ## 结果 / 发现 该实验室生成了用于 IAM 枚举、资源发现、角色扮演、用户创建、策略创建和策略附加的 CloudTrail 事件。这些事件在 Splunk 中进行了分析,以识别对云检测和调查有用的身份活动。 检测工作表明,失败或被拒绝的 API 调用可以作为有用的早期预警信号,因为它们可能会揭示尝试的权限滥用、侦察或配置错误的访问。诸如 `ListUsers`、`ListRoles` 和 `GetCallerIdentity` 之类的枚举事件在调查可疑的云行为时也提供了有用的上下文。 该项目还表明,IAM 活动跨越多个 AWS 服务。有效的身份检测需要跨 IAM、STS、EC2、S3 和其他服务的 CloudTrail 可见性,而不仅仅是监视一个事件源。 ## 截图 此存储库中现有的截图: - `screenshots/lab-user-created.png` - `screenshots/lab-policy-created.png` - `screenshots/lab-policy-attached.png` - `screenshots/iam-role-created.png` 建议添加的额外截图: - `screenshots/splunk-iam-create-user-search.png` - `screenshots/splunk-assume-role-search.png` - `screenshots/splunk-failed-api-calls.png` - `screenshots/cloudtrail-iam-event-history.png` - `screenshots/architecture.png` ## 挑战与经验教训 - CloudTrail 记录需要先进行解析,然后才能在 Splunk 中轻松搜索各个 IAM 事件。 - 角色扮演是一个强有力的检测信号,因为它更改了当前活动的权限上下文。 - 即使没有任何更改成功执行,失败的 API 调用也能提供有用的检测价值。 - 身份枚举通常出现在更敏感的云操作之前。 - IAM 检测需要跨多个 AWS 服务进行关联,而不仅仅是 IAM 事件源。 ## 与安全角色的相关性 本项目直接对应于云安全分析师、SOC 分析师、检测工程师和安全工程师的职责。它展示了 AWS 身份监控、CloudTrail 分析、SIEM 查询开发,以及对权限和访问控制事件进行推理的能力。 它对于需要 IAM 滥用检测、云事件分类以及围绕基于身份的攻击进行检测逻辑的角色尤为相关。 ## 未来改进 - 为角色扮演、管理 IAM 操作和失败的权限尝试添加实时 Splunk 告警。 - 为每个检测类别添加经过脱敏处理的 CloudTrail 事件示例。 - 将检测说明转换为单独的 `.spl` 文件,以便于重用。 - 为每个检测添加严重性指南和分类步骤。 - 添加关联搜索,将枚举、失败调用和更改权限的操作连接起来。 - 扩展场景以包括访问密钥创建、MFA 更改和可疑的策略更新。
标签:AMSI绕过, AWS IAM, 威胁检测, 安全实验室