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

Wspieraj HackTricks

VPC & Networking

Dowiedz się, czym jest VPC i jakie są jego komponenty:

AWS - VPC & Networking Basic Information

EC2

Amazon EC2 jest wykorzystywany do uruchamiania wirtualnych serwerów. Umożliwia konfigurację bezpieczeństwa i sieci oraz zarządzanie przechowywaniem danych. Elastyczność Amazon EC2 jest widoczna w jego zdolności do skalowania zasobów zarówno w górę, jak i w dół, skutecznie dostosowując się do zmieniających się wymagań lub wzrostu popularności. Ta funkcja zmniejsza konieczność dokładnego przewidywania ruchu.

Interesujące rzeczy do enumeracji w EC2:

  • Wirtualne Maszyny

  • Klucze SSH

  • Dane użytkownika

  • Istniejące EC2/AMIs/Snapshots

  • Sieci

  • Sieci

  • Podsieci

  • Publiczne IP

  • Otwarte porty

  • Zintegrowane połączenia z innymi sieciami poza AWS

Instance Profiles

Używanie ról do przyznawania uprawnień aplikacjom uruchamianym na instancjach EC2 wymaga dodatkowej konfiguracji. Aplikacja uruchomiona na instancji EC2 jest oddzielona od AWS przez zwirtualizowany system operacyjny. Z powodu tego dodatkowego oddzielenia, potrzebny jest dodatkowy krok, aby przypisać rolę AWS i jej związane uprawnienia do instancji EC2 i udostępnić je aplikacjom.

Ten dodatkowy krok to utworzenie instance profile przypisanego do instancji. Instance profile zawiera rolę i może dostarczyć tymczasowe poświadczenia roli aplikacji uruchomionej na instancji. Te tymczasowe poświadczenia mogą być następnie używane w wywołaniach API aplikacji do uzyskiwania dostępu do zasobów i ograniczania dostępu tylko do tych zasobów, które określa rola. Należy zauważyć, że tylko jedna rola może być przypisana do instancji EC2 w danym czasie, a wszystkie aplikacje na instancji dzielą tę samą rolę i uprawnienia.

Metadata Endpoint

AWS EC2 metadata to informacje o instancji Amazon Elastic Compute Cloud (EC2), które są dostępne dla instancji w czasie jej działania. Te metadata są używane do dostarczania informacji o instancji, takich jak jej ID instancji, strefa dostępności, w której działa, rola IAM przypisana do instancji oraz nazwa hosta instancji.

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

Nieautoryzowany Dostęp

AWS - EC2 Unauthenticated Enum

Privesc

Na poniższej stronie możesz sprawdzić, jak wykorzystać uprawnienia EC2 do eskalacji uprawnień:

AWS - EC2 Privesc

Post-Exploitation

AWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) snapshots to w zasadzie statyczne kopie zapasowe woluminów AWS EBS. Innymi słowy, są to kopie dysków podłączonych do EC2 Instance w określonym momencie. Migawki EBS mogą być kopiowane między regionami i kontami, a nawet pobierane i uruchamiane lokalnie.

Migawki 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 AMI & EBS

AMI jest używany do uruchamiania instancji EC2, podczas gdy migawka EC2 jest używana do tworzenia kopii zapasowych i odzyskiwania danych przechowywanych na woluminie EBS. Chociaż migawka EC2 może być używana do tworzenia nowego AMI, nie jest to to samo co AMI i nie zawiera informacji o systemie operacyjnym, serwerze aplikacji ani innym oprogramowaniu wymaganym do uruchomienia aplikacji.

Privesc

Na poniższej stronie możesz sprawdzić, jak wykorzystać uprawnienia EBS do eskalacji uprawnień:

AWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM) pozwala na zdalne zarządzanie flotami instancji EC2, aby ułatwić ich administrację. Każda z tych instancji musi mieć uruchomioną usługę SSM Agent, ponieważ to ona będzie odbierać i wykonywać działania z API AWS.

SSM Agent umożliwia Systems Manager aktualizowanie, zarządzanie i konfigurowanie tych zasobów. Agent przetwarza żądania z usługi Systems Manager w chmurze AWS, a następnie wykonuje je zgodnie z określoną specyfikacją.

SSM Agent jest wstępnie zainstalowany w niektórych AMI lub trzeba go ręcznie zainstalować na instancjach. Ponadto, rola IAM używana wewnątrz instancji musi mieć przypisaną politykę AmazonEC2RoleforSSM, aby móc się komunikować.

Enumeracja

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ć w instancji EC2, czy Systems Manager działa, po prostu wykonując:

ps aux | grep amazon-ssm

Privesc

Na poniższej stronie możesz sprawdzić, jak wykorzystać uprawnienia SSM do eskalacji uprawnień:

AWS - SSM Privesc

ELB

Elastic Load Balancing (ELB) to usługa równoważenia obciążenia dla wdrożeń Amazon Web Services (AWS). ELB automatycznie rozdziela przychodzący ruch aplikacji i skalowuje zasoby, aby sprostać wymaganiom ruchu.

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

Enumeration

# 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 tworzą podstawową platformę dla instancji AWS EC2. Wprowadzony przez Amazon w celu zwiększenia bezpieczeństwa, wydajności i niezawodności, Nitro wykorzystuje niestandardowe komponenty sprzętowe i lekki hipernadzorcę. Abstrahuje wiele tradycyjnych funkcji wirtualizacji do dedykowanego sprzętu i oprogramowania, minimalizując powierzchnię ataku i poprawiając efektywność zasobów. Dzięki przeniesieniu funkcji wirtualizacji, Nitro pozwala instancjom EC2 dostarczać wydajność zbliżoną do wydajności sprzętu fizycznego, 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 dodatkowo wzmacnia jego solidną architekturę.

Więcej informacji i jak to enumerować znajdziesz tutaj:

AWS - Nitro Enum

VPN

VPN pozwala na połączenie sieci lokalnej (site-to-site VPN) lub laptopów pracowników (Client VPN) z AWS VPC, dzięki czemu usługi mogą być dostępne bez konieczności ich wystawiania 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 fizyczne urządzenie lub aplikacja programowa po twojej stronie połączenia Site-to-Site VPN.

  • Podajesz informacje o routingu i publiczny adres IP swojego urządzenia sieciowego (takiego jak router lub zapora sieciowa) do AWS, aby utworzyć Customer Gateway.

  • Służy jako punkt odniesienia do konfiguracji połączenia VPN i nie generuje dodatkowych opłat.

  1. Virtual Private Gateway:

  • Virtual Private Gateway (VPG) to koncentrator VPN po stronie Amazon w połączeniu Site-to-Site VPN.

  • Jest podłączony do twojego VPC i służy jako cel dla twojego połączenia VPN.

  • VPG to punkt końcowy połączenia VPN po stronie AWS.

  • Obsługuje bezpieczną komunikację między twoim VPC a siecią lokalną.

  1. Site-to-Site VPN Connection:

  • Połączenie Site-to-Site VPN łączy twoją sieć lokalną z VPC przez bezpieczny tunel VPN IPsec.

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

  • Zazwyczaj używany do regularnych, długoterminowych połączeń i jest rozliczany na podstawie ilości danych przesył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 VPN klientów.

  • Jest używany do umożliwienia indywidualnym urządzeniom (takim jak laptopy, smartfony itp.) bezpiecznego łączenia się z zasobami AWS lub twoją siecią lokalną.

  • Różni się od Site-to-Site VPN tym, że jest przeznaczony dla indywidualnych klientów, a nie do łączenia całych sieci.

  • W przypadku Client VPN każde urządzenie klienckie używa oprogramowania klienta VPN do nawiązania bezpiecznego połączenia.

Możesz znaleźć więcej informacji o zaletach i komponentach AWS VPN tutaj.

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

Lokalna Enumeracja

Lokalne Tymczasowe Poświadczenia

Kiedy AWS VPN Client jest używany do połączenia z VPN, użytkownik zazwyczaj loguje się do AWS, aby uzyskać dostęp do VPN. Następnie, AWS poświadczenia są tworzone i przechowywane lokalnie, aby ustanowić połączenie VPN. Te poświadczenia są przechowywane w $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt i zawierają AccessKey, SecretKey oraz Token.

Poświadczenia należą do użytkownika arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials (TODO: zbadać więcej na temat uprawnień tych poświadczeń).

opvn pliki konfiguracyjne

Jeśli połączenie VPN zostało ustanowione, powinieneś szukać plików konfiguracyjnych .opvn w systemie. Ponadto, jednym z miejsc, gdzie można znaleźć konfiguracje, jest $HOME/.config/AWSVPNClient/OpenVpnConfigs.

Post Exploitacja

AWS - VPN Post Exploitation

Referencje

Wspieraj HackTricks

Last updated