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

Wsparcie HackTricks

VPC & Networking

Dowiedz się, czym jest VPC i jakie ma komponenty w:

EC2

Amazon EC2 jest wykorzystywane do uruchamiania serwerów wirtualnych. Umożliwia konfigurację bezpieczeństwa i sieci oraz zarządzanie przechowywaniem. 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 wzrostów popularności. Ta funkcja zmniejsza konieczność precyzyjnego przewidywania ruchu.

Interesujące rzeczy do enumeracji w EC2:

  • Maszyny Wirtualne

  • Klucze SSH

  • Dane Użytkownika

  • Istniejące EC2/AMI/Zrzuty

  • Sieci

  • Sieci

  • Podsieci

  • Publiczne IP

  • Otwarte porty

  • Zintegrowane połączenia z innymi sieciami poza AWS

Profile Instancji

Używanie ról do przyznawania uprawnień aplikacjom działającym na instancjach EC2 wymaga dodatkowej konfiguracji. Aplikacja działająca na instancji EC2 jest abstrahowana od AWS przez wirtualizowany system operacyjny. Z powodu tego dodatkowego oddzielenia, potrzebny jest dodatkowy krok, aby przypisać rolę AWS i jej powiązane uprawnienia do instancji EC2 i udostępnić je jej aplikacjom.

Ten dodatkowy krok to utworzenie profilu instancji przypisanego do instancji. Profil instancji zawiera rolę i może dostarczyć tymczasowe poświadczenia roli aplikacji działającej 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 pamiętać, ż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.

Punkt końcowy Metadanych

Metadane AWS EC2 to informacje o instancji Amazon Elastic Compute Cloud (EC2), które są dostępne dla instancji w czasie wykonywania. Te metadane są używane do dostarczania informacji o instancji, takich jak jej identyfikator 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 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

Privesc

Na następnej stronie możesz sprawdzić, jak wykorzystać uprawnienia EC2 do eskalacji przywilejów:

Post-eksploatacja

EBS

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

Snapshots 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żywane do uruchamiania instancji EC2, podczas gdy Snapshot EC2 jest używane do tworzenia kopii zapasowych i odzyskiwania danych przechowywanych na wolumenie EBS. Chociaż Snapshot EC2 może być użyty do stworzenia 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 następnej stronie możesz sprawdzić, jak wykorzystać uprawnienia EBS do eskalacji przywilejów:

SSM

Amazon Simple Systems Manager (SSM) umożliwia zdalne zarządzanie flotą instancji EC2, co znacznie ułatwia ich administrację. Każda z tych instancji musi uruchamiać usługę SSM Agent, ponieważ to ta usługa będzie odbierać działania i je wykonywać z API AWS.

SSM Agent umożliwia System Managerowi aktualizację, 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śleniami w żądaniu.

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

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 nadużyć uprawnień SSM, aby eskalować przywileje:

ELB

Elastic Load Balancing (ELB) to usługa równoważenia obciążenia dla Amazon Web Services (AWS). ELB automatycznie rozprowadza przychodzący ruch aplikacji i skaluje 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>

Szablony uruchamiania i grupy autoskalowania

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ą 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 lekkiego hypervisora. Abstrakcyjnie przenosi wiele tradycyjnych funkcji wirtualizacji na dedykowany sprzęt i oprogramowanie, minimalizując powierzchnię ataku i poprawiając efektywność zasobów. Przez odciążenie funkcji wirtualizacji, Nitro pozwala instancjom EC2 na dostarczanie wydajności bliskiej wydajności sprzętowej, co czyni go szczególnie korzystnym dla aplikacji wymagających dużych zasobów. Dodatkowo, Nitro Security Chip zapewnia bezpieczeństwo sprzętu i oprogramowania, co dodatkowo wzmacnia jego solidną architekturę.

Uzyskaj więcej informacji i jak to enumerować z:

VPN

VPN pozwala na połączenie twojej sieci lokalnej (VPN site-to-site) lub laptopów pracowników (Client VPN) z AWS VPC, aby usługi mogły być dostępne bez potrzeby ich eksponowania 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 trasowaniu i publiczny adres IP swojego urządzenia sieciowego (takiego jak router lub zapora) do AWS, aby utworzyć Customer Gateway.

  • Służy jako punkt odniesienia do skonfigurowania 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 stronie AWS dla połączenia VPN.

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

  1. Site-to-Site VPN Connection:

  • Połączenie Site-to-Site VPN łączy twoją lokalną sieć 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 twoim środowiskiem AWS.

  • Zwykle 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:

  • Endpoint Client VPN 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ą lokalną siecią.

  • Różni się od Site-to-Site VPN tym, że jest zaprojektowany 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 korzyściach 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

Gdy klient AWS VPN jest używany do łączenia się z VPN, użytkownik zazwyczaj loguje się do AWS, aby uzyskać dostęp do VPN. Następnie, niektóre poświadczenia AWS są tworzone i przechowywane lokalnie w celu nawiązania połączenia 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ń).

Pliki konfiguracyjne opvn

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

Po eksploatacji

Odniesienia

Wsparcie dla HackTricks

Last updated