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

Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

VPC & Netwerke

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

AWS - VPC & Networking Basic Information

EC2

Amazon EC2 word gebruik vir die inisieer van virtuele bedieners. Dit maak die konfigurasie van sekuriteit en netwerke moontlik en die bestuur van berging. Die aanpasbaarheid van Amazon EC2 is duidelik in sy vermoë om hulpbronne beide opwaarts en afwaarts te skaal, wat effektief aanpas by wisselende vereistesveranderinge of pieke in gewildheid. Hierdie kenmerk verminder die noodsaaklikheid vir presiese verkeersvoorspellings.

Interessante dinge om in EC2 op te som:

  • Virtuele Masjiene

  • SSH-sleutels

  • Gebruikersdata

  • Bestaande EC2s/AMIs/Snapshots

  • Netwerke

  • Netwerke

  • Subnetwerke

  • Openbare IP-adresse

  • Oop poorte

  • Geïntegreerde verbindings met ander netwerke buite AWS

Instansieprofiel

Die gebruik van rolle om toestemmings te verleen aan aansoeke wat op EC2-instansies loop, vereis 'n bietjie ekstra konfigurasie. 'n Aansoek wat op 'n EC2-instansie loop, word geabstraheer van AWS deur die gevirtualiseerde bedryfstelsel. As gevolg van hierdie ekstra skeiding, benodig jy 'n addisionele stap om 'n AWS-rol toe te ken en sy geassosieerde toestemmings aan 'n EC2-instansie toe te ken en dit beskikbaar te stel vir sy aansoeke.

Hierdie ekstra stap is die skepping van 'n instansieprofiel wat aan die instansie geheg is. Die instansieprofiel bevat die rol en kan die rol se tydelike geloofsbriewe aan 'n aansoek wat op die instansie loop, voorsien. Hierdie tydelike geloofsbriewe kan dan in die aansoek se API-oproepe gebruik word om hulpbronne te bereik en toegang te beperk tot slegs daardie hulpbronne wat die rol spesifiseer. Let daarop dat slegs een rol aan 'n EC2-instansie toegeken kan word op 'n slag, en alle aansoeke op die instansie deel dieselfde rol en toestemmings.

Metadata-eindpunt

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 voorsien, soos sy instansie-ID, die beskikbaarheidsone waarin dit loop, die IAM-rol wat met die instansie geassosieer is, en die instansie se gasheernaam.

Enumerasie

# 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

Ongeverifieerde Toegang

AWS - EC2 Unauthenticated Enum

Privesc

Op die volgende bladsy kan jy sien hoe om EC2-toestemmings te misbruik om voorregte te eskaleer:

AWS - EC2 Privesc

Post-Exploitation

AWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) snapshots is basies statiese agteruitskopieë van AWS EBS-volume. Met ander woorde, dit is kopieë van die skywe wat aan 'n EC2-instansie gekoppel is op 'n spesifieke tydstip. 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 te kontroleer.

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. 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 oor die bedryfstelsel, aansoekbediener, of ander sagteware wat nodig is om 'n aansoek uit te voer, in nie.

Privesc

Op die volgende bladsy kan jy sien hoe om EBS-toestemmings te misbruik om voorregte te eskaleer:

AWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM) maak dit moontlik om vlot van EC2-instansies op afstand te bestuur om hul administrasie baie makliker te maak. Elkeen van hierdie instansies moet die SSM Agent-diens hardloop aangesien die diens die een is wat die aksies ontvang en dit van die AWS API uitvoer.

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

Die SSM Agent kom voorgeïnstalleer in sommige AMIs of jy moet hulle handmatig installeer op die instansies. Ook moet die IAM Rol wat binne die instansie gebruik word, die beleid AmazonEC2RoleforSSM geheg 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>

Jy kan in 'n EC2-instantie nagaan of Systems Manager aan die hardloop is deur net die volgende uit te voer:

ps aux | grep amazon-ssm

Privesc

Op die volgende bladsy kan jy nagaan hoe om SSM-toestemmings te misbruik om voorregte te eskaleer:

AWS - SSM Privesc

ELB

Elastic Load Balancing (ELB) is 'n balanseringsdiens vir Amazon Web Services (AWS) implementasies. ELB verdeel outomaties inkomende aansoekverkeer en skaal bronne om aan verkeersvereistes te voldoen.

Enumerasie

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

Begin- en eindigingsjablone & Outomatiese skaal-groepe

Opsomming

# 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 innoverende tegnologieë wat die onderliggende platform vir AWS EC2-instanies vorm. Deur Amazon bekendgestel om sekuriteit, prestasie, en betroubaarheid te verbeter, maak Nitro gebruik van aangepaste hardewarekomponente en 'n ligte hipervisor. Dit abstraheer groot dele van die tradisionele virtualiseringsfunksionaliteit na toegewyde hardeware en sagteware, verminder die aanvalsoppervlak en verbeter hulpbron doeltreffendheid. Deur virtualiseringsfunksies af te laai, maak Nitro dit moontlik vir EC2-instanies om naby bare-metal prestasie te lewer, wat dit veral voordelig maak vir hulpbron-intensiewe toepassings. Daarbenewens verseker die Nitro Security Chip spesifiek die sekuriteit van die hardeware en firmware, wat sy robuuste argitektuur verder versterk.

Kry meer inligting en hoe om dit op te som van:

AWS - Nitro Enum

VPN

'n VPN maak dit moontlik om jou on-premise netwerk (site-to-site VPN) of die werkers se draagbare rekenaars (Client VPN) met 'n AWS VPC te koppel sodat dienste toeganklik is sonder om hulle aan die internet bloot te stel.

Basiese AWS VPN Komponente

  1. Kliëntpoort:

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

  • Dit is essensieel 'n fisiese toestel of sagtewaretoepassing aan jou kant van die Site-to-Site VPN-verbinding.

  • Jy voorsien roetine-inligting en die openbare IP-adres van jou netwerktoestel (soos 'n router of 'n firewall) aan AWS om 'n Kliëntpoort te skep.

  • Dit dien as 'n verwysingspunt vir die opstel van die VPN-verbinding en dra nie addisionele kostes nie.

  1. Virtuele Privaatpoort:

  • 'n Virtuele Privaatpoort (VPG) is die VPN-konsentraator 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-premise netwerk.

  1. Site-to-Site VPN-verbinding:

  • 'n Site-to-Site VPN-verbinding koppel jou on-premise netwerk aan 'n VPC deur 'n veilige, IPsec VPN-tunnel.

  • Hierdie tipe verbinding vereis 'n Kliëntpoort en 'n Virtuele Privaatpoort.

  • Dit word gebruik vir veilige, stabiele, en konstante kommunikasie tussen jou data-sentrum of netwerk en jou AWS-omgewing.

  • Tipies 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 moontlik te maak en te bestuur.

  • Dit word gebruik om individuele toestelle (soos draagbare rekenaars, slimfone, ens.) toe te laat om veilig te koppel aan AWS-hulpbronne of jou on-premise netwerk.

  • Dit verskil van Site-to-Site VPN daarin dit ontwerp is vir individuele kliënte eerder as om hele netwerke te koppel.

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

Jy kan meer inligting oor die voordele en komponente van AWS VPN's hier vind.

Opname

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

Plaaslike Tydelike Gelde

Wanneer die AWS VPN-klient gebruik word om met 'n VPN te verbind, sal die gebruiker gewoonlik inlog in AWS om toegang tot die VPN te kry. Dan word sommige AWS-gelde geskep en plaaslik gestoor om die VPN-verbinding tot stand te bring. Hierdie gelde word gestoor in $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt en bevat 'n Toegangsleutel, 'n Geheime Sleutel en 'n Token.

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

opvn konfigurasie lêers

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

Na-uitbuiting

AWS - VPN Post Exploitation

Verwysings

Leer AWS hak van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated