AWS - EC2, EBS, ELB, SSM, VPC & VPN Enumeração

Tip

Aprenda e pratique AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoie o HackTricks

VPC & Networking

Aprenda o que é uma VPC e sobre seus componentes em:

AWS - VPC & Networking Basic Information

EC2

Amazon EC2 é utilizado para iniciar servidores virtuais. Ele permite a configuração de segurança e rede e o gerenciamento de armazenamento. A flexibilidade do Amazon EC2 é evidente em sua capacidade de escalar recursos tanto para cima quanto para baixo, adaptando-se efetivamente a variações nos requisitos ou picos de popularidade. Esse recurso diminui a necessidade de previsões precisas de tráfego.

Coisas interessantes para enumerar em EC2:

  • Máquinas Virtuais
  • SSH Keys
  • User Data
  • Existing EC2s/AMIs/Snapshots
  • Networking
  • Networks
  • Subnetworks
  • Public IPs
  • Open ports
  • Integrated connections with other networks outside AWS

Instance Profiles

Usar roles para conceder permissões a aplicações que rodam em EC2 instances requer um pouco de configuração extra. Uma aplicação rodando em uma EC2 instance é abstraída da AWS pelo sistema operacional virtualizado. Por causa dessa separação extra, você precisa de um passo adicional para atribuir um AWS role e suas permissões associadas a uma EC2 instance e torná-las disponíveis para suas aplicações.

This extra step is the creation of an instance profile attached to the instance. The instance profile contains the role and can provide the role’s temporary credentials to an application that runs on the instance. Those temporary credentials can then be used in the application’s API calls to access resources and to limit access to only those resources that the role specifies. Note that only one role can be assigned to an EC2 instance at a time, and all applications on the instance share the same role and permissions.

Metadata Endpoint

AWS EC2 metadata é informação sobre uma Amazon Elastic Compute Cloud (EC2) instance que está disponível para a instância em tempo de execução. Essa metadata é usada para fornecer informações sobre a instância, como seu instance ID, a availability zone em que está executando, o IAM role associado à instância e o hostname da instância.

Cloud SSRF - HackTricks

Enumeração

# Get EC2 instances
aws ec2 describe-instances
aws ec2 describe-instance-status #Get status from running instances

# Get user data from each ec2 instance
for instanceid in $(aws ec2 describe-instances --profile <profile> --region us-west-2 | grep -Eo '"i-[a-zA-Z0-9]+' | tr -d '"'); do
echo "Instance ID: $instanceid"
aws ec2 describe-instance-attribute --profile <profile> --region us-west-2 --instance-id "$instanceid" --attribute userData | jq ".UserData.Value" | tr -d '"' | base64 -d
echo ""
echo "-------------------"
done

# Instance profiles
aws iam list-instance-profiles
aws iam list-instance-profiles-for-role --role-name <name>

# Get tags
aws ec2 describe-tags

# Get volumes
aws ec2 describe-volume-status
aws ec2 describe-volumes

# Get snapshots
aws ec2 describe-snapshots --owner-ids self

# Scheduled instances
aws ec2 describe-scheduled-instances

# Get custom images
aws ec2 describe-images --owners self

# Get Elastic IPs
aws ec2 describe-addresses

# Get current output
aws ec2 get-console-output --instance-id [id]

# Get a JPG-format screenshot of a running instance
aws ec2 get-console-screenshot --instance [id]

# Get VPN customer gateways
aws ec2 describe-customer-gateways
aws ec2 describe-vpn-gateways
aws ec2 describe-vpn-connections

# List conversion tasks to upload/download VMs
aws ec2 describe-conversion-tasks
aws ec2 describe-import-image-tasks

# Get Bundle Tasks
aws ec2 describe-bundle-tasks

# Get Classic Instances
aws ec2 describe-classic-link-instances

# Get Dedicated Hosts
aws ec2 describe-hosts

# Get SSH Key Pairs
aws ec2 describe-key-pairs

# Get Internet Gateways
aws ec2 describe-internet-gateways

# Get NAT Gateways
aws ec2 describe-nat-gateways

# Get subnetworks
aws ec2 describe-subnets

# Get FW rules
aws ec2 describe-network-acls

# Get security groups
aws ec2 describe-security-groups

# Get interfaces
aws ec2 describe-network-interfaces

