विंडोज में कुछ कार्य करने के लिए, प्रशासक विशेषाधिकार होना पर्याप्त नहीं है। उदाहरण के लिए, आप सिस्टम फ़ाइलों और कुछ रजिस्ट्री कुंजियों को प्रतिस्थापित या हटा नहीं सकते, सिस्टम सेवाओं को रोक नहीं सकते या कुछ अन्य संभावित असुरक्षित कार्य नहीं कर सकते जो आपके ऑपरेटिंग सिस्टम की स्थिरता को प्रभावित कर सकते हैं। इन मामलों में, एक सिस्टम एडमिनिस्ट्रेटर फ़ाइलों या अन्य ऑब्जेक्ट्स का स्वामित्व ले सकता है, या सिस्टम खाते की ओर से कार्य कर सकता है। इस लेख में हम देखेंगे कि विंडोज 10 पर किसी ऐप या कमांड प्रॉम्प्ट को विशेषाधिकार प्राप्त SYSTEM (LocalSystem) खाते के रूप में कैसे चलाया जाए।
बिल्ट-इन SYSTEM खाते का उपयोग SCM (सर्विस कंट्रोल मैनेजर) द्वारा सिस्टम सेवाओं को चलाने और प्रबंधित करने के लिए किया जाता है। सिस्टम खाते का उपयोग करके (इसे NT AUTHORITY\SYSTEM, लोकल सिस्टम या Computer\LocalSystem भी कहा जा सकता है), अधिकांश सिस्टम सेवाएं और प्रक्रियाएं चलाई जाती हैं (NT OS कर्नेल सहित)। सर्विस मैनेजमेंट mmc स्नैप-इन खोलें (services.msc) और उन सेवाओं को नोट करें जिनके LogOnAs कॉलम में Local System है। ये सेवाएं SYSTEM खाते के तहत चल रही हैं।
विंडोज में लोकल सिस्टम खाते के तहत CMD कैसे चलाएं (विस्टा से पहले के संस्करण)?
विंडोज XP और विंडोज सर्वर 2003 में (जो अब समर्थित नहीं हैं), एक दिलचस्प ट्रिक थी जो आपको टास्क शेड्यूलर का उपयोग करके प्रोग्राम या इंटरैक्टिव कमांड प्रॉम्प्ट (cmd.exe) को सिस्टम विशेषाधिकारों के साथ चलाने की अनुमति देती थी। एडमिन खाते के तहत कमांड प्रॉम्प्ट खोलना और निम्न कमांड चलाना पर्याप्त था:
at 10:23 /interactive cmd.exe
जहां, 10:23 वर्तमान समय + एक मिनट है (24-घंटे के प्रारूप में)
जब निर्दिष्ट समय आता है, तो एक कमांड प्रॉम्प्ट दिखाई देगा जो लोकल सिस्टम खाते के तहत चल रहा है। यदि आपने विंडोज सर्वर 2003/XP पर टर्मिनल (RDP) सत्र में इस कमांड को चलाया है, तो ध्यान दें कि सिस्टम विशेषाधिकारों वाला कमांड प्रॉम्प्ट केवल कंसोल सत्र में प्रदर्शित होता है (आप mstsc /console या mstsc /admin के माध्यम से कंप्यूटर कंसोल से कनेक्ट कर सकते हैं)।
विंडोज 10 at कमांड का उपयोग करके इंटरैक्टिव कमांड प्रॉम्प्ट चलाने का समर्थन नहीं करता। इसके बजाय schtasks.exe का उपयोग करने की अनुशंसा की जाती है।
Warning: Due to security enhancements, this task will run at the time expected but not interactively. Use schtasks.exe utility if interactive task is required ('schtasks /?' for details). The request is not supported.
PSExec का उपयोग करके विंडोज 10 पर CMD/प्रोसेस को SYSTEM के रूप में कैसे चलाएं?
विंडोज 7 या उच्चतर में, इंटरैक्टिव कमांड प्रॉम्प्ट को टास्क शेड्यूलर का उपयोग करके सिस्टम खाते के तहत नहीं चलाया जा सकता। NT Authority\ System के रूप में कमांड चलाने के लिए, आप Sysinternals द्वारा PSExec.exe यूटिलिटी का उपयोग कर सकते हैं।
आप PSExec.exe टूल को माइक्रोसॉफ्ट वेबसाइट से डाउनलोड कर सकते हैं: https://docs.microsoft.com/en-us/sysinternals/downloads/psexec। कोई भी विंडोज एडमिनिस्ट्रेटर PSExec से परिचित है। ज्यादातर मामलों में, इसका उपयोग विंडोज को रिमोटली प्रबंधित करने के लिए किया जाता है, और इसमें सिस्टम खाते की ओर से प्रक्रियाओं को चलाने के लिए एक उपयोगी फीचर भी है। कुछ एंटीवायरस PSExec.exe को संभावित रूप से हानिकारक प्रोग्राम के रूप में पहचान सकते हैं (वैसे, कुख्यात notpetya वायरस को वितरित करने के लिए psexec का उपयोग किया गया था)।
PSExec को इंस्टॉल करने की आवश्यकता नहीं है। एलिवेटेड कमांड प्रॉम्प्ट खोलें ("एडमिनिस्ट्रेटर के रूप में चलाएं"), उस फ़ोल्डर में जाएं जहां PSexec.exe स्थित है और निम्न कमांड चलाएं:
psexec -i -s cmd.exe
-i – प्रक्रिया/ऐप को इंटरैक्टिव मोड में शुरू करने की अनुमति देता है (एक उपयोगकर्ता डेस्कटॉप पर ऐप के साथ इंटरैक्ट कर सकता है; यदि आप इस पैरामीटर का उपयोग नहीं करते हैं, तो प्रक्रिया कंसोल सत्र में शुरू होती है),
–s – इसका मतलब है कि प्रक्रिया (इस मामले में, कमांड प्रॉम्प्ट) को सिस्टम खाते के रूप में चलाया जाना चाहिए।
पहली बार PsExec चलाने पर, आपको लाइसेंस समझौते को स्वीकार करने के लिए कहा जाएगा।
कमांड चलाने के बाद, NT Authority\System खाते के तहत चलने वाली एक नई कमांड प्रॉम्प्ट विंडो दिखाई देगी। यह सुनिश्चित करने के लिए कि यह सच है, यह कमांड चलाएं:
whoami
इस प्रकार, आप किसी भी प्रोग्राम, कमांड या स्क्रिप्ट को सिस्टम खाते के रूप में चला सकते हैं। PsExec पैरामीटर में cmd.exe को उस ऐप के निष्पादन योग्य नाम से बदलना पर्याप्त है जिसे आप चलाना चाहते हैं।
दिखाई देने वाली कमांड प्रॉम्प्ट विंडो में, आप SYSTEM के रूप में कोई भी कमांड चला सकते हैं। अब आप सिस्टम फ़ाइलों/रजिस्ट्री कुंजियों को बदल सकते हैं, नाम बदल सकते हैं या हटा सकते हैं जो TrustedInstaller या SYSTEM के स्वामित्व में हैं। इस विंडो में आपके द्वारा शुरू किए गए सभी प्रोग्राम या प्रक्रियाएं एलिवेटेड LocalSystem विशेषाधिकारों के साथ चलेंगी। उदाहरण के लिए, आप एक सिस्टम सेवा को रोक सकते हैं या सिस्टम प्रक्रिया द्वारा खोली गई फ़ाइल को बंद कर सकते हैं।
PSExec का उपयोग करके, आप रिमोट कंप्यूटर पर NT AUTORITY\SYSTEM विशेषाधिकारों के साथ इंटरैक्टिव कमांड प्रॉम्प्ट खोल सकते हैं। इसके लिए निम्न कमांड का उपयोग किया जाता है:
psexec -s \\mun-b21pc12 cmd.exe
यदि त्रुटि "Couldn't install PSEXESVC service" दिखाई देती है, तो सुनिश्चित करें कि:
- कमांड प्रॉम्प्ट एडमिनिस्ट्रेटर के रूप में चलाया गया है;
- दूसरा PSEXESVC सर्विस इंस्टेंस नहीं चल रहा है
सिस्टम खाते के रूप में ऐप चलाने के लिए कई थर्ड-पार्टी टूल भी हैं (AdvancedRun, RunAsSystem, PowerRun), लेकिन मुझे उनका उपयोग करने का कोई मतलब नहीं दिखता। सबसे पहले, वे थर्ड-पार्टी हैं और आप सुनिश्चित नहीं हो सकते कि उनमें कोई दुर्भावनापूर्ण कोड नहीं है। दूसरा, माइक्रोसॉफ्ट द्वारा आधिकारिक PsExec यूटिलिटी एक बढ़िया काम करती है।