hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/common-binary-protections-and-bypasses/relro.md

5.4 KiB

Relro

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

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

Relro

RELRO का मतलब है Relocation Read-Only, और यह एक सुरक्षा सुविधा है जो बाइनरी में उपयोग की जाती है ताकि GOT (Global Offset Table) के ओवरराइट से जुड़े जोखिमों को कम किया जा सके। चलो इस अवधारणा को स्पष्टता के लिए इसके दो विभिन्न प्रकारों में विभाजित करें: Partial RELRO और Full RELRO

Partial RELRO

Partial RELRO सुरक्षा को बढ़ाने के लिए एक सरल दृष्टिकोण अपनाता है जिससे बाइनरी के प्रदर्शन पर प्रभाव नहीं पड़ता। GOT को कारपोरेटिंग करने और भ्रष्ट करने से रोकने के लिए GOT को कार्यक्रम की मेमोरी में चरणों के ऊपर स्थित करके, Partial RELRO बफर ओवरफ्लो को GOT तक पहुंचने और भ्रष्ट करने से रोकने का उद्देश्य रखता है

यह किसी भी अनियमित लेखन संक्रमणों से GOT का दुरुपयोग करने को रोकने में सफल नहीं है।

Full RELRO

Full RELRO सुरक्षा को बढ़ाता है जब GOT को पूरी तरह से केवल पढ़ने योग्य बनाया जाता है। एक बाइनरी शुरू होते ही सभी फ़ंक्शन पतों को हल किया जाता है और GOT में लोड किया जाता है, फिर, GOT को केवल पढ़ने योग्य बनाया जाता है, जिससे किसी भी समय किसी भी संशोधन को रोका जा सकता है।

हालांकि, Full RELRO के साथ व्यापार और स्टार्टअप समय के मामले में है। क्योंकि यह सभी डायनामिक प्रतीकों को स्टार्टअप पर हल करने की आवश्यकता होती है पहले GOT को पढ़ने योग्य बनाने से, Full RELRO सक्षम बाइनरी में लंबे लोड समय का सामना कर सकती है। यह अतिरिक्त स्टार्टअप ओवरहेड है जिसकी वजह से Full RELRO सभी बाइनरी में डिफ़ॉल्ट रूप से सक्षम नहीं है।

यह देखना संभव है कि क्या बाइनरी में Full RELRO सक्षम है:

readelf -l /proc/ID_PROC/exe | grep BIND_NOW

बायपास

यदि पूर्ण RELRO सक्षम है, तो उसे बायपास करने का एकमात्र तरीका यह है कि एक और तरीका ढूंढा जाए जिसको GOT टेबल में लिखने की आवश्यकता न हो और व्यापक क्रियान्वयन प्राप्त किया जा सके।