AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
Tip
Impara & pratica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Impara & pratica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Impara & pratica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Sostieni HackTricks
- Controlla i subscription plans!
- Unisciti al đŹ Discord group o al telegram group o seguici su Twitter đŚ @hacktricks_live.
- Condividi hacking tricks inviando PRs ai HackTricks e HackTricks Cloud github repos.
VPC & Networking
Scopri cosâè una VPC e i suoi componenti in:
AWS - VPC & Networking Basic Information
EC2
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.
Elementi interessanti da enumerare in EC2:
- Virtual Machines
- SSH Keys
- User Data
- Existing EC2s/AMIs/Snapshots
- Networking
- Networks
- Subnetworks
- Public IPs
- Open ports
- Integrated connections with other networks outside AWS
Instance Profiles
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 passo aggiuntivo è la creazione di un instance profile 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 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.
Enumeration
# Get EC2 instances
aws ec2 describe-instances
aws ec2 describe-instance-status #Get status from running instances
# Get user data from each ec2 instance
for instanceid in $(aws ec2 describe-instances --profile <profile> --region us-west-2 | grep -Eo '"i-[a-zA-Z0-9]+' | tr -d '"'); do
echo "Instance ID: $instanceid"
aws ec2 describe-instance-attribute --profile <profile> --region us-west-2 --instance-id "$instanceid" --attribute userData | jq ".UserData.Value" | tr -d '"' | base64 -d
echo ""
echo "-------------------"
done
# Instance profiles
aws iam list-instance-profiles
aws iam list-instance-profiles-for-role --role-name <name>
# Get tags
aws ec2 describe-tags
# Get volumes
aws ec2 describe-volume-status
aws ec2 describe-volumes
# Get snapshots
aws ec2 describe-snapshots --owner-ids self
# Scheduled instances
aws ec2 describe-scheduled-instances
# Get custom images
aws ec2 describe-images --owners self
# Get Elastic IPs
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
aws ec2 describe-vpn-connections
# List conversion tasks to upload/download VMs
aws ec2 describe-conversion-tasks
aws ec2 describe-import-image-tasks
# Get Bundle Tasks
aws ec2 describe-bundle-tasks
# Get Classic Instances
aws ec2 describe-classic-link-instances
# Get Dedicated Hosts
aws ec2 describe-hosts
# Get SSH Key Pairs
aws ec2 describe-key-pairs
# Get Internet Gateways
aws ec2 describe-internet-gateways
# Get NAT Gateways
aws ec2 describe-nat-gateways
# Get subnetworks
aws ec2 describe-subnets
# Get FW rules
aws ec2 describe-network-acls
# Get security groups
aws ec2 describe-security-groups
# Get interfaces
aws ec2 describe-network-interfaces
# Get routes table
aws ec2 describe-route-tables
# Get VPCs
aws ec2 describe-vpcs
aws ec2 describe-vpc-peering-connections
Accesso non autenticato
AWS - EC2 Unauthenticated Enum
Privesc
Nella pagina seguente puoi vedere come abuse EC2 permissions to escalate privileges:
Post-Exploitation
AWS - EC2, EBS, SSM & VPC Post Exploitation
EBS
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 API keys, quindi, se ne hai la possibilità , è consigliato verificarli.
Differenza AMI & EBS
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 vedere come abuse EBS permissions to escalate privileges:
SSM
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.
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.
Il SSM Agent viene preinstalled in some AMIs o è necessario manually install them sulle istanze. Inoltre, lâIAM Role usata allâinterno dellâistanza deve avere allegata la policy AmazonEC2RoleforSSM per poter comunicare.
Enumerazione
aws ssm describe-instance-information
aws ssm describe-parameters
aws ssm describe-sessions --state [Active|History]
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 verificare su unâistanza EC2 se Systems Manager è in esecuzione semplicemente eseguendo:
ps aux | grep amazon-ssm
Privesc
Nella pagina seguente puoi vedere come abuse SSM permissions to escalate privileges:
Perssistence
Nella pagina seguente puoi vedere come abuse SSM permissions to achieve persistence:
ELB
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.
Enumerazione
# List internet-facing ELBs
aws elb describe-load-balancers
aws elb describe-load-balancers | jq '.LoadBalancerDescriptions[]| select( .Scheme | contains("internet-facing"))|.DNSName'
# DONT FORGET TO CHECK VERSION 2
aws elbv2 describe-load-balancers
aws elbv2 describe-load-balancers | jq '.LoadBalancers[].DNSName'
aws elbv2 describe-listeners --load-balancer-arn <load_balancer_arn>
Launch Templates & Autoscaling Groups
Enumerazione
# Launch templates
aws ec2 describe-launch-templates
aws ec2 describe-launch-templates --launch-template-id <launch_template_id>
## Get details, like user data
aws ec2 describe-launch-template-versions --launch-template-id <launch_template_id>
# Autoscaling
aws autoscaling describe-auto-scaling-groups
aws autoscaling describe-auto-scaling-instances
aws autoscaling describe-launch-configurations
aws autoscaling describe-load-balancer-target-groups
aws autoscaling describe-load-balancers
Nitro
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.
Per maggiori informazioni e su come enumerarlo, consulta:
VPN
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.
Basic AWS VPN Components
- 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 (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.
- Virtual Private Gateway:
- Un Virtual Private Gateway (VPG) è il concentratore VPN dal lato Amazon della connessione Site-to-Site VPN.
- Ă 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.
- Site-to-Site VPN Connection:
- 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 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.
- Client VPN Endpoint:
- 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 maggiori informazioni sui benefici e sui componenti delle AWS VPN qui.
Enumerazione
# VPN endpoints
## Check used subnetwork, authentication, SGs, connected...
aws ec2 describe-client-vpn-endpoints
## Get AWS network info related to the vpn endpoint
aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id <id>
## Get AWS subnet & ip range the VPN iconnected to
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id <id>
## Check authorization rules
aws ec2 describe-client-vpn-authorization-rules --client-vpn-endpoint-id <id>
## Get current connections to the VPN endpoint
aws ec2 describe-client-vpn-connections --client-vpn-endpoint-id <id>
# Get VPN gateways and check with which VPC each is connected
aws ec2 describe-vpn-gateways
# Get VPN site-to-site connections
aws ec2 describe-vpn-connections
Enumerazione locale
Credenziali temporanee locali
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: approfondire i permessi di queste credenziali).
File di configurazione .opvn
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 Exploitaiton
Riferimenti
Tip
Impara & pratica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Impara & pratica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Impara & pratica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Sostieni HackTricks
- Controlla i subscription plans!
- Unisciti al đŹ Discord group o al telegram group o seguici su Twitter đŚ @hacktricks_live.
- Condividi hacking tricks inviando PRs ai HackTricks e HackTricks Cloud github repos.
HackTricks Cloud

