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

Sıfırdan kahraman olacak şekilde AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

VPC & Ağ

Bir VPC'nin ne olduğunu ve bileşenleri hakkında bilgi edinin:

pageAWS - VPC & Networking Basic Information

EC2

Amazon EC2, sanal sunucuların başlatılması için kullanılır. Güvenlik ve yapılandırmasına izin verir ve depolama yönetimini sağlar. Amazon EC2'nin esnekliği, kaynakları hem yukarı hem aşağı ölçeklendirebilme yeteneğinde açıkça görülmektedir, böylece değişen gereksinim değişikliklerine veya popülerlik artışlarına etkili bir şekilde uyum sağlar. Bu özellik, kesin trafik tahminlerine olan gereksinimi azaltır.

EC2'de numaralandırılacak ilginç şeyler:

  • Sanal Makineler

  • SSH Anahtarları

  • Kullanıcı Verileri

  • Mevcut EC2'ler/AMI'ler/Snapshot'lar

  • Ağlar

  • Alt ağlar

  • Genel IP'ler

  • Açık portlar

  • AWS dışındaki diğer ağlarla entegre bağlantılar

Örnek Profiller

EC2 örneklerinde çalışan uygulamalara izin vermek için roller kullanmak biraz ek yapılandırma gerektirir. EC2 örneğinde çalışan bir uygulama, sanallaştırılmış işletim sistemi tarafından AWS'den soyutlanmıştır. Bu ek ayrım nedeniyle, bir AWS rolünü ve ilişkili izinleri bir EC2 örneğine atamak ve bunları uygulamalarına kullanılabilir hale getirmek için ek bir adım gereklidir.

Bu ek adım, örneğe bağlı olan bir örnek profili'nin oluşturulmasıdır. Örnek profili, rolü içerir ve rolün geçici kimlik bilgilerini örneğinde çalışan bir uygulamaya sağlayabilir. Bu geçici kimlik bilgileri daha sonra uygulamanın API çağrılarında kullanılabilir ve rolün belirttiği yalnızca bu kaynaklara erişim sağlamak için kullanılabilir. Bir EC2 örneğine yalnızca bir rol atanabileceğini ve örnekteki tüm uygulamaların aynı rolü ve izinleri paylaştığını unutmayın.

Meta Veri Noktası

AWS EC2 meta verileri, çalışma zamanında bir Amazon Elastic Compute Cloud (EC2) örneğine mevcut olan bilgilerdir. Bu meta veriler, örneğin örneğin kimliği, çalıştığı kullanılabilir bölge, örneğe ilişkilendirilmiş IAM rolü ve örneğin ana bilgisayar adı gibi bilgileri sağlamak için kullanılır.

Numaralandırma

# 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

Kimlik Doğrulamasız Erişim

pageAWS - EC2 Unauthenticated Enum

Yükseltme

Aşağıdaki sayfada, yetkileri yükseltmek için EC2 izinlerini kötüye kullanma yöntemlerini kontrol edebilirsiniz:

pageAWS - EC2 Privesc

Saldırı Sonrası

pageAWS - EC2, EBS, SSM & VPC Post Exploitation

EBS

Amazon EBS (Elastic Block Store) anlık görüntüleri, temelde AWS EBS birimlerine bağlı disklerin belirli bir zamandaki kopyaları olan statik yedeklemelerdir. Anlık görüntüler, bölgeler ve hesaplar arasında kopyalanabilir, hatta indirilip yerel olarak çalıştırılabilir.

Anlık görüntüler, kaynak kodu veya API anahtarları gibi duyarlı bilgiler içerebilir, bu nedenle fırsatınız varsa kontrol etmeniz önerilir.

AMI ve EBS Farkı

Bir AMI, bir EC2 örneğini başlatmak için kullanılırken, bir EC2 Anlık Görüntüsü, bir EBS biriminde depolanan verileri yedeklemek ve kurtarmak için kullanılır. Bir EC2 Anlık Görüntüsü yeni bir AMI oluşturmak için kullanılabilirken, bir AMI ile aynı şey değildir ve işletim sistemi, uygulama sunucusu veya bir uygulamayı çalıştırmak için gereken diğer yazılımlar hakkında bilgi içermez.

Yükseltme

Aşağıdaki sayfada, yetkileri yükseltmek için EBS izinlerini kötüye kullanma yöntemlerini kontrol edebilirsiniz:

pageAWS - EBS Privesc

SSM

Amazon Basit Sistemler Yöneticisi (SSM), EC2 örneklerinin yığınlarını uzaktan yönetmeyi sağlar ve yönetimlerini çok daha kolay hale getirir. Bu örneklerin her birinin, eylemleri alacak ve gerçekleştirecek olan SSM Ajan hizmetini çalıştırması gerekmektedir.

SSM Ajanı, Sistemler Yöneticisinin bu kaynakları güncellemesini, yönetmesini ve yapılandırmasını sağlar. Ajan, istekleri AWS Bulutunda Sistemler Yöneticisi hizmetinden alır ve ardından istekte belirtildiği gibi çalıştırır.

SSM Ajanı, bazı AMI'lerde önceden yüklenmiştir veya manuel olarak yüklemeniz gerekebilir örneklerde. Ayrıca, örnek içinde kullanılan IAM Rolünün iletişim kurabilmek için AmazonEC2RoleforSSM politikasına sahip olması gerekmektedir.

Numaralandırma

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>

EC2 örneğinde Sistem Yöneticisinin çalışıp çalışmadığını sadece şu komutu çalıştırarak kontrol edebilirsiniz:

ps aux | grep amazon-ssm

Privilege Escalation

Aşağıdaki sayfada, yetkileri yükseltmek için SSM izinlerini kötüye kullanma yöntemlerini kontrol edebilirsiniz:

pageAWS - SSM Privesc

ELB

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

Enumerasyon

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

Başlatma Şablonları ve Otomatik Ölçeklendirme Grupları

Numaralandırma

# 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 örneklerinin temel platformunu oluşturan yenilikçi teknolojiler paketidir. Amazon tarafından tanıtılan Nitro, güvenliği, performansı ve güvenilirliği artırmak için özel donanım bileşenleri ve hafif bir hipervizör kullanır. Geleneksel sanallaştırma işlevlerinin çoğunu ayrılmış donanım ve yazılıma soyutlar, saldırı yüzeyini en aza indirir ve kaynak verimliliğini artırır. Sanallaştırma işlevlerini dışarıya aktararak, Nitro EC2 örneklerinin neredeyse bare-metal performansı sunmasına olanak tanır, bu da kaynak yoğun uygulamalar için özellikle faydalıdır. Ayrıca, Nitro Güvenlik Çipi özellikle donanım ve yazılımın güvenliğini sağlar, sağlam mimarisini daha da pekiştirir.

Daha fazla bilgi edinin ve nasıl sıralanacağını öğrenin:

pageAWS - Nitro Enum

VPN

VPN, yerinde ağınızı (site-to-site VPN) veya çalışan dizüstü bilgisayarları (Client VPN) AWS VPC ile bağlayarak hizmetlere internete maruz bırakmadan erişilmesini sağlar.

Temel AWS VPN Bileşenleri

  1. Müşteri Ağ Geçidi:

  • Bir Müşteri Ağ Geçidi, VPN bağlantısının sizin tarafınızı temsil etmek üzere AWS'de oluşturduğunuz bir kaynaktır.

  • Temelde, Site-to-Site VPN bağlantısının sizin tarafınızdaki fiziksel bir cihaz veya yazılım uygulamasıdır.

  • Bir Müşteri Ağ Geçidi oluşturmak için yönlendirme bilgilerini ve ağ cihazınızın genel IP adresini (örneğin bir yönlendirici veya bir güvenlik duvarı) AWS'ye sağlarsınız.

  • VPN bağlantısını kurmak için referans noktası olarak hizmet verir ve ek ücretlendirme yapmaz.

  1. Sanal Özel Ağ Geçidi:

  • Sanal Özel Ağ Geçidi (VPG), Site-to-Site VPN bağlantısının Amazon tarafındaki VPN konsantre cihazıdır.

  • VPC'nize bağlıdır ve VPN bağlantınızın hedefi olarak hizmet verir.

  • VPG, VPN bağlantısının AWS tarafı uç noktasıdır.

  • VPC'niz ile yerinde ağınız arasındaki güvenli iletişimi yönetir.

  1. Site-to-Site VPN Bağlantısı:

  • Site-to-Site VPN bağlantısı, güvenli, IPsec VPN tüneli aracılığıyla yerinde ağınızı bir VPC'ye bağlar.

  • Bu tür bir bağlantı için bir Müşteri Ağ Geçidi ve bir Sanal Özel Ağ Geçidi gereklidir.

  • Veri merkeziniz veya ağınız ile AWS ortamınız arasında güvenli, istikrarlı ve tutarlı iletişim için kullanılır.

  • Genellikle düzenli, uzun vadeli 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 Uç Noktası:

  • Bir Client VPN uç noktası, müşteri VPN oturumlarını etkinleştirmek ve yönetmek için AWS'de oluşturduğunuz bir kaynaktır.

  • Bireysel cihazlara (dizüstü bilgisayarlar, akıllı telefonlar vb.) AWS kaynaklarına veya yerinde ağınıza güvenli bir şekilde bağlanmalarını sağlamak için kullanılır.

  • Site-to-Site VPN'den farklı olarak, bireysel istemciler için tasarlanmıştır ve tüm ağları bağlamak yerine bireysel cihazlar için kullanılır.

  • Client VPN ile her istemci cihazı, güvenli bir bağlantı kurmak için bir VPN istemci yazılımı kullanır.

AWS VPN'lerin faydaları ve bileşenleri hakkında daha fazla bilgi edinebilirsiniz.

Sıralama

# 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 Sıralama

Yerel Geçici Kimlik Bilgileri

AWS VPN İstemcisi bir VPN'ye bağlanmak için kullanıldığında, kullanıcı genellikle VPN'ye erişim sağlamak için AWS'e giriş yapar. Daha sonra, VPN bağlantısını kurmak için yerel olarak oluşturulan ve saklanan bazı AWS kimlik bilgileri bulunur. Bu kimlik bilgileri, $HOME/.config/AWSVPNClient/TemporaryCredentials/<bölge>/temporary-credentials.txt içinde saklanır ve bir Erişim Anahtarı, bir Gizli Anahtar ve bir Token içerir.

Kimlik bilgileri, kullanıcıya aittir 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ın).

opvn yapılandırma dosyaları

Eğer bir VPN bağlantısı kurulduysa, sistemde .opvn yapılandırma dosyalarını aramalısınız. Ayrıca, yapılandırmaları bulabileceğiniz yerlerden biri $HOME/.config/AWSVPNClient/OpenVpnConfigs içindedir.

Son Saldırı Aşaması

urlhttps://github.com/HackTricks-wiki/hacktricks-cloud/blob/tr/pentesting-cloud/aws-security/aws-saldiri-sonrasi/aws-vpn-saldiri-sonrasi.md

Referanslar

Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated