AWS Pentesting
Aprenda e pratique AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
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 para 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 o quê, e como os serviços internos da AWS e serviços externos estão conectados.
Do ponto de vista do Red Team, o primeiro passo para comprometer um ambiente AWS é conseguir obter algumas credenciais. Aqui estão algumas ideias de como fazer isso:
Vazamentos no github (ou similar) - OSINT
Engenharia Social
Reutilização de senha (vazamentos de senha)
Vulnerabilidades em Aplicações Hospedadas na AWS
Server Side Request Forgery com acesso ao endpoint de metadata
Leitura de Arquivo Local
/home/USERNAME/.aws/credentials
C:\Users\USERNAME\.aws\credentials
3rd parties comprometidos
Empregado Interno
Cognito credenciais
Ou comprometendo um serviço não autenticado exposto:
AWS - Unauthenticated Enum & AccessOu se você estiver fazendo uma revisão, você pode simplesmente pedir credenciais com esses papéis:
AWS - Permissions for a PentestDepois de conseguir obter credenciais, você precisa saber a quem essas credenciais pertencem 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, verifique 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):
Note que as empresas podem usar canary tokens para identificar quando tokens estão sendo roubados e usados. É recomendado 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 Organização
AWS - Organizations EnumEnumeração IAM
Se você tiver permissões suficientes, verificar os privilégios de cada entidade dentro da conta AWS ajudará 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 IAM, você pode roubar ou forçar brutalmente para descobri-los. Verifique como fazer a enumeração e 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 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 & 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 a detecção, obter persistência e outros truques de pós-exploração sobre alguns deles:
AWS - ServicesNote 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 etapa 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 é capaz de obter mais permissões. Você deve focar pelo menos nas permissões indicadas em:
AWS - Privilege EscalationServiços Publicamente Expostos
Ao enumerar serviços AWS, você pode ter encontrado alguns deles expondo elementos para a 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 pode encontrar informações sensíveis / vulnerabilidades neles, pois podem lhe fornecer 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 procurar pelo serviço específico em:
Comprometendo a Organização
Da conta root/gerenciamento
Quando a conta de gerenciamento cria novas contas na organização, um novo papel é criado na nova conta, por padrão chamado OrganizationAccountAccessRole
e dando a política AdministratorAccess para a conta de gerenciamento acessar a nova conta.
![](https://cloud.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F3204469162-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F6obym2FYAZsrJwFX9v5O%252Fuploads%252Fgit-blob-65df30a8c2788c2946692c65374c0e2c610bf772%252Fimage%2520%28171%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=5a30ed09&sv=1)
Então, para acessar como administrador uma conta filha, você precisa:
Comprometer a conta de gerenciamento e encontrar o ID das contas filhas e os nomes do papel (OrganizationAccountAccessRole por padrão) permitindo que a conta de gerenciamento acesse como admin.
Para encontrar contas filhas, vá para a seção de organizações no console 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 permitindo
sts:AssumeRole
sobre as contas filhas descobertas anteriormente.Comprometer um principal na conta de gerenciamento com permissão
sts:AssumeRole
sobre o papel nas contas filhas (mesmo que a conta esteja permitindo que qualquer pessoa da conta de gerenciamento se passe por ela, como é uma conta externa, permissões específicas dests:AssumeRole
são necessárias).
Ferramentas Automáticas
Recon
aws-recon: Uma ferramenta de coleta de inventário focada em segurança AWS, multi-threaded, 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 a analisar seus ambientes Amazon Web Services (AWS). Agora contém muito mais funcionalidades, incluindo auditoria para questões de segurança.
cartography: Cartography é uma ferramenta Python que consolida ativos de infraestrutura e as relações 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 cloud, 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 AWS criados em uma conta.
aws_public_ips: É uma ferramenta para buscar todos os endereços IP públicos (tanto IPv4/IPv6) associados a uma conta AWS.
Privesc & Exploiting
SkyArk: Descubra os usuários mais privilegiados no ambiente AWS escaneado, incluindo os AWS Shadow Admins. 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 AWS open-source, projetado para testes de segurança ofensiva contra ambientes de cloud. 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
.Note que pacu verifica apenas seus próprios caminhos de privescs (não em toda a conta).
PMapper: 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 IAM Users e Roles em uma conta como um grafo direcionado, o que permite verificações de escalonamento de privilégios e de 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 nomes de 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 IAM da AWS que identifica violações de privilégio mínimo e gera um relatório HTML priorizado por risco. Ele mostrará clientes potencialmente super privilegiados, políticas inline e aws e quais principais têm acesso a elas. (Ele não apenas verifica privesc, mas também outros tipos de permissões interessantes, recomendado para uso).
cloudjack: CloudJack avalia contas AWS para 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 procura por segredos em snapshots públicos do Elastic Block Storage (EBS) que podem ter sido deixados acidentalmente.
Auditoria
cloudsploit: CloudSploit by 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 Open Source para realizar avaliações de melhores práticas de segurança AWS, auditorias, resposta a incidentes, monitoramento contínuo, endurecimento e prontidão forense.
CloudFox: CloudFox ajuda você a ganhar consciência situacional em ambientes de cloud desconhecidos. É uma ferramenta de linha de comando open source criada para ajudar pentesters e outros profissionais de segurança ofensiva a encontrar caminhos de ataque exploráveis em infraestrutura de cloud.
ScoutSuite: Scout Suite é uma ferramenta de auditoria de segurança multi-cloud de código aberto, que permite a avaliação da postura de segurança de ambientes em nuvem.
cs-suite: Cloud Security Suite (usa python2.7 e parece não ser mantido)
Zeus: Zeus é uma ferramenta poderosa para AWS EC2 / S3 / CloudTrail / CloudWatch / KMS melhores práticas de hardening (parece não ser mantido). Ele verifica apenas credenciais configuradas por padrão dentro do sistema.
Auditoria Constante
cloud-custodian: Cloud Custodian é um motor 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 termos de custo. 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. O framework auto-fix do PacBot fornece a capacidade de responder automaticamente a violações de políticas tomando ações predefinidas.
streamalert: StreamAlert é um framework de análise de dados em tempo real e sem servidor que permite ingestão, análise e alerta sobre dados de qualquer ambiente, usando fontes de dados e lógica de alerta que você define. Equipes de segurança de computadores usam StreamAlert para escanear terabytes de dados de log todos os dias para detecção e resposta a incidentes.
DEBUG: Capturar solicitações AWS cli
Referências
Aprenda e pratique AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated