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

This commit is contained in:
Translator
2026-02-23 10:46:58 +00:00
parent fdeed610b0
commit ce8dfddba4
@@ -12,30 +12,30 @@ aws-vpc-and-networking-basic-information.md
## EC2
Amazon EC2 è utilizzato per avviare **server virtuali**. Consente la configurazione di **sicurezza** e **rete** e la gestione di **storage**. La flessibilità di Amazon EC2 è evidente nella sua capacità di scalare le risorse sia verso l'alto che verso il basso, adattandosi efficacemente ai cambiamenti di requisiti o ai picchi di popolarità. Questa caratteristica riduce la necessità di previsioni precise sul traffico.
Amazon EC2 viene utilizzato per avviare **server virtuali**. Permette la configurazione della **sicurezza** e del **networking** e la gestione dello **storage**. La flessibilità di Amazon EC2 si manifesta nella capacità di scalare le risorse sia verso l'alto che verso il basso, adattandosi efficacemente ai cambiamenti nei requisiti o a picchi di popolarità. Questa caratteristica riduce la necessità di previsioni precise sul traffico.
Cose interessanti da enumerare in EC2:
Elementi interessanti da enumerare in EC2:
- Macchine Virtuali
- Chiavi SSH
- Dati Utente
- EC2/AMI/Snapshot esistenti
- Virtual Machines
- SSH Keys
- User Data
- Existing EC2s/AMIs/Snapshots
- Networking
- Reti
- Sottoreti
- IP Pubblici
- Porte aperte
- Connessioni integrate con altre reti al di fuori di AWS
- Networks
- Subnetworks
- Public IPs
- Open ports
- Integrated connections with other networks outside AWS
### Instance Profiles
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.
L'uso di **ruoli** per concedere permessi alle applicazioni che girano su **EC2 instances** richiede una 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 passo ulteriore per assegnare un ruolo AWS e i 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.
Questo passo aggiuntivo è 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. L'**instance profile contiene il ruolo e** può fornire le credenziali temporanee del ruolo a un'applicazione che gira sull'istanza. Quelle credenziali temporanee possono poi essere usate 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 gli stessi permessi.
### Metadata Endpoint
I metadati di AWS EC2 sono informazioni su un'istanza di Amazon Elastic Compute Cloud (EC2) disponibili per l'istanza durante l'esecuzione. Questi metadati vengono utilizzati per fornire informazioni sull'istanza, come il suo ID istanza, la zona di disponibilità in cui è in esecuzione, il ruolo IAM associato all'istanza e il nome host dell'istanza.
I metadati di AWS EC2 sono informazioni su un'istanza Amazon Elastic Compute Cloud (EC2) disponibili all'istanza in fase di esecuzione. Questi metadati vengono usati per fornire informazioni sull'istanza, come il suo instance ID, la availability zone in cui è in esecuzione, il ruolo IAM associato all'istanza e l'hostname dell'istanza.
{{#ref}}
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html
@@ -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,7 +138,7 @@ aws ec2 describe-vpc-peering-connections
### Privesc
Nella pagina seguente puoi controllare come **abuse EC2 permissions to escalate privileges**:
Nella pagina seguente puoi vedere come **abuse EC2 permissions to escalate privileges**:
{{#ref}}
../../aws-privilege-escalation/aws-ec2-privesc/README.md
@@ -149,17 +152,17 @@ Nella pagina seguente puoi controllare come **abuse EC2 permissions to escalate
## EBS
Amazon **EBS** (Elastic Block Store) **snapshots** sono fondamentalmente **backup** statici dei volumi AWS EBS. In altre parole, sono **copia** dei **dischi** collegati a un'**istanza EC2** in un momento specifico. Gli snapshot EBS possono essere copiati tra regioni e account, o anche scaricati e eseguiti localmente.
Amazon **EBS** (Elastic Block Store) **snapshots** sono fondamentalmente **backup** statici dei volumi AWS EBS. In altre parole, sono **copie** dei **dischi** collegati a un'istanza **EC2** in un momento specifico. Gli snapshot EBS possono essere copiati tra regioni e account, o persino scaricati ed eseguiti localmente.
Gli snapshot possono contenere **informazioni sensibili** come **codice sorgente o chiavi API**, pertanto, se hai la possibilità, è consigliato controllarli.
Gli snapshot possono contenere **informazioni sensibili** come **codice sorgente o API keys**, quindi, se ne hai la possibilità, è consigliato verificarli.
### Differenza AMI & EBS
Un'**AMI** viene utilizzata per **lanciare un'istanza EC2**, mentre uno **Snapshot** EC2 viene utilizzato per **eseguire il backup e recuperare i dati memorizzati su un volume EBS**. Anche se uno Snapshot EC2 p essere utilizzato per creare una nuova AMI, non è la stessa cosa di un'AMI e non include informazioni sul sistema operativo, server applicativo o altro software necessario per eseguire un'applicazione.
Un'**AMI** viene usata per **lanciare un'istanza EC2**, mentre uno **Snapshot** di EC2 viene usato per **fare il backup e recuperare i dati memorizzati su un volume EBS**. Sebbene uno Snapshot di EC2 possa essere usato per creare una nuova AMI, non è la stessa cosa di un'AMI e non include informazioni sul sistema operativo, sul server applicativo o su altri software necessari per eseguire un'applicazione.
### Privesc
Nella pagina seguente puoi controllare come **abuse EBS permissions to escalate privileges**:
Nella pagina seguente puoi vedere come **abuse EBS permissions to escalate privileges**:
{{#ref}}
../../aws-privilege-escalation/aws-ebs-privesc/README.md
@@ -167,11 +170,11 @@ Nella pagina seguente puoi controllare come **abuse EBS permissions to escalate
## SSM
**Amazon Simple Systems Manager (SSM)** consente di gestire da remoto flotte di istanze EC2 per rendere le loro amministrazioni molto più semplici. Ognuna di queste istanze deve eseguire il **servizio SSM Agent poiché sarà il servizio a ricevere le azioni e ad eseguirle** dall'API AWS.
**Amazon Simple Systems Manager (SSM)** permette di gestire da remoto flotte di istanze **EC2** per rendere l'amministrazione molto più semplice. Ciascuna di queste istanze deve eseguire il servizio **SSM Agent**, poiché sarà il servizio a ricevere le azioni e ad eseguirle dall'**AWS API**.
**SSM Agent** rende possibile per Systems Manager aggiornare, gestire e configurare queste risorse. L'agente **elabora le richieste dal servizio Systems Manager nel Cloud AWS**, e poi le esegue come specificato nella richiesta.
Il **SSM Agent** rende possibile a Systems Manager aggiornare, gestire e configurare queste risorse. L'agente **processa le richieste dal servizio Systems Manager nell'AWS Cloud**, e poi le esegue come specificato nella richiesta.
L'**SSM Agent viene**[ **preinstallato in alcune AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) oppure è necessario [**installarli manualmente**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) sulle istanze. Inoltre, il ruolo IAM utilizzato all'interno dell'istanza deve avere la policy **AmazonEC2RoleforSSM** allegata per poter comunicare.
Il **SSM Agent** viene[ **preinstalled in some AMIs**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) o è necessario [**manually install them**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) sulle istanze. Inoltre, l'IAM Role usata all'interno dell'istanza deve avere allegata la policy **AmazonEC2RoleforSSM** per poter comunicare.
### Enumerazione
```bash
@@ -182,13 +185,13 @@ 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>
```
Puoi controllare in un'istanza EC2 se Systems Manager è in esecuzione semplicemente eseguendo:
Puoi verificare su un'istanza EC2 se Systems Manager è in esecuzione semplicemente eseguendo:
```bash
ps aux | grep amazon-ssm
```
### Privesc
Nella pagina seguente puoi controllare come **abuse SSM permissions to escalate privileges**:
Nella pagina seguente puoi vedere come **abuse SSM permissions to escalate privileges**:
{{#ref}}
../../aws-privilege-escalation/aws-ssm-privesc/README.md
@@ -196,7 +199,7 @@ Nella pagina seguente puoi controllare come **abuse SSM permissions to escalate
### Perssistence
Nella pagina seguente puoi controllare come **abuse SSM permissions to achieve persistence**:
Nella pagina seguente puoi vedere come **abuse SSM permissions to achieve persistence**:
{{#ref}}
../../aws-persistence/aws-ssm-persistence/README.md
@@ -204,9 +207,9 @@ Nella pagina seguente puoi controllare come **abuse SSM permissions to achieve p
## ELB
**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.
**Elastic Load Balancing** (ELB) è un **servizio di bilanciamento del carico per Amazon Web Services** (AWS). ELB distribuisce automaticamente **il traffico applicativo in ingresso** e scala le risorse per soddisfare le richieste di traffico.
### Enumeration
### Enumerazione
```bash
# List internet-facing ELBs
aws elb describe-load-balancers
@@ -217,7 +220,7 @@ aws elbv2 describe-load-balancers
aws elbv2 describe-load-balancers | jq '.LoadBalancers[].DNSName'
aws elbv2 describe-listeners --load-balancer-arn <load_balancer_arn>
```
## Modelli di Lancio e Gruppi di Autoscaling
## Launch Templates & Autoscaling Groups
### Enumerazione
```bash
@@ -236,9 +239,9 @@ aws autoscaling describe-load-balancers
```
## Nitro
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.
AWS Nitro è una suite di **tecnologie innovative** che costituiscono la piattaforma sottostante per le istanze AWS EC2. Introdotto da Amazon per **migliorare sicurezza, prestazioni e affidabilità**, Nitro sfrutta componenti hardware personalizzati e un **hypervisor leggero**. Astrae gran parte delle funzionalità tradizionali di virtualizzazione in hardware e software dedicati, **minimizzando la superficie d'attacco** e migliorando l'efficienza delle risorse. Scaricando le funzioni di virtualizzazione, Nitro permette alle istanze EC2 di offrire **prestazioni quasi bare-metal**, risultando 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:
Per maggiori informazioni e su come enumerarlo, consulta:
{{#ref}}
aws-nitro-enum.md
@@ -246,34 +249,34 @@ aws-nitro-enum.md
## VPN
Una VPN consente di connettere la tua **rete on-premise (site-to-site VPN)** o i **laptop dei lavoratori (Client VPN)** con un **AWS VPC** in modo che i servizi possano essere accessibili senza doverli esporre a Internet.
Una VPN permette di connettere la tua **rete on-premise (site-to-site VPN)** o i **laptop dei lavoratori (Client VPN)** a una **AWS VPC**, così i servizi possono essere accessibili senza doverli esporre a Internet.
#### Componenti di base della VPN AWS
#### Basic AWS VPN Components
1. **Customer Gateway**:
- Un Customer Gateway è una risorsa che crei in AWS per rappresentare il tuo lato di una connessione VPN.
- È essenzialmente un dispositivo fisico o un'applicazione software dal tuo lato della connessione Site-to-Site VPN.
- Fornisci informazioni di routing e l'indirizzo IP pubblico del tuo dispositivo di rete (come un router o un firewall) ad AWS per creare un Customer Gateway.
- Serve come punto di riferimento per impostare la connessione VPN e non comporta costi aggiuntivi.
- Fornisci informazioni di routing e l'indirizzo IP pubblico del tuo dispositivo di rete (ad esempio un router o un firewall) ad AWS per creare un Customer Gateway.
- Serve come punto di riferimento per la configurazione della connessione VPN e non comporta costi aggiuntivi.
2. **Virtual Private Gateway**:
- Un Virtual Private Gateway (VPG) è il concentratore VPN dal lato Amazon della connessione Site-to-Site VPN.
- È collegato al tuo VPC e funge da obiettivo per la tua connessione VPN.
- VPG è il punto finale dal lato AWS per la connessione VPN.
- Gestisce la comunicazione sicura tra il tuo VPC e la tua rete on-premises.
- È collegato alla tua VPC e funge da destinazione per la tua connessione VPN.
- Il VPG è l'endpoint lato AWS per la connessione VPN.
- Gestisce la comunicazione sicura tra la tua VPC e la tua rete on-premises.
3. **Site-to-Site VPN Connection**:
- Una connessione Site-to-Site VPN collega la tua rete on-premises a un VPC attraverso un tunnel VPN IPsec sicuro.
- Una Site-to-Site VPN connection collega la tua rete on-premises a una VPC tramite un tunnel VPN IPsec sicuro.
- Questo tipo di connessione richiede un Customer Gateway e un Virtual Private Gateway.
- 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.
- Viene utilizzata per comunicazioni sicure, stabili e coerenti tra il tuo data center o rete e il tuo ambiente AWS.
- Tipicamente usata per connessioni regolari e a lungo termine ed è fatturata in base alla quantità di dati trasferiti sulla connessione.
4. **Client VPN Endpoint**:
- 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.
- Un Client VPN endpoint è una risorsa che crei in AWS per abilitare e gestire le sessioni VPN dei client.
- Viene utilizzato per permettere a dispositivi individuali (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 perché è progettato per client individuali invece di collegare intere reti.
- Con Client VPN, ogni dispositivo client utilizza un software VPN client per stabilire una connessione sicura.
Puoi [**trovare ulteriori informazioni sui benefici e sui componenti delle VPN AWS qui**](aws-vpc-and-networking-basic-information.md#vpn).
Puoi [**trovare maggiori informazioni sui benefici e sui componenti delle AWS VPN qui**](aws-vpc-and-networking-basic-information.md#vpn).
### Enumeration
### Enumerazione
```bash
# VPN endpoints
## Check used subnetwork, authentication, SGs, connected...
@@ -297,19 +300,19 @@ aws ec2 describe-vpn-gateways
# Get VPN site-to-site connections
aws ec2 describe-vpn-connections
```
### Enumerazione Locale
### Enumerazione locale
**Credenziali Temporanee Locali**
**Credenziali temporanee locali**
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**.
Quando AWS VPN Client viene usato per connettersi a VPN, l'utente di solito **effettua il login in AWS** per ottenere accesso alla VPN. Poi, alcune **AWS credentials 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**, una **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).
Le credenziali appartengono all'utente `arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials` (TODO: approfondire i permessi di queste credenziali).
**File di configurazione opvn**
**File di configurazione `.opvn`**
Se una **connessione VPN è stata stabilita**, dovresti cercare file di configurazione **`.opvn`** nel sistema. Inoltre, un luogo dove potresti trovare le **configurazioni** è in **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**
Se è stata **stabilita una connessione VPN** dovresti cercare file di configurazione **`.opvn`** nel sistema. Inoltre, un posto dove potresti trovare le **configurazioni** è **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`**
#### **Post Sfruttamento**
#### **Post Exploitaiton**
{{#ref}}
../../aws-post-exploitation/aws-vpn-post-exploitation/README.md