2026-01
四个 GuardDuty 恶意软件保护的使用案例:按需恶意软件扫描 安全博客
GuardDuty 恶意软件保护的四个用例
关键要点
Amazon GuardDuty 是一项持续监控 AWS 帐户和工作负载以检测恶意活动的服务。GuardDuty 恶意软件保护通过无代理扫描 Amazon Elastic Block StoreEBS卷来帮助检测恶意软件,并能提供有关潜在威胁的详细信息。本文介绍了 GuardDuty 的按需恶意软件扫描功能及其在不同场景下的应用实例。Amazon GuardDuty 是一项威胁检测服务,能够持续监控您的 Amazon Web Services (AWS) 帐户和工作负载,以查找恶意活动,并提供详细的安全发现,以便查看和修复。GuardDuty 恶意软件保护通过对附加到 Amazon Elastic Compute Cloud (Amazon EC2) 实例和容器工作负载的 EBS 卷进行无代理扫描来帮助检测恶意软件。GuardDuty 对识别到的恶意软件的发现提供了关于 EC2 实例和容器相关潜在威胁的额外见解。这些发现还可以为 GuardDuty 确定的与 EC2 相关的威胁提供额外的上下文,例如观察到的加密货币相关活动和与指挥与控制服务器的通信。GuardDuty 恶意软件保护能够识别的恶意软件类别包括勒索软件、加密货币挖掘、远程访问、凭证盗窃和钓鱼等。本文将概述 GuardDuty 的按需恶意软件扫描功能,并讲解几个使用场景。
GuardDuty 为 EC2 实例提供两种类型的恶意软件扫描: GuardDuty 启动的恶意软件扫描 和 按需恶意软件扫描。GuardDuty 启动的恶意软件扫描在 GuardDuty 生成指示 EC2 实例或容器工作负载上存在典型恶意软件行为的 EC2 发现 后启动。初始的 EC2 发现通过 VPC 流日志 和 DNS 日志 提供有关特定威胁的洞察。在实例上执行恶意软件扫描超出了从日志活动中观察到的信息,并有助于提供文件系统级别的额外上下文,展示恶意软件与观察到的网络流量之间的联系。这种额外的上下文还可以帮助您确定对发现的威胁的反应和补救步骤。
在没有 GuardDuty EC2 发现的情况下,您也可能需要扫描 EC2 实例以寻找恶意软件。这可能包括作为安全调查的一部分进行扫描,或定期扫描某些实例。您可以利用按需恶意软件扫描功能随时扫描 EC2 实例,从而灵活维护 EC2 实例的安全态势。
按需恶意软件扫描
要执行 按需恶意软件扫描,您的帐户必须启用 GuardDuty。如果在您第一次提交按需扫描时,恶意软件保护的服务链接角色SLR权限在帐户中不存在,则将自动创建恶意软件保护的 SLR。按需恶意软件扫描是通过提供要扫描的 EC2 实例的 Amazon 资源名称ARN来启动的。该实例的恶意软件扫描是使用与 GuardDuty 启动的扫描相同的 功能 进行的。GuardDuty 执行的恶意软件扫描是无代理的,并且此功能的设计不会影响您资源的性能。
按需恶意软件扫描可以通过 AWS 管理控制台的 GuardDuty 恶意软件保护 部分或通过 StartMalwareScan API 启动。在启用 GuardDuty 的成员帐户中,从 GuardDuty 委派管理员 帐户可以启动 EC2 实例的扫描,或可以从成员帐户或独立帐户启动对该帐户中的 Amazon EC2 实例的扫描。GuardDuty 控制台的 恶意软件扫描 部分报告每次恶意软件扫描的高级详细信息。该部分指明扫描在哪个 EC2 实例上启动,扫描状态完成、运行、跳过或失败、扫描结果干净或感染,以及何时启动了恶意软件扫描。这些关于恶意软件扫描的摘要信息也可以通过 DescribeMalwareScans API 获取。
当按需扫描在 EC2 实例上检测到恶意软件时,将创建一个新的 GuardDuty 发现。该发现列出受影响的 EC2 实例的详细信息、恶意软件在实例文件系统中找到的位置、发现的恶意软件数量以及有关具体恶意软件的详细信息。此外,如果在 Docker 容器中发现恶意软件,发现还列出了关于容器的详细信息,并且如果 EC2 实例用于支持 Amazon Elastic Kubernetes Service (Amazon EKS) 或 Amazon Elastic Container Service (Amazon ECS) 的容器部署,还将包括关于集群、任务和 Pod 的详细信息。有关识别到的恶意软件的发现可以在 GuardDuty 控制台中与其他 GuardDuty 发现一起查看,或使用 GuardDuty API 获取。此外,GuardDuty 生成的每个发现都将发送到 Amazon EventBridge 和 AWS Security Hub。通过 EventBridge,您可以创建规则以匹配某些 GuardDuty 发现,并将这些发现发送到预定义的事件驱动流目标。Security Hub 允许您将 GuardDuty 发现包含在整体 AWS 环境的安全发现聚合和优先级排序中。
GuardDuty 会根据扫描的 Amazon EBS 数据总量收取 费用。您可以使用 Amazon EBS 卷的预配存储来获取扫描费用的初步估算。当实际恶意软件扫描运行时,最终费用将根据 GuardDuty 执行恶意软件扫描时实际扫描的数据量来确定。为了更准确地估算在 Amazon EBS 卷上进行的恶意软件扫描可能的费用,您必须从与卷相连的 EC2 实例获取实际使用的存储量。有多种方法可用来确定 EBS 卷上当前使用的实际存储量,包括使用 CloudWatch Logs Agent 收集磁盘使用指标,以及运行单个命令检查 Linux 和 Windows EC2 实例的可用磁盘空间。
使用 GuardDuty 按需恶意软件扫描的用例
现在您已经了解了按需恶意软件扫描的功能及其工作原理,让我们来逐一探讨您可以利用它来实现安全目标的四个用例。在用例 1 和 2 中,我们将提供可部署的资产,以帮助您在自己的环境中演示解决方案。
用例 1 根据特定标签启动 EC2 实例的扫描
这个用例演示如何根据应用于 EC2 实例的 标签 执行按需扫描。每个标签都是一个包含键和值的标签,用于存储有关资源或保留在该资源上的数据的信息。资源标签可用于帮助识别要进行恶意软件扫描的特定 EC2 实例目标组以满足您的安全要求。根据您组织的策略,标签可以指示数据分类策略、工作负载类型或 EC2 实例的合规范围,这些可以用作恶意软件扫描的标准。
在这个解决方案中,您将结合使用 GuardDuty、AWS Systems Manager 文档 (SSM 文档)、Amazon CloudWatch Logs 订阅过滤器、AWS Lambda 和 Amazon Simple Notification Service (Amazon SNS) 来启动包含特定标签的 EC2 实例的恶意软件扫描。此解决方案设计为在成员帐户中部署,并在该成员帐户内识别要扫描的 EC2 实例。
解决方案架构图 1 显示了该解决方案的高层架构,描述了如何根据标签键启动按需恶意软件扫描。
图 1 基于标签的按需恶意软件扫描架构
主要工作流程如下:
在解决方案中部署的 SSM 文档中输入标签扫描参数。当您启动 SSM 文档时,GuardDutyMalwareOnDemandScanLambdaFunction Lambda 函数被调用,启动与您的标签标准匹配的 Amazon EC2 ARN 收集。Lambda 函数获取 EC2 实例的 ARN,并为每个实例启动恶意软件扫描。GuardDuty 对每个实例进行恶意软件扫描。在日志组 /aws/guardduty/malwarescanevents 下创建的 CloudWatch Logs 订阅过滤器会监控状态为 COMPLETED 或 SKIPPED 的按需恶意软件扫描的日志条目。如果扫描符合此过滤器标准,它会发送到 GuardDutyMalwareOnDemandNotificationLambda 函数。GuardDutyMalwareOnDemandNotificationLambda 函数解析扫描事件中的信息,如果扫描结果为 clean、skipped 或 infected,则将详细信息发送到 Amazon SNS 主题。Amazon SNS 将消息发送到主题的订阅。消息中将包含帐户 ID、资源 ID、状态、卷和扫描结果的信息。Systems Manager 文档AWS Systems Manager 是 AWS 中资源的安全、端到端管理解决方案,适用于多云和混合环境。此解决方案在 SSM 文档功能中使用,以提供与负责识别要扫描恶意软件的 EC2 实例的 Lambda 功能交互的方式。
识别 Amazon EC2 目标 LambdaGuardDutyMalwareOnDemandScanLambdaFunction 获取提供的 SSM 文档参数中与标签标准匹配的相关 EC2 实例 ARN。对于符合标签标准的 EC2 实例,使用 StartMalwareScan API 提交按需恶意软件扫描请求。
监视和报告扫描状态解决方案部署了一个 Amazon CloudWatch Logs 订阅过滤器,监控状态为 COMPLETED 或 SKIPPED 的按需恶意软件扫描的日志条目。有关监视扫描状态的更多信息,请参阅 监视扫描状态。在按需恶意软件扫描完成后,会匹配过滤标准,并且扫描结果将发送到其 Lambda 函数目标 GuardDutyMalwareOnDemandNotificationLambda。该 Lambda 函数生成一个 Amazon SNS 通知电子邮件,这些邮件由 GuardDutyMalwareOnDemandScanTopic Amazon SNS 主题发送。
部署解决方案现在您了解了按需恶意软件扫描解决方案的工作原理,您可以将其部署到自己的 AWS 帐户中。此解决方案应部署在单个成员帐户中。以下部分将逐步指导您如何部署该解决方案,并向您展示如何验证关键步骤是否正常工作。
第 1 步:激活 GuardDuty
本文提供的示例解决方案要求您在 AWS 帐户中激活 GuardDuty。如果此服务尚未在您的帐户中激活,请了解有关 免费试用和定价 的更多信息,并遵循 开始使用 Amazon GuardDuty 中的步骤设置该服务并开始监控您的帐户。
注意: 按需恶意软件扫描不包括在 GuardDuty 免费试用中。
第 2 步:部署 AWS CloudFormation 模板
在此步骤中,您可以在希望测试此解决方案的 AWS 帐户和区域中部署模板。
选择以下启动堆栈按钮,在您的帐户中启动一个 AWS CloudFormation 堆栈。使用 AWS 管理控制台导航栏选择希望部署堆栈的区域。 根据您希望如何使用该解决方案设置以下参数的值:创建按需恶意软件扫描示例测试器条件 将值设置为 True,以生成两个 EC2 实例以测试该解决方案。这些实例将作为按需恶意软件扫描的目标。一个实例将包含 EICAR 恶意软件示例文件,这些文件包含会被检测为恶意软件的字符串,但它们不是恶意的。另一个实例将不包含恶意软件。标签键 设置要添加到通过该模板启动的测试 EC2 实例的键。标签值 设置要添加到通过该模板启动的测试 EC2 实例的值。用于测试的最新 Amazon Linux 实例 保持不变。滚动到 快速创建堆栈 屏幕底部,选中 我已确认 AWS CloudFormation 可能会创建 IAM 资源 旁边的复选框。选择 创建堆栈。此 CloudFormation 堆栈的部署将需要 510 分钟。在 CloudFormation 堆栈成功部署后,您可以继续查看并与已部署解决方案进行交互。
第 3 步:创建 Amazon SNS 主题订阅
CloudFormation 堆栈部署了一个 Amazon SNS 主题,以支持发送有关启动的恶意软件扫描的通知。对于此文章,您创建一个电子邮件订阅,以接收通过该主题发送的消息。
在 Amazon SNS 控制台中,导航到堆栈部署所在的区域。在 Amazon SNS 主题页面,选择包含文本 GuardDutyMalwareOnDemandScanTopic 的创建主题。图 2 Amazon SNS 主题列表
在 创建订阅 页面,选择 电子邮件 作为 协议,并在 终端节点 中添加有效的电子邮件地址。选择 创建订阅。 黑豹机场图 3 Amazon SNS 主题订阅
订阅创建后,将发送一封电子邮件通知,必须确认该电子邮件以开始接收恶意软件扫描通知。

Amazon SNS 订阅支持除了电子邮件之外的多种订阅协议。您可以查看 Amazon SNS 事件目的地 列表,以了解有关可以消耗 Amazon SNS 通知的其他