GCP - KMS Enum
Tip
Nauči & vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči & vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči & vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Pogledajte subscription plans!
- Pridružite se 💬 Discord group or the telegram group or pratite nas na Twitter 🐦 @hacktricks_live.
- Podelite hacking tricks slanjem PR-ova na HackTricks i HackTricks Cloud github repos.
KMS
The Cloud Key Management Service služi kao sigurno skladište za kriptografske ključeve, koji su neophodni za operacije kao što su šifrovanje i dešifrovanje osetljivih podataka. Ti ključevi su organizovani unutar key rings, što omogućava strukturisano upravljanje. Pored toga, kontrola pristupa može se precizno konfigurisati, bilo na nivou pojedinačnog ključa ili za ceo key ring, čime se obezbeđuje da su dozvole tačno usklađene sa bezbednosnim zahtevima.
KMS key rings su po defaultu kreirani kao globalni, što znači da su ključevi unutar tog key ring-a dostupni iz bilo koje regije. Međutim, moguće je kreirati specifične key rings u određenim regionima.
Key Protection Level
- Software keys: Software keys su kreirane i upravljane od strane KMS potpuno softverski. Ovi ključevi nisu zaštićeni nijednim hardware security module (HSM) i mogu se koristiti za testiranje i razvoj. Software keys se ne preporučuju za produkciju jer pružaju nisku bezbednost i podložni su napadima.
- Cloud-hosted keys: Cloud-hosted keys su kreirane i upravljane od strane KMS u cloudu koristeći visoko dostupnu i pouzdanu infrastrukturu. Ovi ključevi su zaštićeni HSM-ovima, ali HSM-ovi nisu posvećeni određenom kupcu. Cloud-hosted keys su pogodni za većinu produkcionih scenarija.
- External keys: External keys su kreirani i upravljani izvan KMS-a, i uvoze se u KMS radi korišćenja u kriptografskim operacijama. External keys mogu biti skladišteni u hardverskom sigurnosnom modulu (HSM) ili softverskoj biblioteci, u zavisnosti od preferencija kupca.
Key Purposes
- Symmetric encryption/decryption: Koristi se za šifrovanje i dešifrovanje podataka koristeći isti ključ za obe operacije. Simetrični ključevi su brzi i efikasni za šifrovanje i dešifrovanje velikih količina podataka.
- Supported: cryptoKeys.encrypt, cryptoKeys.decrypt
- Asymmetric Signing: Koristi se za sigurnu komunikaciju između dve strane bez deljenja privatnog ključa. Asimetrični ključevi dolaze u paru, koji se sastoje od javnog ključa i privatnog ključa. Javni ključ se deli sa drugima, dok se privatni ključ čuva u tajnosti.
- Supported: cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
- Asymmetric Decryption: Koristi se za verifikaciju autentičnosti poruke ili podataka. Digitalni potpis se kreira korišćenjem privatnog ključa i može se verifikovati koristeći odgovarajući javni ključ.
- Supported: cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
- MAC Signing: Koristi se da obezbedi integritet i autentičnost podataka kreiranjem message authentication code (MAC) koristeći tajni ključ. HMAC se često koristi za autentikaciju poruka u mrežnim protokolima i softverskim aplikacijama.
- Supported: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify
Rotation Period & Programmed for destruction period
Po defaultu, svaka 90 dana, ali to može biti lako i potpuno prilagođeno.
Period “Programmed for destruction” je vreme od trenutka kada korisnik zatraži brisanje ključa do trenutka kada je ključ obrisan. Ne može se promeniti nakon što je ključ kreiran (default 1 dan).
Primary Version
Svaki KMS ključ može imati više verzija, jedna od njih mora biti podrazumevana — to će biti verzija koja se koristi kada verzija nije specificirana pri interakciji sa KMS ključem.
CMEK permission model
Kada su objekti u Cloud Storage-u šifrovani pomoću CMEK, decrypt/encrypt pozive ka KMS vrši servisni agent Cloud Storage projekta čiji je email service-${BUCKET_PROJECT_NUMBER}@gs-project-accounts.iam.gserviceaccount.com), a ne direktno krajnji korisnik koji čita objekat.
To znači da da bi se nešto pročitalo šifrovano CMEK-om:
- Service agent Cloud Storage projekta mora imati KMS dozvole nad korišćenim KMS ključem (tipično
roles/cloudkms.cryptoKeyEncrypterDecrypter). - Korisniku su potrebne samo dozvole za čitanje objekta (na primer
storage.objects.get). On ne treba dozvole nad KMS ključem.
Ovo znači da, da biste kontrolisali pristup šifrovanim podacima pomoću KMS ključa, potrebno je dodavati/uklanjati KMS dozvole servisnom agentu Cloud Storage-a projekta.
Napomena: ukoliko postoji vezivanje na nivou projekta kao roles/cloudkms.cryptoKeyEncrypterDecrypter za Storage service agenta, to će i dalje omogućiti dešifrovanje sa ključevima u istom projektu.
Enumeration
Ako imate dozvole za listanje ključeva, ovako im možete pristupiti:
# 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
Reference
Tip
Nauči & vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči & vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči & vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Pogledajte subscription plans!
- Pridružite se 💬 Discord group or the telegram group or pratite nas na Twitter 🐦 @hacktricks_live.
- Podelite hacking tricks slanjem PR-ova na HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

