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 恶意软件,保留取证证据,并终止受损实例 —— 零人工干预,亚分钟级响应时间。 ![架构图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/e34640eae6100636.png) ## 架构 ``` 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 日志确认完整执行过程 ![架构图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/38800c472f100642.png) ## 限制与生产环境考量 | 限制 | 生产环境建议 | |---|---| | 立即终止 | 首先添加一个**隔离步骤** —— 在终止前将实例移至隔离的 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级数据处理, 安全运维, 数字取证, 自动化响应, 自动化脚本, 逆向工具