GCP - KMS Enum

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

KMS

The Cloud Key Management Service dien as ’n veilige stoorplek vir kriptografiese sleutels, wat noodsaaklik is vir bedrywighede soos die enkripteer en ontsleutel van sensitiewe data. Hierdie sleutels is georganiseer binne key rings, wat gestruktureerde bestuur moontlik maak. Verder kan toegangsbeheer noukeurig gekonfigureer word, hetsy op individuele sleutelvlak of vir die hele key ring, wat verseker dat toestemmings presies ooreenstem met sekuriteitsvereistes.

KMS key rings word per verstek as global geskep, wat beteken dat die sleutels binne daardie key ring vanaf enige streek toeganklik is. Dit is egter moontlik om spesifieke key rings in spesifieke streke te skep.

Key Protection Level

  • Software keys: Software keys word heeltemal deur KMS in sagteware geskep en bestuur. Hierdie sleutels word nie deur ’n hardware security module (HSM) beskerm nie en kan gebruik word vir toetsing en ontwikkelingsdoeleindes. Software keys word nie aanbeveel vir produksie gebruik nie omdat hulle lae sekuriteit bied en vatbaar is vir aanvalle.
  • Cloud-hosted keys: Cloud-hosted keys word deur KMS in die wolk geskep en bestuur met ’n hoog-beskikbare en betroubare infrastruktuur. Hierdie sleutels word deur HSMs beskerm, maar die HSMs is nie aan ’n spesifieke kliĂ«nt toegewys nie. Cloud-hosted keys is geskik vir die meeste produksiegevalle.
  • External keys: External keys word buite KMS geskep en bestuur, en word in KMS ingevoer vir gebruik in kriptografiese operasies. External keys kan in ’n hardware security module (HSM) of ’n sagtewaresentrum gestoor word, afhangend van die kliĂ«nt se voorkeur.

Key Purposes

  • Symmetric encryption/decryption: Word gebruik om data te enkripteer en ontsleutel met ’n enkele sleutel vir albei operasies. Symmetriese sleutels is vinnig en doeltreffend vir die enkriptering en ontsleuteling van groot volumes data.
  • Supported: cryptoKeys.encrypt, cryptoKeys.decrypt
  • Asymmetric Signing: Word gebruik vir veilige kommunikasie tussen twee partye sonder om die sleutel te deel. Asimmetriese sleutels kom in ’n paar, bestaande uit ’n publieke sleutel en ’n private sleutel. Die publieke sleutel word gedeel, terwyl die private sleutel geheim gehou word.
  • Supported: cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
  • Asymmetric Decryption: Word gebruik om die egtheid van ’n boodskap of data te verifieer. ’n Digitale handtekening word geskep met ’n private sleutel en kan geverifieer word met die ooreenstemmende publieke sleutel.
  • Supported: cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
  • MAC Signing: Word gebruik om data-integriteit en egtheid te verseker deur ’n message authentication code (MAC) te skep met ’n geheime sleutel. HMAC word algemeen gebruik vir boodskapverifikasie in netwerkprotokolle en sagtewaretoepassings.
  • Supported: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify

Rotation Period & Programmed for destruction period

By verstek is dit elke 90 dae, maar dit kan maklik en heeltemal gepersonaliseer word.

Die “Programmed for destruction” periode is die tyd vanaf wanneer die gebruiker vir die verwydering van die sleutel versoek totdat die sleutel verwyder is. Dit kan nie verander word nadat die sleutel geskep is nie (verstek 1 dag).

Primary Version

Elke KMS-sleutel kan verskeie weergawes hĂȘ; een daarvan moet die verstek wees. Dit is die weergawe wat gebruik word wanneer ’n weergawe nie gespesifiseer word tydens interaksie met die KMS-sleutel nie.

CMEK permission model

Wanneer voorwerpe in Cloud Storage met CMEK geënkripteer is, word die decrypt/encrypt-oproepe na KMS deur die projek se Cloud Storage service agent (e-pos service-${BUCKET_PROJECT_NUMBER}@gs-project-accounts.iam.gserviceaccount.com) gedoen, nie direk deur die eindgebruiker wat die voorwerp lees nie.

Dit beteken dat om iets wat deur ’n CMEK geĂ«nkripteer is te lees:

  • Die projek se Cloud Storage service agent moet KMS-magtigings hĂȘ oor die gebruikte KMS-sleutel (tipies roles/cloudkms.cryptoKeyEncrypterDecrypter).
  • Die gebruiker benodig slegs voorwerp-lees toestemmings (byvoorbeeld storage.objects.get). Hy benodig nie magtigings oor die KMS-sleutel nie.

Dit beteken dat om beheer oor toegang tot met die KMS-sleutel geĂ«nkripteerde data te hĂȘ, dit nodig is om KMS-magtigings by te voeg/verwyder vir die projek se Cloud Storage service agent.

Let ook daarop dat ’n projekvlak binding soos roles/cloudkms.cryptoKeyEncrypterDecrypter vir die Storage service agent steeds ontgrendeling met sleutels in dieselfde projek sal toelaat.

Enumeration

Indien jy toestemmings het om die sleutels te lys, is dit hoe jy toegang tot hulle kan kry:

# 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

Privilege Escalation

GCP - KMS Privesc

Post Exploitation

GCP - KMS Post Exploitation

Verwysings

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks