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

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.

Cloud SSRF - HackTricks

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:

AWS - EC2 Privesc

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:

AWS - EBS Privesc

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:

AWS - SSM Privesc

Perssistence

Na poniższej stronie możesz sprawdzić, jak abuse SSM permissions to achieve persistence:

AWS - SSM Perssitence

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:

AWS - Nitro Enum

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

  1. 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.
  1. 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.
  1. 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.
  1. 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

AWS - VPN Post Exploitation

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