AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
VPC & Networking
Leer wat ’n VPC is en oor die komponente daarvan in:
AWS - VPC & Networking Basic Information
EC2
Amazon EC2 word gebruik om virtuele bedieners te begin. Dit maak dit moontlik om sekuriteit en netwerking te konfigureer en die bestuur van berging te hanteer. Die buigbaarheid van Amazon EC2 blyk uit sy vermoë om hulpbronne beide op- en af te skaal, wat dit effektief maak om by wisselende vereistes of skielike toename in gewildheid aan te pas. Hierdie funksie verminder die behoefte aan presiese verkeersvoorspellings.
Interessante dinge om in EC2 te enumereer:
- 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
Om roles te gebruik om toestemmings te gee aan toepassings wat op EC2 instances loop, vereis ’n bietjie ekstra konfigurasie. ’n Toepassing wat op ’n EC2 instance loop, word deur die gevirtualiseerde bedryfstelsel van AWS geabstraheer. Vanweë hierdie ekstra skeiding benodig jy ’n addisionele stap om ’n AWS role en die daarmee geassosieerde permissies aan ’n EC2 instance toe te ken en dit aan die toepassings beskikbaar te stel.
Hierdie ekstra stap is die skepping van ’n instance profile wat aan die instance geheg is. Die instance profile bevat die role en kan die role se tydelike credentials aan ’n toepassing wat op die instance loop voorsien. Daardie tydelike credentials kan dan in die toepassing se API-oproepe gebruik word om hulpbronne te benader en om toegang te beperk tot slegs daardie hulpbronne wat deur die role gespesifiseer word. Let daarop dat slegs een role op ’n EC2 instance toegeken kan word op ’n slag, en alle toepassings op die instance deel dieselfde role en permissies.
Metadata Endpoint
AWS EC2 metadata is inligting oor ’n Amazon Elastic Compute Cloud (EC2) instance wat beskikbaar is vir die instance tydens runtime. Hierdie metadata word gebruik om inligting oor die instance te verskaf, soos die instance ID, die availability zone waarin dit loop, die IAM role wat met die instance geassosieer is, en die instance se hostname.
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
Ongeauthentiseerde Toegang
AWS - EC2 Unauthenticated Enum
Privesc
Op die volgende bladsy kan jy sien hoe om EC2-magtigings te misbruik om bevoegdhede te eskaleer:
Post-Exploitation
AWS - EC2, EBS, SSM & VPC Post Exploitation
EBS
Amazon EBS (Elastic Block Store) snapshots is basies statiese backups van AWS EBS-volumes. Met ander woorde, dit is kopies van die skywe wat op ’n spesifieke tydstip aan ’n EC2-instansie aangeheg is. EBS snapshots kan oor streke en rekeninge gekopieer word, of selfs afgelaai en lokaal uitgevoer word.
Snapshots kan gevoelige inligting bevat soos bronkode of APi keys, daarom word dit aanbeveel om dit te ondersoek as jy die geleentheid het.
Verskil tussen AMI & EBS
’n AMI word gebruik om ’n EC2 instance te launch, terwyl ’n EC2 Snapshot gebruik word om data wat op ’n EBS-volume gestoor is te backup en recover. Alhoewel ’n EC2 Snapshot gebruik kan word om ’n nuwe AMI te skep, is dit nie dieselfde as ’n AMI nie, en dit sluit nie inligting in oor die bedryfstelsel, application server, of ander sagteware wat benodig word om ’n toepassing te laat loop nie.
Privesc
Op die volgende bladsy kan jy sien hoe om EBS-magtigings te misbruik om bevoegdhede te eskaleer:
SSM
Amazon Simple Systems Manager (SSM) maak dit moontlik om op afstand ’n vloot van EC2-instansies te bestuur om hul administrasie baie makliker te maak. Elkeen van hierdie instansies moet die SSM Agent service laat loop aangesien dié diens die aksies vanaf die AWS API sal ontvang en uitvoer.
SSM Agent maak dit moontlik vir Systems Manager om hierdie bronne op te dateer, te bestuur, en te konfigureer. Die agent processes requests from the Systems Manager service in the AWS Cloud, en voer dit dan uit soos in die versoek gespesifiseer.
Die SSM Agent kom preinstalled in some AMIs of jy moet dit manually install them op die instansies. Ook moet die IAM Role wat binne die instansie gebruik word die beleid AmazonEC2RoleforSSM aangeheg hê om te kan kommunikeer.
Enumeration
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>
Jy kan in ’n EC2-instansie nagaan of Systems Manager aan die gang is deur net die volgende uit te voer:
ps aux | grep amazon-ssm
Privesc
Op die volgende bladsy kan jy sien hoe om abuse SSM permissions to escalate privileges:
Perssistence
Op die volgende bladsy kan jy sien hoe om abuse SSM permissions to achieve persistence:
ELB
Elastic Load Balancing (ELB) is ’n load-balancing service for Amazon Web Services (AWS) implementeringe. ELB outomaties versprei inkomende toepassingsverkeer en skaal hulpbronne om aan die verkeersvraag te voldoen.
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>
Launch Templates & Autoscaling Groups
Enumerasie
# 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 is ’n stel van innoverende tegnologieë wat die onderliggende platform vir AWS EC2-instanties vorm. Ingelei deur Amazon om sekuriteit, prestasie en betroubaarheid te verbeter, maak Nitro gebruik van pasgemaakte hardware-komponente en ’n liggewig-hypervisor. Dit abstraheer baie van die tradisionele virtualiseringsfunksionaliteit na toegewyde hardeware en sagteware, wat die aanvalsoppervlak minimaliseer en hulpbroneffektiwiteit verbeter. Deur virtualiseringsfunksies uit te laai, laat Nitro EC2-instanties toe om near bare-metal performance te lewer, wat dit besonder voordelig maak vir hulpbron-intensiewe toepassings. Verder verseker die Nitro Security Chip spesifiek die veiligheid van die hardeware en firmware, wat sy robuuste argitektuur verder versterk.
Get more information and how to enumerate it from:
VPN
’n VPN laat toe om jou lokale netwerk (site-to-site VPN) of die werknemers se skootrekenaars (Client VPN) te koppel aan ’n AWS VPC, sodat dienste toeganklik is sonder om dit aan die internet bloot te stel.
Basic AWS VPN Components
- Customer Gateway:
- ’n Customer Gateway is ’n hulpbron wat jy in AWS skep om jou kant van ’n VPN-verbinding voor te stel.
- Dit is in wese ’n fisiese toestel of sagtewaretoepassing aan jou kant van die Site-to-Site VPN-verbinding.
- Jy verskaf routeringsinligting en die publieke IP-adres van jou netwerktoestel (soos ’n router of firewall) aan AWS om ’n Customer Gateway te skep.
- Dit dien as ’n verwysingspunt vir die opstelling van die VPN-verbinding en trek geen ekstra koste in nie.
- Virtual Private Gateway:
- ’n Virtual Private Gateway (VPG) is die VPN-koncentrator aan die Amazon-kant van die Site-to-Site VPN-verbinding.
- Dit is aangeheg aan jou VPC en dien as die teiken vir jou VPN-verbinding.
- VPG is die AWS-kant-eindpunt vir die VPN-verbinding.
- Dit hanteer die veilige kommunikasie tussen jou VPC en jou plaaslike netwerk.
- Site-to-Site VPN Connection:
- ’n Site-to-Site VPN-verbinding koppel jou plaaslike netwerk aan ’n VPC deur ’n veilige, IPsec VPN-tonnel.
- Hierdie tipe verbinding vereis ’n Customer Gateway en ’n Virtual Private Gateway.
- Dit word gebruik vir veilige, stabiele en konsekwente kommunikasie tussen jou datacentrum of netwerk en jou AWS-omgewing.
- Gewoonlik gebruik vir gereelde, langtermynverbindinge en word gefaktureer gebaseer op die hoeveelheid data wat oor die verbinding oorgedra word.
- Client VPN Endpoint:
- ’n Client VPN-endpunt is ’n hulpbron wat jy in AWS skep om client VPN-sessies moontlik te maak en te bestuur.
- Dit word gebruik om individuele toestelle (soos skootrekenaars, slimfone, ens.) toe te laat om veilig aan AWS-bronne of jou plaaslike netwerk te koppel.
- Dit verskil van Site-to-Site VPN omdat dit ontwerp is vir individuele kliënte eerder as om hele netwerke te koppel.
- Met Client VPN gebruik elke kliënttoestel ’n VPN-client-sagteware om ’n veilige verbinding tot stand te bring.
Jy kan hier meer inligting oor die voordele en komponente van AWS VPNs vind.
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
Local Enumeration
Plaaslike Tydelike Kredensiale
Wanneer die AWS VPN Client gebruik word om met ’n VPN te verbind, sal die gebruiker gewoonlik aanmeld by AWS om toegang tot die VPN te kry. Daarna word sommige AWS credentials geskep en plaaslik gestoor om die VPN-verbinding te vestig. Hierdie credentials word gestoor in $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt en bevat ’n AccessKey, ’n SecretKey en ’n Token.
Die credentials behoort aan die gebruiker arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials (TODO: ondersoek meer oor die permissies van hierdie credentials).
opvn konfigurasielêers
As ’n VPN-verbinding tot stand gebring is moet jy soek na .opvn konfigurasielêers op die stelsel. Verder is een plek waar jy die konfigurasies kan vind in $HOME/.config/AWSVPNClient/OpenVpnConfigs
Post Exploitaiton
References
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

