GCP - KMS Enum
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
KMS
The Cloud Key Management Service λειτουργεί ως ασφαλής αποθήκη για cryptographic keys, που είναι απαραίτητα για ενέργειες όπως encrypting and decrypting sensitive data. Τα κλειδιά οργανώνονται μέσα σε key rings, επιτρέποντας δομημένη διαχείριση. Επιπλέον, ο έλεγχος πρόσβασης μπορεί να ρυθμιστεί με λεπτομέρεια, είτε σε επίπεδο μεμονωμένου κλειδιού είτε για ολόκληρο το key ring, εξασφαλίζοντας ότι οι άδειες ευθυγραμμίζονται με τις απαιτήσεις ασφαλείας.
Τα KMS key rings δημιουργούνται εξ ορισμού ως global, που σημαίνει ότι τα κλειδιά μέσα σε αυτό το key ring είναι προσβάσιμα από οποιαδήποτε region. Ωστόσο, είναι δυνατόν να δημιουργηθούν συγκεκριμένα key rings σε συγκεκριμένες περιοχές.
Key Protection Level
- Software keys: Τα software keys δημιουργούνται και διαχειρίζονται από το KMS εξ ολοκλήρου σε software. Αυτά τα κλειδιά δεν προστατεύονται από κάποιο hardware security module (HSM) και μπορούν να χρησιμοποιηθούν για testing και development purposes. Τα software keys δεν συνιστώνται για παραγωγική χρήση επειδή παρέχουν χαμηλό επίπεδο ασφάλειας και είναι ευάλωτα σε επιθέσεις.
- Cloud-hosted keys: Τα cloud-hosted keys δημιουργούνται και διαχειρίζονται από το KMS στο cloud χρησιμοποιώντας μια υψηλά διαθέσιμη και αξιόπιστη υποδομή. Αυτά τα κλειδιά προστατεύονται από HSMs, αλλά τα HSMs δεν είναι αφιερωμένα σε συγκεκριμένο πελάτη. Τα cloud-hosted keys είναι κατάλληλα για τις περισσότερες παραγωγικές χρήσεις.
- External keys: Τα external keys δημιουργούνται και διαχειρίζονται εκτός του KMS, και εισάγονται στο KMS για χρήση σε κρυπτογραφικές λειτουργίες. Τα external keys μπορούν να αποθηκευτούν σε hardware security module (HSM) ή σε software library, ανάλογα με την προτίμηση του πελάτη.
Key Purposes
- Symmetric encryption/decryption: Χρησιμοποιείται για την κρυπτογράφηση και αποκρυπτογράφηση δεδομένων χρησιμοποιώντας ένα ενιαίο κλειδί για τις δύο λειτουργίες. Τα symmetric keys είναι γρήγορα και αποδοτικά για την κρυπτογράφηση και αποκρυπτογράφηση μεγάλου όγκου δεδομένων.
- Supported: cryptoKeys.encrypt, cryptoKeys.decrypt
- Asymmetric Signing: Χρησιμοποιείται για ασφαλή επικοινωνία μεταξύ δύο μερών χωρίς κοινοποίηση του κλειδιού. Τα asymmetric keys έρχονται σε ζεύγος, αποτελούμενα από ένα public key και ένα private key. Το public key κοινοποιείται σε άλλους, ενώ το private key κρατιέται μυστικό.
- Supported: cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
- Asymmetric Decryption: Χρησιμοποιείται για την επαλήθευση της αυθεντικότητας ενός μηνύματος ή δεδομένων. Μια ψηφιακή υπογραφή δημιουργείται χρησιμοποιώντας ένα private key και μπορεί να επαληθευτεί με το αντίστοιχο public key.
- Supported: cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
- MAC Signing: Χρησιμοποιείται για να εξασφαλίσει την ακεραιότητα και την αυθεντικότητα των δεδομένων δημιουργώντας ένα message authentication code (MAC) χρησιμοποιώντας ένα secret key. Το HMAC χρησιμοποιείται συνήθως για message authentication σε πρωτόκολλα δικτύου και εφαρμογές λογισμικού.
- Supported: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify
Rotation Period & Programmed for destruction period
Από προεπιλογή, κάθε 90 ημέρες, αλλά μπορεί να προσαρμοστεί εύκολα και πλήρως.
Η περίοδος “Programmed for destruction” είναι ο χρόνος από τη στιγμή που ο χρήστης ζητάει τη διαγραφή του κλειδιού μέχρι το κλειδί να διαγραφεί. Δεν μπορεί να αλλάξει αφού το κλειδί δημιουργηθεί (προεπιλογή 1 ημέρα).
Primary Version
Κάθε KMS key μπορεί να έχει πολλές εκδόσεις, μία από αυτές πρέπει να είναι η default, η οποία θα χρησιμοποιείται όταν δεν καθορίζεται έκδοση κατά την αλληλεπίδραση με το KMS key.
CMEK permission model
Όταν αντικείμενα στο Cloud Storage είναι κρυπτογραφημένα με CMEK, οι κλήσεις decrypt/encrypt στο KMS γίνονται από το project’s Cloud Storage service agent whose email is service-${BUCKET_PROJECT_NUMBER}@gs-project-accounts.iam.gserviceaccount.com), όχι απευθείας από τον τελικό χρήστη που διαβάζει το αντικείμενο.
Αυτό σημαίνει ότι για να διαβαστεί κάτι κρυπτογραφημένο με CMEK:
- Το project’s cloud storage service agent πρέπει να έχει δικαιώματα KMS πάνω στο χρησιμοποιούμενο KMS key (συνήθως
roles/cloudkms.cryptoKeyEncrypterDecrypter). - Ο χρήστης χρειάζεται μόνο δικαιώματα ανάγνωσης αντικειμένου (για παράδειγμα
storage.objects.get). Δεν χρειάζεται δικαιώματα πάνω στο KMS key.
Αυτό σημαίνει ότι για να ελεγχθεί η πρόσβαση σε κρυπτογραφημένα δεδομένα με το KMS key, χρειάζεται να προστεθούν/αφαιρεθούν δικαιώματα KMS στο project’s cloud storage service agent.
Σημειώστε ότι μια project-level binding όπως roles/cloudkms.cryptoKeyEncrypterDecrypter για το Storage service agent θα επιτρέψει ακόμη την αποκρυπτογράφηση με τα keys στο ίδιο project.
Enumeration
Εφόσον έχετε permissions to list the keys, έτσι μπορείτε να έχετε πρόσβαση σε αυτά:
# 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
Αναφορές
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

