
PrivescCheck v2026.09.02-1
विंडोज के लिए विशेषाधिकार वृद्धि गणना स्क्रिप्ट
PrivescCheck
सामान्य Windows कमजोरियों और कॉन्फ़िगरेशन समस्याओं को शीघ्रता से पहचानें जो आवश्यक रूप से सार्वजनिक सुरक्षा मानकों द्वारा कवर नहीं की जाती हैं, और शोषण तथा पोस्ट-एक्सप्लॉइटेशन कार्यों के लिए उपयोगी जानकारी एकत्र करें।
[!IMPORTANT] इस टूल का उपयोग करते समय ध्यान रखने योग्य एक प्रमुख पहलू यह है कि सभी एक्सेस कंट्रोल जाँचें वर्तमान उपयोगकर्ता के संदर्भ में की जाती हैं। इसलिए, यदि इसे एडमिनिस्ट्रेटर विशेषाधिकारों के साथ चलाया जाता है, तो गलत निष्कर्ष उत्पन्न करने से बचने के लिए बहुत सारी कमजोरी जाँचें छोड़ दी जाती हैं।
त्वरित शुरुआत
स्क्रिप्ट यहाँ से डाउनलोड करें: PrivescCheck.ps1
[!TIP] उपरोक्त लिंक का उपयोग सीधे PowerShell टर्मिनल में
(New-Object Net.WebClient).DownloadString(...)के साथ भी किया जा सकता है।
उपयोग केस 1: त्वरित मूल्यांकन
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Report TXT,HTML"
उपयोग केस 2: विस्तृत मूल्यांकन
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report TXT,HTML"
उपयोग केस 3: व्यापक मूल्यांकन
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report ALL"
विस्तृत उपयोग
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 निष्पादन नीति क्लाइंट्स पर Restricted, और सर्वर पर RemoteSigned पर सेट होती है, जब एक नया powershell.exe प्रक्रिया शुरू की जाती है। ये नीतियाँ (अहस्ताक्षरित) स्क्रिप्ट्स के निष्पादन को अवरुद्ध करती हैं, लेकिन उन्हें वर्तमान स्कोप के भीतर निम्नानुसार ओवरराइड किया जा सकता है।
Set-ExecutionPolicy Bypass -Scope Process -Force
. .\PrivescCheck.ps1
हालाँकि, यह ट्रिक तब काम नहीं करती जब निष्पादन नीति GPO के माध्यम से लागू की जाती है। इस मामले में, एक नया PowerShell सत्र शुरू करने के बाद, आप स्क्रिप्ट को निम्नानुसार लोड कर सकते हैं।
Get-Content .\PrivescCheck.ps1 | Out-String | Invoke-Expression
PowerShell संस्करण 2
Constrained Language Mode को बायपास करने का एक सामान्य तरीका PSv2 का उपयोग करना है क्योंकि यह इस सुरक्षा को लागू नहीं करता। इसलिए, विकास प्रयास का एक महत्वपूर्ण हिस्सा इस रेट्रो-संगतता को बनाए रखने में जाता है।
[!NOTE] हालाँकि PowerShell संस्करण 2
अभी भी Windows के हालिया संस्करणों पर डिफ़ॉल्ट रूप से सक्षम है(Windows से PowerShell 2.0 हटाना), यह .Net फ्रेमवर्क संस्करण 2.0 के बिना नहीं चल सकता, जिसके लिए मैन्युअल इंस्टॉल की आवश्यकता होती है।
Metasploit टाइमआउट
यदि आप इस स्क्रिप्ट को Meterpreter सत्र के भीतर चलाते हैं, तो आपको संभवतः "timeout" त्रुटि मिलेगी। ऐसा इसलिए है क्योंकि Metasploit 15 सेकंड का डिफ़ॉल्ट टाइमआउट मान उपयोग करता है, जो स्क्रिप्ट के सामान्य निष्पादन को पूरा करने के लिए पर्याप्त नहीं है।
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 विकल्प के माध्यम से एक अलग टाइमआउट सेट करना संभव है (प्रलेखन)। निम्नलिखित उदाहरण में, ID 1 वाले सत्र के लिए 2 मिनट का टाइमआउट सेट किया गया है, लेकिन आप इससे भी अधिक मान सेट करना चाह सकते हैं।
msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"