专用账户中的测试 GuardDuty 结果 - Amazon GuardDuty
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

专用账户中的测试 GuardDuty 结果

使用本文档运行测试器脚本,该脚本针对将部署在您的中的测试资源生成 GuardDuty 结果 Amazon Web Services 账户。当您想了解和了解某些 GuardDuty 查找类型以及查找结果详细信息如何查找您账户中的实际资源时,可以执行这些步骤。这种体验不同于生成示例发现结果。有关测试 GuardDuty 结果体验的更多信息,请参阅注意事项

注意事项

在继续操作之前,请注意以下事项:

  • GuardDuty 建议在专用的非生产 Amazon Web Services 账户环境中部署测试器。这种方法将确保您能够正确识别测试人员生成的 GuardDuty 结果。此外, GuardDuty 测试人员还会部署各种资源,这些资源可能需要超出其他账户所允许的 IAM 权限。使用专用账户可确保通过明确的账户边界来恰当界定权限范围。

  • 测试器脚本使用不同的 Amazon 资源组合生成 100 多个 GuardDuty 调查结果。目前,这并未包括所有 GuardDuty 查找类型。有关可使用此测试程序脚本生成的调查发现类型列表,请参阅GuardDuty 调查结果测试器脚本可以生成

    注意

    测试器脚本仅AttackSequence:S3/CompromisedData针对攻击序列查找类型生成。为了实现可视化和理解AttackSequence:IAM/CompromisedCredentials,你可以在自己的账户示例发现结果中生成。

  • 要使 GuardDuty 测试人员按预期工作, GuardDuty 需要在部署测试人员资源的账户中启用。根据将要运行的测试,测试人员评估是否启用了相应的 GuardDuty 保护计划。对于任何未启用的保护计划, GuardDuty 将请求允许启用必要的保护计划,以便在足够长的时间 GuardDuty 内执行将生成结果的测试。稍后, GuardDuty 将在测试完成后禁用保护计划。

    GuardDuty 首次启用

    在 GuardDuty 特定地区首次在您的专用账户中启用后,您的账户将自动注册为期 30 天的免费试用。

    GuardDuty 提供可选的保护计划。启用时 GuardDuty,某些保护计划也已启用,并包含在 GuardDuty 30 天免费试用版中。有关更多信息,请参阅 使用 GuardDuty 30 天免费试用

    GuardDuty 在运行测试器脚本之前,已在您的账户中启用

    如果 GuardDuty 已启用,则测试器脚本将根据参数检查某些保护计划的配置状态以及生成调查结果所需的其他账户级别设置。

    通过运行此测试程序脚本,某些防护计划可能会在您位于某个区域的专用账户中首次启用。该防护计划的 30 天免费试用期将由此开始计算。有关每个防护计划相关的免费试用期的信息,请参阅使用 GuardDuty 30 天免费试用

  • 只要部署了 GuardDuty 测试器基础架构,您就可能偶尔会收到来自 PenTest 实例的UnauthorizedAccess:EC2/TorClient调查结果。

GuardDuty 调查结果测试器脚本可以生成

目前,测试器脚本生成以下与亚马逊、亚马逊 EKS EC2、Amazon S3、IAM 和 EKS 审计日志相关的查找类型:

第 1 步 – 先决条件

要准备测试环境,您需要以下项目:

  • Git:根据您使用的操作系统安装 git 命令行工具。

    克隆 amazon-guardduty-tester 存储库 将需要此项目。

  • Amazon Command Line Interface— 一种开源工具,允许您使用命令行外壳中的命令进行交互。 Amazon Web Services 服务 有关更多信息,请参阅《Amazon Command Line Interface 用户指南》中的 Get started with Amazon CLI

  • Amazon Systems Manager— 要使用与托管节点启动会话管理器会话, Amazon CLI 必须在本地计算机上安装会话管理器插件。有关更多信息,请参阅《Amazon Systems Manager 用户指南》中的为 Amazon CLI安装 Session Manager 插件

  • 节点包管理器(NPM):安装 NPM 以安装所有依赖项。

  • Docker:您必须已经安装 Docker。有关安装说明,请参阅 Docker 网站

    要验证是否已安装 Docker,请运行以下命令并确认是否有与以下输出类似的输出:

    $ docker --version Docker version 19.03.1
  • Amazon Web Services Marketplace 中订阅 Kali Linux 映像。

步骤 2-部署 Amazon 资源

本节列出了在专用账户中部署某些 Amazon 资源的关键概念和步骤。

概念

以下列表提供了与有助您部署资源的命令相关的关键概念:

  • Amazon Cloud Development Kit (Amazon CDK)— CDK 是一个开源软件开发框架,用于在代码中定义云基础架构并通过它进行 Amazon CloudFormation配置。CDK 支持多种编程语言,从而定义称为构造的可重用云组件。您可以将构造组合成堆栈和应用程序。然后,您可以将 CDK 应用程序部署到 Amazon CloudFormation 以配置或更新资源。有关更多信息,请参阅什么是 Amazon CDK? 在《Amazon Cloud Development Kit (Amazon CDK) 开发人员指南》中。

  • Bootstrapping — 这是准备 Amazon 环境以供使用的过程。 Amazon CDK在将 CDK 堆栈部署到 Amazon 环境中之前,必须先对环境进行引导。在您的环境中配置由使用的特定 Amazon 资源的过程 Amazon CDK 是您将在下一节中执行的步骤的一部分-部署 Amazon 资源的步骤

    有关引导工作原理的更多信息,请参阅《Amazon Cloud Development Kit (Amazon CDK) 开发人员指南》中的 Bootstrapping

部署 Amazon 资源的步骤

执行以下步骤以开始部署资源:

  1. 除非在bin/cdk-gd-tester.ts文件中手动设置了专用账户区域变量,否则请设置您的 Amazon CLI 默认账户和区域。有关更多信息,请参阅《Amazon Cloud Development Kit (Amazon CDK) 开发人员指南》中的 Environments

  2. 运行以下命令来部署资源:

    git clone https://github.com/awslabs/amazon-guardduty-tester && cd amazon-guardduty-tester npm install cdk bootstrap cdk deploy

    最后一个命令 (cdk deploy) 代表你创建一个 Amazon CloudFormation 堆栈。此堆栈的名称是GuardDutyTesterStack

    作为此脚本的一部分, GuardDuty 创建新资源以在您的账户中生成 GuardDuty调查结果。它还向 Ama EC2 zon 实例添加了以下标签键:值对:

    CreatedBy:GuardDuty Test Script

    Amazon EC2 实例还包括托管 EKS 节点和 ECS 集群的 EC2 实例。

    实例类型

    GuardDuty 旨在使用经济实惠的实例类型,这些实例类型可提供成功执行测试所需的最低性能。由于 vCPU 要求、Amazon EKS 节点组需要t3.medium,也因为需要增加网络容量 DenialOfService 查找测试,驱动程序节点需要m6i.large。对于所有其他测试, GuardDuty 使用t3.micro实例类型。有关实例类型的更多信息,请参阅 Amazon EC2 实例类型指南中的可用大小

第 3 步 – 运行测试程序脚本

这是一个分为两步的过程,首先需要启动与测试驱动程序的会话,然后运行脚本以生成具有特定资源组合的 GuardDuty 结果。

  1. 部署资源后,将区域代码保存到当前终端会话中的某个变量中。使用以下命令并us-east-1替换为部署资源的区域代码:

    $ REGION=us-east-1
  2. 测试器脚本只能通过 Amazon Systems Manager (SSM) 获得。要在测试器主机实例上启动交互式 shell,请查询主机InstanceId

  3. 使用以下命令启动与测试程序脚本的会话:

    aws ssm start-session --region $REGION --document-name AWS-StartInteractiveCommand --parameters command="cd /home/ssm-user/py_tester && bash -l" --target $(aws ec2 describe-instances --region $REGION --filters "Name=tag:Name,Values=Driver-GuardDutyTester" --query "Reservations[].Instances[?State.Name=='running'].InstanceId" --output text)

测试程序脚本是一种基于 Python 的程序,可动态构建 bash 脚本以根据您的输入生成调查发现。您可以根据一种或多种 Amazon 资源类型、 GuardDuty 保护计划威胁目的(战术)或灵活地生成调查结果GuardDuty 调查结果测试器脚本可以生成基础数据来源

以下列命令示例为参考,然后运行一个或多个命令来生成要探索的调查发现:

python3 guardduty_tester.py python3 guardduty_tester.py --all python3 guardduty_tester.py --s3 python3 guardduty_tester.py --tactics discovery python3 guardduty_tester.py --ec2 --eks --tactics backdoor policy execution python3 guardduty_tester.py --eks --runtime only python3 guardduty_tester.py --ec2 --runtime only --tactics impact python3 guardduty_tester.py --log-source dns vpc-flowlogs python3 guardduty_tester.py --finding 'CryptoCurrency:EC2/BitcoinTool.B!DNS'

