AWS - KMS Enum

Reading time: 8 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 - Service de Gestion des Clés

Le Service de Gestion des Clés d'AWS (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 (CMK). Ces CMK sont essentielles dans le chiffrement des données utilisateur. Une caractéristique notable d'AWS KMS est que les CMK sont principalement sécurisées par des modules de sécurité matériels (HSM), 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 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 DEK (Clés de Chiffrement des Données). Ensuite, les DEK 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, 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 :

  • CMK 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.
  • CMK 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 ne donne pas automatiquement la permission à l'un des principaux du compte. Pour donner la permission aux administrateurs du 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 refusent l'accÚs à la clé restent efficaces.

  • Cela rĂ©duit le risque que la clĂ© devienne ingĂ©rable en donnant la permission de contrĂŽle d'accĂšs aux administrateurs du compte, y compris l'utilisateur root du compte, qui ne peut pas ĂȘtre supprimĂ©.

Exemple de politique par défaut :

json
{
"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 donner les permissions

Accords :

  • Permet de 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é

Administrateur de clé 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Ă© (pas les groupes)
  • Si un CMK externe est utilisĂ©, les Administrateurs de ClĂ© 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 elles.

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

bash
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

Privesc

AWS - KMS Privesc

Post Exploitation

AWS - KMS Post Exploitation

Persistence

AWS - KMS Persistence

Références

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