GCP - KMS Enum

Reading time: 6 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

KMS

Cloud Key Management Service क्रिप्टोग्राफिक कुंजियों के लिए एक सुरक्षित भंडारण के रूप में कार्य करता है, जो संवेदनशील डेटा को एन्क्रिप्ट और डिक्रिप्ट करने जैसी प्रक्रियाओं के लिए आवश्यक हैं। ये कुंजियाँ कुंजी रिंग के भीतर व्यवस्थित की जाती हैं, जिससे संरचित प्रबंधन संभव होता है। इसके अलावा, पहुँच नियंत्रण को सावधानीपूर्वक कॉन्फ़िगर किया जा सकता है, या तो व्यक्तिगत कुंजी स्तर पर या पूरे कुंजी रिंग के लिए, यह सुनिश्चित करते हुए कि अनुमतियाँ सुरक्षा आवश्यकताओं के साथ सटीक रूप से संरेखित हैं।

KMS कुंजी रिंग डिफ़ॉल्ट रूप से वैश्विक के रूप में बनाई जाती हैं, जिसका अर्थ है कि उस कुंजी रिंग के भीतर की कुंजियाँ किसी भी क्षेत्र से सुलभ हैं। हालाँकि, विशिष्ट क्षेत्रों में विशिष्ट कुंजी रिंग बनाना संभव है।

कुंजी सुरक्षा स्तर

  • सॉफ़्टवेयर कुंजियाँ: सॉफ़्टवेयर कुंजियाँ KMS द्वारा पूरी तरह से सॉफ़्टवेयर में बनाई और प्रबंधित की जाती हैं। ये कुंजियाँ किसी भी हार्डवेयर सुरक्षा मॉड्यूल (HSM) द्वारा सुरक्षित नहीं होती हैं और परीक्षण और विकास उद्देश्यों के लिए उपयोग की जा सकती हैं। सॉफ़्टवेयर कुंजियाँ उत्पादन उपयोग के लिए अनुशंसित नहीं हैं क्योंकि ये कम सुरक्षा प्रदान करती हैं और हमलों के प्रति संवेदनशील होती हैं।
  • क्लाउड-होस्टेड कुंजियाँ: क्लाउड-होस्टेड कुंजियाँ KMS द्वारा क्लाउड में एक अत्यधिक उपलब्ध और विश्वसनीय बुनियादी ढाँचे का उपयोग करके बनाई और प्रबंधित की जाती हैं। ये कुंजियाँ HSMs द्वारा सुरक्षित होती हैं, लेकिन HSMs किसी विशेष ग्राहक के लिए समर्पित नहीं होते। क्लाउड-होस्टेड कुंजियाँ अधिकांश उत्पादन उपयोग मामलों के लिए उपयुक्त हैं।
  • बाहरी कुंजियाँ: बाहरी कुंजियाँ KMS के बाहर बनाई और प्रबंधित की जाती हैं, और क्रिप्टोग्राफिक संचालन में उपयोग के लिए KMS में आयात की जाती हैं। बाहरी कुंजियाँ ग्राहक की पसंद के अनुसार हार्डवेयर सुरक्षा मॉड्यूल (HSM) या सॉफ़्टवेयर पुस्तकालय में संग्रहीत की जा सकती हैं

कुंजी के उद्देश्य

  • समानांतर एन्क्रिप्शन/डिक्रिप्शन: एकल कुंजी का उपयोग करके डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए उपयोग किया जाता है। समानांतर कुंजियाँ बड़े डेटा वॉल्यूम को एन्क्रिप्ट और डिक्रिप्ट करने के लिए तेज और कुशल होती हैं।
  • समर्थित: cryptoKeys.encrypt, cryptoKeys.decrypt
  • असमान्य हस्ताक्षर: दो पक्षों के बीच सुरक्षित संचार के लिए कुंजी साझा किए बिना उपयोग किया जाता है। असमान्य कुंजियाँ एक जोड़ी में आती हैं, जिसमें एक सार्वजनिक कुंजी और एक निजी कुंजी होती है। सार्वजनिक कुंजी दूसरों के साथ साझा की जाती है, जबकि निजी कुंजी को गुप्त रखा जाता है।
  • समर्थित: cryptoKeyVersions.asymmetricSign, cryptoKeyVersions.getPublicKey
  • असमान्य डिक्रिप्शन: संदेश या डेटा की प्रामाणिकता को सत्यापित करने के लिए उपयोग किया जाता है। एक डिजिटल हस्ताक्षर एक निजी कुंजी का उपयोग करके बनाया जाता है और संबंधित सार्वजनिक कुंजी का उपयोग करके सत्यापित किया जा सकता है।
  • समर्थित: cryptoKeyVersions.asymmetricDecrypt, cryptoKeyVersions.getPublicKey
  • MAC हस्ताक्षर: एक गुप्त कुंजी का उपयोग करके संदेश प्रमाणीकरण कोड (MAC) बनाकर डेटा की अखंडता और प्रामाणिकता सुनिश्चित करने के लिए उपयोग किया जाता है। HMAC नेटवर्क प्रोटोकॉल और सॉफ़्टवेयर अनुप्रयोगों में संदेश प्रमाणीकरण के लिए सामान्यतः उपयोग किया जाता है।
  • समर्थित: cryptoKeyVersions.macSign, cryptoKeyVersions.macVerify

रोटेशन अवधि और विनाश के लिए कार्यक्रमित अवधि

डिफ़ॉल्ट रूप से, प्रत्येक 90 दिन लेकिन इसे आसान और पूर्ण रूप से अनुकूलित किया जा सकता है।

"विनाश के लिए कार्यक्रमित" अवधि वह समय है जब उपयोगकर्ता कुंजी को हटाने के लिए कहता है और जब तक कुंजी हटाई नहीं जाती। इसे कुंजी बनाए जाने के बाद नहीं बदला जा सकता (डिफ़ॉल्ट 1 दिन)।

प्राथमिक संस्करण

प्रत्येक KMS कुंजी के कई संस्करण हो सकते हैं, उनमें से एक को डिफ़ॉल्ट होना चाहिए, यह वही होगा जिसका उपयोग तब किया जाएगा जब KMS कुंजी के साथ बातचीत करते समय कोई संस्करण निर्दिष्ट नहीं किया गया हो

गणना

कुंजियों को सूचीबद्ध करने के लिए अनुमतियाँ होने पर, आप उन्हें इस प्रकार एक्सेस कर सकते हैं:

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

विशेषाधिकार वृद्धि

GCP - KMS Privesc

पोस्ट एक्सप्लोइटेशन

GCP - KMS Post Exploitation

संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें