
प्रक्रिया विशेषाधिकारों को बढ़ाने के लिए कर्नेल मोड ड्राइवर
EPROCESS में प्रक्रिया टोकन को सिस्टम टोकन से बदलने की अनुमति देता है, जिससे प्रक्रिया के विशेषाधिकार प्रभावी रूप से बढ़ जाते हैं। ड्राइवर को एक उपयोगकर्ता-मोड एप्लिकेशन के साथ उपयोग करने के लिए डिज़ाइन किया गया है जो एक IOCTL के माध्यम से ड्राइवर को प्रक्रिया आईडी भेजता है।जब कोई प्रक्रिया बनाई जाती है, तो वह उपयोगकर्ता के टोकन को प्राप्त करती है जिसने इसे बनाया है। सिस्टम द्वारा यह निर्धारित करने के लिए टोकन का उपयोग किया जाता है कि प्रक्रिया कौन सी क्रियाएं कर सकती है। टोकन में उपयोगकर्ता के सुरक्षा पहचानकर्ता (SID), समूह सदस्यता और विशेषाधिकारों के बारे में जानकारी होती है।

Token सदस्य _EPROCESS संरचना में ऑफसेट 0x4b8 पर स्थित है, जो एक प्रक्रिया ऑब्जेक्ट का प्रतिनिधित्व करने वाली डेटा संरचना है। Token सदस्य _EX_FAST_REF संरचना में परिभाषित किया गया है, जो एक यूनियन प्रकार है जो पॉइंटर के आकार के आधार पर कर्नेल ऑब्जेक्ट के लिए पॉइंटर या संदर्भ गणना संग्रहीत कर सकता है। _EPROCESS के भीतर _EX_FAST_REF संरचना का ऑफसेट उपयोग किए जा रहे विंडोज के विशिष्ट संस्करण पर निर्भर करता है, लेकिन हाल के विंडोज संस्करणों में यह आमतौर पर 0x4b8 के ऑफसेट पर स्थित होता है।
विंडोज बिल्ड नंबर x64 और x86 आर्किटेक्चर के लिए टोकन ऑफसेट
विंडोज में _EX_FAST_REF संरचना में तीन सदस्य होते हैं: Object और RefCount और Value

_EX_FAST_REF में प्रक्रिया टोकन प्रदर्शित करने के लिए, हम _EX_FAST_REF संरचना का पता पास करते हैं जिसमें टोकन होता है, जो आमतौर पर _EPROCESS संरचना में 0x4b8 के ऑफसेट पर स्थित होता है।

आप या तो एक विशेषाधिकार प्राप्त प्रक्रिया शुरू कर सकते हैं या पहले से मौजूद प्रक्रिया आईडी को बढ़ा सकते हैं।

इस स्पष्टीकरण के उद्देश्य के लिए, हम दूसरे विकल्प पर ध्यान केंद्रित करेंगे और CMD को एक उदाहरण के रूप में उपयोग करेंगे

इनहेरिटेड टोकन

प्रक्रिया आईडी को एक IOCTL के माध्यम से ड्राइवर को भेजें

उपयोगकर्ता मोड एप्लिकेशन से PID प्राप्त करने के बाद, ड्राइवर इसका उपयोग लक्ष्य प्रक्रिया के लिए _EPROCESS संरचना का पॉइंटर प्राप्त करने में करता है। ड्राइवर फिर प्रक्रिया टोकन के लिए पॉइंटर प्राप्त करने के लिए _EPROCESS संरचना के Token सदस्य तक पहुंचता है, जिसे वह सिस्टम टोकन से बदल देता है, प्रभावी रूप से प्रक्रिया के सुरक्षा संदर्भ को सिस्टम के संदर्भ में बदल देता है। हालांकि, यदि ड्राइवर _EPROCESS संरचना के भीतर Token सदस्य को सही ढंग से स्थित नहीं करता है या यदि Token का ऑफसेट 0x4b8 से अलग है, तो ड्राइवर सिस्टम या लक्ष्य प्रक्रिया को क्रैश कर सकता है। यह समस्या अगले अपडेट में ठीक की जाएगी।

cmd टोकन बाद में

| x64 ऑफसेट्स | x86 ऑफसेट्स |
|---|
| 0x0160 (late 5.2) | 0x0150 (3.10) |
| 0x0168 (6.0) | 0x0108 (3.50 to 4.0) |
| 0x0208 (6.1) | 0x012C (5.0) |
| 0x0348 (6.2 to 6.3) | 0xC8 (5.1 to early 5.2) |
| 0x0358 (10.0 to 1809) | 0xD8 (late 5.2) |
| 0x0360 (1903) | 0xE0 (6.0) |
| 0x04B8 | 0xF8 (6.1) |
| 0xEC (6.2 to 6.3) | |
| 0xF4 (10.0 to 1607) | |
| 0xFC (1703 to 1903) | |
| 0x012C |

प्रक्रिया के विशेषाधिकार, समूह, अधिकार
