
विंडोज के लिए विशेषाधिकार वृद्धि गणना स्क्रिप्ट
# PrivescCheck
सामान्य Windows **कमजोरियों** और **कॉन्फ़िगरेशन समस्याओं** को शीघ्रता से पहचानें जो आवश्यक रूप से सार्वजनिक सुरक्षा मानकों द्वारा कवर नहीं की जाती हैं, और शोषण तथा पोस्ट-एक्सप्लॉइटेशन कार्यों के लिए उपयोगी जानकारी एकत्र करें।
> [!IMPORTANT]
> इस टूल का उपयोग करते समय ध्यान रखने योग्य एक प्रमुख पहलू यह है कि सभी एक्सेस कंट्रोल जाँचें वर्तमान उपयोगकर्ता के संदर्भ में की जाती हैं। इसलिए, यदि इसे एडमिनिस्ट्रेटर विशेषाधिकारों के साथ चलाया जाता है, तो गलत निष्कर्ष उत्पन्न करने से बचने के लिए बहुत सारी कमजोरी जाँचें छोड़ दी जाती हैं।
## त्वरित शुरुआत
स्क्रिप्ट यहाँ से डाउनलोड करें: [PrivescCheck.ps1](https://github.com/itm4n/PrivescCheck/releases/latest/download/PrivescCheck.ps1)
> [!TIP]
> उपरोक्त लिंक का उपयोग सीधे PowerShell टर्मिनल में `(New-Object Net.WebClient).DownloadString(...)` के साथ भी किया जा सकता है।
### उपयोग केस 1: त्वरित मूल्यांकन
```bat
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Report TXT,HTML"
```
### उपयोग केस 2: विस्तृत मूल्यांकन
```bat
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report TXT,HTML"
```
### उपयोग केस 3: व्यापक मूल्यांकन
```bat
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report ALL"
```
## विस्तृत उपयोग
```txt
Invoke-PrivescCheck [-Extended] [-Audit] [-Risky] [-Report <FORMAT>[,...]]
[-FilePath <PREFIX>] [-Silent] [-Force]
-Extended
स्कैन में सभी "extended" जाँचें शामिल करें।
-Audit
स्कैन में सभी "audit" जाँचें शामिल करें।
-Risky
स्कैन में सभी "risky" जाँचें शामिल करें। ये वे जाँचें हैं जो अपने
व्यवहार के कारण सक्रिय EDR काउंटर उपायों को ट्रिगर करने की
संभावना रखती हैं।
-Report <FORMAT>[,...]
आउटपुट रिपोर्ट फ़ाइल प्रारूप निर्दिष्ट करें (TXT, HTML, CSV, XML)। सभी
रिपोर्ट फ़ाइलें उत्पन्न करने के लिए उपनाम 'ALL' का उपयोग करें। डिफ़ॉल्ट रूप से,
आउटपुट फ़ाइल नाम स्वचालित रूप से उत्पन्न होता है। स्पष्ट रूप से निर्दिष्ट करने के लिए
विकल्प '-FilePath' का उपयोग करें।
-FilePath <PREFIX>
आउटपुट रिपोर्ट फ़ाइल नाम या निर्देशिका निर्दिष्ट करें। फ़ाइल एक्सटेंशन
स्वचालित रूप से जोड़ा जाता है। यदि एक निर्देशिका पथ प्रदान किया जाता है, तो
फ़ाइल नाम रनटाइम पर स्वचालित रूप से उत्पन्न होता है।
-Silent
टर्मिनल आउटपुट को दबाएँ। यह उपयोगी हो सकता है यदि आप स्क्रिप्ट को
बैच फ़ाइल के भाग के रूप में चलाना चाहते हैं, उदाहरण के लिए किसी शेड्यूल किए गए कार्य में।
-Force
निष्पादन को बाध्य करें और चेतावनियों को अनदेखा करें। आमतौर पर, स्क्रिप्ट रुक जाती है यदि
इसे एडमिनिस्ट्रेटर विशेषाधिकारों के साथ निष्पादित किया जाता है। इसे फिर भी निष्पादित करने के लिए
इस विकल्प का उपयोग करें।
```
## रिपोर्ट फ़ाइल प्रारूप
### रिपोर्ट फ़ाइल प्रारूप > TXT
**रॉ टेक्स्ट रिपोर्ट** उत्पन्न करने के लिए विकल्प `-Report TXT` का उपयोग करें। आउटपुट टर्मिनल आउटपुट के समान है, सिवाय इसके कि इसमें टेक्स्ट एडिटर्स के साथ बेहतर संगतता के लिए केवल ASCII वर्ण होते हैं।

### रिपोर्ट फ़ाइल प्रारूप > HTML
**HTML रिपोर्ट** उत्पन्न करने के लिए विकल्प `-Report HTML` का उपयोग करें। आउटपुट फ़ाइल को वेब ब्राउज़र में खोला जा सकता है। इंटरनेट कनेक्शन की आवश्यकता नहीं है क्योंकि इसकी कोई बाहरी निर्भरता नहीं है। डेटा को विज़ुअलाइज़ करने के लिए यह रॉ टेक्स्ट रिपोर्ट की तुलना में अधिक सुविधाजनक है। इसके अतिरिक्त, यह **सॉर्टिंग** और **फ़िल्टरिंग** क्षमताएँ प्रदान करता है!

### रिपोर्ट फ़ाइल प्रारूप > CSV या XML
**CSV या XML रिपोर्ट** उत्पन्न करने के लिए विकल्प `-Report CSV` या `-Report XML` का उपयोग करें। आउटपुट फ़ाइल का उद्देश्य स्वचालित रिपोर्टिंग टूल्स द्वारा परिणामों की पार्सिंग को सुविधाजनक बनाना है।
> [!NOTE]
> हालाँकि आउटपुट प्रारूप प्रलेखित नहीं है (अभी तक), आप पहले से उत्पन्न फ़ाइल की संरचना का विश्लेषण करके इसे आसानी से समझ सकते हैं। आप प्रत्येक जाँच के `Id` मान को विशिष्ट पहचानकर्ता के रूप में उपयोग कर सकते हैं।
## जाँच प्रकार
### जाँच प्रकार > Base
`Base` प्रकार की जाँचें हमेशा निष्पादित की जाएँगी, जब तक कि स्क्रिप्ट एडमिनिस्ट्रेटर के रूप में न चलाई जाए। ये मुख्य रूप से विशेषाधिकार वृद्धि कमजोरियों, या अन्य महत्वपूर्ण समस्याओं की पहचान करने के लिए हैं।
### जाँच प्रकार > Extended
`Extended` प्रकार की जाँचें केवल तभी निष्पादित की जा सकती हैं जब कमांड लाइन पर विकल्प `-Extended` निर्दिष्ट किया गया हो। ये मुख्य रूप से अतिरिक्त जानकारी प्रदान करने के लिए हैं जो शोषण विकास, या पोस्ट-एक्सप्लॉइटेशन के लिए उपयोगी हो सकती है।
### जाँच प्रकार > Audit
`Audit` प्रकार की जाँचें केवल तभी निष्पादित की जा सकती हैं जब कमांड लाइन पर विकल्प `-Audit` निर्दिष्ट किया गया हो। ये मुख्य रूप से कॉन्फ़िगरेशन ऑडिट के संदर्भ में प्रासंगिक जानकारी प्रदान करने के लिए हैं।
## सुझाव और युक्तियाँ
### PowerShell निष्पादन नीति
डिफ़ॉल्ट रूप से, PowerShell [निष्पादन नीति](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies) क्लाइंट्स पर `Restricted`, और सर्वर पर `RemoteSigned` पर सेट होती है, जब एक नया `powershell.exe` प्रक्रिया शुरू की जाती है। ये नीतियाँ (अहस्ताक्षरित) स्क्रिप्ट्स के निष्पादन को अवरुद्ध करती हैं, लेकिन उन्हें वर्तमान स्कोप के भीतर निम्नानुसार ओवरराइड किया जा सकता है।
```powershell
Set-ExecutionPolicy Bypass -Scope Process -Force
. .\PrivescCheck.ps1
```
हालाँकि, यह ट्रिक तब काम नहीं करती जब निष्पादन नीति GPO के माध्यम से लागू की जाती है। इस मामले में, एक नया PowerShell सत्र शुरू करने के बाद, आप स्क्रिप्ट को निम्नानुसार लोड कर सकते हैं।
```powershell
Get-Content .\PrivescCheck.ps1 | Out-String | Invoke-Expression
```
### PowerShell संस्करण 2
[Constrained Language Mode](https://devblogs.microsoft.com/powershell/powershell-constrained-language-mode/) को बायपास करने का एक सामान्य तरीका PSv2 का उपयोग करना है क्योंकि यह इस सुरक्षा को लागू नहीं करता। इसलिए, विकास प्रयास का एक महत्वपूर्ण हिस्सा इस रेट्रो-संगतता को बनाए रखने में जाता है।
> [!NOTE]
> हालाँकि PowerShell संस्करण 2 ~~अभी भी Windows के हालिया संस्करणों पर डिफ़ॉल्ट रूप से सक्षम है~~ ([Windows से PowerShell 2.0 हटाना](https://support.microsoft.com/en-us/topic/powershell-2-0-removal-from-windows-fe6d1edc-2ed2-4c33-b297-afe82a64200a)), यह .Net फ्रेमवर्क संस्करण 2.0 के बिना नहीं चल सकता, जिसके लिए मैन्युअल इंस्टॉल की आवश्यकता होती है।
### Metasploit टाइमआउट
यदि आप इस स्क्रिप्ट को Meterpreter सत्र के भीतर चलाते हैं, तो आपको संभवतः "timeout" त्रुटि मिलेगी। ऐसा इसलिए है क्योंकि Metasploit 15 सेकंड का डिफ़ॉल्ट टाइमआउट मान उपयोग करता है, जो स्क्रिप्ट के सामान्य निष्पादन को पूरा करने के लिए पर्याप्त नहीं है।
```console
meterpreter > load powershell
Loading extension powershell...Success.
meterpreter > powershell_import /local/path/to/PrivescCheck.ps1
[+] File successfully imported. No result was returned.
meterpreter > powershell_execute "Invoke-PrivescCheck"
[-] Error running command powershell_execute: Rex::TimeoutError Operation timed out.
```
`sessions` कमांड के `-t` विकल्प के माध्यम से एक अलग टाइमआउट सेट करना संभव है ([प्रलेखन](https://www.offensive-security.com/metasploit-unleashed/msfconsole-commands/))। निम्नलिखित उदाहरण में, ID `1` वाले सत्र के लिए 2 मिनट का टाइमआउट सेट किया गया है, लेकिन आप इससे भी अधिक मान सेट करना चाह सकते हैं।
```console
msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"
```
## बिल्ड
### डेटा अपडेट करें
कुछ जाँचें ऑनलाइन डेटा पर निर्भर करती हैं (*जैसे* LOL ड्राइवर्स डेटाबेस), लेकिन स्क्रिप्ट ऑफ़लाइन काम करने के लिए है। इस समस्या को हल करने के लिए, डेटा स्क्रिप्ट में एम्बेड किया जाता है, और इसलिए इसे नियमित रूप से अपडेट करने की आवश्यकता होती है। यह प्रक्रिया आधिकारिक रिलीज़ में पूरी तरह से स्वचालित है, लेकिन यदि आप स्क्रिप्ट को स्थानीय रूप से बिल्ड करना चाहते हैं, तो आप वैकल्पिक रूप से इसे मैन्युअल रूप से कर सकते हैं।
```bat
powershell -ep bypass ". .\build\Build.ps1; Update-LolDriverFile"
```
### स्क्रिप्ट बिल्ड करें
स्क्रिप्ट को बिल्ड करना नीचे दिए गए कमांड को चलाने जितना ही सरल है। आउटपुट फ़ाइल `.\dist\` फ़ोल्डर में सहेजी जाएगी।
```bat
powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck"
```
बिल्ड स्क्रिप्ट प्रत्येक मॉड्यूल के लिए एक वेरिएबल नाम चुनने के लिए यादृच्छिक रूप से उत्पन्न **seed** के साथ एक छद्म-यादृच्छिक संख्या जनरेटर का उपयोग करती है। यदि आप बिल्ड्स में पुनरुत्पादक परिणाम उत्पन्न करना चाहते हैं, तो आप विकल्प `-NoNewSeed` का उपयोग करके पहले उत्पन्न **seed** का पुनः उपयोग करना चुन सकते हैं।
```bat
powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck -NoNewSeed"
```
## श्रेय
- शब्द सूची - [CBHue/PyFuscation](https://github.com/CBHue/PyFuscation)
- ज्ञात कमजोर ड्राइवर सूची - [https://www.loldrivers.io/](https://www.loldrivers.io/)