
Melkor ELF पार्सर्स में कार्यात्मक और सुरक्षा बग्स खोजने के लिए एक अत्यंत सहज और उपयोग में आसान ELF फ़ाइल प्रारूप फ़ज़र है।
--------------------------------~
| -- विवरण -- |
--------------------------------~
मेल्कोर - एक ELF फ़ाइल फ़ॉर्मेट फ़ज़र
मेल्कोर, जे. आर. आर. टोल्किन की मध्य-पृथ्वी पौराणिक गाथाओं का एक काल्पनिक पात्र, पहला डार्क लॉर्ड और सौरोन का स्वामी था। द लॉर्ड ऑफ द रिंग्स में उसका संक्षेप में उल्लेख किया गया है और वह इसके लिए जाना जाता है:
"... मेल्कोर ने वलार द्वारा आक्रमण किए जाने से पहले कई एल्वेस को पकड़ लिया था, और उसने उन्हें प्रताड़ित और भ्रष्ट किया, जिससे पहले ऑर्क्स की उत्पत्ति हुई।" (http://en.wikipedia.org/wiki/Morgoth)
"... मेल्कोर चालाक और पहले से कहीं अधिक द्वेष से भरा हुआ था। एल्वेस की खुशहाली देखकर और यह याद करके कि उसे उन्हीं की खातिर पराजित किया गया था, मेल्कोर सबसे बढ़कर उन्हें भ्रष्ट करना चाहता था।" (http://lotr.wikia.com/wiki/Melkor)
"ऑर्क्स... जिस दिन से उन्हें मेल्कोर ने भ्रष्ट, प्रताड़ित और विकृत एल्वेस से पैदा किया था, तभी से ऐसा है; हो सकता है कि उन्हें अंधकार की शक्तियों के अधीन अन्य अप्राकृतिक घिनौने प्राणियों के साथ प्रजनन के लिए भी मजबूर किया गया हो।" (http://lotr.wikia.com/wiki/Orcs)
उसके नाम के सम्मान में, यह कोड एक ELF लेता है, उसे भ्रष्ट करता है और जितने चाहें उतने ऑर्क्स (विकृत ELF) बनाता है।
मेल्कोर एक हाइब्रिड फ़ज़र है (म्यूटेशन-आधारित और जनरेशन-आधारित)। यह ऑर्क्स (विकृत ELF) बनाने के लिए दिए गए ELF नमूने में मौजूद डेटा को बदलता है, हालाँकि, यह मानों को बेतरतीब ढंग से नहीं बदलता (डंब फ़ज़िंग), बल्कि फ़ज़िंग नियमों (ज्ञानकोष) के उपयोग से कुछ मेटाडेटा को अर्ध-मान्य मानों के साथ फ़ज़ करता है। C में लिखा गया, मेल्कोर ELF पार्सर में कार्यात्मक (और सुरक्षा) बग खोजने के लिए एक बहुत ही सहज और उपयोग में आसान फ़ज़र है।
फ़ज़िंग नियम निम्नलिखित इनपुट को ध्यान में रखकर डिज़ाइन किए गए थे:
आपको फ़ज़िंग नियमों का विवरण और कुछ अन्य आरेख docs/ निर्देशिका में मिलेंगे।
--------------------------------~
| -- आवश्यकताएँ -- |
--------------------------------~
--------------------------------~
| -- संकलन और उपयोग -- |
--------------------------------~
संकलन बहुत सीधा है, बस टाइप करें:
$make
यह 'melkor' फ़ाइल बनाएगा, जो स्वयं फ़ज़र है, और templates/ फ़ोल्डर के अंदर कुछ अन्य ELF फ़ाइलें भी बनाएगा, जिनमें सामान्य ELF फ़ाइलें जैसे एक सामान्य ELF एक्ज़ीक्यूटेबल, कुछ शेयर्ड लाइब्रेरीज़, एक स्टैटिक ELF (स्टैंडअलोन एक्ज़ीक्यूटेबल) और कुछ अन्य शामिल हैं।
मेल्कोर चलाने पर, विकल्पों की एक सूची दिखाई जाएगी और आप पाएँगे कि यह बहुत ही सहज और उपयोग में आसान है। आपको बस एक ELF का नाम देना होता है जिसे टेम्पलेट के रूप में उपयोग किया जाए, जो templates/ निर्देशिका के अंदर मौजूद किसी भी फ़ाइल को हो सकता है।
आप किस प्रकार के सॉफ़्टवेयर का परीक्षण करना चाहते हैं, इसके आधार पर आपको चुनना होगा कि आप किस मेटाडेटा को फ़ज़ करना चाहते हैं। उदाहरण के लिए, यदि आप OS लोडर का परीक्षण करना चाहते हैं, तो संभवतः आप केवल प्रोग्राम हेडर टेबल (-P) और/या डायनेमिक सेक्शन (-D) को फ़ज़ करना चाहेंगे। दूसरी ओर, शायद आप किसी एंटीवायरस इंजन या डिबगर का परीक्षण करने के लिए सेक्शन हेडर टेबल और ELF हेडर को फ़ज़ करना चाहें। रिलोकेटेबल फ़ाइलों (.o) या शेयर्ड लाइब्रेरीज़ (.so) पर सिंबल टेबल (-s) और/या रिलोकेशन टेबल (-R) को फ़ज़ करके कंपाइलर और/या लिंकर का परीक्षण करें। स्ट्रिंग टेबल को भी फ़ज़ किया जा सकता है (-Z)। यह आप पर निर्भर करता है कि आप किसी ELF को कितनी बुरी तरह भ्रष्ट करना चाहते हैं }:-)
एक बार orcs_*/ निर्देशिका के अंदर ऑर्क्स बन जाने के बाद, test_fuzzed.sh की सहायता से उनका परीक्षण करने का समय आ जाता है, जहाँ आप केवल चलाए जाने वाले ऑर्क्स वाले फ़ोल्डर का नाम निर्दिष्ट कर सकते हैं (OS लोडर परीक्षण) या एक अतिरिक्त पैरामीटर जोड़कर निर्दिष्ट कर सकते हैं कि आप ऑर्क्स फ़ोल्डर के भीतर हर विकृत ELF के विरुद्ध किस प्रोग्राम (और उसके पैरामीटर) का परीक्षण करना चाहते हैं। इस स्क्रिप्ट में कुछ पर्यावरण चरों को फ़ज़ करने का विकल्प भी है (जिन्हें फ़ज़िंग नियमों के रूप में भी परिभाषित किया गया है)। स्क्रिप्ट चलाने के बाद #dmesg के साथ लॉग दिखाना यह पहचानने में उपयोगी हो सकता है कि कौन सा प्रोग्राम/लाइब्रेरी क्रैश हुआ और वह क्रैश कहाँ हुआ। स्क्रिप्ट को बिना पैरामीटर के चलाने पर कुछ उदाहरण दिखाए जाते हैं।
यदि आप Windows वातावरण में विकृत ELF (ऑर्क्स) का स्वचालित रूप से परीक्षण करना चाहते हैं, तो एक बैच स्क्रिप्ट (win_test_fuzzed.bat) शामिल है जिसकी कार्यक्षमता लगभग *NIX के लिए बनी स्क्रिप्ट के समान है।
शुभ फ़ज़िंग !
--------------------------------~
| -- निर्देशिकाएँ -- |
--------------------------------~
docs/ संबंधित दस्तावेज़ीकरण शामिल है, जैसे फ़ज़िंग नियमों की विस्तृत सूची और ELF मेटाडेटा निर्भरताओं की सूची।
templates/ इसमें कुछ ELF फ़ाइलें हैं जो मेल्कोर के साथ ही संकलित होती हैं और मेल्कोर को इनपुट देने के लिए उपयोग की जा सकती हैं: foo.c -> foo.o (ELF ऑब्जेक्ट)-> foo (ELF एक्ज़ीक्यूटेबल) foo.c -> foo_static (ELF स्टैटिक एक्ज़ीक्यूटेबल) libfoo.c -> libfoo.so (ELF शेयर्ड ऑब्जेक्ट) और कुछ अन्य। विस्तार से देखने के लिए कि कौन से अन्य ELF टेम्पलेट बनाए जाते हैं, "$make templ" टाइप करें।
orcs_*/ फ़ज़िंग प्रक्रिया के बाद बनाई गई विकृत ELF फ़ाइलें (दिए गए टेम्पलेट फ़ाइल के आधार पर) इसमें होंगी।
src/ मेल्कोर का स्रोत कोड।
--------------------------------~
| -- बग्स -- |
--------------------------------~
कृपया BUGS.txt पढ़ें
--------------------------------~
| -- संपर्क -- |
--------------------------------~
नाम: Alejandro Hernandez H. [nitr0us] ट्विटर: http://twitter.com/nitr0usmx ईमेल: nitrousenador [at] gmail [dot] com वेबसाइट: http://www.brainoverflow.org ब्लॉग: http://chatsubo-labs.blogspot.com
--------------------------------~
| -- स्मृति में -- |
--------------------------------~
यह परियोजना मेरे सबसे अच्छे दोस्तों में से एक, Aaron Alba की स्मृति को समर्पित है।
--------------------------------~
| -- लाइसेंस -- |
--------------------------------~
मेल्कोर - एक ELF फ़ाइल फ़ॉर्मेट फ़ज़र कॉपीराइट (C) 2014 Alejandro Hernandez H. (nitr0us)
यह प्रोग्राम मुफ़्त सॉफ़्टवेयर है: आप इसे GNU जनरल पब्लिक लाइसेंस की शर्तों के तहत पुनर्वितरित और/या संशोधित कर सकते हैं, जैसा कि Free Software Foundation द्वारा प्रकाशित किया गया है, लाइसेंस का संस्करण 3, या (आपके विकल्प पर) कोई भी बाद का संस्करण।
यह प्रोग्राम इस आशा के साथ वितरित किया जाता है कि यह उपयोगी होगा, लेकिन बिना किसी वारंटी के; व्यापारिकता (MERCHANTABILITY) या किसी विशेष उद्देश्य के लिए उपयुक्तता की निहित वारंटी के बिना भी। अधिक विवरण के लिए GNU जनरल पब्लिक लाइसेंस देखें।
आपको इस प्रोग्राम के साथ GNU जनरल पब्लिक लाइसेंस की एक प्रति प्राप्त होनी चाहिए थी। यदि नहीं, तो देखें http://www.gnu.org/licenses/।