paripuranam/aws-automated-malware-incident-response
GitHub: paripuranam/aws-automated-malware-incident-response
基于 Amazon GuardDuty、EventBridge 和 Lambda 构建的无服务器流水线,实现 EC2 恶意软件事件的自动检测、取证快照保留和受损实例终止。
Stars: 0 | Forks: 0
# AWS 自动化恶意软件事件响应
无服务器事件响应流水线,通过 **Amazon GuardDuty** 自动检测 EC2 恶意软件,保留取证证据,并终止受损实例 —— 零人工干预,亚分钟级响应时间。

## 架构
```
Amazon GuardDuty
(Malware Finding detected on EC2)
│
▼
Amazon EventBridge
(Rule: source = aws.guardduty, detail-type = GuardDuty Finding)
│
▼
AWS Lambda (Python / boto3)
├── 1. Extract instance ID from finding event
├── 2. Describe instance → get all attached EBS volumes
├── 3. Create EBS snapshot per volume (forensic preservation)
│ └── Tag snapshot: FindingId, InstanceId, Timestamp
└── 4. Terminate the compromised EC2 instance
│
▼
Amazon CloudWatch Logs
(Full execution audit trail)
```
## 为什么采用这种方法
| 设计决策 | 原因 |
|---|---|
| **终止前快照** | 取证最佳实践 —— 在遏制前保留证据。如果先终止实例,会破坏 EBS 卷及任何取证痕迹。 |
| **使用 FindingId 标记快照** | 将每个取证快照与确切的 GuardDuty 发现关联,以实现审计可追溯性。 |
| **最小权限 IAM** | Lambda 角色仅具有 3 个权限:`ec2:DescribeInstances`、`ec2:CreateSnapshot`、`ec2:TerminateInstances`。无通配符,无托管策略。 |
| **使用 EventBridge 而非 SNS 触发** | EventBridge 原生接收 GuardDuty 发现,无需自定义集成 —— 更简洁、无服务器、无轮询。 |
| **15秒 Lambda 超时** | 足以完成单个实例上的描述 + 快照 + 终止序列。保持较短时间以实现快速失败并避免失控执行。 |
## 使用的服务
| 服务 | 作用 |
|---|---|
| **Amazon GuardDuty** | 持续威胁检测 —— 对受感染的 EC2 触发恶意软件发现 |
| **Amazon EventBridge** | 事件路由器 —— 基于 GuardDuty 发现触发规则,调用 Lambda |
| **AWS Lambda** | 自动化响应 —— 取证快照 + 实例终止 |
| **Amazon EC2** | 目标工作负载 —— 正在被遏制的受损实例 |
| **AWS IAM** | Lambda 的最小权限执行角色 |
| **Amazon CloudWatch** | 为每次 Lambda 执行提供日志和审计跟踪 |
## Lambda 函数
Lambda handler/main.py
## IAM 策略(最小权限)
Lambda 执行角色仅限所需的最低权限 —— 绝不多给:
iam/lambda-policy.json
## EventBridge 规则模式
eventbridge/guardduty-rule.json
## 验证
### 测试方法
使用了 **EICAR 测试字符串** —— 这是一个标准的、无害的防病毒测试文件,可被包括 GuardDuty Malware Protection 在内的所有主要安全工具识别。
```
# 在 EC2 instance 上:
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar.txt
```
### 预期结果流程
1. GuardDuty 按需恶意软件扫描检测到 EICAR → 生成 `Execution:EC2/MaliciousFile` 发现
2. EventBridge 规则触发 → 在几秒内调用 Lambda
3. Lambda 创建带有取证标签的 EBS 快照
4. Lambda 终止 EC2 实例
5. CloudWatch 日志确认完整执行过程

## 限制与生产环境考量
| 限制 | 生产环境建议 |
|---|---|
| 立即终止 | 首先添加一个**隔离步骤** —— 在终止前将实例移至隔离的 Security Group(阻止所有流量),以便进行实时取证 |
| 单一区域 | 将 EventBridge 规则扩展到所有区域,或使用 **GuardDuty 委派管理员** 结合 AWS Organizations |
| 无告警 | 在终止后添加 **SNS 通知**,以提醒安全团队并提供发现详情 |
| 无 IR 工单 | 集成 **Jira/ServiceNow API**,自动创建带有发现上下文的事件工单 |
| 仅限 EBS 快照 | 对于内存取证,考虑在终止前使用 **AWS Systems Manager** 捕获易失性内存 |
## 仓库结构
```
aws-automated-malware-incident-response/
├── README.md
├── aws-automation-arch.png # Architecture diagram
├── Lambda handler/
│ └── main.py # Lambda handler
├── iam/
│ └── lambda-policy.json # Least-privilege IAM policy
├── eventbridge/
│ └── guardduty-rule.json # EventBridge rule pattern
└── docs/
└── guardduty-finding.png # Screenshot: GuardDuty finding
```
## 展现的技能
- **自动化事件响应** —— 零人工干预的事件驱动流水线
- **AWS 安全服务** —— GuardDuty、EventBridge、Lambda、IAM、CloudWatch
- **取证最佳实践** —— 在遏制前保留证据
- **最小权限 IAM 设计** —— 限定范围的执行角色,无通配符权限
- **Python / boto3** —— 具备结构化日志记录和错误处理的生产级 Lambda 处理程序
- **安全工程判断力** —— 记录并论证设计决策,而不仅仅是实现
标签:AWS, DPI, PB级数据处理, 安全运维, 数字取证, 自动化响应, 自动化脚本, 逆向工具