自动执行事件响应和取证 - AWS Prescriptive Guidance

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自动执行事件响应和取证

由 Lucas Kauffman (AWS) 和 Tomek Jakubowski (AWS) 编写

代码存储库:aws-automated-incident-responseand-forensics

环境:生产

技术:安全性、身份、合规性

Amazon Web Services:Amazon EC2、AWS Lambda、Amazon S3、AWS Security Hub、AWS Identity and Access Management

Summary

此模式部署一组使用 AWS Lambda 函数的进程来提供以下功能:

  • 一种以最少知识启动事件响应流程的方法

  • 符合 AWS 安全事件响应指南的自动化、可重复流程

  • 分离账户来操作自动化步骤、存储构件并创建取证环境

自动事件响应和取证框架遵循标准数字取证流程,包括以下阶段:

  1. 遏制

  2. 收购

  3. 检查

  4. 分析

您可对静态数据(例如采集的内存或磁盘映像)以及独立系统上的实时动态数据进行调查。

有关更多详细信息,请参阅其他信息部分。

先决条件和限制

先决条件

  • 两个 Amazon Web Services account :

    • 安全账户,可以是现有账户,但最好是新账户

    • 取证账户,最好是新账号

  • AWS Organizations 设置

  • 在 Organizations 的成员账户中:

    • Amazon Elastic Compute Cloud(Amazon EC2) 角色必须具有对Amazon Simple Storage Service(Amazon S3) 的获取和列出权限,并且可以由 AWS Systems Manager 访问。我们建议使用 AmazonSSMManagedInstanceCore AWS 托管角色。请注意,当启动事件响应时,此角色将自动附加到 EC2 实例。响应完成后,AWS Identity and Access Management (IAM) 将移除对实例的所有权限。

    • AWS 成员账户以及事件响应和分析 VPC 中的虚拟私有云(VPC)端点。这些端点是:S3 网关、EC2 消息、SSM 和 SSM 消息。

  • AWS 命令行界面(AWS CLI)已在 EC2 实例上安装。如果 EC2 实例未安装 AWS CLI,则需要访问 Internet 才能使磁盘快照和内存获取正常工作。在这种情况下,脚本将连接到互联网以下载 AWS CLI 安装文件并将其安装在实例上。

限制

  • 该框架无意生成可被视为可在法庭上提交的电子证据的构件。

  • 目前,此模式仅支持在 x86 架构运行的基于 Linux 的实例。

架构

目标技术堆栈

  • AWS CloudFormation

  • AWS CloudTrail

  • AWS Config

  • IAM

  • Lambda

  • Amazon S3

  • AWS Key Management System (AWS KMS)

  • AWS Security Hub

  • Amazon Simple Notification Service(Amazon SNS)

  • AWS Step Functions

目标架构

除成员账户外,目标环境还包含两个主要账户:安全账户和取证账户。使用两个账户的原因如下:

  • 将它们与任何其他客户账户分开,以减少取证分析失败时的影响范围

  • 帮助确保隔离和保护正在分析的构件的完整性

  • 为调查保密

  • 避免威胁行为者可能通过达到服务限额,来使用您受感染的 Amazon Web Services account 立即可用的所有资源,从而阻止您实例化 Amazon EC2 实例来执行调查。 

此外,拥有单独的安全和取证账户允许创建单独的角色 - 用于获取证据的响应者和用于分析证据的调查者。每个角色都可访问其单独的账户。

下图仅展示了账户之间的交互。每个账户的详细信息将在后续图表中显示,并附上完整的图表。

成员、安全和取证账户与用户、互联网和 Slack 之间的交互。

下图显示了会员账户。

拥有 AWS KMS 密钥、IAM 角色、Lambda 函数、终端节点、带有两个 EC2 实例的 VPC 的成员账户。

1. 将向 Slack Amazon SNS 主题发送一个事件。

下图显示了安全账户。

事件响应 VPC DdCopyInstance 中的 EC2 和 LimE 内存模块的安全账户。

2. 安全账户中的 SNS 主题启动取证事件。

下图显示了取证账户。

包含取证和受害者 EC2 实例、分析 VPC 和维护 VPC 的取证账户。

安全账户是创建两个主要的 AWS Step Functions 工作流的地方,用于获取内存和磁盘映像。工作流运行后,他们访问事件中涉及的 EC2 实例的成员账户,然后启动一组 Lambda 函数来收集内存转储或磁盘转储。然后,这些构件将存储在取证账户中。

取证账户将在分析构件 S3 存储桶中保存 Step Functions 工作流收集的项目。取证账户还将有一个 EC2 Image Builder 管道,用于构建取证实例的亚马逊机器映像(AMI)。目前,该映像基于 SANS SIFT Workstation。 

构建过程使用可连接至互联网的维护 VPC。该映像稍后可用于启动 EC2 实例,以分析分析 VPC 中收集的构件。 

Analysis VPC 没有互联网连接。默认情况下,该模式创建三个私有分析子网。您最多可以创建 200 个子网,这是一个 VPC 中子网数量的配额,但是 VPC 端点需要添加这些子网,AWS Systems Manager Sessions Manager 会话管理器才能在其中自动运行命令。

从最佳实践的角度来看,我们建议使用 AWS CloudTrail 和 AWS Config 执行以下操作: 

  • 跟踪您的取证账户的变更

  • 监控存储和分析的构件的访问权限和完整性

Workflow (工作流程)

下图显示了工作流的关键步骤,其中包括从实例受损到分析和控制实例的过程和决策树。

  1. SecurityIncidentStatus 标签是否已设置为分析值? 如果是,则执行以下操作:

    1. 附上 AWS Systems Manager 和 Amazon S3 的正确 IAM 配置文件。

    2. 在 Slack 中向 Amazon SNS 队列发送一封 Amazon SNS 消息。

    3.  SecurityIncident 队列发送 Amazon SNS 消息。

    4. 调用内存和磁盘采集状态机。

  2. 是否已获取内存和磁盘? 如否,则存在错误。

  3. 使用 Contain 标签标记 EC2 实例。

  4. 附加 IAM 角色和安全组,以完全隔离实例。

之前列出的工作流程步骤。

自动化和扩缩

这种模式旨在提供一种可扩展的解决方案,以便在单个 AWS Organizations 组织内的多个账户中执行事件响应和取证。

工具

Amazon Web Services

  • AWS CloudFormation 可帮助您设置 AWS 资源,快速一致地配置这些资源,并在 AWS 账户和区域的整个生命周期中对其进行管理。

  • AWS 命令行界面(AWS CLI) 是一种开源工具,用于通过命令行 Shell 中的命令与 Amazon Web Services 交互。

  • AWS Identity and Access Management (AWS IAM) 通过控制验证和授权使用您 AWS 资源的用户,帮助您安全地管理对您 AWS 资源的访问。

  • AWS Key Management Service (AWS KMS) 可帮助您创建和控制加密密钥以保护您的数据。

  • AWS Lambda 是一项计算服务,可帮助您运行代码,而无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。

  • Amazon Simple Storage Service (Amazon S3)是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。

  • AWS Security Hub 向您提供在 AWS 中安全状态的全面视图。Security Hub 还可以帮助您根据安全行业标准和最佳实践检查环境。

  • Amazon Simple Notification Service (Amazon SNS) 可帮助您协调和管理发布者与客户端(包括 Web 服务器和电子邮件地址)之间的消息交换。

  • AWS Step Functions 是一项无服务器编排服务,可让您搭配使用 AWS Lambda 函数和其他 Amazon Web Services 来构建业务关键型应用程序。 

  • AWS Systems Manager 可帮助您管理在 Amazon Web Services Cloud 中运行的应用程序和基础设施。它简化了应用程序和资源管理,缩短了检测和解决操作问题的时间,并帮助您大规模安全地管理 AWS 资源。

代码

有关代码以及具体的实施和使用指南,请参阅 GitHub 自动事件响应和取证框架存储库。

操作说明

任务描述所需技能

部署 CloudFormation 模板。

CloudFormation 模板标记为 1 到 7,脚本名称的第一个单词表示需要在哪个帐户中部署模板。请注意,启动 CloudFormation 模板的顺序很重要。

  • 1-forensic-AnalysisVPCnS3Buckets.yaml:部署在取证账户中。它创建 S3 存储桶和分析 VPC,然后激活 CloudTrail。

  • 2-forensic-MaintenanceVPCnEC2ImageBuilderPipeline.yaml:基于 SANS SIFT 部署维护 VPC 和映像生成器管道。

  • 3-security_IR-Disk_Mem_automation.yaml:在安全账户中部署启用磁盘与内存采集的功能。

  • 4-security_LiME_Volatility_Factory.yaml:启动构建函数,以开始基于给定的 AMI ID 创建内存模块。请注意,各个 AWS 区域 的 AMI ID 有所不同。每当您需要新的内存模块时,您都可以使用新的 AMI ID 重新运行此脚本。考虑将其与您的黄金映像 AMI 构建器管道集成(如果在您的环境中使用)。

  • 5-member-IR-automation.yaml:创建成员事件响应自动化功能,启动事件响应流程。它允许跨账户共享 Amazon Elastic Block Store (Amazon EBS) 卷、在事件响应过程中自动发布到 Slack 通道、启动取证过程以及在过程完成后隔离实例。

  • 6-forensic-artifact-s3-policies.yaml:部署所有脚本后,此脚本修复了所有跨账户交互所需权限。

  • 7-security-IR-vpc.yaml:配置用于事件响应量处理的 VPC。

要为特定 EC2 实例启动事件响应框架,请使用密钥 SecurityIncidentStatusAnalyze 值创建一个标签。这将启动成员 Lambda 函数,该函数将自动启动隔离和内存以及磁盘获取。

AWS 管理员

操作框架。

Lambda 函数还将在Contain最后(或失败时)重新标记资产。这将启动遏制,从而将实例与无 INBOUND/OUTBOUND 安全组和不允许所有访问的 IAM 角色完全隔离。

按照GitHub 存储库中的步骤进行操作。

AWS 管理员
任务描述所需技能

使用 CloudFormation 模板部署自定义 Security Hub 操作。

要创建自定义操作以便您可以使用 Security Hub 中的下拉列表,请部署Modules/SecurityHub Custom Actions/SecurityHubCustomActions.yaml CloudFormation 模板。然后修改每个成员账户中的 IRAutomation 角色,以允许运行该操作的 Lambda 函数代入 IRAutomation 角色。有关更多信息,请参阅GitHub 存储库

AWS 管理员

相关资源

其他信息

通过使用此环境,安全运营中心 (SOC) 团队可以通过以下方式改进其安全事件响应流程:

  • 能够在隔离环境中进行取证,以避免生产资源的意外泄露

  • 拥有标准化、可重复、自动化的流程来进行遏制和分析。

  • 使任何账户所有者或管理员都能够在不了解如何使用标签的情况下启动事件响应流程

  • 拥有标准化、干净的环境来执行事件分析和取证,而不会受到更大环境的干扰

  • 能够并行创建多项分析环境

  • 将 SOC 资源集中在事件响应上,而非云取证环境的维护和文档记录上

  • 从手动流程转向自动化流程,以实现可扩展性

  • 使用 CloudFormation 模板来保持一致性并避免可重复的任务

此外,您可避免使用永久基础设施,且可以在需要时为资源付费。

附件

要访问与此文档相关联的其他内容,请解压以下文件:attachment.zip