# Get routes table
aws ec2 describe-route-tables

# Get VPCs
aws ec2 describe-vpcs
aws ec2 describe-vpc-peering-connections

Acesso Não Autenticado

AWS - EC2 Unauthenticated Enum

Privesc

Na página a seguir você pode verificar como abusar de permissões do EC2 para escalar privilégios:

AWS - EC2 Privesc

Post-Exploitation

AWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) snapshots são basicamente backups estáticos de volumes EBS da AWS. Em outras palavras, são cópias dos discos anexados a uma instância EC2 em um ponto específico no tempo. EBS snapshots podem ser copiados entre regiões e contas, ou mesmo baixados e executados localmente.

Snapshots podem conter informações sensíveis tais como código-fonte ou chaves de API, portanto, se tiver oportunidade, é recomendável verificá-los.

Difference AMI & EBS

Uma AMI é usada para launch an EC2 instance, enquanto um EC2 Snapshot é usado para backup and recover data stored on an EBS volume. Enquanto um EC2 Snapshot pode ser usado para criar uma nova AMI, ele não é a mesma coisa que uma AMI, e não inclui informações sobre o sistema operacional, application server, ou outros softwares necessários para executar uma aplicação.

Privesc

Na página a seguir você pode verificar como abusar de permissões do EBS para escalar privilégios:

AWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM) permite gerenciar remotamente frotas de instâncias EC2 para tornar a sua administração muito mais fácil. Cada uma dessas instâncias precisa estar executando o serviço SSM Agent, pois o serviço será o responsável por receber as ações e executá-las a partir da API da AWS.

SSM Agent possibilita que o Systems Manager atualize, gerencie, e configure esses recursos. O agente processa requisições do serviço Systems Manager na AWS Cloud, e então as executa conforme especificado na requisição.

O SSM Agent comes preinstalled in some AMIs or you need to manually install them on the instances. Além disso, o IAM Role usado dentro da instância precisa ter a policy AmazonEC2RoleforSSM anexada para que possa se comunicar.

Enumeração

aws ssm describe-instance-information
aws ssm describe-parameters
aws ssm describe-sessions --state [Active|History]
aws ssm describe-instance-patches --instance-id <id>
aws ssm describe-instance-patch-states --instance-ids <id>
aws ssm describe-instance-associations-status --instance-id <id>

Você pode verificar em uma instância EC2 se o Systems Manager está em execução apenas executando:

ps aux | grep amazon-ssm

Privesc

Na página a seguir você pode ver como abuse SSM permissions to escalate privileges:

AWS - SSM Privesc

Perssistence

Na página a seguir você pode ver como abuse SSM permissions to achieve persistence:

AWS - SSM Perssitence

ELB

Elastic Load Balancing (ELB) é um serviço de balanceamento de carga para implantações do Amazon Web Services (AWS). O ELB automaticamente distribui o tráfego de aplicação de entrada e escala recursos para atender à demanda de tráfego.

# List internet-facing ELBs
aws elb describe-load-balancers
aws elb describe-load-balancers | jq '.LoadBalancerDescriptions[]| select( .Scheme | contains("internet-facing"))|.DNSName'

# DONT FORGET TO CHECK VERSION 2
aws elbv2 describe-load-balancers
aws elbv2 describe-load-balancers | jq '.LoadBalancers[].DNSName'
aws elbv2 describe-listeners --load-balancer-arn <load_balancer_arn>

Launch Templates & Autoscaling Groups

Enumeração

# Launch templates
aws ec2 describe-launch-templates
aws ec2 describe-launch-templates --launch-template-id <launch_template_id>
## Get details, like user data
aws ec2 describe-launch-template-versions --launch-template-id <launch_template_id>

# Autoscaling
aws autoscaling describe-auto-scaling-groups
aws autoscaling describe-auto-scaling-instances
aws autoscaling describe-launch-configurations
aws autoscaling describe-load-balancer-target-groups
aws autoscaling describe-load-balancers

Nitro

AWS Nitro é um conjunto de tecnologias inovadoras que formam a plataforma subjacente para instâncias AWS EC2. Introduzido pela Amazon para melhorar a segurança, o desempenho e a confiabilidade, Nitro utiliza componentes de hardware personalizados e um hypervisor leve. Ele transfere grande parte da funcionalidade tradicional de virtualização para hardware e software dedicados, minimizando a superfície de ataque e melhorando a eficiência dos recursos. Ao descarregar funções de virtualização, Nitro permite que instâncias EC2 entreguem desempenho quase bare-metal, tornando-o particularmente benéfico para aplicações que exigem muitos recursos. Além disso, o Nitro Security Chip garante especificamente a segurança do hardware e do firmware, consolidando ainda mais sua arquitetura robusta.

Get more information and how to enumerate it from:

AWS - Nitro Enum

VPN

Uma VPN permite conectar sua on-premise network (site-to-site VPN) ou os laptops dos trabalhadores (Client VPN) com uma AWS VPC, de modo que os serviços possam ser acessados sem precisar expô-los à internet.

Basic AWS VPN Components

  1. Customer Gateway:
  • Um Customer Gateway é um recurso que você cria na AWS para representar o seu lado de uma conexão VPN.
  • É essencialmente um dispositivo físico ou uma aplicação de software no seu lado da conexão Site-to-Site VPN.
  • Você fornece informações de roteamento e o endereço IP público do seu dispositivo de rede (como um roteador ou um firewall) para a AWS ao criar um Customer Gateway.
  • Serve como um ponto de referência para configurar a conexão VPN e não acarreta cobranças adicionais.
  1. Virtual Private Gateway:
  • Um Virtual Private Gateway (VPG) é o concentrador VPN no lado da Amazon da conexão Site-to-Site VPN.
  • Ele é anexado ao seu VPC e serve como o alvo para sua conexão VPN.
  • O VPG é o endpoint do lado da AWS para a conexão VPN.
  • Ele lida com a comunicação segura entre seu VPC e sua rede on-premises.
  1. Site-to-Site VPN Connection:
  • Uma Site-to-Site VPN Connection conecta sua rede on-premises a um VPC através de um túnel seguro IPsec VPN.
  • Esse tipo de conexão requer um Customer Gateway e um Virtual Private Gateway.
  • É usada para comunicação segura, estável e consistente entre seu data center ou rede e seu ambiente AWS.
  • Normalmente usada para conexões regulares e de longo prazo e é cobrada com base na quantidade de dados transferidos pela conexão.
  1. Client VPN Endpoint:
  • Um Client VPN endpoint é um recurso que você cria na AWS para habilitar e gerenciar sessões de client VPN.
  • É usado para permitir que dispositivos individuais (como laptops, smartphones, etc.) se conectem com segurança a recursos da AWS ou à sua rede on-premises.
  • Difere do Site-to-Site VPN por ser projetado para clientes individuais em vez de conectar redes inteiras.
  • Com o Client VPN, cada dispositivo cliente usa um software cliente de VPN para estabelecer uma conexão segura.

You can find more information about the benefits and components of AWS VPNs here.

Enumeration

# VPN endpoints
## Check used subnetwork, authentication, SGs, connected...
aws ec2 describe-client-vpn-endpoints

## Get AWS network info related to the vpn endpoint
aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id <id>

## Get AWS subnet & ip range the VPN iconnected to
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id <id>

## Check authorization rules
aws ec2 describe-client-vpn-authorization-rules --client-vpn-endpoint-id <id>

## Get current connections to the VPN endpoint
aws ec2 describe-client-vpn-connections --client-vpn-endpoint-id <id>

# Get VPN gateways and check with which VPC each is connected
aws ec2 describe-vpn-gateways

# Get VPN site-to-site connections
aws ec2 describe-vpn-connections

Local Enumeration

Credenciais Temporárias Locais

When AWS VPN Client is used to connect to a VPN, the user will usually faz login na AWS to get access to the VPN. Then, some AWS credentials are created and stored locally to establish the VPN connection. These credentials are stored in $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt and contains an AccessKey, a SecretKey and a Token.

The credentials belong to the user arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials (TODO: pesquisar mais sobre as permissões dessas credenciais).

Arquivos de configuração .opvn

Se uma conexão VPN foi estabelecida você deve procurar por arquivos de configuração .opvn no sistema. Além disso, um local onde você poderia encontrar as configurações é $HOME/.config/AWSVPNClient/OpenVpnConfigs

Post Exploitaiton

AWS - VPN Post Exploitation

Referências

Tip

Aprenda e pratique AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoie o HackTricks