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

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

VPC & Networking

Leer wat 'n VPC is en oor sy komponente in:

AWS - VPC & Networking Basic Information

EC2

Amazon EC2 word gebruik om virtuele bedieners te begin. Dit stel die konfigurasie van sekuriteit en netwerk en die bestuur van berging moontlik. Die buigsaamheid van Amazon EC2 is duidelik in sy vermoë om hulpbronne opwaarts en afwaarts te skaal, wat effektief aanpas by verskillende vereiste veranderinge of toename in gewildheid. Hierdie kenmerk verminder die noodsaaklikheid vir presiese verkeersvoorspellings.

Interessante dinge om in EC2 te enumereer:

  • Virtuele Masjiene

  • SSH Sleutels

  • Gebruiker Data

  • Bestaande EC2s/AMIs/Snapshots

  • Netwerk

  • Netwerke

  • Subnetwerke

  • Publieke IPs

  • Oop poorte

  • Geïntegreerde verbindings met ander netwerke buite AWS

Instance Profiles

Om rolle te gebruik om toestemmings aan toepassings wat op EC2 instansies loop te verleen, vereis 'n bietjie ekstra konfigurasie. 'n Toepassing wat op 'n EC2 instansie loop, is geabstraheer van AWS deur die gevirtualiseerde bedryfstelsel. As gevolg van hierdie ekstra skeiding, benodig jy 'n ekstra stap om 'n AWS rol en sy geassosieerde toestemmings aan 'n EC2 instansie toe te ken en dit beskikbaar te maak vir sy toepassings.

Hierdie ekstra stap is die skepping van 'n instansie profiel wat aan die instansie geheg is. Die instansie profiel bevat die rol en kan die rol se tydelike akrediteerbare inligting aan 'n toepassing wat op die instansie loop verskaf. Daardie tydelike akrediteerbare inligting kan dan in die toepassing se API-oproepe gebruik word om toegang tot hulpbronne te verkry en om toegang te beperk tot slegs daardie hulpbronne wat die rol spesifiseer. Let daarop dat slegs een rol aan 'n EC2 instansie op 'n slag toegeken kan word, en alle toepassings op die instansie deel dieselfde rol en toestemmings.

Metadata Endpoint

AWS EC2 metadata is inligting oor 'n Amazon Elastic Compute Cloud (EC2) instansie wat beskikbaar is vir die instansie tydens uitvoering. Hierdie metadata word gebruik om inligting oor die instansie te verskaf, soos sy instansie ID, die beskikbaarheidsone waarin dit loop, die IAM rol geassosieer met die instansie, en die instansie se gasheernaam.

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

Ongeauthentiseerde Toegang

AWS - EC2 Unauthenticated Enum

Privilege Escalation

In die volgende bladsy kan jy kyk hoe om EC2-toestemmings te misbruik om voorregte te verhoog:

AWS - EC2 Privesc

Post-Exploitation

AWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) snapshots is basies statiese rugsteun van AWS EBS volumes. Met ander woorde, dit is kopieë van die skywe wat aan 'n EC2 Instansie op 'n spesifieke tydstip gekoppel is. EBS snapshots kan oor streke en rekeninge gekopieer word, of selfs afgelaai en plaaslik uitgevoer word.

Snapshots kan sensitiewe inligting soos bronkode of API sleutels bevat, daarom, as jy die kans het, word dit aanbeveel om dit na te gaan.

Verskil tussen AMI & EBS

'n AMI word gebruik om 'n EC2 instansie te begin, terwyl 'n EC2 Snapshot gebruik word om data wat op 'n EBS volume gestoor is, te rugsteun en te herstel. Terwyl '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 oor die bedryfstelsel, toepassingsbediener, of ander sagteware wat benodig word om 'n toepassing te laat werk, in nie.

Privilege Escalation

In die volgende bladsy kan jy kyk hoe om EBS-toestemmings te misbruik om voorregte te verhoog:

AWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM) maak dit moontlik om afstandsgewys 'n vloot van EC2 instansies te bestuur om hul administrasies baie makliker te maak. Elke een van hierdie instansies moet die SSM Agent diens uitvoer, aangesien die diens die een sal wees wat die aksies ontvang en dit uitvoer vanaf die AWS API.

SSM Agent maak dit moontlik vir Systems Manager om hierdie hulpbronne op te dateer, te bestuur en te konfigureer. Die agent verwerk versoeke van die Systems Manager diens in die AWS Cloud, en voer dit dan uit soos gespesifiseer in die versoek.

Die SSM Agent kom vooraf geïnstalleer in sommige AMIs of jy moet dit handmatig op die instansies installeer. Ook, die IAM Rol wat binne die instansie gebruik word, moet die beleid AmazonEC2RoleforSSM aangeheg hê om te kan kommunikeer.

Enumerasie

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>

U kan in 'n EC2-instantie nagaan of Systems Manager loop deur eenvoudig die volgende uit te voer:

ps aux | grep amazon-ssm

Privesc

In die volgende bladsy kan jy kyk hoe om SSM-toestemmings te misbruik om voorregte te verhoog:

AWS - SSM Privesc

ELB

Elastic Load Balancing (ELB) is 'n laaibelastingdiens vir Amazon Web Services (AWS) implementasies. ELB versprei outomaties inkomende toepassingsverkeer en skaal hulpbronne om aan verkeersvereistes 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>

Ontwerp Sjablone & Outomatiese Skaalgroepe

Opname

# 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 suite van innovatiewe tegnologieë wat die onderliggende platform vir AWS EC2-instances vorm. Ingevoerd deur Amazon om veiligheid, prestasie en betroubaarheid te verbeter, benut Nitro pasgemaakte hardeware-komponente en 'n liggewig hypervisor. Dit abstraheer baie van die tradisionele virtualisering funksionaliteit na toegewyde hardeware en sagteware, minimaliseer die aanvalsvlak en verbeter hulpbron-doeltreffendheid. Deur virtualisering funksies af te laai, laat Nitro EC2-instances toe om byna bare-metal prestasie te lewer, wat dit veral voordelig maak vir hulpbron-intensiewe toepassings. Boonop verseker die Nitro Security Chip spesifiek die veiligheid van die hardeware en firmware, wat sy robuuste argitektuur verder versterk.

Kry meer inligting en hoe om dit te enumereer vanaf:

AWS - Nitro Enum

VPN

'n VPN laat jou toe om jou on-premise netwerk (site-to-site VPN) of die werkers se skootrekenaars (Client VPN) met 'n AWS VPC te verbind sodat dienste sonder om dit aan die internet bloot te stel, toeganklik kan wees.

Basiese AWS VPN Komponente

  1. Kliënt Gateway:

  • 'n Kliënt Gateway is 'n hulpbron wat jy in AWS skep om jou kant van 'n VPN-verbinding te verteenwoordig.

  • 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 'n firewall) aan AWS om 'n Kliënt Gateway te skep.

  • Dit dien as 'n verwysingspunt vir die opstelling van die VPN-verbinding en veroorsaak geen addisionele koste nie.

  1. Virtuele Privaat Gateway:

  • 'n Virtuele Privaat Gateway (VPG) is die VPN-konsentrasie aan die Amazon-kant van die Site-to-Site VPN-verbinding.

  • Dit is aan jou VPC geheg 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 on-premises netwerk.

  1. Site-to-Site VPN Verbinding:

  • 'n Site-to-Site VPN-verbinding verbind jou on-premises netwerk met 'n VPC deur 'n veilige, IPsec VPN-tunnel.

  • Hierdie tipe verbinding vereis 'n Kliënt Gateway en 'n Virtuele Privaat 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 op grond van die hoeveelheid data wat oor die verbinding oorgedra word.

  1. Kliënt VPN Eindpunt:

  • 'n Kliënt VPN eindpunt is 'n hulpbron wat jy in AWS skep om kliënt VPN-sessies te aktiveer en te bestuur.

  • Dit word gebruik om individuele toestelle (soos skootrekenaars, slimfone, ens.) veilig te laat aansluit op AWS-hulpbronne of jou on-premises netwerk.

  • Dit verskil van Site-to-Site VPN in die sin dat dit ontwerp is vir individuele kliënte eerder as om hele netwerke te verbind.

  • Met Kliënt VPN gebruik elke kliënttoestel 'n VPN-kliënt sagteware om 'n veilige verbinding te vestig.

Jy kan meer inligting oor die voordele en komponente van AWS VPNs hier 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

Plaaslike Enumerasie

Plaaslike Tydelike Kredensiale

Wanneer AWS VPN-kliënt gebruik word om met 'n VPN te verbind, sal die gebruiker gewoonlik in AWS aanmeld om toegang tot die VPN te verkry. Dan word daar AWS-kredensiale geskep en plaaslik gestoor om die VPN-verbinding te vestig. Hierdie kredensiale word gestoor in $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt en bevat 'n AccessKey, 'n SecretKey en 'n Token.

Die kredensiale behoort aan die gebruiker arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials (TODO: navors meer oor die toestemmings van hierdie kredensiale).

opvn konfigurasie lêers

As 'n VPN-verbinding gevestig is, moet jy soek na .opvn konfigurasie lêers in die stelsel. Boonop, een plek waar jy die konfigurasies kan vind, is in $HOME/.config/AWSVPNClient/OpenVpnConfigs

Post Exploitatie

AWS - VPN Post Exploitation

Verwysings

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Last updated