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

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

VPC & Networking

Μάθετε τι είναι ένα VPC και για τα συστατικά του στα:

AWS - VPC & Networking Basic Information

EC2

Amazon EC2 χρησιμοποιείται για την εκκίνηση εικονικών διακομιστών. Επιτρέπει τη διαμόρφωση της ασφάλειας και της δικτύωσης και τη διαχείριση της αποθήκευσης. Η ευελιξία του Amazon EC2 φαίνεται στην ικανότητά του να κλιμακώνει πόρους τόσο προς τα πάνω όσο και προς τα κάτω, προσαρμοζόμενο αποτελεσματικά σε μεταβολές απαιτήσεων ή σε αιφνίδιες αυξήσεις της ζήτησης. Αυτό το χαρακτηριστικό μειώνει την ανάγκη για ακριβείς προβλέψεις κίνησης.

Ενδιαφέροντα πράγματα για καταγραφή στο EC2:

  • Εικονικές μηχανές
  • SSH Keys
  • User Data
  • Existing EC2s/AMIs/Snapshots
  • Δικτύωση
  • Δίκτυα
  • Υποδίκτυα
  • Δημόσιες IP
  • Ανοικτές θύρες
  • Ενσωματωμένες συνδέσεις με άλλα δίκτυα εκτός AWS

Instance Profiles

Η χρήση roles για την εκχώρηση δικαιωμάτων σε εφαρμογές που τρέχουν σε EC2 instances απαιτεί λίγο επιπλέον ρύθμιση. Μια εφαρμογή που τρέχει σε ένα EC2 instance είναι απομονωμένη από το AWS από το εικονικοποιημένο λειτουργικό σύστημα. Εξαιτίας αυτής της επιπλέον απομάκρυνσης, χρειάζεται ένα επιπλέον βήμα για να ανατεθεί ένα AWS role και τα συνδεδεμένα δικαιώματά του σε ένα EC2 instance και να γίνουν διαθέσιμα στις εφαρμογές του.

Αυτό το επιπλέον βήμα είναι η δημιουργία ενός instance profile που επισυνάπτεται στο instance. Το instance profile περιέχει το role και μπορεί να παρέχει τα προσωρινά διαπιστευτήρια του role σε μια εφαρμογή που τρέχει στο instance. Αυτά τα προσωρινά διαπιστευτήρια μπορούν στη συνέχεια να χρησιμοποιηθούν στις κλήσεις API της εφαρμογής για πρόσβαση σε πόρους και για τον περιορισμό της πρόσβασης μόνο σε αυτούς τους πόρους που προσδιορίζει το role. Σημειώστε ότι μόνο ένα role μπορεί να ανατεθεί σε ένα EC2 instance κάθε φορά, και όλες οι εφαρμογές στο instance μοιράζονται το ίδιο role και δικαιώματα.

Metadata Endpoint

Τα metadata του AWS EC2 είναι πληροφορίες για ένα Amazon Elastic Compute Cloud (EC2) instance που είναι διαθέσιμες στο instance κατά το runtime. Αυτά τα metadata χρησιμοποιούνται για να παρέχουν πληροφορίες σχετικά με το instance, όπως το instance ID, τη availability zone στην οποία τρέχει, το IAM role που σχετίζεται με το instance, και το hostname του instance.

Cloud SSRF - HackTricks

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

Μη αυθεντικοποιημένη Πρόσβαση

AWS - EC2 Unauthenticated Enum

Privesc

Στην παρακάτω σελίδα μπορείτε να δείτε πώς να abuse EC2 permissions to escalate privileges:

AWS - EC2 Privesc

Post-Exploitation

AWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) στιγμιότυπα είναι ουσιαστικά στατικά αντίγραφα ασφαλείας των AWS EBS volumes. Με άλλα λόγια, είναι αντίγραφα των δίσκων που είναι συνημμένοι σε ένα EC2 Instance σε ένα συγκεκριμένο χρονικό σημείο. Τα EBS snapshots μπορούν να αντιγραφούν μεταξύ regions και accounts, ή ακόμα και να κατέβουν και να τρέξουν τοπικά.

Τα snapshots μπορεί να περιέχουν ευαίσθητες πληροφορίες όπως πηγαίο κώδικα ή API keys, επομένως, αν έχετε την ευκαιρία, συνιστάται να τα ελέγξετε.

Difference AMI & EBS

Ένα AMI χρησιμοποιείται για να launch an EC2 instance, ενώ ένα EC2 Snapshot χρησιμοποιείται για να backup and recover data stored on an EBS volume. Ενώ ένα EC2 Snapshot μπορεί να χρησιμοποιηθεί για να δημιουργήσει ένα νέο AMI, δεν είναι το ίδιο με ένα AMI και δεν περιλαμβάνει πληροφορίες σχετικά με το λειτουργικό σύστημα, τον application server ή άλλο λογισμικό που απαιτείται για να τρέξει μια εφαρμογή.

Privesc

Στην παρακάτω σελίδα μπορείτε να δείτε πώς να abuse EBS permissions to escalate privileges:

AWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM) επιτρέπει τη διαχείριση απομακρυσμένων στόλων από EC2 instances για να κάνει τη διαχείρισή τους πολύ πιο εύκολη. Κάθε ένα από αυτά τα instances πρέπει να τρέχει την SSM Agent service καθώς αυτή θα λαμβάνει τις ενέργειες και θα τις εκτελεί από το AWS API.

Ο SSM Agent καθιστά δυνατό για το Systems Manager να ενημερώνει, να διαχειρίζεται και να ρυθμίζει αυτούς τους πόρους. Ο agent processes requests from the Systems Manager service in the AWS Cloud, και στη συνέχεια τις εκτελεί όπως ορίζεται στο αίτημα.

Ο SSM Agent έρχεται preinstalled in some AMIs ή χρειάζεται να manually install them στα instances. Επίσης, το IAM Role που χρησιμοποιείται μέσα στο instance πρέπει να έχει την policy AmazonEC2RoleforSSM συνδεδεμένη για να μπορεί να επικοινωνεί.

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>

Μπορείτε να ελέγξετε σε ένα EC2 instance αν το Systems Manager τρέχει απλώς εκτελώντας:

ps aux | grep amazon-ssm

Privesc

Στην παρακάτω σελίδα μπορείτε να δείτε πώς να abuse SSM permissions to escalate privileges:

AWS - SSM Privesc

Perssistence

Στην παρακάτω σελίδα μπορείτε να δείτε πώς να abuse SSM permissions to achieve persistence:

AWS - SSM Perssitence

ELB

Elastic Load Balancing (ELB) είναι μια υπηρεσία εξισορρόπησης φορτίου για αναπτύξεις στο Amazon Web Services (AWS). Το ELB αυτόματα διανέμει την εισερχόμενη κυκλοφορία εφαρμογών και κλιμακώνει πόρους για να ανταποκριθεί στις απαιτήσεις κίνησης.

# 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
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 είναι ένα σύνολο από καινοτόμες τεχνολογίες που σχηματίζουν την υποκείμενη πλατφόρμα για τις AWS EC2 instances. Εισήχθη από την Amazon για να βελτιώσει την ασφάλεια, την απόδοση και την αξιοπιστία, το Nitro αξιοποιεί προσαρμοσμένα hardware components και έναν lightweight hypervisor. Απομονώνει μεγάλο μέρος της παραδοσιακής λειτουργικότητας virtualization σε αφιερωμένο hardware και software, μειώνοντας την επιφάνεια επίθεσης και βελτιώνοντας την αποδοτικότητα των πόρων. Αποφορτίζοντας λειτουργίες virtualization, το Nitro επιτρέπει στις EC2 instances να παρέχουν near bare-metal performance, καθιστώντας το ιδιαίτερα ωφέλιμο για εφαρμογές με υψηλές απαιτήσεις πόρων. Επιπλέον, το Nitro Security Chip εξασφαλίζει ειδικά την ασφάλεια του hardware και του firmware, ενισχύοντας περαιτέρω την ισχυρή του αρχιτεκτονική.

Get more information and how to enumerate it from:

AWS - Nitro Enum

VPN

Ένα VPN επιτρέπει τη σύνδεση του τοπικού σας δικτύου (site-to-site VPN) ή των φορητών υπολογιστών των εργαζομένων (Client VPN) με ένα AWS VPC, ώστε οι υπηρεσίες να μπορούν να προσπελαστούν χωρίς να χρειάζεται να εκτεθούν στο internet.

Βασικά στοιχεία του AWS VPN

  1. Customer Gateway:
  • Το Customer Gateway είναι ένας πόρος που δημιουργείτε στο AWS για να αναπαριστά την πλευρά σας της σύνδεσης VPN.
  • Στην ουσία είναι μια φυσική συσκευή ή μια εφαρμογή λογισμικού στην πλευρά σας της σύνδεσης Site-to-Site VPN.
  • Παρέχετε πληροφορίες δρομολόγησης και τη δημόσια IP διεύθυνση της συσκευής δικτύου σας (όπως router ή firewall) στο AWS για να δημιουργήσετε ένα Customer Gateway.
  • Λειτουργεί ως σημείο αναφοράς για τη ρύθμιση της σύνδεσης VPN και δεν επιφέρει επιπλέον χρεώσεις.
  1. Virtual Private Gateway:
  • Ένα Virtual Private Gateway (VPG) είναι ο συγκεντρωτής VPN στην πλευρά του Amazon για τη σύνδεση Site-to-Site VPN.
  • Συνδέεται με το VPC σας και χρησιμεύει ως ο προορισμός για τη σύνδεση VPN σας.
  • Το VPG είναι το AWS side endpoint για τη σύνδεση VPN.
  • Διαχειρίζεται την ασφαλή επικοινωνία μεταξύ του VPC σας και του τοπικού σας δικτύου.
  1. Site-to-Site VPN Connection:
  • Μια Site-to-Site VPN σύνδεση συνδέει το τοπικό σας δίκτυο με ένα VPC μέσω ενός ασφαλούς, IPsec VPN τούνελ.
  • Αυτός ο τύπος σύνδεσης απαιτεί ένα Customer Gateway και ένα Virtual Private Gateway.
  • Χρησιμοποιείται για ασφαλή, σταθερή και συνεπή επικοινωνία μεταξύ του κέντρου δεδομένων ή του δικτύου σας και του AWS περιβάλλοντός σας.
  • Συνήθως χρησιμοποιείται για τακτικές, μακροχρόνιες συνδέσεις και χρεώνεται με βάση τον όγκο δεδομένων που μεταφέρονται μέσω της σύνδεσης.
  1. Client VPN Endpoint:
  • Ένα Client VPN endpoint είναι ένας πόρος που δημιουργείτε στο AWS για να ενεργοποιείτε και να διαχειρίζεστε client VPN συνεδρίες.
  • Χρησιμοποιείται για να επιτρέπει σε μεμονωμένες συσκευές (όπως laptops, smartphones, κ.λπ.) να συνδέονται με ασφάλεια σε πόρους AWS ή στο τοπικό σας δίκτυο.
  • Διαφέρει από το Site-to-Site VPN καθώς είναι σχεδιασμένο για μεμονωμένους clients αντί για τη σύνδεση ολόκληρων δικτύων.
  • Με το Client VPN, κάθε συσκευή client χρησιμοποιεί λογισμικό VPN client για να καθιερώσει μια ασφαλή σύνδεση.

Μπορείτε 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

Τοπική Ανίχνευση

Τοπικά Προσωρινά Διαπιστευτήρια

Όταν το AWS VPN Client χρησιμοποιείται για σύνδεση σε VPN, ο χρήστης συνήθως login in AWS για να αποκτήσει πρόσβαση στο VPN. Στη συνέχεια, κάποια AWS credentials are created and stored τοπικά για να εγκαθιδρυθεί η σύνδεση VPN. Αυτά τα διαπιστευτήρια αποθηκεύονται στο $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt και περιέχουν ένα AccessKey, ένα SecretKey και ένα Token.

Τα διαπιστευτήρια ανήκουν στον χρήστη arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials (TODO: να ερευνηθούν περισσότερα σχετικά με τα δικαιώματα αυτών των διαπιστευτηρίων).

opvn config files

Εάν μια VPN connection was stablished θα πρέπει να αναζητήσετε .opvn config files στο σύστημα. Επιπλέον, ένα μέρος όπου μπορείτε να βρείτε τις ρυθμίσεις είναι στο $HOME/.config/AWSVPNClient/OpenVpnConfigs

Post Exploitaiton

AWS - VPN Post Exploitation

Αναφορές

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks