AWS - GuardDuty Enum

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

GuardDuty

De acordo com a documentação: GuardDuty combina aprendizado de máquina, detecção de anomalias, monitoramento de rede e descoberta de arquivos maliciosos, usando fontes tanto da AWS quanto de terceiros líderes do setor para ajudar a proteger cargas de trabalho e dados na AWS. O GuardDuty é capaz de analisar dezenas de bilhões de eventos em várias fontes de dados da AWS, como logs de eventos do AWS CloudTrail, logs de fluxo da Amazon Virtual Private Cloud (VPC), auditoria do Amazon Elastic Kubernetes Service (EKS) e logs de nível de sistema, e logs de consulta DNS.

O Amazon GuardDuty identifica atividades incomuns dentro de suas contas, analisa a relevância de segurança da atividade e fornece o contexto no qual foi invocado. Isso permite que um respondedor determine se deve gastar tempo em investigações adicionais.

Alertas aparecem no console do GuardDuty (90 dias) e nos Eventos do CloudWatch.

Quando um usuário desativa o GuardDuty, ele deixará de monitorar seu ambiente AWS e não gerará novas descobertas, e as descobertas existentes serão perdidas. Se você apenas parar, as descobertas existentes permanecerão.

Exemplo de Descobertas

  • Reconhecimento: Atividade que sugere reconhecimento por um atacante, como atividade de API incomum, tentativas de login suspeitas em bancos de dados, varredura de porta intra-VPC, padrões incomuns de solicitações de login falhadas, ou sondagem de porta desbloqueada de um IP malicioso conhecido.

  • Comprometimento da instância: Atividade que indica um comprometimento da instância, como mineração de criptomoedas, atividade de backdoor de comando e controle (C&C), malware usando algoritmos de geração de domínio (DGA), atividade de negação de serviço de saída, volume de tráfego de rede muito alto, protocolos de rede incomuns, comunicação de instância de saída com um IP malicioso conhecido, credenciais temporárias da Amazon EC2 usadas por um endereço IP externo e exfiltração de dados usando DNS.

  • Comprometimento da conta: Padrões comuns indicativos de comprometimento da conta incluem chamadas de API de uma geolocalização incomum ou proxy de anonimização, tentativas de desativar o registro do AWS CloudTrail, alterações que enfraquecem a política de senha da conta, lançamentos de instância ou infraestrutura incomuns, implantações de infraestrutura em uma região incomum, roubo de credenciais, atividade suspeita de login em banco de dados e chamadas de API de endereços IP maliciosos conhecidos.

  • Comprometimento do bucket: Atividade que indica um comprometimento do bucket, como padrões de acesso a dados suspeitos indicando uso indevido de credenciais, atividade incomum da API Amazon S3 de um host remoto, acesso não autorizado ao S3 de endereços IP maliciosos conhecidos e chamadas de API para recuperar dados em buckets S3 de um usuário sem histórico anterior de acesso ao bucket ou invocado de uma localização incomum. O Amazon GuardDuty monitora e analisa continuamente os eventos de dados do AWS CloudTrail S3 (por exemplo, GetObject, ListObjects, DeleteObject) para detectar atividades suspeitas em todos os seus buckets do Amazon S3.

Informações da Descoberta

Resumo da descoberta:

  • Tipo de descoberta

  • Severidade: 7-8.9 Alto, 4-6.9 Médio, 01-3.9 Baixo

  • Região

  • ID da conta

  • ID do recurso

  • Hora da detecção

  • Qual lista de ameaças foi usada

O corpo contém estas informações:

  • Recurso afetado

  • Ação

  • Ator: Endereço IP, porta e domínio

  • Informações adicionais

Todas as Descobertas

Acesse uma lista de todas as descobertas do GuardDuty em: https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html

Múltiplas Contas

Por Convite

Você pode convidar outras contas para uma conta diferente do AWS GuardDuty para que cada conta seja monitorada pelo mesmo GuardDuty. A conta mestra deve convidar as contas de membros e então o representante da conta de membro deve aceitar o convite.

Via Organização

Você pode designar qualquer conta dentro da organização para ser o administrador delegado do GuardDuty. Apenas a conta de gerenciamento da organização pode designar um administrador delegado.

Uma conta designada como administrador delegado se torna uma conta de administrador do GuardDuty, tem o GuardDuty ativado automaticamente na Região AWS designada e também tem a permissão para ativar e gerenciar o GuardDuty para todas as contas na organização dentro dessa Região. As outras contas na organização podem ser visualizadas e adicionadas como contas de membros do GuardDuty associadas a essa conta de administrador delegado.

Enumeração

# Get Org config
aws guardduty list-organization-admin-accounts #Get Delegated Administrator
aws guardduty describe-organization-configuration --detector-id <id>

# Check external invitations
aws guardduty list-invitations
aws guardduty get-invitations-count

# Detector Information
aws guardduty list-detectors # 1 detector per account with GuardDuty
aws guardduty get-detector --detector-id <id> # Get detector info
aws guardduty get-master-account --detector-id <id>

# Get filters
aws guardduty list-filters --detector-id <id> # Check filters
aws guardduty get-filter --detector-id <id> --filter-name <name>

# Findings
aws guardduty list-findings --detector-id <id> # List findings
aws guardduty get-findings --detector-id <id> --finding-ids <id> # Get details about the finding
aws guardduty get-findings-statistics --detector-id <id> --finding-statistic-types <types>

# Get trusted IP addresses
aws guardduty list-ip-sets --detector-id <id>
aws guardduty get-ip-set --detector-id <id>

# Member accounts of the current AWS GuardDuty master account
aws guardduty list-members --detector-id <id>
aws guardduty get-members --detector-id <id> --account-ids <id>
aws guardduty get-member-detectors --detector-id <id> --account-ids <id>

# Continuously export its findings to an Amazon S3 bucket
aws guardduty list-publishing-destinations --detector-id <id>

# Intelligence sets that you have uploaded to GuardDuty
aws guardduty list-threat-intel-sets --detector-id <id>
aws guardduty get-threat-intel-set --detector-id <id> --threat-intel-set-id <id>

Bypass do GuardDuty

Orientação Geral

Tente descobrir o máximo possível sobre o comportamento das credenciais que você vai usar:

  • Horários em que são usados

  • Localizações

  • Agentes de usuário / Serviços (Pode ser usado a partir de awscli, webconsole, lambda...)

  • Permissões regularmente usadas

Com essas informações, recrie o cenário o máximo possível para usar o acesso:

  • Se for um usuário ou uma função acessada por um usuário, tente usá-lo nas mesmas horas, da mesma geolocalização (até mesmo o mesmo ISP e IP, se possível)

  • Se for uma função usada por um serviço, crie o mesmo serviço na mesma região e use-o de lá nos mesmos intervalos de tempo

  • Sempre tente usar as mesmas permissões que esse principal usou

  • Se precisar usar outras permissões ou abusar de uma permissão (por exemplo, baixar 1.000.000 de arquivos de log do CloudTrail), faça isso devagar e com a quantidade mínima de interações com a AWS (awscli às vezes chama várias APIs de leitura antes da de escrita)

Quebrando o GuardDuty

guardduty:UpdateDetector

Com essa permissão, você pode desativar o GuardDuty para evitar acionar alertas.

aws guardduty update-detector --detector-id <detector-id> --no-enable
aws guardduty update-detector --detector-id <detector-id> --data-sources S3Logs={Enable=false}

guardduty:CreateFilter

Os atacantes com essa permissão têm a capacidade de utilizar filtros para o arquivamento automático de descobertas:

aws guardduty create-filter  --detector-id <detector-id> --name <filter-name> --finding-criteria file:///tmp/criteria.json --action ARCHIVE

guardduty:DeletePublishingDestination

Os atacantes poderiam remover o destino para evitar alertas:

aws guardduty delete-publishing-destination --detector-id <detector-id> --destination-id <dest-id>

Excluir este destino de publicação não afetará a geração ou visibilidade das descobertas dentro do console GuardDuty. O GuardDuty continuará a analisar eventos em seu ambiente AWS, identificar comportamentos suspeitos ou inesperados e gerar descobertas.

Exemplos de Bypass de Descobertas Específicas

Observe que existem dezenas de descobertas do GuardDuty, no entanto, como Red Teamer nem todas elas irão afetá-lo, e o que é melhor, você tem a documentação completa de cada uma delas em https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html então dê uma olhada antes de tomar qualquer ação para não ser pego.

Aqui estão alguns exemplos de bypass de descobertas específicas do GuardDuty:

O GuardDuty detecta solicitações de API da AWS de ferramentas comuns de teste de penetração e aciona uma Descoberta de PenTest. É detectado pelo nome do agente do usuário que é passado na solicitação da API. Portanto, modificando o agente do usuário é possível evitar que o GuardDuty detecte o ataque.

Para evitar isso, você pode procurar o script session.py no pacote botocore e modificar o agente do usuário, ou configurar o Burp Suite como proxy do AWS CLI e alterar o user-agent com o MitM ou simplesmente usar um sistema operacional como Ubuntu, Mac ou Windows para evitar que este alerta seja acionado.

UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration

Extrair credenciais do EC2 do serviço de metadados e utilizá-las fora do ambiente AWS ativa o alerta UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS. Por outro lado, usar essas credenciais de sua instância EC2 aciona o alerta UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS. No entanto, usar as credenciais em outra instância EC2 comprometida dentro da mesma conta passa despercebido, não acionando nenhum alerta.

Portanto, utilize as credenciais exfiltradas de dentro da máquina onde você as encontrou para não acionar este alerta.

Referências

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización