Teste as descobertas do GuardDuty em contas dedicadas - Amazon GuardDuty

Teste as descobertas do GuardDuty em contas dedicadas

Use este documento para executar um script de testador que gera descobertas do GuardDuty em relação aos recursos de teste que serão implantados em seu Conta da AWS. Pode-se executar essas etapas quando se deseja entender e aprender sobre determinados tipos de descoberta do GuardDuty e como os detalhes da descoberta aparecem para os recursos efetivos em sua conta. Essa experiência é diferente de gerar Descobertas de exemplo. Para mais informações sobre a experiência de testar descobertas do GuardDuty, consulte Considerações.

Considerações

Antes de continuar, leve em conta as seguintes considerações:

  • O GuardDuty recomenda implantar o testador em uma área dedicada que não seja de produção Conta da AWS. Essa abordagem garantirá que seja possível identificar adequadamente as descobertas do GuardDuty geradas pelo testador. Além disso, o testador do GuardDuty implanta uma variedade de recursos que podem exigir permissões do IAM além das permitidas em outras contas. O uso de uma conta exclusiva garante que as permissões possam ter o escopo adequado com um limite de conta claro.

  • O script do testador gera mais de 100 descobertas do GuardDuty com diferentes combinações de recursos AWS. Atualmente, isso não inclui todos os Tipos de descoberta do GuardDuty. Para obter uma lista dos tipos de descoberta que você pode gerar com esse script de testador, consulte O script do testador de descobertas do GuardDuty pode gerar.

    Observação

    Para visualizar os tipos de descoberta da sequência de ataque, o script do testador gera somente AttackSequence:EKS/CompromisedCluster e AttackSequence:S3/CompromisedData. Para visualizar e entender AttackSequence:IAM/CompromisedCredentials, você pode gerar Descobertas de exemplo na sua conta.

  • Para que o testador do GuardDuty funcione como esperado, o GuardDuty precisa ser habilitado na conta em que os recursos do testador forem implantados. Dependendo dos testes que serão executados, o testador avalia se os planos de proteção apropriados do GuardDuty estão habilitados ou não. Para qualquer plano de proteção que não esteja habilitado, o GuardDuty solicitará permissão para habilitar os planos de proteção necessários por tempo suficiente para que o GuardDuty realize os testes que gerarão descobertas. Posteriormente, o GuardDuty desabilitará o plano de proteção assim que o teste for concluído.

    Como habilitar o GuardDuty pela primeira vez

    Ao habilitar o GuardDuty na sua conta exclusiva pela primeira vez em uma região específica, sua conta ficará automaticamente inscrita em uma avaliação gratuita de 30 dias.

    O GuardDuty oferece outras opções de planos de proteção. No momento da habilitação do GuardDuty, determinados planos de proteção também são habilitados e estão incluídos na avaliação gratuita de 30 dias do GuardDuty. Para obter mais informações, consulte Usando a avaliação gratuita de 30 dias do GuardDuty.

    O GuardDuty já foi habilitado em sua conta antes da execução do script do testador

    Quando o GuardDuty já estiver habilitado, com base nos parâmetros, o script do testador verificará o status da configuração de determinados planos de proteção e outras configurações de nível de conta que são necessárias para gerar as descobertas.

    Ao executar esse script de teste, determinados planos de proteção podem ser habilitados pela primeira vez em sua conta exclusiva em uma região. Esse procedimento iniciará a avaliação gratuita de 30 dias para esse plano de proteção. Para obter informações sobre o teste gratuito associado a cada plano de proteção, consulte Usando a avaliação gratuita de 30 dias do GuardDuty.

  • Desde que a infraestrutura do testador do GuardDuty esteja implantada, você poderá ocasionalmente receber descobertas UnauthorizedAccess:EC2/TorClient da instância do PenTest.

O script do testador de descobertas do GuardDuty pode gerar

Atualmente, o script do testador gera os seguintes tipos de descoberta relacionados aos registros de auditoria do Amazon EC2, do Amazon EKS, Amazon S3, do IAM e logs de auditoria do EKS:

Etapa 1: pré-requisitos

Para preparar seu ambiente de teste, é preciso ter os seguintes itens:

  • Git — Instale a ferramenta de linha de comando git com base no sistema operacional usado.

    Isso é necessário para clonar o amazon-guardduty-testerrepositório.

  • AWS Command Line Interface: uma ferramenta de código aberto que permite interagir com o Serviços da AWS usando comandos no shell da linha de comando. Para obter mais informações, consulte Conceitos básicos do AWS CLI no Manual do usuário do AWS Command Line Interface.

  • AWS Systems Manager— Para iniciar sessões do Session Manager com seus nós gerenciados usando AWS CLI é necessário instalar o plug-in do Session Manager em sua máquina local. Para obter mais informações, consulte Install the Session Manager Plugin for the AWS CLI no Guia do usuário do AWS Systems Manager.

  • Node Package Manager (NPM) — Instale o NPM para instalar todas as dependências.

  • Docker: é necessário ter o Docker instalado. Para obter instruções de instalação, consulte o site do Docker.

    Para verificar se o Docker foi instalado, execute o comando a seguir e confirme se há uma saída semelhante à seguinte saída:

    $ docker --version Docker version 19.03.1
  • Assine a imagem do Kali Linux no AWS Marketplace.

Etapa 2: Implantar recursos do AWS

Esta seção fornece uma lista dos principais conceitos e as etapas para implantar determinados recursos do AWS em sua conta dedicada.

Conceitos

A lista a seguir fornece os principais conceitos relacionados aos comandos que ajudam a implantar os recursos:

  • AWS Cloud Development Kit (AWS CDK) – CDK é uma estrutura de desenvolvimento de software de código aberto para definir sua infraestrutura de nuvem em código e provisioná-la pelo CloudFormation. Você pode usar qualquer uma dessas linguagens de programação compatíveis para definir componentes de nuvem reutilizáveis conhecidos como constructos. Você os compõe em pilhas e aplicativos. Em seguida, você implanta seus aplicativos CDK para CloudFormation para provisionar ou atualizar seus recursos. Para obter mais informações, consulte O que é o AWS CDK? no Guia do desenvolvedor do AWS Cloud Development Kit (AWS CDK).

  • Bootstrapping - é o processo de preparar seu ambiente da AWS para uso com AWS CDK. Antes de implantar uma pilha do CDK em um ambiente da AWS, o ambiente deve primeiro receber o bootstrapping. Esse processo de provisionamento de recursos AWS específicos em seu ambiente que são usados por AWS CDK faz parte das etapas que você executará na próxima seção - Etapas para implantar recursos do AWS.

    Para obter mais informações sobre inicialização, consulte Inicialização no Guia do desenvolvedor do AWS Cloud Development Kit (AWS CDK).

Etapas para implantar recursos do AWS

Execute as etapas a seguir para começar a implantar os recursos:

  1. Configure sua conta e região AWS CLI padrão, a menos que as variáveis de região da conta dedicada sejam definidas manualmente no arquivo bin/cdk-gd-tester.ts. Para obter mais informações, consulte Ambientes no Guia do desenvolvedor do AWS Cloud Development Kit (AWS CDK).

  2. Para implantar os recursos, execute os seguintes comandos:

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

    O último comando (cdk deploy) cria uma pilha CloudFormation em seu nome. O nome dessa pilha é GuardDutyTesterStack.

    Como parte desse script, o GuardDuty cria novos recursos para gerar descobertas do GuardDuty em sua conta. Além disso, ele adiciona o seguinte par de tag chave:valor às instâncias do Amazon EC2:

    CreatedBy:GuardDuty Test Script

    As instâncias do Amazon EC2 também incluem as instâncias do EC2 que hospedam nós do EKS e clusters do ECS.

    Tipos de instância

    O GuardDuty foi projetado para usar tipos de instância econômicos que fornecem o desempenho mínimo necessário para realizar testes com êxito. Devido aos requisitos de vCPU, o grupo de nós do Amazon EKS exige t3.medium, e, devido ao aumento da capacidade de rede necessária para testes de descoberta de DenialOfService, o nó do driver exige m6i.large. Para todos os outros testes, o GuardDuty usa o tipo de instância t3.micro. Para obter mais informações sobre os tipos de instância, consulte Tipos de instância no Guia de Tipos de Instâncias do Amazon EC2.

Etapa 3 - Executar scripts do testador

Esse é um processo de duas etapas em que primeiro é necessário iniciar uma sessão com o driver de teste e, em seguida, executar scripts para gerar resultados do GuardDuty com combinações específicas de recursos.

  1. Depois que seus recursos forem implantados, salve o código da região em uma variável na sessão atual do terminal. Use o comando a seguir e substitua us-east-1 pelo código da região em que os recursos foram implantados:

    $ REGION=us-east-1
  2. O script do testador está disponível somente por meio do AWS Systems Manager (SSM). Para iniciar um shell interativo na instância do host do testador, consulte o instanceID do host.

  3. Use o comando a seguir para iniciar sua sessão para o script do testador:

    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)

O script do testador é um programa baseado em Python que cria dinamicamente um script bash para gerar descobertas com base em sua entrada. Você tem flexibilidade para gerar descobertas com base em um ou mais tipos de recursos AWS, planos de proteção do GuardDuty OBJETIVO DA AMEAÇA (táticas), Fontes de dados fundamentais ou O script do testador de descobertas do GuardDuty pode gerar.

Use os exemplos de comandos a seguir como referência e execute um ou mais comandos para gerar as descobertas que deseja explorar:

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'

Para obter mais informações sobre parâmetros válidos, execute o comando de ajuda a seguir:

python3 guardduty_tester.py --help

Escolha um método de sua preferência para visualizar as descobertas geradas em sua conta.

GuardDuty console
  1. Faça login no Console de gerenciamento da AWS e abra o console do GuardDuty em https://console.aws.amazon.com/guardduty/.

  2. No painel de navegação, selecione Descobertas.

  3. Na tabela de descobertas, selecione uma descoberta cujos detalhes deseja visualizar. Isso abrirá o painel de detalhes da descoberta. Para mais informações, consulte Noções básicas e geração de descobertas do Amazon GuardDuty.

  4. Caso queira filtrar essas descobertas, use a chave e o valor da tag do recurso. Por exemplo, para filtrar as descobertas geradas para as instâncias do Amazon EC2, useCreatedBy: GuardDuty Test Script tag key:value pair para Instance tag key e Instance tag key.

API
AWS CLI
  • Execute o comando AWS CLI para visualizar as descobertas geradas e substituir us-east-1 e 12ABC34D567E8FA901BC2D34Example por valores adequados:

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

    Para encontrar detectorId da sua conta e região atual, consulte a página de Configurações no console https://console.aws.amazon.com/guardduty/ ou execute a API ListDetectors.

    Para obter mais informações sobre os parâmetros que você pode usar para filtrar descobertas, consulte list-findings na Referência de ComandosAWS CLI.

Etapa 4: limpar os recursos de teste AWS

As configurações em nível de conta e outras atualizações de status de configuração feitas durante o retorno Etapa 3 - Executar scripts do testador ao estado original quando o script do testador é concluído.

Depois de executar o script do testador, você pode optar por limpar os recursos de teste AWS. Isso pode ser feito usando um dos seguintes métodos.

Solucionar problemas comuns

O GuardDuty identificou problemas comuns e recomenda algumas etapas para a solução de problemas:

  • Cloud assembly schema version mismatch – atualize CLI AWS CDK para uma versão compatível com a versão de montagem em nuvem necessária ou para a versão mais recente disponível. Para obter mais informações sobre a compatibilidade da CLI AWS CDK.

  • Docker permission denied – Adicione o usuário da conta exclusiva a docker ou docker-users para que a conta exclusiva possa executar os comandos. Para obter mais informações sobre as etapas, consulte a opção de soquete Daemon.

  • Your requested instance type is not supported in your requested Availability Zone— Algumas zonas de disponibilidade não oferecem suporte a tipos específicos de instância. Para identificar quais zonas de disponibilidade oferecem suporte ao seu tipo de instância preferido e tentar implantar recursos AWS novamente, execute as seguintes etapas:

    1. Selecione um método de sua preferência para determinar quais zonas de disponibilidade são compatíveis com seu tipo de instância:

      Console
      Para identificar as zonas de disponibilidade compatíveis com o tipo de instância preferencial
      1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/.

      2. Ao usar o seletor de Região AWS no canto superior direito da página, selecione a região em que você deseja lançar a instância.

      3. No painel de navegação, em Instâncias, escolha Tipos de Instâncias.

      4. Na tabela Tipos de instância, escolha um tipo de instância preferencial.

      5. Em Rede, veja as regiões listadas em Zonas de disponibilidade.

        Com base nessas informações, talvez seja necessário escolher uma nova região onde se possa implantar os recursos.

      AWS CLI

      Execute o comando a seguir para visualizar uma lista de zonas de disponibilidade. Lembre-se de especificar o tipo de instância de sua preferência e a região (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

      Para obter mais informações, consulte describe-instance-type-offerings na Referência de comando AWS CLI.

      Ao executar esse comando, se você receber um erro, verifique se está usando a versão mais recente da AWS CLI. Para obter mais informações, consulte Troubleshooting no Guia do usuário do AWS Command Line Interface.

    2. Tente implantar os AWS recursos novamente e especifique uma zona de disponibilidade compatível com seu tipo de instância preferido.

      Para tentar implantar recursos AWS novamente
      1. Configure a região padrão no arquivo bin/cdk-gd-tester.ts.

      2. Para especificar a zona de disponibilidade, abra o arquivo amazon-guardduty-tester/lib/common/network/vpc.ts.

      3. Nesse arquivo, substitua maxAzs: 2, por availabilityZones: ['us-east-1a', 'us-east-1c'], onde você deve especificar as zonas de disponibilidade para seu tipo de instância.

      4. Continue com as etapas restantes em Etapas para implantar recursos do AWS.