AWS Pentesting
Informações Básicas
Antes de começar a pentesting em um ambiente AWS, há algumas coisas básicas que você precisa saber sobre como a AWS funciona para ajudá-lo a entender o que você precisa fazer, como encontrar configurações incorretas e como explorá-las.
Conceitos como hierarquia organizacional, IAM e outros conceitos básicos são explicados em:
AWS - Basic InformationLaboratórios para aprender
Ferramentas para simular ataques:
Metodologia de Pentester/Red Team AWS
Para auditar um ambiente AWS, é muito importante saber: quais serviços estão sendo usados, o que está sendo exposto, quem tem acesso a quê e como os serviços internos da AWS e os serviços externos estão conectados.
Do ponto de vista de um Red Team, o primeiro passo para comprometer um ambiente AWS é conseguir obter algumas credenciais. Aqui estão algumas ideias sobre como fazer isso:
Vazamentos no github (ou similar) - OSINT
Engenharia Social
Reutilização de senhas (vazamentos de senhas)
Vulnerabilidades em Aplicações Hospedadas na AWS
Server Side Request Forgery com acesso ao endpoint de metadados
Leitura de Arquivo Local
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
terceiros comprometidos
Funcionário Interno
Cognito credenciais
Ou comprometendo um serviço não autenticado exposto:
AWS - Unauthenticated Enum & AccessOu se você estiver fazendo uma revisão, você poderia apenas pedir credenciais com esses papéis:
AWS - Permissions for a PentestDepois de conseguir obter credenciais, você precisa saber de quem são essas credenciais e a que elas têm acesso, então você precisa realizar alguma enumeração básica:
Enumeração Básica
SSRF
Se você encontrou um SSRF em uma máquina dentro da AWS, confira esta página para truques:
Whoami
Uma das primeiras coisas que você precisa saber é quem você é (em qual conta você está e outras informações sobre o ambiente AWS):
Observe que as empresas podem usar canary tokens para identificar quando tokens estão sendo roubados e usados. É recomendável verificar se um token é um canary token ou não antes de usá-lo. Para mais informações verifique esta página.
Enumeração de Org
AWS - Organizations EnumEnumeração de IAM
Se você tiver permissões suficientes, verificar os privilégios de cada entidade dentro da conta AWS ajudará você a entender o que você e outras identidades podem fazer e como escalar privilégios.
Se você não tiver permissões suficientes para enumerar o IAM, você pode roubar e forçar para descobri-los. Verifique como fazer a enumeração e a força bruta em:
AWS - IAM, Identity Center & SSO EnumAgora que você tem algumas informações sobre suas credenciais (e se você é um red team, espero que você não tenha sido detectado). É hora de descobrir quais serviços estão sendo usados no ambiente. Na seção a seguir, você pode verificar algumas maneiras de enumerar alguns serviços comuns.
Enumeração de Serviços, Pós-Exploração e Persistência
A AWS tem uma quantidade impressionante de serviços, na página a seguir você encontrará informações básicas, cheatsheets de enumeração, como evitar detecção, obter persistência e outros truques de pós-exploração sobre alguns deles:
AWS - ServicesObserve que você não precisa realizar todo o trabalho manualmente, abaixo neste post você pode encontrar uma seção sobre ferramentas automáticas.
Além disso, nesta fase você pode ter descoberto mais serviços expostos a usuários não autenticados, você pode ser capaz de explorá-los:
AWS - Unauthenticated Enum & AccessEscalação de Privilégios
Se você puder verificar pelo menos suas próprias permissões sobre diferentes recursos, você poderá verificar se consegue obter mais permissões. Você deve se concentrar pelo menos nas permissões indicadas em:
AWS - Privilege EscalationServiços Expostos Publicamente
Ao enumerar serviços da AWS, você pode ter encontrado alguns deles expondo elementos à Internet (portas de VM/Containers, bancos de dados ou serviços de fila, snapshots ou buckets...). Como pentester/red teamer, você deve sempre verificar se consegue encontrar informações sensíveis / vulnerabilidades neles, pois podem fornecer a você mais acesso à conta AWS.
Neste livro, você deve encontrar informações sobre como encontrar serviços AWS expostos e como verificá-los. Sobre como encontrar vulnerabilidades em serviços de rede expostos, eu recomendaria que você pesquisasse pelo serviço específico em:
Comprometendo a Organização
Da conta root/gestão
Quando a conta de gestão cria novas contas na organização, um novo papel é criado na nova conta, por padrão nomeado OrganizationAccountAccessRole
e concedendo a política AdministratorAccess à conta de gestão para acessar a nova conta.
Portanto, para acessar como administrador uma conta filha, você precisa:
Comprometer a conta de gestão e encontrar o ID das contas filhas e os nomes do papel (OrganizationAccountAccessRole por padrão) permitindo que a conta de gestão acesse como admin.
Para encontrar contas filhas, vá para a seção de organizações no console da AWS ou execute
aws organizations list-accounts
Você não pode encontrar o nome dos papéis diretamente, então verifique todas as políticas IAM personalizadas e procure qualquer uma que permita
sts:AssumeRole
sobre as contas filhas previamente descobertas.Comprometer um principal na conta de gestão com permissão
sts:AssumeRole
sobre o papel nas contas filhas (mesmo que a conta permita que qualquer um da conta de gestão se impersonifique, como é uma conta externa, permissões específicas dests:AssumeRole
são necessárias).
Ferramentas Automatizadas
Recon
aws-recon: Uma ferramenta de coleta de inventário focada em segurança da AWS, multithreaded, escrita em Ruby.
cloudlist: Cloudlist é uma ferramenta multi-cloud para obter Ativos (Nomes de Host, Endereços IP) de Provedores de Nuvem.
cloudmapper: CloudMapper ajuda você a analisar seus ambientes da Amazon Web Services (AWS). Agora contém muito mais funcionalidades, incluindo auditoria para problemas de segurança.
cartography: Cartography é uma ferramenta Python que consolida ativos de infraestrutura e os relacionamentos entre eles em uma visualização gráfica intuitiva alimentada por um banco de dados Neo4j.
starbase: Starbase coleta ativos e relacionamentos de serviços e sistemas, incluindo infraestrutura de nuvem, aplicativos SaaS, controles de segurança e mais, em uma visualização gráfica intuitiva suportada pelo banco de dados Neo4j.
aws-inventory: (Usa python2) Esta é uma ferramenta que tenta descobrir todos os recursos da AWS criados em uma conta.
aws_public_ips: É uma ferramenta para buscar todos os endereços IP públicos (tanto IPv4 quanto IPv6) associados a uma conta da AWS.
Privesc & Exploiting
SkyArk: Descubra os usuários mais privilegiados no ambiente AWS escaneado, incluindo os AWS Shadow Admins. Ele usa powershell. Você pode encontrar a definição de políticas privilegiadas na função
Check-PrivilegedPolicy
em https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1.pacu: Pacu é um framework de exploração da AWS de código aberto, projetado para testes de segurança ofensiva contra ambientes de nuvem. Ele pode enumerar, encontrar configurações incorretas e explorá-las. Você pode encontrar a definição de permissões privilegiadas em https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 dentro do dicionário
user_escalation_methods
.Observe que o pacu verifica apenas seus próprios caminhos de privesc (não em toda a conta).
PMapper: O Principal Mapper (PMapper) é um script e biblioteca para identificar riscos na configuração do AWS Identity and Access Management (IAM) para uma conta AWS ou uma organização AWS. Ele modela os diferentes Usuários e Funções IAM em uma conta como um grafo direcionado, o que permite verificações para escalonamento de privilégios e para caminhos alternativos que um atacante poderia seguir para obter acesso a um recurso ou ação na AWS. Você pode verificar as permissões usadas para encontrar caminhos de privesc nos arquivos que terminam em
_edges.py
em https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing
cloudsplaining: Cloudsplaining é uma ferramenta de Avaliação de Segurança do AWS IAM que identifica violações do princípio do menor privilégio e gera um relatório HTML priorizado por risco. Ele mostrará clientes super privilegiados potenciais, políticas inline e do aws e quais principais têm acesso a elas. (Ele não verifica apenas privesc, mas também outros tipos de permissões interessantes, recomendado para uso).
cloudjack: CloudJack avalia contas AWS em busca de vulnerabilidades de sequestro de subdomínio como resultado de configurações desacopladas do Route53 e CloudFront.
ccat: Listar repositórios ECR -> Puxar repositório ECR -> Inserir backdoor -> Enviar imagem com backdoor
Dufflebag: Dufflebag é uma ferramenta que busca através de snapshots públicos do Elastic Block Storage (EBS) por segredos que podem ter sido acidentalmente deixados.
Auditoria
cloudsploit: CloudSploit da Aqua é um projeto de código aberto projetado para permitir a detecção de riscos de segurança em contas de infraestrutura de nuvem, incluindo: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) e GitHub (não procura por ShadowAdmins).
Prowler: Prowler é uma ferramenta de segurança de código aberto para realizar avaliações de melhores práticas de segurança da AWS, auditorias, resposta a incidentes, monitoramento contínuo, endurecimento e prontidão forense.
CloudFox: O CloudFox ajuda você a obter consciência situacional em ambientes de nuvem desconhecidos. É uma ferramenta de linha de comando de código aberto criada para ajudar testadores de penetração e outros profissionais de segurança ofensiva a encontrar caminhos de ataque exploráveis na infraestrutura de nuvem.
ScoutSuite: Scout Suite é uma ferramenta de auditoria de segurança multi-nuvem de código aberto, que permite a avaliação da postura de segurança de ambientes de nuvem.
cs-suite: Cloud Security Suite (usa python2.7 e parece não estar mantido)
Zeus: Zeus é uma ferramenta poderosa para as melhores práticas de hardening do AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (parece não estar mantido). Ele verifica apenas as credenciais configuradas por padrão dentro do sistema.
Auditoria Contínua
cloud-custodian: Cloud Custodian é um mecanismo de regras para gerenciar contas e recursos de nuvem pública. Ele permite que os usuários definam políticas para habilitar uma infraestrutura de nuvem bem gerenciada, que seja segura e otimizada em custos. Ele consolida muitos dos scripts ad hoc que as organizações possuem em uma ferramenta leve e flexível, com métricas e relatórios unificados.
pacbot: Policy as Code Bot (PacBot) é uma plataforma para monitoramento contínuo de conformidade, relatórios de conformidade e automação de segurança para a nuvem. No PacBot, políticas de segurança e conformidade são implementadas como código. Todos os recursos descobertos pelo PacBot são avaliados em relação a essas políticas para medir a conformidade com as políticas. A estrutura auto-fix do PacBot fornece a capacidade de responder automaticamente a violações de políticas, tomando ações predefinidas.
streamalert: StreamAlert é uma estrutura de análise de dados em tempo real sem servidor que permite que você ingeste, analise e envie alertas sobre dados de qualquer ambiente, usando fontes de dados e lógica de alerta que você define. Equipes de segurança da informação usam o StreamAlert para escanear terabytes de dados de log todos os dias para detecção e resposta a incidentes.
DEBUG: Capturar solicitações do AWS cli
Referências
Last updated