Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-ec2-

This commit is contained in:
Translator
2026-02-23 10:38:37 +00:00
parent fecddb1722
commit 46c838a59b
@@ -1,4 +1,4 @@
# AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
# AWS - EC2, EBS, ELB, SSM, VPC & VPN Enumeração
{{#include ../../../../banners/hacktricks-training.md}}
@@ -12,36 +12,36 @@ aws-vpc-and-networking-basic-information.md
## EC2
Amazon EC2 é utilizado para iniciar **servidores virtuais**. Ele permite a configuração de **segurança** e **rede** e a gestão de **armazenamento**. A flexibilidade do Amazon EC2 é evidente em sua capacidade de escalar recursos tanto para cima quanto para baixo, adaptando-se efetivamente a mudanças nas necessidades ou aumentos de popularidade. Esse recurso diminui a necessidade de previsões precisas de tráfego.
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 no EC2:
Coisas interessantes para enumerar em EC2:
- Máquinas Virtuais
- Chaves SSH
- Dados do Usuário
- EC2s/AMIs/Snapshots existentes
- Rede
- Redes
- Subredes
- IPs Públicos
- Portas abertas
- Conexões integradas com outras redes fora da AWS
- 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 **funções** para conceder permissões a aplicativos que rodam em **instâncias EC2** requer um pouco de configuração extra. Um aplicativo rodando em uma instância EC2 é abstraído da AWS pelo sistema operacional virtualizado. Por causa dessa separação extra, você precisa de um passo adicional para atribuir uma função AWS e suas permissões associadas a uma instância EC2 e torná-las disponíveis para seus aplicativos.
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.
Esse passo extra é a **criação de um** [_**instance profile**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) anexado à instância. O **instance profile contém a função e** pode fornecer as credenciais temporárias da função a um aplicativo que roda na instância. Essas credenciais temporárias podem então ser usadas nas chamadas de API do aplicativo para acessar recursos e limitar o acesso apenas aos recursos que a função especifica. Observe que **apenas uma função pode ser atribuída a uma instância EC2** por vez, e todos os aplicativos na instância compartilham a mesma função e permissões.
This extra step is the **creation of an** [_**instance profile**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) 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
Os metadados do AWS EC2 são informações sobre uma instância do Amazon Elastic Compute Cloud (EC2) que estão disponíveis para a instância em tempo de execução. Esses metadados são usados para fornecer informações sobre a instância, como seu ID de instância, a zona de disponibilidade em que está rodando, a função IAM associada à instância e o nome do host da instância.
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.
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
{{#endref}}
### Enumeration
### Enumeração
```bash
# Get EC2 instances
aws ec2 describe-instances
@@ -81,6 +81,9 @@ 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
@@ -135,13 +138,13 @@ aws ec2 describe-vpc-peering-connections
### Privesc
Na página a seguir, você pode verificar como **abusar das permissões do EC2 para escalar privilégios**:
Na página a seguir você pode verificar como **abusar de permissões do EC2 para escalar privilégios**:
{{#ref}}
../../aws-privilege-escalation/aws-ec2-privesc/README.md
{{#endref}}
### Pós-Exploração
### Post-Exploitation
{{#ref}}
../../aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/
@@ -149,17 +152,17 @@ Na página a seguir, você pode verificar como **abusar das permissões do EC2 p
## 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. Os snapshots do EBS podem ser copiados entre regiões e contas, ou até mesmo baixados e executados localmente.
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.
Os snapshots podem conter **informações sensíveis** como **código-fonte ou chaves de API**, portanto, se você tiver a chance, é recomendável verificá-los.
Snapshots podem conter **informações sensíveis** tais como **código-fonte ou chaves de API**, portanto, se tiver oportunidade, é recomendável verificá-los.
### Diferença AMI & EBS
### Difference AMI & EBS
Uma **AMI** é usada para **iniciar uma instância EC2**, enquanto um **Snapshot** do EC2 é usado para **fazer backup e recuperar dados armazenados em um volume EBS**. Embora um Snapshot do EC2 possa ser usado para criar uma nova AMI, não é a mesma coisa que uma AMI, e não inclui informações sobre o sistema operacional, servidor de aplicativos ou outro software necessário para executar um aplicativo.
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 das permissões do EBS para escalar privilégios**:
Na página a seguir você pode verificar como **abusar de permissões do EBS para escalar privilégios**:
{{#ref}}
../../aws-privilege-escalation/aws-ebs-privesc/README.md
@@ -167,11 +170,11 @@ Na página a seguir, você pode verificar como **abusar das permissões do EBS p
## SSM
**Amazon Simple Systems Manager (SSM)** permite gerenciar remotamente grupos de instâncias EC2 para facilitar muito suas administrações. Cada uma dessas instâncias precisa estar executando o **serviço SSM Agent, pois será ele quem receberá as ações e as executará** a partir da API da AWS.
**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.
O **SSM Agent** possibilita que o Systems Manager atualize, gerencie e configure esses recursos. O agente **processa solicitações do serviço Systems Manager na Nuvem AWS**, e então as executa conforme especificado na solicitação.
**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 vem**[ **pré-instalado em algumas AMIs**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) ou você precisa [**instalá-los manualmente**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) nas instâncias. Além disso, a função IAM usada dentro da instância precisa ter a política **AmazonEC2RoleforSSM** anexada para poder se comunicar.
O **SSM Agent comes**[ **preinstalled in some AMIs**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) or you need to [**manually install them**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) 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
```bash
@@ -188,15 +191,15 @@ ps aux | grep amazon-ssm
```
### Privesc
Na página a seguir, você pode verificar como **abusar das permissões do SSM para escalar privilégios**:
Na página a seguir você pode ver como **abuse SSM permissions to escalate privileges**:
{{#ref}}
../../aws-privilege-escalation/aws-ssm-privesc/README.md
{{#endref}}
### Persistência
### Perssistence
Na página a seguir, você pode verificar como **abusar das permissões do SSM para alcançar persistência**:
Na página a seguir você pode ver como **abuse SSM permissions to achieve persistence**:
{{#ref}}
../../aws-persistence/aws-ssm-persistence/README.md
@@ -204,9 +207,7 @@ Na página a seguir, você pode verificar como **abusar das permissões do SSM p
## ELB
**Elastic Load Balancing** (ELB) é um **serviço de balanceamento de carga para implantações da 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.
### Enumeração
**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.
```bash
# List internet-facing ELBs
aws elb describe-load-balancers
@@ -217,7 +218,7 @@ aws elbv2 describe-load-balancers
aws elbv2 describe-load-balancers | jq '.LoadBalancers[].DNSName'
aws elbv2 describe-listeners --load-balancer-arn <load_balancer_arn>
```
## Modelos de Lançamento e Grupos de Autoscaling
## Launch Templates & Autoscaling Groups
### Enumeração
```bash
@@ -236,9 +237,9 @@ 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 **aumentar a segurança, desempenho e confiabilidade**, Nitro aproveita **componentes de hardware personalizados e um hypervisor leve**. Ele abstrai grande parte da funcionalidade de virtualização tradicional 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 as instâncias EC2 ofereçam **desempenho quase bare-metal**, tornando-se particularmente benéfico para aplicações que consomem muitos recursos. Além disso, o Nitro Security Chip garante especificamente a **segurança do hardware e firmware**, solidificando ainda mais sua arquitetura robusta.
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.
Obtenha mais informações e como enumerá-lo em:
Get more information and how to enumerate it from:
{{#ref}}
aws-nitro-enum.md
@@ -246,32 +247,35 @@ aws-nitro-enum.md
## VPN
Uma VPN permite conectar sua **rede local (site-to-site VPN)** ou os **laptops dos trabalhadores (Client VPN)** com uma **AWS VPC** para que os serviços possam ser acessados sem precisar expô-los à internet.
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.
#### Componentes Básicos da AWS VPN
#### Basic AWS VPN Components
1. **Customer Gateway**:
- Um Customer Gateway é um recurso que você cria na AWS para representar seu lado de uma conexão VPN.
- É essencialmente um dispositivo físico ou aplicativo de software do 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 para criar um Customer Gateway.
- Ele serve como um ponto de referência para configurar a conexão VPN e não gera cobranças adicionais.
2. **Virtual Private Gateway**:
- Um Virtual Private Gateway (VPG) é o concentrador VPN do lado da Amazon da conexão Site-to-Site VPN.
- Ele está anexado à sua 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 gerencia a comunicação segura entre sua VPC e sua rede local.
3. **Site-to-Site VPN Connection**:
- Uma conexão Site-to-Site VPN conecta sua rede local a uma VPC através de um túnel VPN IPsec seguro.
- Esse tipo de conexão requer um Customer Gateway e um Virtual Private Gateway.
- É usado para comunicação segura, estável e consistente entre seu data center ou rede e seu ambiente AWS.
- Normalmente usado para conexões regulares e de longo prazo e é cobrado com base na quantidade de dados transferidos pela conexão.
4. **Client VPN Endpoint**:
- Um endpoint Client VPN é um recurso que você cria na AWS para habilitar e gerenciar sessões de VPN de cliente.
- É usado para permitir que dispositivos individuais (como laptops, smartphones, etc.) se conectem de forma segura aos recursos da AWS ou à sua rede local.
- Ele difere da Site-to-Site VPN na medida em que é projetado para clientes individuais, em vez de conectar redes inteiras.
- Com o Client VPN, cada dispositivo cliente usa um software cliente VPN para estabelecer uma conexão segura.
- 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.
Você pode [**encontrar mais informações sobre os benefícios e componentes das AWS VPNs aqui**](aws-vpc-and-networking-basic-information.md#vpn).
2. **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.
3. **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.
4. **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**](aws-vpc-and-networking-basic-information.md#vpn).
### Enumeration
```bash
@@ -297,19 +301,19 @@ aws ec2 describe-vpn-gateways
# Get VPN site-to-site connections
aws ec2 describe-vpn-connections
```
### Enumeração Local
### Local Enumeration
**Credenciais Temporárias Locais**
Quando o AWS VPN Client é usado para se conectar a uma VPN, o usuário geralmente **faz login no AWS** para obter acesso à VPN. Em seguida, algumas **credenciais do AWS são criadas e armazenadas** localmente para estabelecer a conexão VPN. Essas credenciais são **armazenadas em** `$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt` e contêm uma **AccessKey**, uma **SecretKey** e um **Token**.
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**.
As credenciais pertencem ao usuário `arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` (TODO: pesquisar mais sobre as permissões dessas credenciais).
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**
**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 lugar onde você pode encontrar as **configurações** é em **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**
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`**
#### **Pós Exploração**
#### **Post Exploitaiton**
{{#ref}}
../../aws-post-exploitation/aws-vpn-post-exploitation/README.md