ham22e/aws-incident-response

GitHub: ham22e/aws-incident-response

该项目通过IaC代码构建并完整重现了一条AWS云原生入侵杀伤链,提供从攻击复现、日志分析到检测规则映射的端到端事件响应实践环境。

Stars: 0 | Forks: 0

# AWS 混合入侵事件重现·分析·检测 | 项目 | 内容 | |------|------| | 事件 ID | `CLOUDIR-2026-0707` | | Kill Chain | 公开 Web RCE → IMDSv1 凭证窃取 → 脱机 API 滥用 → S3 泄露 | | ATT&CK | T1190 · T1059.004 · T1552.005 · T1078.004 · T1580 · T1619 · T1530 | | 检测覆盖率 | Sigma 规则 3 种 + Athena/CloudWatch Insights 查询 + GuardDuty 映射 | | 结果 | 驻留 5 分 17 秒,识别泄露对象 2 件,查明 3 连锁根本原因 | ``` flowchart LR A("공격자
외부 공인 IP") subgraph KILL["공격 킬체인"] direction LR B("EC2 웹앱
command injection") C("인스턴스 역할
과대권한 s3:*") D("S3 민감 버킷") B -->|"IMDSv1 탈취"| C C -->|"GetObject 유출"| D end subgraph DEF["로깅 · 탐지"] direction LR LOG("로그
access log · CloudTrail") DET("탐지
Sigma · GuardDuty") LOG --> DET end A -->|"HTTP"| B B -.-> LOG C -.-> LOG D -.-> LOG classDef attacker fill:#F5F5F5,stroke:#9E9E9E,color:#212121 classDef vuln fill:#FFE0B2,stroke:#F57C00,color:#4E342E classDef data fill:#FFF9C4,stroke:#F9A825,color:#4E342E classDef logging fill:#BBDEFB,stroke:#1976D2,color:#0D47A1 classDef detect fill:#C8E6C9,stroke:#388E3C,color:#1B5E20 class A attacker class B,C vuln class D data class LOG logging class DET detect style KILL fill:#FFFAF5,stroke:#F57C00,stroke-width:1px,color:#8A4B00 style DEF fill:#F5FAFF,stroke:#1976D2,stroke-width:1px,color:#0D47A1 ``` 通过代码构建重现 AWS 入侵事件的环境,并直接重现、分析、检测混合 Kill Chain(Linux 渗透 → IAM 凭证窃取 → AWS API 滥用 → S3 泄露),最终整理成入侵事件分析报告。 这是一项将云基础设施运营经验扩展至入侵事件响应(DFIR)视角的工作。 ## 概述 - 目标:以代码和文档记录云原生入侵事件的整个生命周期(构建 → 攻击 → 分析 → 检测 → 报告) - 场景:公开 Web 服务的 command injection → RCE → IMDSv1 凭证窃取 → 过度权限滥用 → S3 数据泄露 - 结果摘要:从首次渗透到泄露,驻留时间约 5 分 17 秒,通过 CloudTrail/Flow Logs/主机日志重构完整时间线,确认了核心检测信号(实例角色凭证的外部使用) ## 架构 请参阅 `docs/architecture.md`(架构图 + 脆弱元素 + 攻击路径)。摘要: ``` 공격자 → [EC2 취약 웹앱, IMDSv1] --탈취--> [IAM 과대권한] --> [S3 민감버킷] 로깅: CloudTrail(S3 데이터 이벤트) + VPC Flow Logs(CloudWatch) ``` ## 仓库结构 ``` . ├── terraform/ # 재현 환경 IaC (VPC, 취약 EC2/IMDSv1, 과대권한 IAM, S3, CloudTrail, Flow Logs, SSM) ├── app/ # command injection 취약 웹앱 ├── attack/ # 킬체인 재현 플레이북 + 스크립트 (MITRE ATT&CK 매핑) ├── analysis/ # 로그 수집/정규화/헌팅 + 타임라인·근본원인·IOC ├── detection/ # Sigma 룰, Athena/Insights 쿼리, GuardDuty 매핑, 하드닝 ├── report/ # 침해사고 분석 보고서 + 위협 인텔 브리프 └── docs/ # 아키텍처, 실행권한 정책 ``` ## 重现方法 前提:本人拥有的隔离 AWS 账户,Terraform >= 1.14,aws-cli,python3。 ``` # 1) 复现环境部署 cd terraform cp terraform.tfvars.example terraform.tfvars # my_ip 등 편집 terraform init && terraform apply # 2) 攻击复现(生成入侵日志) cd ../attack export TARGET_IP=$(terraform -chdir=../terraform output -raw web_public_ip) bash scripts/01_rce.sh && bash scripts/02_imds.sh source stolen/creds.env && bash scripts/03_exfil.sh # 3) 分析(使用分析者凭据。攻击后 unset stolen creds) cd ../analysis unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN bash collect/collect_all.sh python3 parse/normalize.py && python3 parse/hunt.py # 4) 退出后清理 cd ../terraform && terraform destroy ``` 详细信息:`terraform/README.md`(runbook),`attack/README.md`,`analysis/README.md`。 ## 经验总结 - 导致泄露的不是单一漏洞,而是缺陷的连锁反应(输入未验证 + IMDSv1 + IAM 过度权限)。只要切断其中任何一个环节,防御就能成立。 - IMDSv2 对 SSRF 有效,但在完全的 RCE 面前存在局限性。实际上决定泄露规模的控制措施是 IAM 最小权限。不存在“万能控制”,根据攻击向量的不同,有效的控制措施也不同。 - 如果不开启 CloudTrail S3 数据事件日志记录,泄露(GetObject)将无法被发现。可见性必须事先设计。 - 分析时必须区分凭证上下文(攻击者 vs 分析者)。从窃取的凭证残留在 shell 中导致收集数据产生误报事件的经验中,我们认识到检测事件需要“谁/为什么”的上下文。 ## 安全/伦理声明 所有攻击行为均在作者本人拥有的隔离 AWS 账户中进行,仅出于教育及防御(数字取证/入侵响应)目的。S3 中的敏感数据全部为合成的虚拟数据,不包含任何真实的个人信息。文档中的攻击者 IP/凭证已进行掩码处理。验证结束后,所有资源均已通过 `terraform destroy` 销毁。
标签:AWS, CISA项目, DPI, IaC基础设施即代码, 威胁建模, 应用安全, 逆向工具