AWS - EC2, EBS, ELB, SSM, VPC & VPN Aufzählung
Tip
Lerne & übe AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Unterstütze HackTricks
- Sieh dir die Abonnementpläne an!
- Tritt der 💬 Discord group oder der telegram group bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs an die HackTricks und HackTricks Cloud GitHub-Repos einreichst.
VPC & Netzwerk
Erfahre, was eine VPC ist und welche Komponenten sie beinhaltet in:
AWS - VPC & Networking Basic Information
EC2
Amazon EC2 wird verwendet, um virtuelle Server zu starten. Es ermöglicht die Konfiguration von Sicherheit und Netzwerk sowie die Verwaltung von Speicher. Die Flexibilität von Amazon EC2 zeigt sich in der Fähigkeit, Ressourcen sowohl hoch- als auch herunterzuskalieren und sich so effektiv an wechselnde Anforderungen oder plötzliche Beliebtheitssteigerungen anzupassen. Diese Funktion verringert die Notwendigkeit, den Traffic genau vorherzusagen.
Interessante Dinge, die man in EC2 auflisten sollte:
- Virtuelle Maschinen
- SSH-Schlüssel
- User Data
- Bestehende EC2s/AMIs/Snapshots
- Netzwerk
- Netzwerke
- Subnetze
- Öffentliche IPs
- Offene Ports
- Integrierte Verbindungen mit anderen Netzwerken außerhalb von AWS
Instance Profiles
Die Nutzung von roles, um Anwendungen, die auf EC2 instances laufen, Berechtigungen zu gewähren, erfordert etwas zusätzliche Konfiguration. Eine auf einer EC2-Instanz laufende Anwendung ist durch das virtualisierte Betriebssystem von AWS abstrahiert. Aufgrund dieser zusätzlichen Trennung ist ein weiterer Schritt nötig, um einer EC2-Instanz eine AWS-Rolle und deren zugehörige Berechtigungen zuzuweisen und diese Anwendungen verfügbar zu machen.
Dieser zusätzliche Schritt ist die creation of an instance profile, das an die Instanz angehängt wird. Das instance profile enthält die role und kann die temporären Anmeldeinformationen der Rolle einer Anwendung bereitstellen, die auf der Instanz läuft. Diese temporären Anmeldeinformationen können dann in den API-Aufrufen der Anwendung verwendet werden, um auf Ressourcen zuzugreifen und den Zugriff nur auf die Ressourcen zu beschränken, die die Rolle festlegt. Beachte, dass nur eine role gleichzeitig einer EC2 instance zugewiesen werden kann, und alle Anwendungen auf der Instanz die gleiche Rolle und die gleichen Berechtigungen teilen.
Metadata Endpoint
AWS EC2 metadata sind Informationen über eine Amazon Elastic Compute Cloud (EC2) Instanz, die der Instanz zur Laufzeit zur Verfügung stehen. Diese Metadaten werden verwendet, um Informationen über die Instanz bereitzustellen, wie zum Beispiel ihre Instance ID, die Availability Zone, in der sie läuft, die mit der Instanz verknüpfte IAM role und den Hostnamen der Instanz.
Aufzählung
# 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
Unauthentifizierter Zugriff
AWS - EC2 Unauthenticated Enum
Privesc
Auf der folgenden Seite kannst du nachlesen, wie man EC2-Berechtigungen missbraucht, um Privilegien zu eskalieren:
Post-Exploitation
AWS - EC2, EBS, SSM & VPC Post Exploitation
EBS
Amazon EBS (Elastic Block Store) snapshots sind im Wesentlichen statische Sicherungen von AWS EBS-Volumes. Mit anderen Worten: Sie sind Kopien der an eine EC2-Instanz angeschlossenen Festplatten zu einem bestimmten Zeitpunkt. EBS-Snapshots können über Regionen und Accounts hinweg kopiert oder sogar heruntergeladen und lokal ausgeführt werden.
Snapshots können sensible Informationen wie source code oder APi keys enthalten; daher ist es empfehlenswert, sie zu überprüfen, wenn du die Möglichkeit dazu hast.
Difference AMI & EBS
Eine AMI wird verwendet, um eine EC2 instance zu starten, während ein EC2 Snapshot dazu dient, Daten, die auf einem EBS-Volume gespeichert sind, zu sichern und wiederherzustellen. Zwar kann ein EC2 Snapshot verwendet werden, um eine neue AMI zu erstellen, er ist jedoch nicht dasselbe wie eine AMI und enthält keine Informationen über das Betriebssystem, den Anwendungsserver oder andere Software, die zum Ausführen einer Anwendung erforderlich sind.
Privesc
Auf der folgenden Seite kannst du nachlesen, wie man EBS permissions missbraucht, um Privilegien zu eskalieren:
SSM
Amazon Simple Systems Manager (SSM) ermöglicht die Remote-Verwaltung von Flotten von EC2-Instanzen, um deren Administration deutlich zu vereinfachen. Jede dieser Instanzen muss den SSM Agent service ausführen, da der Service die Aktionen aus dem AWS API empfängt und ausführt.
SSM Agent macht es dem Systems Manager möglich, diese Ressourcen zu aktualisieren, zu verwalten und zu konfigurieren. Der Agent verarbeitet Anfragen vom Systems Manager service in der AWS Cloud und führt sie dann wie in der Anfrage angegeben aus.
Der SSM Agent ist preinstalled in some AMIs oder du musst manually install them auf den Instanzen installieren. Außerdem muss die innerhalb der Instanz verwendete IAM Role die Policy AmazonEC2RoleforSSM angehängt haben, um kommunizieren zu können.
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>
Sie können auf einer EC2-Instanz prüfen, ob Systems Manager ausgeführt wird, indem Sie einfach Folgendes ausführen:
ps aux | grep amazon-ssm
Privesc
Auf der folgenden Seite können Sie nachlesen, wie abuse SSM permissions to escalate privileges:
Perssistence
Auf der folgenden Seite können Sie nachlesen, wie abuse SSM permissions to achieve persistence:
ELB
Elastic Load Balancing (ELB) ist ein Load-Balancing-Dienst für Amazon Web Services (AWS)-Bereitstellungen. ELB verteilt automatisch eingehenden Anwendungsverkehr und skaliert Ressourcen, um den Anforderungen an den Datenverkehr gerecht zu werden.
# 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
Aufzählung
# 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 ist eine Suite aus innovativen Technologien, die die zugrunde liegende Plattform für AWS EC2-Instanzen bilden. Von Amazon eingeführt, um Sicherheit, Leistung und Zuverlässigkeit zu verbessern, nutzt Nitro kundenspezifische Hardware-Komponenten und einen leichtgewichtigen Hypervisor. Es verlagert viele der traditionellen Virtualisierungsfunktionen in dedizierte Hardware und Software, die Angriffsfläche zu minimieren und die Ressourceneffizienz zu steigern. Durch die Auslagerung von Virtualisierungsfunktionen ermöglicht Nitro EC2-Instanzen nahezu Bare-Metal-Performance, was besonders für ressourcenintensive Anwendungen vorteilhaft ist. Zusätzlich stellt der Nitro Security Chip speziell die Sicherheit der Hardware und Firmware sicher und festigt damit die robuste Architektur weiter.
Get more information and how to enumerate it from:
VPN
Ein VPN ermöglicht es, Ihr on-premise network (site-to-site VPN) oder die Mitarbeiter-Laptops (Client VPN) mit einem AWS VPC zu verbinden, sodass Dienste erreichbar sind, ohne sie dem Internet aussetzen zu müssen.
Basic AWS VPN Components
- Customer Gateway:
- Ein Customer Gateway ist eine Ressource, die Sie in AWS erstellen, um Ihre Seite einer VPN-Verbindung darzustellen.
- Es ist im Wesentlichen ein physisches Gerät oder eine Softwareanwendung auf Ihrer Seite der Site-to-Site VPN-Verbindung.
- Sie geben Routing-Informationen und die öffentliche IP-Adresse Ihres Netzwerkgeräts (z. B. Router oder Firewall) an AWS, um ein Customer Gateway zu erstellen.
- Es dient als Referenzpunkt für die Einrichtung der VPN-Verbindung und verursacht keine zusätzlichen Kosten.
- Virtual Private Gateway:
- Ein Virtual Private Gateway (VPG) ist der VPN-Konzentrator auf der Amazon-Seite der Site-to-Site VPN-Verbindung.
- Es ist an Ihr VPC angehängt und dient als Ziel Ihrer VPN-Verbindung.
- VPG ist der AWS-seitige Endpunkt für die VPN-Verbindung.
- Es übernimmt die sichere Kommunikation zwischen Ihrem VPC und Ihrem lokalen Netzwerk.
- Site-to-Site VPN Connection:
- Eine Site-to-Site VPN-Verbindung verbindet Ihr lokales Netzwerk mit einem VPC durch einen sicheren IPsec-VPN-Tunnel.
- Für diesen Verbindungstyp werden ein Customer Gateway und ein Virtual Private Gateway benötigt.
- Sie wird für sichere, stabile und konsistente Kommunikation zwischen Ihrem Rechenzentrum oder Netzwerk und Ihrer AWS-Umgebung verwendet.
- Typischerweise für regelmäßige, langfristige Verbindungen verwendet und wird basierend auf der über die Verbindung übertragenen Datenmenge abgerechnet.
- Client VPN Endpoint:
- Ein Client VPN-Endpunkt ist eine Ressource, die Sie in AWS erstellen, um Client-VPN-Sitzungen zu ermöglichen und zu verwalten.
- Er wird verwendet, um einzelnen Geräten (wie Laptops, Smartphones usw.) zu ermöglichen, sicher auf AWS-Ressourcen oder Ihr lokales Netzwerk zuzugreifen.
- Er unterscheidet sich von Site-to-Site VPN darin, dass er für einzelne Clients konzipiert ist und nicht für die Verbindung ganzer Netzwerke.
- Beim Client VPN verwendet jedes Client-Gerät eine VPN-Client-Software, um eine sichere Verbindung herzustellen.
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
Local Enumeration
Lokale temporäre credentials
Wenn der AWS VPN Client verwendet wird, um sich mit einem VPN zu verbinden, meldet sich der Benutzer normalerweise bei AWS an, um Zugriff auf das VPN zu erhalten. Anschließend werden einige AWS credentials erstellt und lokal gespeichert, um die VPN-Verbindung herzustellen. Diese credentials werden gespeichert in $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt und enthalten einen AccessKey, einen SecretKey und einen Token.
Die credentials gehören dem Benutzer arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials (TODO: mehr über die Berechtigungen dieser credentials recherchieren).
opvn config files
Wenn eine VPN-Verbindung hergestellt wurde, sollten Sie im System nach .opvn Konfigurationsdateien suchen. Außerdem ist ein Ort, an dem Sie die Konfigurationen finden könnten, $HOME/.config/AWSVPNClient/OpenVpnConfigs
Post Exploitaiton
Referenzen
Tip
Lerne & übe AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Unterstütze HackTricks
- Sieh dir die Abonnementpläne an!
- Tritt der 💬 Discord group oder der telegram group bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs an die HackTricks und HackTricks Cloud GitHub-Repos einreichst.
HackTricks Cloud

