
PrivescCheck v2026.07.15-1
विंडोज के लिए विशेषाधिकार वृद्धि गणना स्क्रिप्ट
PrivescCheck
सामान्य Windows कमजोरियों और कॉन्फ़िगरेशन समस्याओं की तुरंत पहचान करें, जो सार्वजनिक सुरक्षा मानकों द्वारा आवश्यक रूप से कवर नहीं की जाती हैं, और शोषण (exploitation) और पोस्ट-एक्सप्लॉइटेशन कार्यों के लिए उपयोगी जानकारी एकत्र करें।
[!IMPORTANT] इस टूल का उपयोग करते समय ध्यान रखने योग्य एक प्रमुख पहलू यह है कि सभी एक्सेस कंट्रोल जाँचें वर्तमान उपयोगकर्ता के संदर्भ में की जाती हैं। इसलिए, यदि इसे व्यवस्थापक (administrator) विशेषाधिकारों के साथ चलाया जाता है, तो गलत निष्कर्ष उत्पन्न करने से बचने के लिए कई कमजोरी जाँचें वास्तव में छोड़ दी जाती हैं।
🚀 त्वरित प्रारंभ
स्क्रिप्ट यहाँ डाउनलोड करें: PrivescCheck.ps1
[!TIP] उपरोक्त लिंक का उपयोग PowerShell टर्मिनल में
(New-Object Net.WebClient).DownloadString(...)के साथ सीधे भी किया जा सकता है।
उपयोग केस 1 (पेंटेस्ट): केवल बुनियादी जाँचें चलाएँ
क्या स्थानीय रूप से विशेषाधिकार बढ़ाने का कोई स्पष्ट तरीका है?
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck"
उपयोग केस 2 (अनुसंधान): विस्तारित जाँचें चलाएँ + मानव-पठनीय रिपोर्ट लिखें
क्या कोई अतिरिक्त जानकारी है जिसका उपयोग पोस्ट-एक्सप्लॉइटेशन या तृतीय-पक्ष सॉफ़्टवेयर में कमजोरियाँ खोजने के लिए किया जा सकता है?
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML"
उपयोग केस 3 (ऑडिट): सभी जाँचें चलाएँ + सभी रिपोर्ट लिखें
क्या कोई कॉन्फ़िगरेशन समस्याएँ हैं जो सामान्य सुरक्षा मानकों द्वारा कवर नहीं की जाती हैं?
powershell -ep bypass -c ". .\PrivescCheck.ps1; Invoke-PrivescCheck -Extended -Audit -Report PrivescCheck_$($env:COMPUTERNAME) -Format TXT,HTML,CSV,XML"
📖 विस्तृत उपयोग
Invoke-PrivescCheck [-Extended] [-Audit] [-Experimental] [-Report <PREFIX>]
[-Format <FORMAT>[,...]] [-Risky] [-Silent] [-Force]
-Extended
स्कैन में सभी "extended" जाँचें शामिल करें (README देखें)।
-Audit
स्कैन में सभी "audit" जाँचें शामिल करें।
-Experimental
स्कैन में सभी "experimental" जाँचें शामिल करें। केवल तभी उपयोग करें
जब आप जानते हों कि आप क्या कर रहे हैं।
-Report <PREFIX>
कम से कम एक रिपोर्ट फ़ाइल उत्पन्न करें। आउटपुट फ़ाइलनाम डिफ़ॉल्ट
रूप से "PREFIX.txt" होगा। एक्सटेंशन रिपोर्ट प्रारूप के आधार पर
स्वचालित रूप से जोड़ा जाता है ("-Format <FORMAT>[,...]" देखें)।
-Format <FORMAT>[,...]
आउटपुट रिपोर्ट फ़ाइल(फ़ाइलों) का प्रारूप निर्दिष्ट करें। यदि सेट नहीं
है, तो डिफ़ॉल्ट मान "TXT" है। समर्थित प्रारूप हैं: "TXT", "HTML", "CSV",
और "XML"।
-Risky
"risky" के रूप में चिह्नित जाँचें शामिल करें, अर्थात वे जाँचें जिनके
एंडपॉइंट सुरक्षा समाधान द्वारा अवरोधक कार्रवाई ट्रिगर होने की संभावना
है। सावधानी से उपयोग करें।
-Silent
टर्मिनल आउटपुट दबाएँ। यह उपयोगी हो सकता है यदि आप स्क्रिप्ट को बैच
फ़ाइल के भाग के रूप में चलाना चाहते हैं, उदाहरण के लिए एक निर्धारित
कार्य (scheduled task) में।
-Force
निष्पादन को बाध्य करें और चेतावनियों को अनदेखा करें। आम तौर पर,
स्क्रिप्ट रुक जाती है यदि इसे व्यवस्थापक विशेषाधिकारों के साथ चलाया
जाता है। इसे फिर भी निष्पादित करने के लिए इस विकल्प का उपयोग करें।
रिपोर्ट प्रारूप > TXT (-Format TXT)
विकल्प -Report <PREFIX> (साथ में -Format TXT) का उपयोग करें यह निर्दिष्ट करने के लिए कि आप एक कच्ची टेक्स्ट रिपोर्ट उत्पन्न करना चाहते हैं। आउटपुट वैसा ही है जैसा आप टर्मिनल में देखेंगे, सिवाय इसके कि इसमें सभी टेक्स्ट संपादकों के साथ बेहतर (रेट्रो-)संगतता के लिए केवल ASCII वर्ण होते हैं।

रिपोर्ट प्रारूप > HTML (-Format HTML)
विकल्प -Report <PREFIX> का उपयोग -Format HTML के साथ करें यह निर्दिष्ट करने के लिए कि आप एक HTML रिपोर्ट उत्पन्न करना चाहते हैं। आउटपुट फ़ाइल को वेब ब्राउज़र में खोला जा सकता है। यह कच्ची टेक्स्ट रिपोर्ट की तुलना में डेटा देखने के लिए अधिक सुविधाजनक है। इसके अतिरिक्त, यह सॉर्टिंग और फ़िल्टरिंग क्षमताएँ प्रदान करता है!

रिपोर्ट प्रारूप > CSV (-Format CSV) और XML (-Format XML)
विकल्प -Report <PREFIX> का उपयोग -Format CSV या -Format XML के साथ करें यह निर्दिष्ट करने के लिए कि आप एक CSV या XML रिपोर्ट उत्पन्न करना चाहते हैं। आउटपुट फ़ाइल स्वचालित रिपोर्टिंग टूल द्वारा परिणामों के पार्सिंग को सुविधाजनक बनाने के लिए है।
[!NOTE] हालाँकि आउटपुट प्रारूप (अभी तक) प्रलेखित नहीं है, आप पहले से उत्पन्न फ़ाइल की संरचना का विश्लेषण करके इसे आसानी से समझ सकते हैं। आप प्रत्येक जाँच को विशिष्ट रूप से पहचानने के लिए उनके
Idमान का उपयोग कर सकते हैं।
जाँच प्रकार > Base
Base प्रकार की जाँचें हमेशा निष्पादित की जाएँगी, जब तक कि स्क्रिप्ट व्यवस्थापक के रूप में नहीं चलाई जाती। वे मुख्य रूप से विशेषाधिकार वृद्धि कमजोरियों या अन्य महत्वपूर्ण मुद्दों की पहचान करने के लिए हैं।
जाँच प्रकार > Extended (-Extended)
Extended प्रकार की जाँचें केवल तभी निष्पादित की जा सकती हैं जब कमांड लाइन पर विकल्प -Extended निर्दिष्ट किया गया हो। वे मुख्य रूप से अतिरिक्त जानकारी प्रदान करने के लिए हैं जो शोषण विकास या पोस्ट-एक्सप्लॉइटेशन के लिए उपयोगी हो सकती है।
जाँच प्रकार > Audit (-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"
🏗️ बिल्ड
डेटा अपडेट करें
कुछ जाँचें ऑनलाइन डेटा (जैसे LOL ड्राइवर डेटाबेस) पर निर्भर करती हैं, लेकिन स्क्रिप्ट ऑफ़लाइन काम करने के लिए है। इस समस्या को हल करने के लिए, डेटा स्क्रिप्ट में एम्बेडेड है, और इसलिए इसे नियमित रूप से अपडेट करने की आवश्यकता है। यह प्रक्रिया आधिकारिक रिलीज़ में पूरी तरह से स्वचालित है, लेकिन यदि आप स्क्रिप्ट को स्थानीय रूप से बनाना चाहते हैं, तो आप वैकल्पिक रूप से इसे मैन्युअल रूप से कर सकते हैं।
powershell -ep bypass ". .\build\Build.ps1; Update-LolDriverFile"
स्क्रिप्ट बनाएँ
स्क्रिप्ट बनाना नीचे दिए गए कमांड को चलाने जितना सरल है। आउटपुट फ़ाइल .\dist\ फ़ोल्डर में सहेजी जाएगी।
powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck"
बिल्ड स्क्रिप्ट प्रत्येक मॉड्यूल के लिए एक वेरिएबल नाम चुनने के लिए यादृच्छिक रूप से उत्पन्न seed के साथ एक छद्म-यादृच्छिक संख्या जनरेटर का उपयोग करती है। यदि आप बिल्ड के बीच प्रतिलिपि प्रस्तुत करने योग्य परिणाम उत्पन्न करना चाहते हैं, तो आप विकल्प -NoNewSeed का उपयोग करके पहले से उत्पन्न seed का पुन: उपयोग करना चुन सकते हैं।
powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck -NoNewSeed"
बिल्ड स्क्रिप्ट प्रत्येक मॉड्यूल की सामग्री को अस्पष्ट (obfuscate) करने के लिए यादृच्छिक रूप से उत्पन्न key के साथ AES एन्क्रिप्शन का उपयोग करती है। यदि आप बिल्ड के बीच प्रतिलिपि प्रस्तुत करने योग्य परिणाम उत्पन्न करना चाहते हैं, तो आप विकल्प -NoNewKey का उपयोग करके पहले से उत्पन्न key का पुन: उपयोग करना चुन सकते हैं।
powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck -NoNewKey"
📑 श्रेय
- शब्द सूची - CBHue/PyFuscation
- ज्ञात कमजोर ड्राइवर सूची - https://www.loldrivers.io/