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

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

VPC & Networking

Bir VPC’nin ne olduğunu ve bileşenlerini şu belgede öğrenin:

AWS - VPC & Networking Basic Information

EC2

Amazon EC2 sanal sunucular başlatmak için kullanılır. Güvenlik ve ağ yapılandırması yapılmasına ve depolama yönetimine olanak tanır. Amazon EC2’nin esnekliği, kaynakları yukarı ve aşağı ölçeklendirebilme yeteneğinde görülür; bu da değişen gereksinimlere veya popülerlik artışlarına hızla uyum sağlamayı mümkün kılar. Bu özellik, trafik tahminlerini kesin yapma gereksinimini azaltır.

EC2 üzerinde keşfetmek için ilginç öğeler:

  • Sanal Makineler
  • SSH Keys
  • User Data
  • Mevcut EC2s/AMIs/Snapshots
  • Networking
  • Networks
  • Subnetworks
  • Public IPs
  • Açık portlar
  • AWS dışındaki diğer ağlarla entegre bağlantılar

Instance Profiles

Bir rollerin EC2 instance’larında çalışan uygulamalara izin vermek için kullanılması biraz ek yapılandırma gerektirir. EC2 instance’ında çalışan bir uygulama, sanallaştırılmış işletim sistemi tarafından AWS’den soyutlanmıştır. Bu ekstra ayrım nedeniyle, bir AWS rolünü ve ilişkili izinlerini bir EC2 instance’ına atamak ve bunları uygulamalarına erişilebilir kılmak için ek bir adım gerekir.

Bu ek adım, instance’a eklenen [instance profile] oluşturulmasıdır. Bu instance profile, rolü içerir ve rolün geçici kimlik bilgilerini instance üzerinde çalışan bir uygulamaya sağlayabilir. Bu geçici kimlik bilgileri daha sonra uygulamanın API çağrılarında kaynaklara erişmek ve erişimi rolün belirttiği kaynaklarla sınırlamak için kullanılabilir. Not: sadece bir rol bir EC2 instance’a atanabilir aynı anda ve instance üzerindeki tüm uygulamalar aynı rolü ve izinleri paylaşır.

Metadata Endpoint

AWS EC2 metadata, çalışma zamanında instance tarafından erişilebilen bir Amazon Elastic Compute Cloud (EC2) instance’ına ait bilgidir. Bu metadata, instance kimliği, çalıştığı availability zone, instance ile ilişkilendirilmiş IAM rolü ve instance’ın hostname’i gibi bilgileri sağlar.

Cloud SSRF - HackTricks

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

Unauthenticated Access

AWS - EC2 Unauthenticated Enum

Privesc

Aşağıdaki sayfada abuse EC2 permissions to escalate privileges konusunu inceleyebilirsiniz:

AWS - EC2 Privesc

Post-Exploitation

AWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) snapshots temel olarak AWS EBS hacimlerinin statik yedekleridir. Diğer bir deyişle, belirli bir zamandaki bir EC2 Instance’a bağlı disklerin kopyalarıdır. EBS snapshot’ları bölgeler ve hesaplar arasında kopyalanabilir, hatta indirilebilir ve yerel olarak çalıştırılabilir.

Snapshot’lar kaynak kodu veya APi keys gibi hassas bilgiler içerebilir; bu nedenle fırsatınız varsa kontrol etmeniz önerilir.

Difference AMI & EBS

Bir AMI, bir EC2 instance’ı başlatmak için kullanılırken, bir EC2 Snapshot bir EBS volume’da depolanan verileri yedeklemek ve kurtarmak için kullanılır. Bir EC2 Snapshot yeni bir AMI oluşturmak için kullanılabilir, ancak AMI ile aynı şey değildir ve bir uygulamayı çalıştırmak için gereken işletim sistemi, uygulama sunucusu veya diğer yazılımlara dair bilgileri içermez.

Privesc

Aşağıdaki sayfada abuse EBS permissions to escalate privileges konusunu inceleyebilirsiniz:

AWS - EBS Privesc

SSM

Amazon Simple Systems Manager (SSM), EC2 instance’ların bir filonun uzaktan yönetilmesini sağlayarak yönetimlerini kolaylaştırır. Bu instance’ların her birinde SSM Agent service as the service will be the one getting the actions and performing them çalışıyor olmalıdır çünkü servis AWS API’den gelen işlemleri alıp gerçekleştirecektir.

SSM Agent, Systems Manager’ın bu kaynakları güncellemesine, yönetmesine ve yapılandırmasına olanak tanır. Agent, processes requests from the Systems Manager service in the AWS Cloud, ardından istekte belirtildiği şekilde bunları çalıştırır.

SSM Agent comes preinstalled in some AMIs or you need to manually install them on the instances. Ayrıca, instance içinde kullanılan IAM Role’ün iletişim kurabilmesi için AmazonEC2RoleforSSM politikasının atanmış olması gerekir.

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>

Bir EC2 instance’ında Systems Manager’ın çalışıp çalışmadığını sadece şu komutu çalıştırarak kontrol edebilirsiniz:

ps aux | grep amazon-ssm

Privesc

Aşağıdaki sayfada abuse SSM permissions to escalate privileges nasıl yapıldığını görebilirsiniz:

AWS - SSM Privesc

Perssistence

Aşağıdaki sayfada abuse SSM permissions to achieve persistence nasıl yapılacağını görebilirsiniz:

AWS - SSM Perssitence

ELB

Elastic Load Balancing (ELB) Amazon Web Services (AWS) dağıtımları için bir yük dengeleme servisidir. ELB, gelen uygulama trafiğini otomatik olarak dağıtır ve trafik taleplerini karşılamak için kaynakları ölçeklendirir.

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, AWS EC2 instance’ları için temel platformu oluşturan bir dizi yenilikçi teknolojidir. Amazon tarafından güvenlik, performans ve güvenilirliği artırmak amacıyla tanıtılan Nitro, özel donanım bileşenleri ve hafif bir hypervisor kullanır. Geleneksel sanallaştırma işlevlerinin çoğunu adanmış donanım ve yazılıma soyutlayarak saldırı yüzeyini en aza indirir ve kaynak verimliliğini artırır. Sanallaştırma işlevlerini dışarıya taşıyarak, Nitro EC2 instance’larının neredeyse bare-metal performansı sunmasını sağlar; bu, kaynak yoğun uygulamalar için özellikle faydalıdır. Ayrıca Nitro Security Chip donanım ve firmware güvenliğini özellikle garanti ederek mimarisini daha da sağlamlaştırır.

Daha fazla bilgi ve nasıl enumerate edileceğini öğrenmek için:

AWS - Nitro Enum

VPN

Bir VPN, hizmetlerin internete açılmasına gerek kalmadan erişilebilmesi için on-premise ağınızı (site-to-site VPN) veya çalışanların dizüstü bilgisayarlarını (Client VPN) bir AWS VPC ile bağlamanıza olanak tanır.

Temel AWS VPN Bileşenleri

  1. Customer Gateway:
  • Customer Gateway, VPN bağlantısının sizin tarafınızı temsil etmek için AWS’de oluşturduğunuz bir kaynaktır.
  • Temelde Site-to-Site VPN bağlantınızın tarafındaki fiziksel bir cihaz veya yazılım uygulamasıdır.
  • Customer Gateway oluşturmak için ağ cihazınızın (ör. bir yönlendirici veya bir güvenlik duvarı gibi) yönlendirme bilgilerini ve genel IP adresini AWS’ye sağlarsınız.
  • VPN bağlantısını kurmak için bir referans noktası olarak hizmet eder ve ek ücret oluşturmaz.
  1. Virtual Private Gateway:
  • Virtual Private Gateway (VPG), Site-to-Site VPN bağlantısının Amazon tarafındaki VPN konsantratörüdür.
  • VPC’nize eklenir ve VPN bağlantınız için hedef olarak hizmet eder.
  • VPG, VPN bağlantısı için AWS tarafındaki uç noktadır.
  • VPC’niz ile on-premises ağınız arasındaki güvenli iletişimi sağlar.
  1. Site-to-Site VPN Connection:
  • Site-to-Site VPN bağlantısı, on-premises ağınızı güvenli bir IPsec VPN tüneli üzerinden bir VPC’ye bağlar.
  • Bu tür bir bağlantı Customer Gateway ve Virtual Private Gateway gerektirir.
  • Bu, veri merkezi veya ağınız ile AWS ortamınız arasında güvenli, kararlı ve tutarlı iletişim için kullanılır.
  • Tipik olarak düzenli, uzun süreli bağlantılar için kullanılır ve bağlantı üzerinden aktarılan veri miktarına göre faturalandırılır.
  1. Client VPN Endpoint:
  • Client VPN endpoint, istemci VPN oturumlarını etkinleştirmek ve yönetmek için AWS’de oluşturduğunuz bir kaynaktır.
  • Bireysel cihazların (dizüstü bilgisayarlar, akıllı telefonlar vb.) AWS kaynaklarına veya on-premises ağınıza güvenli şekilde bağlanmasını sağlamak için kullanılır.
  • Tüm ağları birbirine bağlamak yerine bireysel istemciler için tasarlanmış olması bakımından Site-to-Site VPN’den farklıdır.
  • Client VPN ile her istemci cihaz, güvenli bir bağlantı kurmak için bir VPN istemci yazılımı kullanır.

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

Yerel Keşif

Yerel Geçici Kimlik Bilgileri

When AWS VPN Client is used to connect to a VPN, the user will usually AWS’ye giriş yapar to get access to the VPN. Then, some AWS kimlik bilgileri oluşturulur ve yerelde saklanır locally to establish the VPN connection. These credentials are saklanır in $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt and contains an AccessKey, a SecretKey and a Token.

The credentials belong to the user arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials (TODO: bu kimlik bilgilerinin izinleri hakkında daha fazla araştırma yapılacak).

opvn yapılandırma dosyaları

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

Kaynaklar

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin