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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
# 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
Post Eksploatacija
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.