使用 AWS CloudTrail 执行云取证
适用场景
- 调查疑似 AWS 账户入侵时
- 检测到未授权 API 调用或凭据泄露后
- 涉及云基础设施的事件响应(Incident Response)期间
- 分析 S3 数据外泄(Exfiltration)或 IAM 权限提升时
- 事件后的取证时间线重建
前置条件
- 已启用 CloudTrail 的 AWS 账户(管理事件和数据事件)
- cloudtrail:LookupEvents、s3:GetObject、athena:StartQueryExecution 的 IAM 权限
- 已安装 boto3 Python SDK
- CloudTrail 日志已传输到 S3,并可选配置 Athena 表
- 配置了适当凭据的 AWS CLI
工作流程
- 确定调查范围:识别时间范围、受影响账户和受损凭据。
- 查询 CloudTrail:使用 boto3 lookup_events 或 Athena 检索相关 API 事件。
- 按指标过滤:搜索可疑用户代理、源 IP 和事件名称。
- 重建时间线:从 API 调用构建攻击者操作的时间顺序序列。
- 分析访问模式:识别数据访问、IAM 变更和资源修改。
- 识别持久化:检查新建的 IAM 用户、访问密钥、角色或 Lambda 函数。
- 生成报告:输出包含发现和修复步骤的取证时间线。
核心概念
| 概念 | 描述 |
|---|---|
| LookupEvents | CloudTrail API,用于查询管理事件(最近 90 天) |
| Athena 查询 | 针对 S3 中 CloudTrail 日志执行 SQL 查询以进行历史分析 |
| 用户代理分析 | 识别工具特征(AWS CLI、SDK、控制台、自定义工具) |
| AccessKeyId | 通过特定 IAM 访问密钥追踪活动 |
| EventName | AWS API 操作名称(如 GetObject、CreateUser、AssumeRole) |
| sourceIPAddress | API 调用的源 IP,用于地理位置分析 |
工具与系统
| 工具 | 用途 |
|---|---|
| boto3 CloudTrail 客户端 | 以编程方式查找 CloudTrail 事件 |
| AWS Athena | 基于 SQL 分析 CloudTrail S3 日志 |
| AWS CLI | 命令行 CloudTrail 查询 |
| jq | 用于 CloudTrail 事件解析的 JSON 处理 |
| CloudTrail Lake | 支持 SQL 查询的高级事件数据存储 |
输出格式
取证报告: AWS-IR-[日期]-[序号]
账户: [AWS 账户 ID]
时间范围: [开始] 至 [结束]
受损凭据: [访问密钥 ID]
可疑事件: [数量]
源 IP: [攻击者 IP 列表]
执行操作: [攻击者的 API 调用]
访问数据: [S3 对象、密钥等]
持久化机制: [新建用户、密钥、角色]