AWS - S3 Post Exploitation
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
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
S3
For more information check:
AWS - S3, Athena & Glacier Enum
Hassas Bilgiler
Bazen bucket’larda okunabilir durumda hassas bilgiler bulabilirsiniz. Örneğin, terraform state secrets.
Pivoting
Different platforms could be using S3 to store sensitive assets.
For example, airflow could be storing DAGs code in there, or web pages could be directly served from S3. An attacker with write permissions could modify the code from the bucket to pivot to other platforms, or takeover accounts modifying JS files.
S3 Ransomware
Bu senaryoda, attacker creates a KMS (Key Management Service) key in their own AWS account veya başka bir ele geçirilmiş hesapta bir anahtar oluşturur. Daha sonra bu key accessible to anyone in the world olacak şekilde ayarlarlar; bu, herhangi bir AWS kullanıcı, role veya hesabın bu anahtarı kullanarak objeleri şifrelemesine izin verir. Ancak, objeler decrypt edilemez hale gelir.
Attacker hedef S3 bucket and gains write-level access sağlar; bu çeşitli yöntemlerle gerçekleşir. Bu, bucket’ın kötü yapılandırılması ve herkese açık olmasından veya attacker’ın AWS ortamına erişim kazanmasından kaynaklanabilir. Attacker tipik olarak PII, PHI, loglar, yedekler ve benzeri hassas bilgileri içeren bucket’ları hedef alır.
Bucket’ın ransomware hedefi olup olmadığını belirlemek için attacker yapılandırmasını kontrol eder. Bu, S3 Object Versioning’in etkin olup olmadığını ve multi-factor authentication delete (MFA delete) is enabled olup olmadığını doğrulamayı içerir. Eğer Object Versioning etkin değilse attacker devam edebilir. Eğer Object Versioning etkin ama MFA delete devre dışıysa, attacker disable Object Versioning yapabilir. Hem Object Versioning hem de MFA delete etkinse, attacker için o bucket’ı ransomware yapmak daha zorlaşır.
AWS API’sini kullanarak attacker, bucket’taki her objeyi kendi KMS anahtarını kullanarak şifrelenmiş bir kopya ile replaces each object in the bucket with an encrypted copy using their KMS key. Bu, bucket’taki veriyi anahtar olmadan erişilemez hale getirir.
Daha fazla baskı yapmak için attacker, saldırıda kullandığı KMS anahtarının silinmesini planlayabilir. Bu, hedefe anahtar silinmeden ve veriler kalıcı olarak kaybolmadan önce verilerini kurtarması için 7 günlük bir pencere verir.
Son olarak, attacker genellikle “ransom-note.txt” adlı bir dosya yükleyebilir; bu dosya hedefe dosyalarını nasıl geri alacaklarına dair talimatlar içerir. Bu dosya şifrelenmeden yüklenir; muhtemelen hedefin dikkatini çekmek ve ransomware saldırısından haberdar etmek amaçlıdır.
SSE-C (Customer-Provided Key) Ransomware (Codefinger-like)
Başka bir varyant, SSE-C’yi (S3 server-side encryption with customer-provided keys) kötüye kullanmaktır. SSE-C ile, client provides the encryption key on every request ve AWS does not store the key. Bu, attacker kendi SSE-C anahtarını kullanarak objeleri yeniden yazarsa, kurbanın verilerinin o attacker-controlled key sağlanmadıkça okunamaz hale geleceği anlamına gelir.
- Preconditions: Compromised AWS credentials (or any principal with the right permissions) ve rewrite objects yapabilme kabiliyeti (ör.
s3:PutObjecthedef anahtarlar/prefix’ler üzerinde). Bu genellikle yıkıcı lifecycle policy’leri ayarlama yeteneği ile birlikte olur (aşağıya bakın), ör.s3:PutLifecycleConfiguration. - Attack chain:
- Attacker rastgele bir 256-bit anahtar (AES-256) üretir ve saklar.
- Attacker SSE-C header’ları kullanarak mevcut objeleri (aynı object key’ler) rewrites eder; böylece depolanan obje artık attacker anahtarı ile şifrelenmiş olur.
- Kurban, SSE-C anahtarını sağlamadan indirme/şifre çözme yapamaz (IAM izinleri uygun olsa bile).
- Attacker anahtarı silebilir (veya hiç vermeyebilir) ve böylece veriyi kurtarılamaz hale getirebilir.
Example (conceptual) CLI usage:
# Upload/overwrite an object encrypted with attacker-provided SSE-C key
aws s3 cp ./file s3://<BUCKET>/<KEY> \
--sse-c AES256 \
--sse-c-key <BASE64_32_BYTES>
# Download requires providing the same key again
aws s3 cp s3://<BUCKET>/<KEY> ./file \
--sse-c AES256 \
--sse-c-key <BASE64_32_BYTES>
Baskı Artırma: Yaşam Döngüsü “Zamanlayıcı” Suistimali
Kurtarma seçeneklerini (eski sürümler gibi) kaldırmak için saldırganlar SSE-C yeniden yazmaları ile yaşam döngüsü kurallarını eşleştirerek objeleri kısa sürede sona erdirebilir ve/veya noncurrent sürümleri silebilir:
s3:PutLifecycleConfigurationbucket üzerinde bir saldırganın her obje/sürüm için açık silme işlemi yapmasına gerek kalmadan silme işlemlerini zamanlamasına izin verir.- Bu, sürümleme etkinse özellikle etkili olur; çünkü aksi takdirde kurtarmaya izin verecek “önceki iyi sürüm“ü kaldırabilir.
Tespit ve Önlemler
- SSE-C’ye izin vermek için güçlü bir operasyonel gerekçeniz yoksa SSE-KMS (veya SSE-S3) tercih edin.
- SSE-C header’ları kullanan
PutObjectisteklerini izleyin/uyarı oluşturun (S3 için CloudTrail veri olayları). - Beklenmeyen
PutBucketLifecycleConfiguration(yaşam döngüsü değişiklikleri) için izleyin/uyarı oluşturun. - Üzerine yazma etkinliğinde (aynı anahtarların hızla güncellenmesi) ani artışlar ve delete-marker/sürüm silinmeleri için izleyin/uyarı oluşturun.
- Yüksek riskli izinleri kısıtlayın:
s3:PutObjectizinlerini gerekli prefix’lerle sınırlayın;s3:PutLifecycleConfigurationves3:PutBucketVersioning’i güçlü şekilde kısıtlayın; hassas yönetici işlemleri için (uygulanabiliyorsa) MFA gerektirmeyi düşünün ve onaylarla ayrı yönetici rolleri kullanın. - Kurtarma hazırlığı: sürümleme, yedekler ve değiştirilemez/offline kopyalar kullanın (S3 replication to protected account, backup vaults, vb.); noncurrent sürümleri agresif silinmeden koruyun ve yaşam döngüsü değişikliklerini SCPs / guardrails ile güvenceye alın.
s3:RestoreObject
s3:RestoreObject iznine sahip bir saldırgan Glacier veya Deep Archive’de arşivlenmiş objeleri yeniden etkinleştirerek geçici olarak erişilebilir hale getirebilir. Bu, normalde ulaşılamayan tarihsel olarak arşivlenmiş verilerin (backups, snapshots, logs, certifications, old secrets) kurtarılmasına ve exfiltration’a olanak tanır. Saldırgan bu izni okuma izinleriyle (ör. s3:GetObject) birleştirirse, hassas verilerin tam kopyalarını elde edebilir.
aws s3api restore-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY> \
--restore-request '{
"Days": <NUMBER_OF_DAYS>,
"GlacierJobParameters": { "Tier": "Standard" }
}'
s3:Delete*
Bir saldırgan s3:Delete* iznine sahip olduğunda nesneleri, sürümleri ve tüm buckets’ları silebilir, yedekleri bozabilir ve anında ve geri döndürülemez veri kaybına, delillerin yok olmasına ve yedekleme veya kurtarma öğelerinin tehlikeye girmesine neden olabilir.
# Delete an object from a bucket
aws s3api delete-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY>
# Delete a specific version
aws s3api delete-object \
--bucket <BUCKET_NAME> \
--key <OBJECT_KEY> \
--version-id <VERSION_ID>
# Delete a bucket
aws s3api delete-bucket \
--bucket <BUCKET_NAME>
Daha fazla bilgi için check the original research.
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
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

