AWS - GuardDuty Enum
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, utilizando 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), logs de auditoria e de nível de sistema do Amazon Elastic Kubernetes Service (EKS) 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 respondente 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 suspeitos de acesso a dados 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.
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 do AWS GuardDuty diferente 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
Contorno 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 do usuário / Serviços (Pode ser usado a partir de awscli, console web, lambda...)
Permissões regularmente usadas
Com essas informações, recrie o máximo possível o mesmo cenário para usar o acesso:
Se for um usuário ou uma função acessada por um usuário, tente usá-lo nas mesmas horas, na 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
guardduty:UpdateDetector
Com essa permissão, você pode desativar o GuardDuty para evitar acionar alertas.
guardduty:CreateFilter
guardduty:CreateFilter
Os atacantes com essa permissão têm a capacidade de utilizar filtros para o arquivamento automático de descobertas:
iam:PutRolePolicy
, (guardduty:CreateIPSet
|guardduty:UpdateIPSet
)
iam:PutRolePolicy
, (guardduty:CreateIPSet
|guardduty:UpdateIPSet
)Atacantes com os privilégios anteriores poderiam modificar a lista de IPs confiáveis do GuardDuty adicionando seu endereço IP a ela e evitando assim a geração de alertas.
guardduty:DeletePublishingDestination
guardduty:DeletePublishingDestination
Os atacantes poderiam remover o destino para evitar alertas:
Apagar 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 afetarão você, 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 bypasses 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
Last updated