AWS - KMS Enum
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 - Service de Gestion des Clés
AWS Key Management Service (AWS KMS) est prĂ©sentĂ© comme un service gĂ©rĂ©, simplifiant le processus pour les utilisateurs de crĂ©er et gĂ©rer des clĂ©s maĂźtresses client (CMKs). Ces CMKs sont intĂ©grales dans le chiffrement des donnĂ©es utilisateur. Une caractĂ©ristique notable dâAWS KMS est que les CMKs sont principalement sĂ©curisĂ©es par des modules de sĂ©curitĂ© matĂ©riels (HSMs), renforçant la protection des clĂ©s de chiffrement.
KMS utilise la cryptographie symĂ©trique. Cela est utilisĂ© pour chiffrer les informations au repos (par exemple, Ă lâintĂ©rieur dâun S3). Si vous devez chiffrer des informations en transit, vous devez utiliser quelque chose comme TLS.
KMS est un service spécifique à une région.
Les administrateurs dâAmazon nâont pas accĂšs Ă vos clĂ©s. Ils ne peuvent pas rĂ©cupĂ©rer vos clĂ©s et ils ne vous aident pas avec le chiffrement de vos clĂ©s. AWS administre simplement le systĂšme dâexploitation et lâapplication sous-jacente, il nous appartient dâadministrer nos clĂ©s de chiffrement et de gĂ©rer comment ces clĂ©s sont utilisĂ©es.
ClĂ©s MaĂźtresses Client (CMK) : Peuvent chiffrer des donnĂ©es jusquâĂ 4 Ko. Elles sont gĂ©nĂ©ralement utilisĂ©es pour crĂ©er, chiffrer et dĂ©chiffrer les DEKs (Data Encryption Keys). Ensuite, les DEKs sont utilisĂ©es pour chiffrer les donnĂ©es.
Une clĂ© maĂźtresse client (CMK) est une reprĂ©sentation logique dâune clĂ© maĂźtresse dans AWS KMS. En plus des identifiants de la clĂ© maĂźtresse et dâautres mĂ©tadonnĂ©es, y compris sa date de crĂ©ation, sa description et son Ă©tat de clĂ©, une CMK contient le matĂ©riel de clĂ© utilisĂ© pour chiffrer et dĂ©chiffrer les donnĂ©es. Lorsque vous crĂ©ez une CMK, par dĂ©faut, AWS KMS gĂ©nĂšre le matĂ©riel de clĂ© pour cette CMK. Cependant, vous pouvez choisir de crĂ©er une CMK sans matĂ©riel de clĂ© et ensuite importer votre propre matĂ©riel de clĂ© dans cette CMK.
Il existe 2 types de clés maßtresses :
- CMKs gĂ©rĂ©es par AWS : UtilisĂ©es par dâautres services pour chiffrer des donnĂ©es. Elles sont utilisĂ©es par le service qui les a créées dans une rĂ©gion. Elles sont créées la premiĂšre fois que vous implĂ©mentez le chiffrement dans ce service. Elles sont renouvelĂ©es tous les 3 ans et il nâest pas possible de les modifier.
- CMKs gérées par le client : Flexibilité, rotation, accÚs configurable et politique de clé. Activer et désactiver les clés.
Chiffrement par enveloppe dans le contexte du Service de Gestion des Clés (KMS) : SystÚme hiérarchique à deux niveaux pour chiffrer les données avec une clé de données puis chiffrer la clé de données avec la clé maßtresse.
Politiques de Clé
Ceci définit qui peut utiliser et accéder à une clé dans KMS.
Par défaut :
- Cela donne Ă lâIAM du compte AWS qui possĂšde la clĂ© KMS lâaccĂšs pour gĂ©rer lâaccĂšs Ă la clĂ© KMS via IAM.
Contrairement Ă dâautres politiques de ressources AWS, une politique de clĂ© KMS AWS ne donne pas automatiquement la permission Ă lâun des principaux du compte. Pour donner la permission aux administrateurs de compte, la politique de clĂ© doit inclure une dĂ©claration explicite qui fournit cette permission, comme celle-ci.
-
Sans permettre au compte (
"AWS": "arn:aws:iam::111122223333:root") les permissions IAM ne fonctionneront pas. -
Cela permet au compte dâutiliser des politiques IAM pour autoriser lâaccĂšs Ă la clĂ© KMS, en plus de la politique de clĂ©.
Sans cette permission, les politiques IAM qui permettent lâaccĂšs Ă la clĂ© sont inefficaces, bien que les politiques IAM qui nient lâaccĂšs Ă la clĂ© soient toujours efficaces.
- Cela rĂ©duit le risque que la clĂ© devienne ingĂ©rable en donnant la permission de contrĂŽle dâaccĂšs aux administrateurs de compte, y compris lâutilisateur root du compte, qui ne peut pas ĂȘtre supprimĂ©.
Exemple de politique par défaut :
{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}
Warning
Si le compte est autorisé (
"arn:aws:iam::111122223333:root"), un principal du compte aura toujours besoin des permissions IAM pour utiliser la clĂ© KMS. Cependant, si lâARN dâun rĂŽle par exemple est spĂ©cifiquement autorisĂ© dans la politique de clĂ©, ce rĂŽle nâa pas besoin de permissions IAM.
Détails de la politique
PropriĂ©tĂ©s dâune politique :
- Document basé sur JSON
- Ressource â> Ressources affectĂ©es (peut ĂȘtre â*â)
- Action â> kms:Encrypt, kms:Decrypt, kms:CreateGrant ⊠(permissions)
- Effet â> Autoriser/Refuser
- Principal â> arn affectĂ©
- Conditions (optionnel) â> Condition pour accorder les permissions
Accords :
- Autorise Ă dĂ©lĂ©guer vos permissions Ă un autre principal AWS au sein de votre compte AWS. Vous devez les crĂ©er en utilisant les API AWS KMS. Il peut ĂȘtre indiquĂ© lâidentifiant CMK, le principal bĂ©nĂ©ficiaire et le niveau dâopĂ©ration requis (DĂ©chiffrer, Chiffrer, GĂ©nĂ©rerDataKeyâŠ)
- AprĂšs la crĂ©ation de lâaccord, un GrantToken et un GrantID sont Ă©mis
AccĂšs :
- Via politique de clĂ© â Si cela existe, cela prend prĂ©cĂ©dence sur la politique IAM
- Via politique IAM
- Via accords
Administrateurs de clés
Administrateur de clés par défaut :
- A accÚs pour gérer KMS mais pas pour chiffrer ou déchiffrer des données
- Seuls les utilisateurs et rĂŽles IAM peuvent ĂȘtre ajoutĂ©s Ă la liste des Administrateurs de clĂ©s (pas de groupes)
- Si un CMK externe est utilisĂ©, les Administrateurs de clĂ©s ont la permission dâimporter des matĂ©riaux de clĂ©
Rotation des CMK
- Plus la mĂȘme clĂ© est laissĂ©e en place longtemps, plus de donnĂ©es sont chiffrĂ©es avec cette clĂ©, et si cette clĂ© est compromise, alors plus la zone dâimpact des donnĂ©es est Ă risque. De plus, plus la clĂ© est active longtemps, plus la probabilitĂ© quâelle soit compromise augmente.
- KMS fait tourner les clĂ©s clients tous les 365 jours (ou vous pouvez effectuer le processus manuellement quand vous le souhaitez) et les clĂ©s gĂ©rĂ©es par AWS tous les 3 ans et cette fois-ci, cela ne peut pas ĂȘtre changĂ©.
- Les anciennes clés sont conservées pour déchiffrer les données qui ont été chiffrées avant la rotation
- En cas de compromission, faire tourner la clé ne supprimera pas la menace car il sera possible de déchiffrer toutes les données chiffrées avec la clé compromise. Cependant, les nouvelles données seront chiffrées avec la nouvelle clé.
- Si le CMK est dans un Ă©tat de dĂ©sactivĂ© ou en attente de suppression, KMS ne procĂ©dera pas Ă une rotation de clĂ© tant que le CMK nâest pas rĂ©activĂ© ou que la suppression nâest pas annulĂ©e.
Rotation manuelle
- Un nouveau CMK doit ĂȘtre créé, ensuite, un nouvel ID de CMK est créé, donc vous devrez mettre Ă jour toute application pour rĂ©fĂ©rencer le nouvel ID de CMK.
- Pour faciliter ce processus, vous pouvez utiliser des alias pour rĂ©fĂ©rencer un key-id et ensuite simplement mettre Ă jour la clĂ© Ă laquelle lâalias fait rĂ©fĂ©rence.
- Vous devez conserver les anciennes clés pour déchiffrer les anciens fichiers chiffrés avec celles-ci.
Vous pouvez importer des clés de votre infrastructure de clés sur site.
Autres informations KMS pertinentes
KMS est facturé par le nombre de demandes de chiffrement/déchiffrement reçues de tous les services par mois.
KMS a une intĂ©gration complĂšte dâaudit et de conformitĂ© avec CloudTrail ; câest lĂ que vous pouvez auditer tous les changements effectuĂ©s sur KMS.
Avec la politique KMS, vous pouvez faire ce qui suit :
- Limiter qui peut créer des clés de données et quels services ont accÚs à utiliser ces clés
- Limiter lâaccĂšs des systĂšmes Ă chiffrer uniquement, dĂ©chiffrer uniquement ou les deux
- DĂ©finir pour permettre aux systĂšmes dâaccĂ©der aux clĂ©s Ă travers les rĂ©gions (bien que cela ne soit pas recommandĂ© car une dĂ©faillance dans la rĂ©gion hĂ©bergeant KMS affectera la disponibilitĂ© des systĂšmes dans dâautres rĂ©gions).
Vous ne pouvez pas synchroniser ou dĂ©placer/copier des clĂ©s entre les rĂ©gions ; vous ne pouvez dĂ©finir que des rĂšgles pour permettre lâaccĂšs entre les rĂ©gions.
ĂnumĂ©ration
aws kms list-keys
aws kms list-key-policies --key-id <id>
aws kms list-grants --key-id <id>
aws kms describe-key --key-id <id>
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
aws kms describe-custom-key-stores
# This script enumerates AWS KMS keys across all available regions.
for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do
echo -e "\n### Region: $region ###"; aws kms list-keys --region $region --query "Keys[].KeyId" --output text | tr '\t' '\n';
done
Privesc
Post Exploitation
Persistence
Références
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

