
PrivescCheck v2026.09.21-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
Include all "extended" checks in the scan.
-Audit
Include all "audit" checks in the scan.
-Risky
Include all "risky" checks in the scan. Those are checks that are
likely to trigger active EDR counter measures due to their behavior.
-Report <FORMAT>[,...]
Specify output report file formats (TXT, HTML, CSV, XML). Use alias
'ALL' to generate all report files. By default, the output filename
is automatically generated. Use option '-FilePath' to specify one
explicitly.
-FilePath <PREFIX>
Specify the output report file name or directory. The file extension
is automatically appended. If a directory path is supplied, the
filename is automatically generated at runtime.
-Silent
Suppress terminal output. This can be useful if you want to run the
script as part of a batch file, in a scheduled task for instance.
-Force
Force execution and ignore warnings. Typically, the script stops if
it is executed with administrator privileges. Use this option to
execute it anyway.
रिपोर्ट फ़ाइल प्रारूप
रिपोर्ट फ़ाइल प्रारूप > 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.exe प्रक्रिया शुरू की जाती है, तो क्लाइंट पर PowerShell निष्पादन नीति Restricted पर सेट होती है, और सर्वर पर RemoteSigned पर। ये नीतियाँ (अहस्ताक्षरित) स्क्रिप्ट के निष्पादन को अवरुद्ध करती हैं, लेकिन इन्हें वर्तमान स्कोप के भीतर निम्नानुसार ओवरराइड किया जा सकता है।
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 के हाल के संस्करणों पर डिफ़ॉल्ट रूप से सक्षम है(PowerShell 2.0 removal from Windows), यह .Net framework संस्करण 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 विकल्प की सहायता से एक अलग टाइमआउट सेट करना संभव है (documentation)। निम्नलिखित उदाहरण में, ID 1 वाले सत्र के लिए 2 मिनट का टाइमआउट सेट किया गया है, लेकिन आप इससे भी अधिक मान सेट करना चाह सकते हैं।
msf6 exploit(multi/handler) > sessions -t 120 -i 1
[*] Starting interaction with 1...
meterpreter > powershell_execute "Invoke-PrivescCheck"
बिल्ड
डेटा अपडेट करें
कुछ जाँचें ऑनलाइन डेटा पर निर्भर करती हैं (जैसे LOL drivers डेटाबेस), लेकिन स्क्रिप्ट ऑफ़लाइन काम करने के लिए बनाई गई है। इस समस्या को हल करने के लिए, डेटा को स्क्रिप्ट में एम्बेड किया जाता है, और इसलिए इसे नियमित रूप से अपडेट करने की आवश्यकता होती है। यह प्रक्रिया आधिकारिक रिलीज़ में पूरी तरह से स्वचालित है, लेकिन यदि आप स्क्रिप्ट को स्थानीय रूप से बिल्ड करना चाहते हैं, तो आप वैकल्पिक रूप से इसे मैन्युअल रूप से कर सकते हैं।
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"
बिल्ड स्क्रिप्ट प्रत्येक मॉड्यूल की सामग्री को अस्पष्ट करने के लिए यादृच्छिक रूप से उत्पन्न key के साथ AES एन्क्रिप्शन का उपयोग करती है। यदि आप बिल्ड्स में पुनरुत्पादक परिणाम उत्पन्न करना चाहते हैं, तो आप -NoNewKey विकल्प का उपयोग करके पहले उत्पन्न key का पुनः उपयोग करना चुन सकते हैं।
powershell -ep bypass ". .\build\Build.ps1; Invoke-Build -Name PrivescCheck -NoNewKey"
श्रेय
- Word list - CBHue/PyFuscation
- Known vulnerable driver list - https://www.loldrivers.io/