AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum

Support HackTricks

VPC & Networking

Learn what a VPC is and about its components in:

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 di traffico precise.

Cose interessanti da enumerare in EC2:

  • Macchine Virtuali

  • Chiavi SSH

  • Dati Utente

  • EC2/AMI/Snapshot esistenti

  • Networking

  • Reti

  • Sottoreti

  • IP Pubblici

  • Porte aperte

  • Connessioni integrate con altre reti al di fuori di 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.

Questo passaggio extra è la creazione di un instance profile 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. Si noti 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.

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.

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 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

Privesc

Nella pagina seguente puoi controllare come abuse EC2 permissions to escalate privileges:

Post-Exploitation

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 EC2 Instance in un momento specifico. Gli snapshot EBS possono essere copiati tra regioni e account, o anche scaricati e eseguiti localmente.

Gli snapshot possono contenere informazioni sensibili come codice sorgente o chiavi API, pertanto, se hai la possibilità, è consigliato controllarli.

Differenza AMI & EBS

Un AMI viene utilizzato per lanciare un'istanza EC2, mentre un Snapshot EC2 viene utilizzato per eseguire il backup e recuperare i dati memorizzati su un volume EBS. Sebbene uno Snapshot EC2 possa essere utilizzato per creare un nuovo 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.

Privesc

Nella pagina seguente puoi controllare come abuse EBS permissions to escalate privileges:

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.

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.

L'SSM Agent viene preinstallato in alcune AMI oppure è necessario installarli manualmente sulle istanze. Inoltre, il ruolo IAM utilizzato all'interno dell'istanza deve avere la policy AmazonEC2RoleforSSM allegata 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 controllare in un'istanza EC2 se Systems Manager è in esecuzione semplicemente eseguendo:

ps aux | grep amazon-ssm

Privesc

Nella pagina seguente puoi controllare come abuse SSM permissions to escalate privileges:

ELB

Elastic Load Balancing (ELB) è un load-balancing service for Amazon Web Services (AWS) deployments. ELB automaticamente distribuisce il traffico delle applicazioni in arrivo e scala le risorse per soddisfare le richieste di traffico.

Enumeration

# 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>

Modelli di Lancio e Gruppi di Autoscaling

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 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.

Get more information and how to enumerate it from:

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.

Componenti di base della VPN AWS

  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.

  1. 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.

  1. 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.

  • 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.

  1. 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 client individuali piuttosto che per connettere intere reti.

  • Con Client VPN, ogni dispositivo client utilizza un software client VPN per stabilire una connessione sicura.

You can find more information about the benefits and components of AWS VPNs here.

Enumeration

# 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 il Client VPN AWS viene utilizzato per connettersi a una VPN, l'utente di solito accede ad AWS per ottenere l'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 una 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).

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

Post Sfruttamento

Riferimenti

Supporta HackTricks

Last updated