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.
- PRs सबमिट करके hacking tricks साझा करें HackTricks और HackTricks Cloud github repos.
KMS
The Cloud Key Management Service एक सुरक्षित भंडारण के रूप में कार्य करता है जो क्रिप्टोग्राफिक कुंजियों के लिए है, जो कि संवेदनशील डेटा को एन्क्रिप्ट और डीक्रिप्ट करने जैसे संचालन के लिए आवश्यक हैं। ये कुंजियाँ key rings के भीतर व्यवस्थित की जाती हैं, जिससे संरचित प्रबंधन संभव होता है। इसके अलावा, access control को बारीकी से कॉन्फ़िगर किया जा सकता है — चाहे वह व्यक्तिगत key स्तर पर हो या पूरे key ring के लिए — ताकि permissions सुरक्षा आवश्यकताओं के अनुरूप सटीक रूप से सेट हों।
KMS key rings डिफ़ॉल्ट रूप से global के रूप में बनाए जाते हैं, जिसका मतलब है कि उस key ring के अंदर की कुंजियाँ किसी भी region से एक्सेस की जा सकती हैं। हालांकि, विशिष्ट regions में specific key rings बनाना संभव है।
Key Protection Level
- Software keys: सॉफ़्टवेयर कुंजियाँ KMS द्वारा पूरी तरह सॉफ़्टवेयर में बनाई और प्रबंधित की जाती हैं। ये कुंजियाँ किसी भी hardware security module (HSM) द्वारा संरक्षित नहीं होतीं और इन्हें परीक्षण और विकास के उद्देश्यों के लिए उपयोग किया जा सकता है। production उपयोग के लिए सॉफ़्टवेयर कुंजियाँ अनुशंसित नहीं हैं क्योंकि ये कम सुरक्षा प्रदान करती हैं और हमलों के प्रति संवेदनशील होती हैं।
- Cloud-hosted keys: Cloud-hosted कुंजियाँ KMS द्वारा क्लाउड में एक उच्च उपलब्ध और विश्वसनीय इंफ्रास्ट्रक्चर का उपयोग करके बनाई और प्रबंधित की जाती हैं। ये कुंजियाँ HSMs द्वारा संरक्षित होती हैं, लेकिन ये HSMs किसी विशिष्ट ग्राहक के लिए समर्पित नहीं होते। Cloud-hosted कुंजियाँ अधिकांश production उपयोग मामलों के लिए उपयुक्त हैं।
- External keys: External कुंजियाँ KMS के बाहर बनाई और प्रबंधित की जाती हैं, और क्रिप्टोग्राफिक ऑपरेशनों के लिए KMS में इम्पोर्ट की जाती हैं। External कुंजियाँ ग्राहक की प्राथमिकता के अनुसार hardware security module (HSM) या किसी सॉफ़्टवेयर लाइब्रेरी में संग्रहीत की जा सकती हैं।
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: एक secret key का उपयोग करके message authentication code (MAC) बनाकर डेटा की अखंडता और प्रामाणिकता सुनिश्चित करने के लिए उपयोग किया जाता है। HMAC आम तौर पर नेटवर्क प्रोटोकॉल और सॉफ़्टवेयर एप्लिकेशन में संदेश प्रमाणीकरण के लिए उपयोग किया जाता है।
- Supported: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify
Rotation Period & Programmed for destruction period
डिफ़ॉल्ट रूप से, हर 90 days पर होता है, लेकिन इसे आसानी से और पूरी तरह से अनुकूलित किया जा सकता है।
“Programmed for destruction” अवधि वह समय है जो उपयोगकर्ता ने कुंजी को हटाने के लिए अनुरोध किए जाने के बाद से कुंजी के वास्तविक रूप से हटाए जाने तक लगता है। इसे कुंजी बनाए जाने के बाद बदला नहीं जा सकता (डिफ़ॉल्ट 1 day)।
Primary Version
प्रत्येक KMS key की कई संस्करण हो सकते हैं, जिनमें से एक को default के रूप में सेट करना अनिवार्य होता है; यही वह संस्करण होगा जिसका उपयोग तब किया जाएगा जब KMS key के साथ इंटरैक्ट करते समय कोई version निर्दिष्ट न किया गया हो।
CMEK permission model
जब Cloud Storage में ऑब्जेक्ट्स को CMEK के साथ एन्क्रिप्ट किया जाता है, तो KMS को decrypt/encrypt कॉल्स प्रोजेक्ट के Cloud Storage service agent द्वारा किए जाते हैं (जिसका ईमेल service-${BUCKET_PROJECT_NUMBER}@gs-project-accounts.iam.gserviceaccount.com), न कि सीधे अंतिम उपयोगकर्ता द्वारा पढ़ने पर।
इसका मतलब है कि किसी CMEK द्वारा एन्क्रिप्ट की गई चीज़ को पढ़ने के लिए:
- प्रोजेक्ट का cloud storage service agent को उपयोग की गई KMS कुंजी पर KMS permissions होने चाहिए (आम तौर पर
roles/cloudkms.cryptoKeyEncrypterDecrypter)। - उपयोगकर्ता को केवल object पढ़ने की permissions चाहिए (उदाहरण के लिए
storage.objects.get)। उसे KMS कुंजी पर permissions की आवश्यकता नहीं होती।
इसका अर्थ यह भी है कि एन्क्रिप्टेड डेटा पर KMS कुंजी के माध्यम से नियंत्रित पहुँच के लिए प्रोजेक्ट के cloud storage service agent के KMS permissions को जोड़ना/हटाना आवश्यक होगा।
ध्यान दें कि Storage service agent के लिए project-level binding जैसे roles/cloudkms.cryptoKeyEncrypterDecrypter होने पर भी उसी प्रोजेक्ट की कुंजियों के साथ decrypt की अनुमति बनी रहेगी।
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.
- PRs सबमिट करके hacking tricks साझा करें HackTricks और HackTricks Cloud github repos.
HackTricks Cloud

