GCP - KMS Enum
Tip
Jifunze na ufanye mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na ufanye mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na ufanye mazoezi ya Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Saidia HackTricks
- Angalia the subscription plans!
- Jiunge na 💬 Discord group au the telegram group au utufuate kwenye Twitter 🐦 @hacktricks_live.
- Shiriki hacking tricks kwa kutuma PRs kwa HackTricks and HackTricks Cloud github repos.
KMS
The Cloud Key Management Service inahudumia kama hifadhi salama ya cryptographic keys, ambazo ni muhimu kwa shughuli kama encrypting and decrypting sensitive data. Keys hizi zimepangwa ndani ya key rings, kuruhusu usimamizi wa muundo. Zaidi ya hayo, udhibiti wa ufikiaji unaweza kusanifiwa kwa umakini, iwe kwa kiwango cha key moja kwa moja au kwa nzima key ring, kuhakikisha ruhusa zinaendana kabisa na mahitaji ya usalama.
KMS key rings kwa default huundwa kama global, ambayo ina maana kuwa keys zilizo ndani ya key ring hiyo zinapatikana kutoka mkoa wowote. Hata hivyo, inawezekana kuunda key rings maalum katika specific regions.
Key Protection Level
- Software keys: Software keys zinaundwa na kusimamiwa na KMS kabisa kwa software. Keys hizi hazitingwi na hardware security module (HSM) na zinaweza kutumika kwa madhumuni ya majaribio na maendeleo. Software keys hazipendekezwi kwa matumizi ya production kwa sababu zinatoa usalama mdogo na zinaweza kushambuliwa.
- Cloud-hosted keys: Cloud-hosted keys zinaundwa na kusimamiwa na KMS katika cloud kwa kutumia miundombinu yenye high availability na reliabilty. Keys hizi zinalindwa na HSMs, lakini HSMs hazijatengwa kwa mteja fulani. Cloud-hosted keys zinafaa kwa matumizi mengi ya production.
- External keys: External keys zinaundwa na kusimamiwa nje ya KMS, na huingizwa ndani ya KMS kwa matumizi ya shughuli za cryptography. External keys zinaweza kuhifadhiwa katika hardware security module (HSM) au maktaba ya software, kulingana na mapendeleo ya mteja.
Key Purposes
- Symmetric encryption/decryption: Inatumika kuficha na kufungua (encrypt na decrypt) data kwa kutumia key moja kwa shughuli zote mbili. Symmetric keys ni za haraka na zenye ufanisi kwa kusimba na kusimba/sanua kiasi kikubwa cha data.
- Inayounga mkono: cryptoKeys.encrypt, cryptoKeys.decrypt
- Asymmetric Signing: Inatumika kwa mawasiliano salama kati ya pande mbili bila kushirikisha key. Asymmetric keys huja kwa jozi, zikiwa na public key na private key. Public key inashirikiwa kwa wengine, wakati private key inabaki siri.
- Inayounga mkono: cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
- Asymmetric Decryption: Inatumika kuthibitisha uhalisi wa ujumbe au data. Sahihi ya kidigitali (digital signature) inaundwa kwa private key na inaweza kuthibitishwa kwa public key inayolingana.
- Inayounga mkono: cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
- MAC Signing: Inatumika kuhakikisha integrity na authenticity ya data kwa kuunda message authentication code (MAC) kwa kutumia secret key. HMAC hutumika sana kwa uthibitishaji wa ujumbe kwenye protocol za mtandao na programu za software.
- Inayounga mkono: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify
Rotation Period & Programmed for destruction period
Kwa default, kila 90 days lakini inaweza kubadilishwa kwa urahisi na kabisa kulingana na mahitaji.
“Kipindi cha Programmed for destruction” ni muda tangu mtumiaji akuombe kufuta key hadi key itakapotoweka kabisa. Haiwezi kubadilishwa baada ya key kuundwa (default ni siku 1).
Primary Version
Kila KMS key inaweza kuwa na toleo kadhaa; moja yao lazima iwe toleo la default, ambalo ndio litatumika wakati toleo halitatajwa unapotumia KMS key.
CMEK permission model
Wakati vitu katika Cloud Storage vimesimbwa kwa CMEK, wito za decrypt/encrypt kwa KMS zinafanywa na project’s Cloud Storage service agent whose email is service-${BUCKET_PROJECT_NUMBER}@gs-project-accounts.iam.gserviceaccount.com), sio moja kwa moja na mtumiaji anayesoma kitu hicho.
Hii ina maana kwamba kusoma kitu kilichosimbwa kwa CMEK:
- Cloud storage service agent wa project lazima awe na ruhusa za KMS kuhusu KMS key iliyotumika (kawaida
roles/cloudkms.cryptoKeyEncrypterDecrypter). - Mtumiaji anahitaji tu ruhusa za kusoma object (kwa mfano
storage.objects.get). Hajatakiwa ruhusa juu ya KMS key.
Hii ina maana kwamba kudhibiti ufikiaji wa data iliyosimbwa kwa KMS key inahitaji kuongeza/kutoa ruhusa za KMS kwa cloud storage service agent wa project.
Kumbuka kwamba kuwepo kwa binding kwenye level ya project kama roles/cloudkms.cryptoKeyEncrypterDecrypter kwa Storage service agent bado kutawezesha decrypt kwa keys ndani ya project ileile.
Enumeration
Kuwa na permissions to list the keys hivi ndivyo unavyoweza kuzipata:
# 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
Post Exploitation
Marejeleo
Tip
Jifunze na ufanye mazoezi ya AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na ufanye mazoezi ya GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na ufanye mazoezi ya Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Saidia HackTricks
- Angalia the subscription plans!
- Jiunge na 💬 Discord group au the telegram group au utufuate kwenye Twitter 🐦 @hacktricks_live.
- Shiriki hacking tricks kwa kutuma PRs kwa HackTricks and HackTricks Cloud github repos.
HackTricks Cloud

