AWS - EC2, EBS, ELB, SSM, VPC & VPN Enumeracja
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
VPC & Networking
Dowiedz się, czym jest VPC i jakie ma komponenty w:
AWS - VPC & Networking Basic Information
EC2
Amazon EC2 służy do uruchamiania maszyn wirtualnych. Pozwala na konfigurację bezpieczeństwa i sieci oraz zarządzanie przechowywaniem. Elastyczność Amazon EC2 przejawia się w możliwości skalowania zasobów w górę i w dół, skutecznie dostosowując się do zmieniających się wymagań lub nagłych wzrostów popularności. Ta funkcja zmniejsza konieczność precyzyjnego przewidywania ruchu.
Interesujące rzeczy do wyliczenia w EC2:
- Maszyny wirtualne
- Klucze SSH
- User Data
- Istniejące instancje EC2/AMIs/snapshoty
- Sieciowanie
- Sieci
- Podsieci
- Publiczne adresy IP
- Otwarte porty
- Zintegrowane połączenia z innymi sieciami poza AWS
Instance Profiles
Użycie roles do przyznawania uprawnień aplikacjom działającym na instancjach EC2 wymaga dodatkowej konfiguracji. Aplikacja uruchomiona na instancji EC2 jest odseparowana od AWS przez zvirtualizowany system operacyjny. Z powodu tej dodatkowej separacji potrzebny jest dodatkowy krok, aby przypisać rolę AWS i powiązane z nią uprawnienia do instancji EC2 i udostępnić je aplikacjom działającym na tej instancji.
Tym dodatkowym krokiem jest utworzenie instance profile przypisanego do instancji. Instance profile zawiera rolę i może dostarczyć tymczasowe poświadczenia roli aplikacji działającej na instancji. Te tymczasowe poświadczenia mogą być następnie wykorzystane w wywołaniach API aplikacji do uzyskania dostępu do zasobów oraz do ograniczenia dostępu tylko do tych zasobów, które określa rola. Zwróć uwagę, że do jednej instancji EC2 można przypisać tylko jedną rolę jednocześnie, a wszystkie aplikacje na instancji dzielą tę samą rolę i uprawnienia.
Metadata Endpoint
Punkt końcowy metadanych AWS EC2 to informacje o instancji Amazon Elastic Compute Cloud (EC2), które są dostępne dla instancji w czasie działania. Te metadane służą do dostarczania informacji o instancji, takich jak jej ID instancji, strefa dostępności, w której działa, rola IAM powiązana z instancją oraz nazwa hosta instancji.
Enumeracja
# 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
Dostęp bez uwierzytelnienia
AWS - EC2 Unauthenticated Enum
Privesc
Na następującej stronie możesz sprawdzić, jak abuse EC2 permissions to escalate privileges:
Post-Exploitation
AWS - EC2, EBS, SSM & VPC Post Exploitation
EBS
Amazon EBS (Elastic Block Store) snapshots to zasadniczo statyczne kopie zapasowe wolumenów EBS w AWS. Innymi słowy, są to kopie dysków podłączonych do instancji EC2 w określonym punkcie czasu. Snapshoty EBS można kopiować między regionami i kontami, a nawet pobrać i uruchomić lokalnie.
Snapshoty mogą zawierać wrażliwe informacje, takie jak kod źródłowy lub klucze API, dlatego jeśli masz taką możliwość, zaleca się ich sprawdzenie.
Różnica między AMI a EBS
An AMI is used to launch an EC2 instance, while an EC2 Snapshot is used to backup and recover data stored on an EBS volume. While an EC2 Snapshot can be used to create a new AMI, it is not the same thing as an AMI, and it does not include information about the operating system, application server, or other software required to run an application.
Privesc
Na następującej stronie możesz sprawdzić, jak abuse EBS permissions to escalate privileges:
SSM
Amazon Simple Systems Manager (SSM) pozwala zdalnie zarządzać flotami instancji EC2, upraszczając ich administrację. Każda z tych instancji musi mieć uruchomioną usługę SSM Agent, ponieważ to ta usługa będzie odbierać polecenia i wykonywać je poprzez AWS API.
SSM Agent umożliwia Systems Manager aktualizowanie, zarządzanie i konfigurowanie tych zasobów. Agent processes requests from the Systems Manager service in the AWS Cloud, a następnie wykonuje je zgodnie z treścią żądania.
The SSM Agent comes preinstalled in some AMIs or you need to manually install them on the instances. Ponadto, rola IAM używana wewnątrz instancji musi mieć przypisaną politykę AmazonEC2RoleforSSM, aby mogła się komunikować.
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>
Możesz sprawdzić na instancji EC2, czy Systems Manager działa, wykonując:
ps aux | grep amazon-ssm
Privesc
Na poniższej stronie możesz sprawdzić, jak abuse SSM permissions to escalate privileges:
Perssistence
Na poniższej stronie możesz sprawdzić, jak abuse SSM permissions to achieve persistence:
ELB
Elastic Load Balancing (ELB) jest usługą równoważenia obciążenia dla Amazon Web Services (AWS) wdrożeń. ELB automatycznie rozdziela przychodzący ruch aplikacji i skaluje zasoby, aby sprostać zapotrzebowaniu na ruch.
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
Enumeracja
# 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 to zestaw innowacyjnych technologii, które stanowią platformę bazową dla instancji AWS EC2. Wprowadzone przez Amazon w celu zwiększenia bezpieczeństwa, wydajności i niezawodności, Nitro wykorzystuje niestandardowe komponenty sprzętowe i lekki hypervisor. Zdejmuje wiele tradycyjnych funkcji wirtualizacji na dedykowany sprzęt i oprogramowanie, minimalizując powierzchnię ataku i poprawiając efektywność zasobów. Przenosząc funkcje wirtualizacji, Nitro pozwala instancjom EC2 osiągać wydajność zbliżoną do bare-metal, co jest szczególnie korzystne dla aplikacji wymagających dużych zasobów. Dodatkowo Nitro Security Chip zapewnia bezpieczeństwo sprzętu i oprogramowania układowego, co jeszcze bardziej umacnia jego solidną architekturę.
Get more information and how to enumerate it from:
VPN
VPN pozwala połączyć Twoją sieć on-premise (site-to-site VPN) lub laptopy pracowników (Client VPN) z AWS VPC, dzięki czemu usługi są dostępne bez konieczności wystawiania ich w internecie.
Podstawowe komponenty AWS VPN
- Customer Gateway:
- Customer Gateway to zasób, który tworzysz w AWS, aby reprezentować swoją stronę połączenia VPN.
- Jest to zasadniczo urządzenie fizyczne lub aplikacja programowa po Twojej stronie połączenia Site-to-Site VPN.
- Podajesz informacje routingu oraz publiczny adres IP swojego urządzenia sieciowego (np. routera lub firewalla) do AWS, aby utworzyć Customer Gateway.
- Służy jako punkt odniesienia przy konfigurowaniu połączenia VPN i nie pociąga za sobą dodatkowych opłat.
- Virtual Private Gateway:
- Virtual Private Gateway (VPG) to concentrator VPN po stronie Amazon w połączeniu Site-to-Site VPN.
- Jest on podłączony do Twojego VPC i pełni rolę docelową dla połączenia VPN.
- VPG jest punktem końcowym po stronie AWS dla połączenia VPN.
- Obsługuje bezpieczną komunikację między Twoim VPC a siecią on-premises.
- Site-to-Site VPN Connection:
- Site-to-Site VPN connection łączy Twoją sieć on-premises z VPC przez bezpieczny tunel IPsec VPN.
- Ten typ połączenia wymaga Customer Gateway i Virtual Private Gateway.
- Jest używany do bezpiecznej, stabilnej i spójnej komunikacji między Twoim centrum danych lub siecią a środowiskiem AWS.
- Zwykle używany do regularnych, długoterminowych połączeń i jest rozliczany na podstawie ilości danych przesłanych przez połączenie.
- Client VPN Endpoint:
- Client VPN endpoint to zasób, który tworzysz w AWS, aby umożliwić i zarządzać sesjami client VPN.
- Służy do pozwalania pojedynczym urządzeniom (np. laptopom, smartfonom itp.) na bezpieczne łączenie się z zasobami AWS lub Twoją siecią on-premises.
- Różni się od Site-to-Site VPN tym, że jest przeznaczony dla pojedynczych klientów, a nie do łączenia całych sieci.
- W przypadku Client VPN każde urządzenie-klient używa oprogramowania VPN klienta, aby nawiązać bezpieczne połączenie.
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
Lokalne tymczasowe poświadczenia
When AWS VPN Client is used to connect to a VPN, the user will usually login in AWS to get access to the VPN. Then, some AWS credentials are created and stored locally to establish the VPN connection. These credentials are stored in $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt and contains an AccessKey, a SecretKey and a Token.
Poświadczenia należą do użytkownika arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials (TODO: research more about the permissions of this credentials).
Pliki konfiguracyjne .opvn
If a VPN connection was stablished you should search for .opvn config files in the system. Moreover, one place where you could find the configurations is in $HOME/.config/AWSVPNClient/OpenVpnConfigs
Post Exploitaiton
Referencje
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

