
The Web Exploit Detector एक Node.js अनुप्रयोग है जिसका उपयोग वेब होस्टिंग वातावरणों में संभावित संक्रमणों, दुर्भावनापूर्ण कोड और संदिग्ध फाइलों का पता लगाने के लिए किया जाता है।

वेब एक्सप्लॉइट डिटेक्टर एक Node.js एप्लिकेशन (और NPM मॉड्यूल) है जिसका उपयोग वेब होस्टिंग वातावरण में संभावित संक्रमण, दुर्भावनापूर्ण कोड और संदिग्ध फ़ाइलों का पता लगाने के लिए किया जाता है। यह एप्लिकेशन एक या अधिक वेबसाइटों की मेजबानी करने वाले वेब सर्वर पर चलाने के लिए है। एप्लिकेशन चलाने से संभावित रूप से संक्रमित फ़ाइलों की एक सूची उत्पन्न होगी, साथ ही संक्रमण का विवरण और उससे संबंधित ऑनलाइन संसाधनों के संदर्भ भी होंगे।
संस्करण 1.1.0 के अनुसार, एप्लिकेशन में निर्देशिका संरचना के स्नैपशॉट उत्पन्न करने और तुलना करने के लिए उपयोगिताएँ भी शामिल हैं, जिससे उपयोगकर्ता यह देख सकते हैं कि कोई फ़ाइल संशोधित, जोड़ी या हटाई गई है या नहीं।
एप्लिकेशन यहाँ GitHub पर होस्ट किया गया है ताकि दूसरे इससे लाभ उठा सकें, साथ ही दूसरों को अपने स्वयं के डिटेक्शन नियमों का योगदान करने की अनुमति मिल सके।
वेब एक्सप्लॉइट डिटेक्टर को स्थापित करने का सबसे सरल तरीका एक वैश्विक NPM मॉड्यूल के रूप में है: -
npm install -g web_exploit_detector
यदि आप Linux या किसी अन्य Unix-आधारित OS पर चला रहे हैं, तो आपको इस कमांड को रूट के रूप में चलाने की आवश्यकता हो सकती है (जैसे sudo npm install -g web_exploit_detector)।
मॉड्यूल को नियमित रूप से अपडेट किया जाना चाहिए ताकि यह सुनिश्चित हो सके कि सभी नवीनतम डिटेक्शन नियम मौजूद हैं। उपरोक्त कमांड चलाने से हमेशा नवीनतम स्थिर (परीक्षित) संस्करण डाउनलोड होगा। पहले से स्थापित संस्करण को अपडेट करने के लिए, बस निम्नलिखित चलाएँ: -
npm update -g web_exploit_detector
फिर से, आपको ऊपर बताए अनुसार sudo कमांड का उपयोग करना पड़ सकता है।
आप Git रिपॉजिटरी को क्लोन भी कर सकते हैं और सीधे स्क्रिप्ट चला सकते हैं: -
git clone https://github.com/polaris64/web_exploit_detectorcd web_exploit_detectornpm installयदि आपने वेब एक्सप्लॉइट डिटेक्टर को NPM मॉड्यूल के रूप में स्थापित किया है (ऊपर देखें), तो स्कैनर चलाना उतना ही सरल है जितना कि निम्नलिखित कमांड चलाना, जिसमें आपके वेबरूट (आपकी वेबसाइट फ़ाइलों का स्थान) का पथ पास करना होगा: -
wed-scanner --webroot=/var/www/html
अन्य कमांड-लाइन विकल्प उपलब्ध हैं, बस उनका वर्णन करने वाला सहायता संदेश देखने के लिए wed-scanner --help चलाएँ।
इस तरह स्क्रिप्ट चलाने से कंसोल पर मानव-पठनीय आउटपुट उत्पन्न होगा। यह बहुत उपयोगी है, उदाहरण के लिए cron के साथ स्क्रिप्ट चलाते समय, क्योंकि आउटपुट को स्क्रिप्ट चलने पर ई-मेल के रूप में भेजा जा सकता है।
स्क्रिप्ट बाद में प्रसंस्करण के लिए परिणामों को अधिक कंप्यूटर-अनुकूल JSON प्रारूप में लिखने का भी समर्थन करती है। इस आउटपुट को सक्षम करने के लिए, --output कमांड लाइन तर्क देखें।
बस node के माध्यम से स्क्रिप्ट को कॉल करें और अपने वेबरूट का पथ इस प्रकार पास करें: -
node index.js --webroot=/var/www/html
वेब एक्सप्लॉइट डिटेक्टर उन फ़ाइलों की पहचान करने में मदद करने के लिए दो उपयोगिताओं के साथ आता है जो अप्रत्याशित रूप से बदल सकती हैं। किसी साइट पर सफल हमले में आमतौर पर फ़ाइलों को हटाना, नई फ़ाइलें जोड़ना या मौजूदा फ़ाइलों को किसी तरह से बदलना शामिल होता है।
एक स्नैपशॉट (जैसा कि इन उपयोगिताओं द्वारा उपयोग किया जाता है) एक JSON फ़ाइल है जो स्नैपशॉट बनाए जाने के समय सभी फ़ाइलों के साथ-साथ उनकी सामग्री का विवरण सूचीबद्ध करती है। यदि, उदाहरण के लिए, सोमवार को एक स्नैपशॉट उत्पन्न किया गया था, और फिर मंगलवार को साइट पर हमला किया गया, तो बाद में इस स्नैपशॉट और वर्तमान साइट फ़ाइलों के बीच तुलना चलाने से पता चलेगा कि एक या अधिक फ़ाइलें जोड़ी गईं, हटाई गईं या बदलीं। इसलिए इन उपयोगिताओं का लक्ष्य इन स्नैपशॉट को बनाने और आवश्यकता होने पर तुलना करने की अनुमति देना है।
स्नैपशॉट प्रत्येक फ़ाइल पथ को फ़ाइल सामग्री के SHA-256 हैश के साथ संग्रहीत करता है। एक हैश, या डाइजेस्ट, एक संदेश का एक छोटा सारांश है, जो इस मामले में फ़ाइल की सामग्री है। यदि फ़ाइल सामग्री बदलती है, भले ही बहुत छोटे तरीके से, हैश पूरी तरह से अलग हो जाएगा। यह फ़ाइल सामग्री में किसी भी बदलाव का पता लगाने का एक अच्छा तरीका प्रदान करता है।
निम्नलिखित दो उपयोगिताएँ भी वेब एक्सप्लॉइट डिटेक्टर के भाग के रूप में स्थापित की गई हैं: -
wed-generate-snapshot: यह उपयोगिता "--webroot" द्वारा निर्दिष्ट निर्देशिका में सभी फ़ाइलों (पुनरावर्ती) के लिए एक स्नैपशॉट उत्पन्न करने की अनुमति देती है। स्नैपशॉट को "--output" विकल्प में निर्दिष्ट फ़ाइल में सहेजा जाएगा।wed-compare-snapshot: एक बार स्नैपशॉट उत्पन्न हो जाने के बाद, इसकी तुलना उसी निर्देशिका की वर्तमान सामग्री से की जा सकती है। जाँच करने के लिए स्नैपशॉट "--snapshot" विकल्प का उपयोग करके निर्दिष्ट किया जाता है। जाँच करने के लिए आधार निर्देशिका स्नैपशॉट के अंदर संग्रहीत होती है, लेकिन यदि स्नैपशॉट उत्पन्न होने के बाद से आधार निर्देशिका बदल गई है, तो --webroot विकल्प का उपयोग किया जा सकता है।स्नैपशॉट को आवश्यकतानुसार बार-बार उत्पन्न किया जा सकता है, लेकिन सामान्य नियम के रूप में, उन्हें तब उत्पन्न किया जाना चाहिए जब कोई साइट साफ़ (गैर-संक्रमित) स्थिति में हो और जब कोई वैध परिवर्तन किया गया हो। WordPress जैसी CMS-आधारित साइटों के लिए, नियमित रूप से स्नैपशॉट बनाए जाने चाहिए क्योंकि नए अपलोड के कारण नई स्थिति संग्रहीत स्नैपशॉट से बदल जाएगी। उन साइटों के लिए जिनकी फ़ाइलें कभी नहीं बदलनी चाहिए, एक एकल स्नैपशॉट उत्पन्न किया जा सकता है और फिर यह सुनिश्चित करने के लिए अनिश्चित काल तक उपयोग किया जा सकता है कि वास्तव में कुछ भी न बदले।
src/web-exploit-detector.js स्क्रिप्ट एक ES6 मॉड्यूल है जो नियमों के सेट को rules के रूप में निर्यात करता है, साथ ही कई फ़ंक्शन भी: -
executeTests(settings): पारित settings ऑब्जेक्ट के आधार पर एक्सप्लॉइट चेकर चलाता है। उपयोग के लिए, कृपया index.js स्क्रिप्ट देखें।formatResult(result): executeTests() से लौटाए गए सरणी से एक एकल परीक्षण result लेता है और उस परीक्षण के लिए आउटपुट के लिए तैयार परिणामों की एक स्ट्रिंग उत्पन्न करता है।getFileList(path): readDirRecursive() का उपयोग करके आधार path से फ़ाइलों की एक सरणी लौटाता है।processRulesOnFile(file, rules): सरणी rules के सभी नियमों को एक एकल file (स्ट्रिंग पथ) पर संसाधित करता है।readDirRecursive(path): पुनरावर्ती फ़ंक्शन जो एक वादा (Promise) लौटाता है जो path और उप-निर्देशिकाओं में सभी फ़ाइलों की एक सरणी के साथ हल किया जाएगा।src/cli.js स्क्रिप्ट इस मॉड्यूल के लिए एक सरल कमांड-लाइन इंटरफ़ेस (CLI) है जैसा कि wed-scanner स्क्रिप्ट द्वारा उपयोग किया जाता है, इसलिए इस स्क्रिप्ट को पढ़ने से यह पता चलता है कि इस मॉड्यूल का उपयोग कैसे किया जा सकता है।
प्रोजेक्ट "src" में ES6 मॉड्यूल को "lib" में सादे जावास्क्रिप्ट मॉड्यूल में संकलित करने के लिए Babel का उपयोग करता है। यदि आप Node.js का पुराना संस्करण चला रहे हैं, तो मॉड्यूल को इसके बजाय "lib" निर्देशिका से require() किया जा सकता है।
पैकेज में dev-निर्भरता के रूप में Babel और "build" और "watch:build" स्क्रिप्ट शामिल हैं। "build" स्क्रिप्ट (npm run build) चलाने पर, "./src" में ES6 मॉड्यूल संकलित हो जाएंगे और "./lib" में सहेजे जाएंगे, जहां वे CLI स्क्रिप्ट द्वारा शामिल किए जाते हैं।
"./lib" निर्देशिका रिपॉजिटरी में शामिल है ताकि कोई भी उपयोगकर्ता रिपॉजिटरी को क्लोन कर सके और dev-निर्भरताएँ स्थापित किए बिना और एप्लिकेशन बनाए बिना सीधे एप्लिकेशन चला सके।
कभी-कभी नियम, विशेष रूप से वे जो suspicion टैग से चिह्नित होते हैं, एक स्वच्छ फ़ाइल को संभावित एक्सप्लॉइट के रूप में पहचान लेंगे। इस वजह से, फ़ाइलों को किसी नियम के लिए जाँचे जाने से बाहर करने की अनुमति देने के लिए एक प्रणाली भी शामिल है।