किसी एप्लिकेशन और उसके बाहरी पुस्तकालयों के बीच कोड इंजेक्ट करने के लिए जगह है। ऐसा करना स्वाभाविक रूप से बुरा नहीं है, लेकिन यह नुकसान करने का एक शानदार तरीका है।
जब डेवलपर्स को किसी प्रोग्राम की कार्यक्षमता बढ़ाने की आवश्यकता होती है, जिसके लिए उनके पास स्रोत कोड नहीं होता है, तो वे अक्सर DLL हुकिंग की ओर मुड़ते हैं। यह एक कार्यक्रम बनाने का एक अपरंपरागत तरीका है जो ऐसा करने का इरादा नहीं रखता है।
बात यह है कि हैकर्स इस तकनीक का उपयोग सभी गलत कारणों से भी करते हैं, जैसे हानिरहित अनुप्रयोगों को हथियार बनाना या सॉफ़्टवेयर को क्रैक करना। तो DLL हुकिंग क्या है, और यह वास्तव में कैसे काम करता है?
डीएलएल क्या है?
प्रत्येक एप्लिकेशन चलाने के लिए अपने बेस कोड के बाहर कुछ फाइलों पर निर्भर करता है। इन बाहरी फ़ाइलों में कोड और डेटा होता है जिसकी प्रोग्राम को ठीक से काम करने के लिए आवश्यकता होती है। जब इनमें से कोई भी बाहरी फ़ाइल गायब हो जाती है, तो प्रोग्राम में स्थिरता की समस्या हो सकती है या चलाने के लिए पूरी तरह से मना कर सकता है।
विंडोज ऑपरेटिंग सिस्टम में, इन बाहरी फाइलों को डीएलएल या डायनेमिक लिंक लाइब्रेरी कहा जाता है। डायनेमिक लिंक लाइब्रेरी विंडोज ऑपरेटिंग सिस्टम के आवश्यक घटक हैं, जो पुन: प्रयोज्य कोड और संसाधन प्रदान करते हैं जिन्हें कई अनुप्रयोगों में साझा किया जा सकता है।
विंडोज़ पर बाहरी फाइलों को पुस्तकालयों के रूप में जाना जाता है। पुस्तकालय दो प्रकार के होते हैं: गतिशील और स्थिर। गतिशील पुस्तकालयों को रन-टाइम पर लोड किया जाता है और स्थिर पुस्तकालयों को संकलन समय पर लोड किया जाता है। डीएलएल एक गतिशील पुस्तकालय है।
डीएलएल हुकिंग क्या है?
डीएलएल हुकिंग एक ऐसी तकनीक है जिसमें एक डीएलएल में किए जाने वाले प्रोग्राम या प्रक्रियाओं को इंटरसेप्ट करना और बदलना शामिल है। अनिवार्य रूप से एक मैन-इन-द-मिडल सेटअप स्थापित किया जाता है जहां एक प्रोग्राम और डीएलएल के बीच एक हुक बैठता है जिसे वह कॉल करता है। तब सभी या लक्षित प्रकार्य कॉलों का पता लगाया जाता है और उन्हें बदल दिया जाता है।
यहां DLL हुकिंग अटैक वर्कफ़्लो का एक उदाहरण दिया गया है:
- हमलावर प्रोग्राम द्वारा किए गए फ़ंक्शन कॉल और उस पर निर्भर DLL फ़ाइलों का विश्लेषण करता है।
- हमलावर आईएटी हुकिंग, इनलाइन हुकिंग, कॉम हुकिंग इत्यादि जैसी कई कार्यान्वयन तकनीकों में से एक का उपयोग करके एक हुक बनाता है।
- मनमाना कोड निष्पादन होता है।
- मूल फ़ंक्शन कॉल निष्पादन हो सकता है या नहीं भी हो सकता है।
- हमलावर हुक को हटाकर और किए गए सभी परिवर्तनों को वापस करके अपने ट्रैक को कवर करता है।
डीएलएल हुकिंग एक परिष्कृत तकनीक है जिसे दोनों अच्छे (जैसे प्रोग्राम कार्यक्षमता, डीबगिंग, और लॉगिंग) या बुरे के लिए (जैसे सुरक्षा उपायों को दरकिनार करना, संवेदनशील डेटा चोरी करना, मनमाना कोड निष्पादित करना और वीडियो गेम लिखना हैक)।
डीएलएल हुकिंग कैसे काम करता है?
डीएलएल हुकिंग को लागू करने में गोता लगाने से पहले, मूल बातें स्पष्ट करना महत्वपूर्ण है। आइए एक कदम पीछे चलते हैं और समझते हैं कि क्या होता है जब एक प्रोग्राम द्वारा डीएलएल को फ़ंक्शन कॉल किया जाता है।
जब कोई प्रोग्राम DLL में किसी फ़ंक्शन को कॉल करता है, तो ऑपरेटिंग सिस्टम पहले फ़ंक्शन के नाम को खोजता है कार्यक्रम की आयात पता तालिका और डीएलएल के निर्यात पते से फ़ंक्शन का पता प्राप्त करता है मेज़।
एक बार फ़ंक्शन का पता हल हो जाने के बाद, प्रोग्राम इसे एक्सेस करने और निष्पादित करने के लिए फ़ंक्शन के पते पर जा सकता है। DLL हुकिंग इस प्रक्रिया को बाधित करने और फ़ंक्शन कॉल को एक अलग फ़ंक्शन पर पुनर्निर्देशित करने के लिए घूमता है। डीएलएल हुकिंग को लागू करने के कई तरीके हैं। आइए इसे लागू करने के लिए सबसे अधिक इस्तेमाल की जाने वाली तकनीकों को देखें।
यह काफी तकनीकी हो सकता है, इसलिए यह आपकी मदद कर सकता है एक विंडोज पावर उपयोगकर्ता हैं या अन्यथा विंडोज इंटर्नल्स की एक मजबूत समझ है।
आईएटी हुकिंग
आईएटी हुकिंग सुरक्षा उपायों को दरकिनार करने और पहचान से बचने के लिए मैलवेयर लेखकों द्वारा व्यापक रूप से नियोजित एक प्रभावी तकनीक है। इम्पोर्ट एड्रेस टेबल (IAT) एक डेटा स्ट्रक्चर है जिसे जब भी कोई नई प्रक्रिया बनाई जाती है तो मेमोरी पर लोड किया जाता है। आईएटी में सभी आयातित फ़ंक्शन कॉल और उनके मेमोरी पतों के नाम शामिल हैं।
जब कोई प्रोग्राम DLL में किसी फ़ंक्शन को कॉल करता है, तो फ़ंक्शन का नाम पहले IAT में खोजा जाता है और यदि उक्त फ़ंक्शन का मेमोरी पता IAT में नहीं मिलता है तो इसे DLL के निर्यात पते से स्थापित किया जाता है मेज़।
यह एक डेटा संरचना है जहां डीएलएल द्वारा निर्यात किए गए सभी कार्यों को उनके मेमोरी पतों पर मैप किया जाता है। आईएटी हुकिंग में, एक विरोधी प्रक्रिया के आईएटी को संशोधित कर सकता है और वैध फ़ंक्शन मैपिंग को बदल सकता है दुर्भावनापूर्ण लोगों के साथ इस प्रकार इच्छित संचालन को बाधित करना और कार्यक्रम को मनमाने ढंग से निष्पादित करना कोड।
यहाँ IAT हुकिंग में सामान्य आक्रमण प्रवाह कैसा दिखता है:
- एक प्रोग्राम एक फंक्शन कॉल करता है।
- समारोह का पता IAT में स्थित है।
- चूंकि IAT को झुका दिया गया है; फ़ंक्शन पता बदल दिया गया है, और दुर्भावनापूर्ण फ़ंक्शन का मेमोरी स्थान लोड किया गया है।
- कार्यक्रम दुर्भावनापूर्ण फ़ंक्शन के स्थान पर कूद जाता है और मनमाने कोड को निष्पादित किया जाता है।
- अंत में, मूल फ़ंक्शन कॉल निष्पादित की जाती है।
इनलाइन हुकिंग
इनलाइन हुकिंग एक डीएलएल हुकिंग तकनीक है जिसमें एक विशेष फ़ंक्शन के निष्पादन को निर्देशित करने के लिए लक्ष्य फ़ंक्शन के स्रोत कोड को बदलना शामिल है। इनलाइन हुकिंग, आईएटी हुकिंग के विपरीत, लक्ष्य फ़ंक्शन के कोड को सीधे बदल देता है, हमलावर को लक्ष्य फ़ंक्शन कैसे व्यवहार करता है, इस पर अधिक सटीक नियंत्रण देता है।
ऊपर दिए गए आरेख में, देखें कि किसी दुर्भावनापूर्ण कार्य को इंगित करने के लिए वैध कार्य के साथ कैसे छेड़छाड़ की गई है। एक बार दुर्भावनापूर्ण कार्य में सभी निर्देश निष्पादित हो जाने के बाद, निष्पादन समाप्त करने के लिए वैध कार्य पर लौटने के लिए एक कूद निर्देश बनाया जाता है।
विरोधी किसी कार्यक्रम में स्थायी परिवर्तन करने के लिए इनलाइन हुकिंग का उपयोग करते हैं जैसे कि मापदंडों को बदलना या किसी फ़ंक्शन का रिटर्न मान।
माइक्रोसॉफ्ट डेटोर
माइक्रोसॉफ्ट रिसर्च ने इन-हाउस डीएलएल हुकिंग पैकेज, डेटोरस विकसित किया है। यह प्रोग्रामर्स को प्रोग्राम द्वारा किए गए फ़ंक्शन कॉल को ट्रैक करने और बदलने में सक्षम बनाता है। डेटोर का उपयोग विभिन्न प्रकार के कार्यों के लिए किया जा सकता है, जिनमें शामिल हैं लेकिन इन तक सीमित नहीं हैं: उपकरण, परीक्षण और बग फिक्सिंग।
विरोधी डीएलएल इंजेक्शन और हुकिंग हमलों को अंजाम देने के लिए डेटोर का उपयोग करते हैं, और डेवलपर्स अक्सर इसका उपयोग अपने ऐप की कार्यक्षमता बढ़ाने के लिए करते हैं। आप डेटोर पैकेज के बारे में अधिक जान सकते हैं आधिकारिक गिटहब भंडार.
अब आप जानते हैं कि डीएलएल हुकिंग कैसे काम करता है
डीएलएल हुकिंग एक परिष्कृत तकनीक है, जब सही कारणों से उपयोग किया जाता है, तो यह आपके एप्लिकेशन की क्षमताओं को बढ़ा सकता है या सॉफ़्टवेयर को डीबग और अनुकूलित करने में आपकी सहायता कर सकता है। दुर्भाग्य से, हुकिंग को आमतौर पर एक विकास के बजाय एक प्रतिकूल तकनीक के रूप में उपयोग में देखा जाता है। इसलिए, यह महत्वपूर्ण है कि आप सुरक्षा की सर्वोत्तम प्रथाओं को अपनाएं और उनका पालन करें, यह सुनिश्चित करते हुए कि आपके एप्लिकेशन सुरक्षित हैं और हुकिंग और इंजेक्शन जैसे हमलों से मुक्त हैं।