GCP - KMS Enum

Reading time: 6 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

Le Cloud Key Management Service sert de stockage sĂ©curisĂ© pour les clĂ©s cryptographiques, qui sont essentielles pour des opĂ©rations telles que le chiffrement et le dĂ©chiffrement de donnĂ©es sensibles. Ces clĂ©s sont organisĂ©es au sein de bagues de clĂ©s, permettant une gestion structurĂ©e. De plus, le contrĂŽle d'accĂšs peut ĂȘtre mĂ©ticuleusement configurĂ©, soit au niveau de la clĂ© individuelle, soit pour l'ensemble de la bague de clĂ©s, garantissant que les autorisations sont prĂ©cisĂ©ment alignĂ©es avec les exigences de sĂ©curitĂ©.

Les bagues de clés KMS sont par défaut créées comme globales, ce qui signifie que les clés à l'intérieur de cette bague de clés sont accessibles depuis n'importe quelle région. Cependant, il est possible de créer des bagues de clés spécifiques dans des régions spécifiques.

Niveau de Protection des Clés

  • ClĂ©s logicielles : Les clĂ©s logicielles sont créées et gĂ©rĂ©es par KMS entiĂšrement dans le logiciel. Ces clĂ©s ne sont pas protĂ©gĂ©es par un module de sĂ©curitĂ© matĂ©riel (HSM) et peuvent ĂȘtre utilisĂ©es Ă  des fins de test et de dĂ©veloppement. Les clĂ©s logicielles ne sont pas recommandĂ©es pour une utilisation en production car elles offrent une faible sĂ©curitĂ© et sont susceptibles aux attaques.
  • ClĂ©s hĂ©bergĂ©es dans le cloud : Les clĂ©s hĂ©bergĂ©es dans le cloud sont créées et gĂ©rĂ©es par KMS dans le cloud en utilisant une infrastructure hautement disponible et fiable. Ces clĂ©s sont protĂ©gĂ©es par des HSM, mais les HSM ne sont pas dĂ©diĂ©s Ă  un client spĂ©cifique. Les clĂ©s hĂ©bergĂ©es dans le cloud conviennent Ă  la plupart des cas d'utilisation en production.
  • ClĂ©s externes : Les clĂ©s externes sont créées et gĂ©rĂ©es en dehors de KMS, et sont importĂ©es dans KMS pour ĂȘtre utilisĂ©es dans des opĂ©rations cryptographiques. Les clĂ©s externes peuvent ĂȘtre stockĂ©es dans un module de sĂ©curitĂ© matĂ©riel (HSM) ou une bibliothĂšque logicielle, selon la prĂ©fĂ©rence du client.

Objectifs des Clés

  • Chiffrement/dĂ©chiffrement symĂ©trique : UtilisĂ© pour chiffrer et dĂ©chiffrer des donnĂ©es en utilisant une seule clĂ© pour les deux opĂ©rations. Les clĂ©s symĂ©triques sont rapides et efficaces pour chiffrer et dĂ©chiffrer de grands volumes de donnĂ©es.
  • SupportĂ© : cryptoKeys.encrypt, cryptoKeys.decrypt
  • Signature asymĂ©trique : UtilisĂ© pour une communication sĂ©curisĂ©e entre deux parties sans partager la clĂ©. Les clĂ©s asymĂ©triques se prĂ©sentent sous forme de paire, composĂ©e d'une clĂ© publique et d'une clĂ© privĂ©e. La clĂ© publique est partagĂ©e avec d'autres, tandis que la clĂ© privĂ©e est gardĂ©e secrĂšte.
  • SupportĂ© : cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
  • DĂ©chiffrement asymĂ©trique : UtilisĂ© pour vĂ©rifier l'authenticitĂ© d'un message ou de donnĂ©es. Une signature numĂ©rique est créée Ă  l'aide d'une clĂ© privĂ©e et peut ĂȘtre vĂ©rifiĂ©e Ă  l'aide de la clĂ© publique correspondante.
  • SupportĂ© : cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
  • Signature MAC : UtilisĂ© pour garantir l'intĂ©gritĂ© et l'authenticitĂ© des donnĂ©es en crĂ©ant un code d'authentification de message (MAC) Ă  l'aide d'une clĂ© secrĂšte. HMAC est couramment utilisĂ© pour l'authentification des messages dans les protocoles rĂ©seau et les applications logicielles.
  • SupportĂ© : cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify

Période de Rotation & Période Programmée pour la Destruction

Par dĂ©faut, chaque 90 jours mais cela peut ĂȘtre facilement et complĂštement personnalisĂ©.

La pĂ©riode "ProgrammĂ©e pour la destruction" est le temps depuis que l'utilisateur demande la suppression de la clĂ© jusqu'Ă  ce que la clĂ© soit supprimĂ©e. Elle ne peut pas ĂȘtre modifiĂ©e aprĂšs la crĂ©ation de la clĂ© (par dĂ©faut 1 jour).

Version Principale

Chaque clĂ© KMS peut avoir plusieurs versions, l'une d'elles doit ĂȘtre la version par dĂ©faut, celle-ci sera utilisĂ©e lorsqu'une version n'est pas spĂ©cifiĂ©e lors de l'interaction avec la clĂ© KMS.

ÉnumĂ©ration

Ayant les autorisations pour lister les clés, voici comment vous pouvez y accéder :

bash
# List the global keyrings available
gcloud kms keyrings list --location global
gcloud kms keyrings get-iam-policy <KEYRING>

# List the keys inside a keyring
gcloud kms keys list --keyring <KEYRING> --location <global/other_locations>
gcloud kms keys get-iam-policy <KEY>

# Encrypt a file using one of your keys
gcloud kms encrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global

# Decrypt a file using one of your keys
gcloud kms decrypt --ciphertext-file=[INFILE] \
--plaintext-file=[OUTFILE] \
--key [KEY] \
--keyring [KEYRING] \
--location global

Escalade de PrivilĂšges

GCP - KMS Privesc

Post Exploitation

GCP - KMS Post Exploitation

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