पॉलीमॉर्फिक कोड: Difference between revisions

From Vigyanwiki
Line 6: Line 6:
कोड छिपाने के लिए [[एन्क्रिप्शन सॉफ्टवेयर|एन्क्रिप्शन]] सबसे आम तरीका है। एन्क्रिप्शन के साथ, कोड का मुख्य भाग (जिसे इसका पेलोड भी कहा जाता है) एन्क्रिप्ट किया गया है और अर्थहीन दिखाई देगा। कोड के पहले की तरह कार्य करने के लिए, कोड में एक डिक्रिप्शन फ़ंक्शन जोड़ा जाता है। जब कोड ''निष्पादित किया'' जाता है, तो यह फ़ंक्शन पेलोड को पढ़ता है और बदले में इसे निष्पादित करने से पहले इसे डिक्रिप्ट करता है।
कोड छिपाने के लिए [[एन्क्रिप्शन सॉफ्टवेयर|एन्क्रिप्शन]] सबसे आम तरीका है। एन्क्रिप्शन के साथ, कोड का मुख्य भाग (जिसे इसका पेलोड भी कहा जाता है) एन्क्रिप्ट किया गया है और अर्थहीन दिखाई देगा। कोड के पहले की तरह कार्य करने के लिए, कोड में एक डिक्रिप्शन फ़ंक्शन जोड़ा जाता है। जब कोड ''निष्पादित किया'' जाता है, तो यह फ़ंक्शन पेलोड को पढ़ता है और बदले में इसे निष्पादित करने से पहले इसे डिक्रिप्ट करता है।


अकेले एन्क्रिप्शन बहुरूपता का गठन नहीं करता है। बहुरूपी व्यवहार प्राप्त करने के लिए, एन्क्रिप्टर/डिक्रिप्टर जोड़ी को कोड की प्रत्येक प्रति के साथ उत्परिवर्तित किया जाता है। यह कुछ कोड के विभिन्न संस्करणों को सभी समान कार्य करने की अनुमति देता है।<ref name="wongstamp">{{cite journal |last1=Wong |first1=Wing |last2=Stamp |first2=M. |title=मेटामॉर्फिक इंजन के लिए शिकार|journal=Journal in Computer Virology |volume=2 |issue= 3|pages=211–229 |date=2006 |doi=10.1007/s11416-006-0028-7 |citeseerx=10.1.1.108.3878|s2cid=8116065 }}</ref>
अकेले एन्क्रिप्शन पॉलीमॉर्फिक का गठन नहीं करता है। बहुरूपी व्यवहार प्राप्त करने के लिए, एन्क्रिप्टर/डिक्रिप्टर जोड़ी को कोड की प्रत्येक प्रति के साथ उत्परिवर्तित किया जाता है। यह कुछ कोड के विभिन्न संस्करणों को सभी समान कार्य करने की अनुमति देता है।<ref name="wongstamp">{{cite journal |last1=Wong |first1=Wing |last2=Stamp |first2=M. |title=मेटामॉर्फिक इंजन के लिए शिकार|journal=Journal in Computer Virology |volume=2 |issue= 3|pages=211–229 |date=2006 |doi=10.1007/s11416-006-0028-7 |citeseerx=10.1.1.108.3878|s2cid=8116065 }}</ref>


== द्वेषपूर्ण (मालिसियस) कोड ==
== द्वेषपूर्ण (मालिसियस) कोड ==
Line 14: Line 14:
यदि सुरक्षा सॉफ़्टवेयर को ऐसे पैटर्न मिलते हैं जो ज्ञात कंप्यूटर वायरस या वर्म्स के अनुरूप होते हैं, तो यह खतरे को बेअसर करने के लिए उचित कदम उठाता है। पॉलिमॉर्फिक एल्गोरिदम ऐसे सॉफ़्टवेयर के लिए आपत्तिजनक कोड को पहचानना मुश्किल बना देता है क्योंकि यह लगातार उत्परिवर्तित होता है।
यदि सुरक्षा सॉफ़्टवेयर को ऐसे पैटर्न मिलते हैं जो ज्ञात कंप्यूटर वायरस या वर्म्स के अनुरूप होते हैं, तो यह खतरे को बेअसर करने के लिए उचित कदम उठाता है। पॉलिमॉर्फिक एल्गोरिदम ऐसे सॉफ़्टवेयर के लिए आपत्तिजनक कोड को पहचानना मुश्किल बना देता है क्योंकि यह लगातार उत्परिवर्तित होता है।


दुर्भावनापूर्ण [[प्रोग्रामर]]्स ने हर बार वायरस या वर्म के फैलने पर अनएन्क्रिप्टेड डिक्रिप्शन इंजन (और परिणामी एन्क्रिप्टेड पेलोड) को फिर से लिखकर इस वायरस-स्कैनिंग रणनीति से अपने एन्क्रिप्टेड कोड को बचाने की मांग की है। एंटी-वायरस सॉफ़्टवेयर डिक्रिप्शन इंजन के विभिन्न म्यूटेशनों के भीतर अंतर्निहित पैटर्न खोजने के लिए परिष्कृत पैटर्न विश्लेषण का उपयोग करता है, इस तरह के [[मैलवेयर]] का मज़बूती से पता लगाने की उम्मीद में।
मालिसियस [[:hi:कंप्यूटर प्रोग्रामर|प्रोग्रामर्स]] ने हर बार वायरस या वर्म के फैलने पर अनएन्क्रिप्टेड डिक्रिप्शन इंजन (और परिणामी एन्क्रिप्टेड पेलोड) को फिर से लिखकर इस वायरस-स्कैनिंग रणनीति से अपने एन्क्रिप्टेड कोड को बचाने की मांग की है। एंटी-वायरस सॉफ़्टवेयर डिक्रिप्शन इंजन के विभिन्न म्यूटेशनों के भीतर अंतर्निहित पैटर्न खोजने के लिए परिष्कृत पैटर्न विश्लेषण का उपयोग करता है, इस उम्मीद में कि ऐसे [[मैलवेयर]] का विश्वसनीय रूप से पता लगाया जा सके।


पारंपरिक सिग्नेचर स्कैनिंग जैसे अन्य तरीकों का उपयोग करने से पहले मैलवेयर को वर्चुअल वातावरण में खुद को अलग करने की अनुमति देकर बहुरूपी अस्पष्टता को हराने के लिए इम्यूलेशन का उपयोग किया जा सकता है। ऐसे आभासी वातावरण को कभी-कभी [[सैंडबॉक्स (कंप्यूटर सुरक्षा)]] कहा जाता है। बहुरूपता इस तरह के अनुकरण के खिलाफ वायरस की रक्षा नहीं करता है यदि डिक्रिप्टेड पेलोड डिक्रिप्शन एल्गोरिदम में भिन्नता के बावजूद समान रहता है। [[मेटामॉर्फिक कोड]] तकनीकों का उपयोग पहचान को और जटिल बनाने के लिए किया जा सकता है, क्योंकि वायरस स्मृति में पहचान योग्य कोड ब्लॉक के बिना निष्पादित हो सकता है जो संक्रमण से संक्रमण तक स्थिर रहता है।
पारंपरिक सिग्नेचर स्कैनिंग जैसे अन्य तरीकों का उपयोग करने से पहले मैलवेयर को वर्चुअल वातावरण में खुद को अलग करने की अनुमति देकर बहुरूपी अस्पष्टता को हराने के लिए एमुलेशन का उपयोग किया जा सकता है। ऐसे आभासी वातावरण को कभी-कभी [[सैंडबॉक्स]] कहा जाता है। पॉलीमॉर्फिक इस तरह के अनुकरण के खिलाफ वायरस की रक्षा नहीं करता है यदि डिक्रिप्टेड पेलोड डिक्रिप्शन एल्गोरिदम में भिन्नता के बावजूद समान रहता है। [[मेटामॉर्फिक कोड]] तकनीकों का उपयोग पहचान को और जटिल बनाने के लिए किया जा सकता है, क्योंकि वायरस स्मृति में पहचान योग्य कोड ब्लॉक के बिना निष्पादित हो सकता है जो संक्रमण से संक्रमण तक स्थिर रहता है।


पहला ज्ञात बहुरूपी विषाणु मार्क वाशबर्न द्वारा लिखा गया था। वायरस, जिसे [[1260 (कंप्यूटर वायरस)]] कहा जाता है, 1990 में लिखा गया था। एक बेहतर ज्ञात पॉलीमॉर्फिक वायरस 1992 में हैकर [[डार्क अवेंजर]] द्वारा एंटीवायरस सॉफ़्टवेयर से पैटर्न की पहचान से बचने के साधन के रूप में बनाया गया था। एक सामान्य और बहुत विषैला बहुरूपी विषाणु फ़ाइल संक्रमक विषाणु है।
पहला ज्ञात बहुरूपी विषाणु मार्क वाशबर्न द्वारा लिखा गया था। वायरस, जिसे [[1260 (कंप्यूटर वायरस)]] कहा जाता है, 1990 में लिखा गया था। एक बेहतर ज्ञात पॉलीमॉर्फिक वायरस 1992 में हैकर [[डार्क अवेंजर]] द्वारा एंटीवायरस सॉफ़्टवेयर से पैटर्न की पहचान से बचने के साधन के रूप में बनाया गया था। एक सामान्य और बहुत विषैला बहुरूपी विषाणु फ़ाइल संक्रमक विषाणु है।


== उदाहरण ==
== उदाहरण ==
यह उदाहरण वास्तव में एक बहुरूपी कोड नहीं है, लेकिन [[xor]] ऑपरेटर के माध्यम से एन्क्रिप्शन की दुनिया के लिए एक परिचय के रूप में काम करेगा।
यह उदाहरण वास्तव में एक बहुरूपी कोड नहीं है, लेकिन [[:hi:ज़ोर|XOR]] ऑपरेटर के माध्यम से एन्क्रिप्शन की दुनिया के लिए एक परिचय के रूप में काम करेगा। उदाहरण के लिए, एक एल्गोरिथ्म में वेरिएबल्स A और B का उपयोग करते हुए, लेकिन वेरिएबल C का नहीं, बड़ी मात्रा में कोड हो सकता है जो C को बदलता है, और इसका एल्गोरिथम पर कोई प्रभाव नहीं पड़ेगा, जिससे इसे अंतहीन रूप से बदला जा सकेगा और इस पर ध्यान दिए बिना कि अंतिम उत्पाद क्या होगा।
उदाहरण के लिए, एक एल्गोरिथ्म में वेरिएबल्स A और B का उपयोग करते हुए, लेकिन वेरिएबल C का नहीं, बड़ी मात्रा में कोड हो सकता है जो C को बदलता है, और इसका एल्गोरिथम पर कोई प्रभाव नहीं पड़ेगा, जिससे इसे अंतहीन रूप से और बिना ध्यान दिए बदला जा सके। अंतिम उत्पाद क्या होगा।


  शुरू:
  Start:
गोटो डिक्रिप्शन_कोड
GOTO Decryption_Code
   
   
  कूट रूप दिया गया:
  Encrypted:
...बहुत सारे एन्क्रिप्टेड कोड...
...lots of encrypted code...
   
   
  डिक्रिप्शन_कोड:
  Decryption_Code:
सी = सी + 1
C = C + 1
= एन्क्रिप्टेड
A = Encrypted
  फंदा:
  Loop:
बी = *
B = *A
सी = 3214 *
C = 3214 * A
बी = बी एक्सओआर क्रिप्टोकी
B = B XOR CryptoKey
* = बी
*A = B
सी = 1
C = 1
सी = + बी
C = A + B
= + 1
A = A + 1
गोटो लूप अगर ए = डिक्रिप्शन_कोड नहीं है
GOTO Loop IF NOT A = Decryption_Code
सी = सी^2
C = C^2
गोटो एन्क्रिप्टेड
GOTO Encrypted
  क्रिप्टोकी:
  CryptoKey:
कुछ_यादृच्छिक_संख्या
some_random_number


एन्क्रिप्टेड कोड पेलोड है। कोड के विभिन्न संस्करणों को बनाने के लिए, प्रत्येक प्रतिलिपि में सी में हेरफेर करने वाली कचरा लाइनें बदल जाएंगी। एन्क्रिप्टेड के अंदर कोड (बहुत सारे एन्क्रिप्टेड कोड) डिक्रिप्शन_कोड और क्रिप्टोकी और प्रत्येक एल्गोरिदम के बीच कोड को नए कोड के लिए खोज सकते हैं जो वही काम करता है। आमतौर पर, कोडर वायरस की पहली पीढ़ी के लिए एक शून्य कुंजी (उदाहरण के लिए; A xor 0 = A) का उपयोग करता है, जिससे कोडर के लिए यह आसान हो जाता है क्योंकि इस कुंजी के साथ कोड एन्क्रिप्ट नहीं किया जाता है। सांकेतिक शब्दों में बदलनेवाला तो एक वृद्धिशील कुंजी एल्गोरिथ्म या एक यादृच्छिक एक लागू करता है।
एन्क्रिप्टेड कोड पेलोड है। कोड के विभिन्न संस्करणों को बनाने के लिए, प्रत्येक प्रतिलिपि में सी में हेरफेर करने वाली कचरा लाइनें बदल जाएंगी। "एन्क्रिप्टेड" ("बहुत सारे एन्क्रिप्टेड कोड") के अंदर कोड डिक्रिप्शन_कोड और क्रिप्टोकी और प्रत्येक एल्गोरिदम के बीच कोड को नए कोड के लिए खोज सकता है जो वही काम करता है। आमतौर पर, कोडर वायरस की पहली पीढ़ी के लिए एक शून्य कुंजी (उदाहरण के लिए; A [[:hi:ज़ोर|xor]] 0 = A) का उपयोग करता है, जिससे कोडर के लिए यह आसान हो जाता है क्योंकि इस कुंजी के साथ कोड एन्क्रिप्ट नहीं किया जाता है। सांकेतिक शब्दों में बदलनेवाला तो एक वृद्धिशील कुंजी एल्गोरिथ्म या एक यादृच्छिक एक लागू करता है।


== यह भी देखें ==
== यह भी देखें ==

Revision as of 22:28, 24 December 2022

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

उदाहरण के लिए, सरल गणित अभिव्यक्ति 3+1 और 6-2 दोनों एक ही परिणाम प्राप्त करते हैं, फिर भी सीपीयू में अलग-अलग मशीन कोड के साथ चलते हैं। इस तकनीक का उपयोग कभी-कभी कंप्यूटर वायरस, शेलकोड और कंप्यूटर वर्म द्वारा अपनी उपस्थिति को छिपाने के लिए किया जाता है। [1]

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

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

द्वेषपूर्ण (मालिसियस) कोड

अधिकांश एंटीवायरस सॉफ्टवेयर और इंट्रूज़न डिटेक्शन सिस्टम (IDS) कंप्यूटर फ़ाइलों और कंप्यूटर नेटवर्क पर भेजे गए डेटा पैकेट के माध्यम से द्वेषपूर्ण कोड का पता लगाने का प्रयास करते हैं।

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

मालिसियस प्रोग्रामर्स ने हर बार वायरस या वर्म के फैलने पर अनएन्क्रिप्टेड डिक्रिप्शन इंजन (और परिणामी एन्क्रिप्टेड पेलोड) को फिर से लिखकर इस वायरस-स्कैनिंग रणनीति से अपने एन्क्रिप्टेड कोड को बचाने की मांग की है। एंटी-वायरस सॉफ़्टवेयर डिक्रिप्शन इंजन के विभिन्न म्यूटेशनों के भीतर अंतर्निहित पैटर्न खोजने के लिए परिष्कृत पैटर्न विश्लेषण का उपयोग करता है, इस उम्मीद में कि ऐसे मैलवेयर का विश्वसनीय रूप से पता लगाया जा सके।

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

पहला ज्ञात बहुरूपी विषाणु मार्क वाशबर्न द्वारा लिखा गया था। वायरस, जिसे 1260 (कंप्यूटर वायरस) कहा जाता है, 1990 में लिखा गया था। एक बेहतर ज्ञात पॉलीमॉर्फिक वायरस 1992 में हैकर डार्क अवेंजर द्वारा एंटीवायरस सॉफ़्टवेयर से पैटर्न की पहचान से बचने के साधन के रूप में बनाया गया था। एक सामान्य और बहुत विषैला बहुरूपी विषाणु फ़ाइल संक्रमक विषाणु है।

उदाहरण

यह उदाहरण वास्तव में एक बहुरूपी कोड नहीं है, लेकिन XOR ऑपरेटर के माध्यम से एन्क्रिप्शन की दुनिया के लिए एक परिचय के रूप में काम करेगा। उदाहरण के लिए, एक एल्गोरिथ्म में वेरिएबल्स A और B का उपयोग करते हुए, लेकिन वेरिएबल C का नहीं, बड़ी मात्रा में कोड हो सकता है जो C को बदलता है, और इसका एल्गोरिथम पर कोई प्रभाव नहीं पड़ेगा, जिससे इसे अंतहीन रूप से बदला जा सकेगा और इस पर ध्यान दिए बिना कि अंतिम उत्पाद क्या होगा।

Start:
	GOTO Decryption_Code

Encrypted:
	...lots of encrypted code...

Decryption_Code:
	C = C + 1
	A = Encrypted
Loop:
	B = *A
	C = 3214 * A
	B = B XOR CryptoKey
	*A = B
	C = 1
	C = A + B
	A = A + 1
	GOTO Loop IF NOT A = Decryption_Code
	C = C^2
	GOTO Encrypted
CryptoKey:
	some_random_number

एन्क्रिप्टेड कोड पेलोड है। कोड के विभिन्न संस्करणों को बनाने के लिए, प्रत्येक प्रतिलिपि में सी में हेरफेर करने वाली कचरा लाइनें बदल जाएंगी। "एन्क्रिप्टेड" ("बहुत सारे एन्क्रिप्टेड कोड") के अंदर कोड डिक्रिप्शन_कोड और क्रिप्टोकी और प्रत्येक एल्गोरिदम के बीच कोड को नए कोड के लिए खोज सकता है जो वही काम करता है। आमतौर पर, कोडर वायरस की पहली पीढ़ी के लिए एक शून्य कुंजी (उदाहरण के लिए; A xor 0 = A) का उपयोग करता है, जिससे कोडर के लिए यह आसान हो जाता है क्योंकि इस कुंजी के साथ कोड एन्क्रिप्ट नहीं किया जाता है। सांकेतिक शब्दों में बदलनेवाला तो एक वृद्धिशील कुंजी एल्गोरिथ्म या एक यादृच्छिक एक लागू करता है।

यह भी देखें


इस पेज में लापता आंतरिक लिंक की सूची

  • अर्थ विज्ञान
  • वाइरस
  • अतिक्रमण संसूचन प्रणाली
  • उलझा हुआ कोड

संदर्भ

  1. Raghunathan, Srinivasan (2007). Protecting anti-virus software under viral attacks (M.Sc.). Arizona State University.
  2. Wong, Wing; Stamp, M. (2006). "मेटामॉर्फिक इंजन के लिए शिकार". Journal in Computer Virology. 2 (3): 211–229. CiteSeerX 10.1.1.108.3878. doi:10.1007/s11416-006-0028-7. S2CID 8116065.