2010-09-02 12 views
34

सरल प्रश्न: डीएल अपहरण क्या है?डीएल अपहरण क्या है?

मैंने बहुत कुछ पढ़ा है कि कौन से अनुप्रयोग कमजोर हैं, लेकिन के रूप में बहुत गहराई नहीं है।

उत्तर की सराहना की।

उत्तर

43

मूल बातें सरल हैं। विंडोज़ में डीएलएल के लिए एक खोज पथ है, वही तरीके से निष्पादन योग्य खोजने के लिए $ PATH है। यदि आप यह पता लगा सकते हैं कि एक पूर्ण पथ के बिना डीएलएल क्या अनुरोध करता है (इस खोज प्रक्रिया को ट्रिगर कर रहा है), तो आप अपने शत्रुतापूर्ण डीएलएल को कहीं भी खोज पथ से ऊपर रख सकते हैं ताकि वास्तविक संस्करण से पहले यह पाया जा सके, और विंडोज़ खुश होंगे आवेदन पर अपने हमले कोड फ़ीड।

तो चलिए आपके सिस्टम के DLL खोज पथ कुछ इस तरह दिखता नाटक करते हैं:

a) .  <--current working directory of the application, highest priority, first check 
b) \windows 
c) \windows\system32 
d) \windows\syswow64 <-- lowest priority, last check 

और कुछ एप्लिकेशन Foo.exe अनुरोध "bar.dll" है, जो syswow64 (घ) subdir में रहने के लिए होता है। यह आपको अपने दुर्भावनापूर्ण संस्करण को ए), बी), या सी में रखने का मौका देता है) और जब भी ऐप बार.dll अनुरोध करता है तो इसे स्वचालित रूप से ऐप में लोड किया जाएगा। और अब आपका फू अच्छी तरह से और trully bar'd है।

जैसा कि पहले बताया गया है, यहां तक ​​कि एक पूर्ण पूर्ण पथ इसके खिलाफ भी रक्षा नहीं कर सकता है, अगर आप अपने संस्करण के साथ डीएलएल को प्रतिस्थापित कर सकते हैं।

और बेशक, यह वास्तव में विंडोज तक ही सीमित नहीं है। कोई भी ओएस जो बाहरी पुस्तकालयों के गतिशील लिंकिंग की अनुमति देता है सैद्धांतिक रूप से इसके लिए कमजोर है।

7

डीएलएल हाइजैकिंग वास्तव में एक साधारण अवधारणा है।

एप्लिकेशन डीएलएल (डायनामिक लिंक लाइब्रेरीज़) के माध्यम से बाहरी कोड लोड करते हैं। डीएलएल हाईजैकिंग एक ऐसी प्रक्रिया है जिसके द्वारा दुर्भावनापूर्ण कोड को एक दुर्भावनापूर्ण डीएलएल के माध्यम से एप्लिकेशन द्वारा उपयोग किए जाने वाले डीएलएल के समान नाम के साथ इंजेक्शन दिया जाता है।

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