如需有关有效参数的更多信息,您可以运行以下帮助命令:

python3 guardduty_tester.py --help

选择一种您偏好的方法,以便查看账户中生成的调查发现。

GuardDuty console
  1. 登录 Amazon Web Services Management Console 并打开 GuardDuty 控制台,网址为https://console.aws.amazon.com/guardduty/

  2. 在导航窗格中,选择 调查发现

  3. 从调查发现表中,选择要查看详细信息的调查发现。这时将打开调查发现详细信息面板。有关信息,请参阅了解并生成 Amazon GuardDuty 调查结果

  4. 如果要筛选这些调查发现,请使用资源标签键和值。例如,要筛选为 Amazon EC2 实例生成的结果,请使用CreatedBy:GuardDuty Test Script标签键:值对作为实例标签密钥和实例标签密钥

API
Amazon CLI
  • 运行以下 Amazon CLI 命令查看生成的结果,并用合适12abc34d567e8fa901bc2d34EXAMPLE的值替换us-east-1和:

    aws guardduty list-findings --region us-east-1 --detector-id 12abc34d567e8fa901bc2d34EXAMPLE

    要查找与您的账户和当前地区detectorId对应的,请参阅https://console.aws.amazon.com/guardduty/控制台中的设置页面,或者运行 ListDetectorsAPI。

    要详细了解可用于筛选调查发现的参数,请参阅《Amazon CLI 命令参考》中的 list-findings

步骤 4-清理 Amazon 测试资源

当测试程序脚本结束时,在第 3 步 – 运行测试程序脚本期间进行的账户级别设置和其他配置状态更新都将回到原始状态。

运行测试器脚本后,您可以选择清理 Amazon 测试资源。您可以选择通过以下方法之一来完成此操作:

排查常见 问题

GuardDuty 已确定常见问题并推荐了故障排除步骤:

  • Cloud assembly schema version mismatch— 将 Amazon CDK CLI 更新到与所需云装配版本兼容的版本或最新可用版本。有关更多信息,请参阅 Amazon CDK CLI compatibility

  • Docker permission denied— 将专用账户用户添加到 doc ker 或 dock er-users 中,以便专用账户可以运行命令。有关步骤的更多信息,请参阅守护程序套接字选项

  • Your requested instance type is not supported in your requested Availability Zone:某些可用区不支持特定的实例类型。要确定哪些可用区支持您的首选实例类型并重新尝试部署 Amazon 资源,请执行以下步骤:

    1. 选择一种您偏好的方法,确定哪些可用区支持您的实例类型:

      Console
      识别支持首选实例类型的可用区
      1. 登录 Amazon Web Services Management Console 并打开亚马逊 EC2 控制台,网址为https://console.aws.amazon.com/ec2/

      2. 使用页面右上角的 Amazon 区域选择器,选择要启动实例的区域。

      3. 在导航窗格中的实例下,选择实例类型

      4. 实例类型表中,选择一个首选实例类型。

      5. 联网下,查看可用区下列出的区域。

        根据此信息,您可能需要选择一个能够部署相关资源的新区域。

      Amazon CLI

      运行以下命令来查看可用区列表。请务必指定您的首选实例类型和区域 (us-east-1)。

      aws ec2 describe-instance-type-offerings --location-type availability-zone --filters Name=instance-type,Values=Preferred instance type --region us-east-1 --output table

      有关此命令的更多信息,请参阅《Amazon CLI 命令参考describe-instance-type-offerings中的。

      如果您在运行此命令时遇到错误,请确认您使用的是最新版本的 Amazon CLI。有关更多信息,请参阅《Amazon Command Line Interface User Guide》中的 Troubleshooting

    2. 尝试再次部署 Amazon 资源并指定支持您的首选实例类型的可用区。

      重新尝试部署资源 Amazon
      1. bin/cdk-gd-tester.ts 文件中设置默认区域。

      2. 要指定可用区,请使用 amazon-guardduty-tester/lib/common/network/vpc.ts 文件。

      3. 请将在此文件中的 maxAzs: 2, 替换为必须为您的实例类型指定可用区的 availabilityZones: ['us-east-1a', 'us-east-1c'],

      4. 继续完成部署 Amazon 资源的步骤下剩余的步骤。