GCP - KMS Enum

Reading time: 5 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

KMS

Cloud Key Management Service služi kao sigurno skladište za kriptografske ključeve, koji su neophodni za operacije poput šifrovanja i dešifrovanja osetljivih podataka. Ovi ključevi su organizovani unutar ključnih prstenova, što omogućava strukturirano upravljanje. Pored toga, kontrola pristupa može se pažljivo konfigurisati, bilo na nivou pojedinačnog ključa ili za ceo ključni prsten, osiguravajući da su dozvole precizno usklađene sa bezbednosnim zahtevima.

KMS ključni prstenovi se po defaultu kreiraju kao globalni, što znači da su ključevi unutar tog ključnog prstena dostupni iz bilo koje regije. Međutim, moguće je kreirati specifične ključne prstenove u specifičnim regijama.

Nivo zaštite ključeva

  • Softverski ključevi: Softverski ključevi se kreiraju i upravljaju isključivo putem KMS-a. Ovi ključevi nisu zaštićeni nijednim hardverskim bezbednosnim modulom (HSM) i mogu se koristiti za testiranje i razvoj. Softverski ključevi se ne preporučuju za proizvodnu upotrebu jer pružaju nisku bezbednost i podložni su napadima.
  • Ključevi u oblaku: Ključevi u oblaku se kreiraju i upravljaju putem KMS-a u oblaku koristeći visoko dostupnu i pouzdanu infrastrukturu. Ovi ključevi su zaštićeni HSM-ima, ali HSM-ovi nisu posvećeni određenom korisniku. Ključevi u oblaku su pogodni za većinu proizvodnih slučajeva.
  • Eksterni ključevi: Eksterni ključevi se kreiraju i upravljaju van KMS-a, i uvoze se u KMS za korišćenje u kriptografskim operacijama. Eksterni ključevi mogu biti pohranjeni u hardverskom bezbednosnom modulu (HSM) ili softverskoj biblioteci, u zavisnosti od preferencija korisnika.

Svrhe ključeva

  • Simetrično šifrovanje/dešifrovanje: Koristi se za šifrovanje i dešifrovanje podataka koristeći jedan ključ za obe operacije. Simetrični ključevi su brzi i efikasni za šifrovanje i dešifrovanje velikih količina podataka.
  • Podržano: cryptoKeys.encrypt, cryptoKeys.decrypt
  • Asimetrično potpisivanje: Koristi se za sigurnu komunikaciju između dve strane bez deljenja ključa. Asimetrični ključevi dolaze u paru, koji se sastoji od javnog ključa i privatnog ključa. Javni ključ se deli sa drugima, dok se privatni ključ čuva u tajnosti.
  • Podržano: cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
  • Asimetrično dešifrovanje: Koristi se za verifikaciju autentičnosti poruke ili podataka. Digitalni potpis se kreira koristeći privatni ključ i može se verifikovati koristeći odgovarajući javni ključ.
  • Podržano: cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
  • MAC potpisivanje: Koristi se za osiguranje integriteta i autentičnosti podataka kreiranjem koda za autentifikaciju poruka (MAC) koristeći tajni ključ. HMAC se često koristi za autentifikaciju poruka u mrežnim protokolima i softverskim aplikacijama.
  • Podržano: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify

Period rotacije i period programiran za uništenje

Po defaultu, svaki 90 dana, ali se može lako i potpuno prilagoditi.

Period "Programiran za uništenje" je vreme od 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).

Primarna verzija

Svaki KMS ključ može imati nekoliko verzija, jedna od njih mora biti default verzija, koja će se koristiti kada verzija nije specificirana prilikom interakcije sa KMS ključem.

Enumeracija

Imajući dozvole za listanje ključeva, ovako možete pristupiti njima:

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

Eskalacija privilegija

GCP - KMS Privesc

Post Eksploatacija

GCP - KMS Post Exploitation

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks