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