Integrity Levels

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Integrity Levels

Windows Vista और बाद के संस्करणों में, सभी सुरक्षित आइटमों के साथ एक अखंडता स्तर टैग आता है। इस सेटअप में अधिकांश फ़ाइलों और रजिस्ट्री कुंजियों को "मध्यम" अखंडता स्तर का निर्धारण किया जाता है, कुछ विशेष फ़ोल्डर और फ़ाइलों को छोड़कर, जिनमें इंटरनेट एक्सप्लोरर 7 निम्न सत्यापन स्तर पर लिख सकता है। डिफ़ॉल्ट व्यवहार है कि मानक उपयोगकर्ताओं द्वारा प्रारंभित प्रक्रियाओं का एक मध्यम अखंडता स्तर होता है, जबकि सेवाएँ सामान्यत: सिस्टम अखंडता स्तर पर काम करती हैं। एक उच्च-अखंडता लेबल मूल निर्देशिका की सुरक्षा सुनिश्चित करता है।

एक मुख्य नियम यह है कि वस्तुएं उस स्तर से कम अखंडता स्तर वाली प्रक्रियाओं द्वारा संशोधित नहीं की जा सकती हैं जिस स्तर की वह वस्तु है। अखंडता स्तर हैं:

  • अविश्वसनीय: इस स्तर के लिए अनाम लॉगिन वाली प्रक्रियाएँ हैं। %%%उदाहरण: Chrome%%%

  • निम्न: मुख्य रूप से इंटरनेट इंटरेक्शन के लिए, विशेष रूप से इंटरनेट एक्सप्लोरर के सुरक्षित मोड में, संबंधित फ़ाइलों और प्रक्रियाओं को प्रभावित करता है, और कुछ फ़ोल्डर जैसे टेम्पररी इंटरनेट फ़ोल्डर। निम्न अखंडता प्रक्रियाओं को महत्वपूर्ण प्रतिबंधों का सामना करना पड़ता है, जिसमें कोई रजिस्ट्री लेखन पहुंच और सीमित उपयोगकर्ता प्रोफ़ाइल लेखन पहुंच शामिल है।

  • मध्यम: अधिकांश गतिविधियों के लिए डिफ़ॉल्ट स्तर, मानक उपयोगकर्ताओं और विशेष अखंडता स्तर वाली वस्तुओं के लिए निर्धारित। डिफ़ॉल्ट रूप से प्रशासकों समूह के सदस्य भी इस स्तर पर काम करते हैं।

  • उच्च: प्रशासकों के लिए सुरक्षित, जो उन्हें उच्च स्तर के वस्तुओं को संशोधित करने की अनुमति देता है, जिसमें उच्च स्तर वाली वस्तुएं भी शामिल हैं।

  • सिस्टम: Windows कर्नेल और मुख्य सेवाओं के लिए सबसे उच्च संचालन स्तर, जिसमें प्रशासकों के लिए भी पहुंच नहीं है, महत्वपूर्ण सिस्टम कार्यों की सुरक्षा सुनिश्चित करता है।

  • इंस्टॉलर: सभी अन्य वस्तुओं को अनइंस्टॉल करने की अनुमति देने वाला एक विशेष स्तर।

आप Process Explorer का उपयोग करके प्रक्रिया का अखंडता स्तर प्राप्त कर सकते हैं Sysinternals से, प्रक्रिया की संपत्तियों तक पहुंचकर "सुरक्षा" टैब देखें:

आप whoami /groups का उपयोग करके अपना वर्तमान अखंडता स्तर भी प्राप्त कर सकते हैं

फ़ाइल-सिस्टम में अखंडता स्तर

फ़ाइल-सिस्टम के अंदर एक न्यूनतम अखंडता स्तर आवश्यकता हो सकती है और यदि किसी प्रक्रिया के पास यह अखंडता प्रक्रिया नहीं है तो वह इसके साथ बातचीत नहीं कर सकती। उदाहरण के लिए, एक सामान्य उपयोगकर्ता कंसोल से एक सामान्य फ़ाइल बनाएं और अनुमतियाँ जांचें:

echo asd >asd.txt
icacls asd.txt
asd.txt BUILTIN\Administrators:(I)(F)
DESKTOP-IDJHTKP\user:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\INTERACTIVE:(I)(M,DC)
NT AUTHORITY\SERVICE:(I)(M,DC)
NT AUTHORITY\BATCH:(I)(M,DC)

अब, चलो फ़ाइल को उच्च अखंडता स्तर का न्यूनतम स्तर निर्धारित करें। यह एक कंसोल से किया जाना चाहिए जो प्रशासक के रूप में चल रहा हो क्योंकि सामान्य कंसोल माध्यम अखंडता स्तर में चल रहा होगा और एक वस्तु को उच्च अखंडता स्तर निर्धारित करने की अनुमति नहीं होगी:

icacls asd.txt /setintegritylevel(oi)(ci) High
processed file: asd.txt
Successfully processed 1 files; Failed processing 0 files

C:\Users\Public>icacls asd.txt
asd.txt BUILTIN\Administrators:(I)(F)
DESKTOP-IDJHTKP\user:(I)(F)
NT AUTHORITY\SYSTEM:(I)(F)
NT AUTHORITY\INTERACTIVE:(I)(M,DC)
NT AUTHORITY\SERVICE:(I)(M,DC)
NT AUTHORITY\BATCH:(I)(M,DC)
Mandatory Label\High Mandatory Level:(NW)

यहाँ चीजें दिलचस्प हो जाती है। आप देख सकते हैं कि उपयोगकर्ता DESKTOP-IDJHTKP\user को फ़ाइल पर पूर्ण विशेषाधिकार हैं (वास्तव में यह उपयोगकर्ता ने फ़ाइल बनाई थी), हालांकि, न्यूनतम अखंडता स्तर के कारण वह अब फ़ाइल को संशोधित नहीं कर सकेगा जब तक वह उच्च अखंडता स्तर के अंदर नहीं चल रहा है (ध्यान दें कि वह इसे पढ़ सकेगा):

echo 1234 > asd.txt
Access is denied.

del asd.txt
C:\Users\Public\asd.txt
Access is denied.

इसलिए, जब एक फ़ाइल का न्यूनतम अखंडता स्तर होता है, तो उसे संशोधित करने के लिए आपको कम से कम उस अखंडता स्तर पर चलाना चाहिए।

बाइनरी में अखंडता स्तर

मैंने cmd.exe की एक प्रति C:\Windows\System32\cmd-low.exe बनाई और इसे एक प्रशासक कंसोल से निम्न से अखंडता स्तर सेट किया:

icacls C:\Windows\System32\cmd-low.exe
C:\Windows\System32\cmd-low.exe NT AUTHORITY\SYSTEM:(I)(F)
BUILTIN\Administrators:(I)(F)
BUILTIN\Users:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(I)(RX)
APPLICATION PACKAGE AUTHORITY\ALL RESTRICTED APP PACKAGES:(I)(RX)
Mandatory Label\Low Mandatory Level:(NW)

अब, जब मैं cmd-low.exe चलाता हूँ तो यह कम अखंडता स्तर के तहत चलेगा बजाय माध्यम एक:

किसी कर्तव्यशील व्यक्ति के लिए, यदि आप किसी बाइनरी को उच्च अखंडता स्तर देते हैं (icacls C:\Windows\System32\cmd-high.exe /setintegritylevel high) तो यह उच्च अखंडता स्तर के साथ स्वचालित रूप से नहीं चलेगा (यदि आप इसे माध्यम अखंडता स्तर से आवाहन करते हैं --डिफ़ॉल्ट रूप से-- तो यह माध्यम अखंडता स्तर के तहत चलेगा)।

प्रक्रियाओं में अखंडता स्तर

सभी फ़ाइलें और फ़ोल्डरों के पास न्यूनतम अखंडता स्तर नहीं है, लेकिन सभी प्रक्रियाएँ एक अखंडता स्तर के तहत चल रही हैं। और फ़ाइल-सिस्टम के साथ हुआ वैसा ही, अगर कोई प्रक्रिया किसी अन्य प्रक्रिया के अंदर लिखना चाहती है तो उसे कम से कम उसी अखंडता स्तर का होना चाहिए। इसका मतलब है कि किसी प्रक्रिया के साथ कम अखंडता स्तर वाली प्रक्रिया एक हैंडल नहीं खोल सकती।

इस और पिछले खंड में उल्लिखित प्रतिबंधों के कारण, सुरक्षा के दृष्टिकोण से, हमेशा संभावना के सबसे कम अखंडता स्तर में प्रक्रिया चलाने की सिफारिश की जाती है

Last updated