AWS - KMS Enum

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

KMS - Key Management Service

AWS Key Management Service (AWS KMS) को एक प्रबंधित सेवा के रूप में प्रस्तुत किया गया है, जो उपयोगकर्ताओं को ग्राहक मास्टर कुंजियों को बनाने और प्रबंधित करने की प्रक्रिया को सरल बनाता है। ये CMKs उपयोगकर्ता डेटा के एन्क्रिप्शन में महत्वपूर्ण हैं। AWS KMS की एक विशेषता यह है कि CMKs मुख्य रूप से हार्डवेयर सुरक्षा मॉड्यूल्स (HSMs) द्वारा सुरक्षित हैं, जो एन्क्रिप्शन कुंजियों की सुरक्षा को बढ़ाता है।

KMS सममित्र गणित का उपयोग करता है। यह जानकारी को विश्राम के रूप में एन्क्रिप्ट करने के लिए उपयोग किया जाता है (उदाहरण के लिए, S3 के अंदर)। यदि आपको डेटा को ट्रांजिट में एन्क्रिप्ट करने की आवश्यकता है तो आपको TLS जैसी कुछ चीज़ का उपयोग करना होगा।

KMS एक क्षेत्र विशिष्ट सेवा है।

Amazon के प्रशासक आपके कुंजियों तक पहुंच नहीं पाते। वे आपकी कुंजियों को पुनर्प्राप्त नहीं कर सकते और वे आपकी कुंजियों का एन्क्रिप्शन करने में आपकी मदद नहीं करते। AWS बस ऑपरेटिंग सिस्टम और उसके अंतर्निहित एप्लिकेशन का प्रबंधन करता है, हमें हमारी एन्क्रिप्शन कुंजियों का प्रबंधन करना है और उन कुंजियों का उपयोग कैसे किया जाए उसका प्रबंधन करना है।

ग्राहक मास्टर कुंजियाँ (CMK): 4KB आकार तक के डेटा को एन्क्रिप्ट कर सकती हैं। वे सामान्यत: डेटा एन्क्रिप्शन कुंजियों (DEKs) को बनाने, एन्क्रिप्ट करने और डिक्रिप्ट करने के लिए प्रयोग किए जाते हैं। फिर DEKs का उपयोग डेटा को एन्क्रिप्ट करने के लिए किया जाता है।

ग्राहक मास्टर कुंजी (CMK) AWS KMS में एक मास्टर कुंजी का तार्किक प्रतिनिधित्व है। मास्टर कुंजी की पहचानकर्ता और अन्य मेटाडेटा के अतिरिक्त, जिसमें इसकी निर्माण तिथि, विवरण, और कुंजी स्थिति शामिल हैं, एक CMK डेटा को एन्क्रिप्ट और डिक्रिप्ट करने के लिए उपयोग किए जाने वाले कुंजी सामग्री शामिल है। जब आप एक CMK बनाते हैं, तो डिफ़ॉल्ट रूप से, AWS KMS उस CMK के लिए कुंजी सामग्री उत्पन्न करता है। हालांकि, आप एक CMK बिना कुंजी सामग्री के बनाने और फिर उस CMK में अपनी कुंजी सामग्री आयात कर सकते हैं।

दो प्रकार की मास्टर कुंजियाँ हैं:

  • AWS प्रबंधित CMKs: डेटा को एन्क्रिप्ट करने के लिए अन्य सेवाओं द्वारा उपयोग किया जाता है। यह उस सेवा द्वारा उपयोग किया जाता है जिसने उसे बनाया है क्षेत्र में। यह पहली बार उस सेवा में एन्क्रिप्शन को लागू करने पर बनाई जाती है। हर 3 साल में रोटेट होती है और इसे बदलना संभावना नहीं है।

  • ग्राहक प्रबंधक CMKs: लचीलाता, रोटेशन, विन्यासनीय पहुंच और कुंजी नीति। कुंजियों को सक्षम और अक्षम करें।

Key Policies

ये किसको कुंजी का उपयोग करने और पहुंचने की अनुमति हैं

डिफ़ॉल्ट रूप से:

  • यह AWS खाता को पूरी पहुंच देता है जिसका KMS कुंजी का मालिक है।

अन्य AWS संसाधन नीतियों की भांति, AWS KMS कुंजी नीति स्वचालित रूप से किसी खाते या उसके किसी उपयोगकर्ताओं को अनुमति नहीं देती। खाते प्रशासकों को अनुमति देने के लिए, कुंजी नीति में एक स्पष्ट बयान शामिल होना चाहिए, जैसे यह एक।

  • खाते को अनुमति देने के बिना ("AWS": "arn:aws:iam::111122223333:root") IAM अनुमतियाँ काम नहीं करेंगी।

  • यह खाते को IAM नीतियों का उपयोग करने की अनुमति देता है KMS कुंजी तक पहुंचने के लिए, कुंजी नीति के अतिरिक्त।

इस अनुमति के बिना, KMS कुंजी तक पहुंचने की अनुमति देने वाली IAM नीतियाँ असक्षम होती हैं, हालांकि KMS कुंजी तक पहुंचने की अनुमति देने वाली IAM नीतियाँ काम करती हैं।

  • यह कुंजी को अप्रबंधनीय होने के जोखिम को कम करता है जिसे खाते प्रशासकों, जिसमें खाते का मूल उपयोगकर्ता शामिल है, पहुंच नियंत्रण अनुमति देता है, जिसे हटाया नहीं जा सकता।

डिफ़ॉल्ट नीति उदाहरण:

{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:*",
"Resource": "*"
}

अगर खाता अनुमति दी गई है ("arn:aws:iam::111122223333:root") तो खाते से एक प्रमुख को KMS कुंजी का उपयोग करने के लिए IAM अनुमतियों की आवश्यकता होगी। हालांकि, यदि किसी भूमिका की ARN खाते में विशेष रूप से अनुमति दी गई है, तो उस भूमिका को IAM अनुमतियों की आवश्यकता नहीं होगी

नीति विवरण

नीति की गुणधर्म:

  • JSON आधारित दस्तावेज़

  • संसाधित संसाधन --> प्रभावित संसाधन ("*" हो सकता है)

  • कार्रवाई --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (अनुमतियाँ)

  • प्रभाव --> अनुमति/अस्वीकृति

  • प्रमुख --> प्रभावित arn

  • शर्तें (वैकल्पिक) --> अनुमतियाँ देने के लिए शर्त

अनुदान:

  • अन्य AWS प्रमुख को अपनी अनुमतियों को अनुदान देने की अनुमति है। आपको AWS KMS APIs का उपयोग करके इन्हें बनाना होगा। इसमें CMK पहचानकर्ता, अनुदान प्रमुख और आवश्यक स्तर का ऑपरेशन (Decrypt, Encrypt, GenerateDataKey...) निर्दिष्ट किया जा सकता है।

  • अनुदान बनाया जाने के बाद एक GrantToken और एक GratID जारी किए जाते हैं।

पहुंच:

  • कुंजी नीति के माध्यम से -- यदि यह मौजूद है, तो यह IAM नीति पर प्राधानता लेता है

  • IAM नीति के माध्यम से

  • अनुदान के माध्यम से

कुंजी प्रशासक

कुंजी प्रशासक डिफ़ॉल्ट रूप से:

  • KMS को प्रबंधित करने का अधिकार है, लेकिन डेटा को एन्क्रिप्ट या डिक्रिप्ट करने का अधिकार नहीं है

  • केवल IAM उपयोगकर्ता और भूमिकाएँ कुंजी प्रशासकों सूची में जोड़ी जा सकती हैं (समूह नहीं)

  • यदि बाहरी CMK का उपयोग किया जाता है, तो कुंजी प्रशासकों को कुंजी सामग्री आयात करने की अनुमति होती है

CMKs का चक्रवृद्धि

  • जितने अधिक समय तक एक ही कुंजी स्थान पर छोड़ी जाती है, उस समय के साथ उस कुंजी के साथ एन्क्रिप्ट किया गया डेटा ज्यादा होता है, और यदि उस कुंजी को भंग किया जाता है, तो डेटा का व्यापक क्षेत्र जोखिम में है। इसके अतिरिक्त, कुंजी जितना अधिक सक्रिय होती है, उसे भंग किया जाने की संभावना बढ़ जाती है।

  • KMS हर 365 दिन में ग्राहक कुंजी को चक्रवृद्धि करता है (या आप चाहें तो प्रक्रिया को मैन्युअल रूप से कभी भी कर सकते हैं) और AWS द्वारा प्रबंधित कुंजियाँ हर 3 वर्ष में और इस समय को यह बदला नहीं जा सकता है।

  • पुरानी कुंजियाँ उस समय तक रखी जाती हैं जब चक्रवृद्धि से पहले एन्क्रिप्ट किया गया डेटा डिक्रिप्ट करने के लिए है

  • एक टूट में, कुंजी को चक्रवृद्धि नहीं करने से खतरा हटाने के लिए कुंजी को रोटेट करने के बावजूद, संभव होगा कि संदिग्ध कुंजी के साथ एन्क्रिप्ट किए गए सभी डेटा को डिक्रिप्ट किया जा सकता है। हालांकि, नए डेटा नई कुंजी के साथ एन्क्रिप्ट किया जाएगा

  • यदि CMK अक्षम या प्रलंबित है, हटाने तक कुंजी चक्रवृद्धि करेगा नहीं जब तक CMK पुनः सक्रिय नहीं किया जाता या हटाने को रद्द नहीं किया जाता है।

मैन्युअल चक्रवृद्धि

  • एक नई CMK बनानी होगी, फिर, एक नई CMK-ID बनाई जाएगी, इसलिए आपको किसी भी एप्लिकेशन को नए CMK-ID का संदर्भ करने के लिए अपडेट करने की आवश्यकता होगी।

  • इस प्रक्रिया को आसान बनाने के लिए आप कुंजी-id का संदर्भ करने के लिए उपयोग कर सकते हैं और फिर केवल उस कुंजी को अपड

aws kms list-keys
aws kms list-key-policies --key-id <id>
aws kms list-grants --key-id <id>
aws kms describe-key --key-id <id>
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
aws kms describe-custom-key-stores

विशेषाधिकार

pageAWS - KMS Privesc

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

pageAWS - KMS Post Exploitation

स्थिरता

pageAWS - KMS Persistence

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated