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

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

VPC & Networking

Dowiedz się, czym jest VPC i o jego składnikach w:

pageAWS - VPC & Networking Basic Information

EC2

Amazon EC2 jest wykorzystywany do uruchamiania serwerów wirtualnych. Umożliwia konfigurację bezpieczeństwa i sieci oraz zarządzanie przechowywaniem danych. Elastyczność Amazon EC2 objawia się w możliwości skalowania zasobów zarówno w górę, jak i w dół, efektywnie dostosowując się do zmian wymagań lub wzrostu popularności. Ta funkcja zmniejsza konieczność precyzyjnych prognoz ruchu.

Interesujące rzeczy do wyliczenia w EC2:

  • Maszyny wirtualne

  • Klucze SSH

  • Dane użytkownika

  • Istniejące EC2/AMI/Snapshots

  • Sieciowanie

  • Sieci

  • Podsieci

  • Publiczne adresy IP

  • Otwarte porty

  • Zintegrowane połączenia z innymi sieciami poza AWS

Profile instancji

Użycie ról do nadawania uprawnień aplikacjom uruchamianym na instancjach EC2 wymaga nieco dodatkowej konfiguracji. Aplikacja uruchamiana na instancji EC2 jest abstrahowana od AWS przez zvirtualizowany system operacyjny. Ze względu na to dodatkowe oddzielenie, konieczny jest dodatkowy krok polegający na przypisaniu roli AWS i jej powiązanych uprawnień do instancji EC2 oraz udostępnieniu ich aplikacjom.

Ten dodatkowy krok to utworzenie profilu instancji dołączonego do instancji. Profil instancji zawiera rolę i może dostarczyć tymczasowe poświadczenia roli do aplikacji uruchamianej na instancji. Te tymczasowe poświadczenia mogą następnie być używane w wywołaniach interfejsu API aplikacji do dostępu do zasobów i ograniczenia dostępu tylko do tych zasobów, które określa rola. Zauważ, ż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. Metadane te służą 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ą i nazwa hosta instancji.

Wyliczenie

# 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

Nieuwierzytelniony dostęp

pageAWS - EC2 Unauthenticated Enum

Eskalacja uprawnień

Na następnej stronie możesz sprawdzić, jak nadużyć uprawnień EC2 do eskalacji uprawnień:

pageAWS - EC2 Privesc

Post-eksploatacja

pageAWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) snapshots to po prostu statyczne kopie zapasowe woluminów AWS EBS. Innymi słowy, są to kopie dysków podłączonych do instancji EC2 w określonym momencie. Snapshots EBS można kopiować między regionami i kontami, a nawet pobrać i uruchomić lokalnie.

Snapshots mogą zawierać informacje poufne takie jak kod źródłowy lub klucze API, dlatego jeśli masz okazję, zaleca się ich sprawdzenie.

Różnica między AMI a EBS

AMI służy do uruchamiania instancji EC2, podczas gdy Snapshot EC2 służy do tworzenia kopii zapasowych i odzyskiwania danych przechowywanych na woluminie EBS. Chociaż Snapshot EC2 można użyć do utworzenia nowego AMI, nie jest to to samo co AMI i nie zawiera informacji o systemie operacyjnym, serwerze aplikacyjnym ani innych wymaganych oprogramowaniach do uruchomienia aplikacji.

Eskalacja uprawnień

Na następnej stronie możesz sprawdzić, jak nadużyć uprawnień EBS do eskalacji uprawnień:

pageAWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM) pozwala na zdalne zarządzanie grupami instancji EC2, co ułatwia ich administrację. Każda z tych instancji musi uruchamiać usługę SSM Agent, ponieważ to ona otrzymuje działania i wykonuje je z AWS API.

SSM Agent umożliwia Systems 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 żądaniem.

SSM Agent jest preinstalowany w niektórych AMI lub musisz go zainstalować ręcznie na instancjach. Ponadto rola IAM używana wewnątrz instancji musi mieć politykę AmazonEC2RoleforSSM dołączoną, aby móc się komunikować.

Wyliczanie

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 następnej stronie możesz sprawdzić, jak wykorzystać uprawnienia SSM do eskalacji uprawnień:

pageAWS - SSM Privesc

ELB

Elastic Load Balancing (ELB) to usługa balansowania obciążenia dla wdrożeń Amazon Web Services (AWS). ELB automatycznie rozdziela 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 automatycznego skalowania

Wyliczanie

# 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 poprawy bezpieczeństwa, wydajności i niezawodności, Nitro wykorzystuje dedykowane komponenty sprzętowe i lekki hipernadzorca. Abstrahuje wiele tradycyjnych funkcji wirtualizacji do dedykowanego sprzętu i oprogramowania, minimalizując powierzchnię ataku i poprawiając wydajność zasobów. Poprzez przenoszenie funkcji wirtualizacji, Nitro pozwala instancjom EC2 osiągać wydajność zbliżoną do metalu, co jest szczególnie korzystne dla aplikacji wymagających dużych zasobów. Dodatkowo, specjalny Układ Bezpieczeństwa Nitro zapewnia bezpieczeństwo sprzętu i oprogramowania układowego, dodatkowo umacniając jego solidną architekturę.

Uzyskaj więcej informacji na temat sposobów wyliczania z:

pageAWS - Nitro Enum

VPN

VPN pozwala połączyć twoją sieć lokalną (VPN site-to-site) lub laptopy pracowników (VPN klienta) z AWS VPC, dzięki czemu usługi mogą być dostępne bez konieczności ich wystawiania w internecie.

Podstawowe składniki AWS VPN

  1. Bramka klienta:

  • Bramka klienta to zasób, który tworzysz w AWS, aby reprezentować twoją stronę połączenia VPN.

  • Jest to w zasadzie fizyczne urządzenie lub aplikacja oprogramowania po twojej stronie połączenia VPN typu Site-to-Site.

  • Udostępniasz informacje o trasowaniu i publiczny adres IP urządzenia sieciowego (takiego jak router lub zapora ogniowa) AWS, aby utworzyć bramkę klienta.

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

  1. Wirtualna bramka prywatna:

  • Wirtualna bramka prywatna (VPG) to koncentrator VPN po stronie Amazon w połączeniu VPN typu Site-to-Site.

  • Jest ona dołączona do twojego VPC i służy jako cel twojego połączenia VPN.

  • VPG jest punktem końcowym po stronie AWS dla połączenia VPN.

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

  1. Połączenie VPN typu Site-to-Site:

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

  • Ten rodzaj połączenia wymaga bramki klienta i wirtualnej bramki prywatnej.

  • Jest ono używane do bezpiecznej, stabilnej i spójnej komunikacji między twoim centrum danych lub siecią a środowiskiem AWS.

  • Zazwyczaj stosowane do regularnych, długoterminowych połączeń i rozliczane na podstawie ilości przesyłanych danych przez połączenie.

  1. Punkt końcowy VPN klienta:

  • Punkt końcowy VPN klienta to zasób, który tworzysz w AWS, aby umożliwić i zarządzać sesjami klientów VPN.

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

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

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

Możesz znaleźć więcej informacji na temat korzyści i składników VPN AWS tutaj.

Wyliczanie

# 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

Lokalne wyliczenie

Tymczasowe poświadczenia lokalne

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

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

Pliki konfiguracyjne opvn

Jeśli połączenie VPN zostało ustanowione, należy wyszukać pliki konfiguracyjne .opvn w systemie. Ponadto, jednym miejscem, gdzie można znaleźć konfiguracje, jest $HOME/.config/AWSVPNClient/OpenVpnConfigs

Eksploatacja po

pageAWS - VPN Post Exploitation

Odnośniki

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated