
Sniffles: IDS और रेगुलर एक्सप्रेशन मूल्यांकन के लिए पैकेट कैप्चर जनरेटर
Sniffles एक उपकरण है जो पैकेट कैप्चर बनाने के लिए है जो IDS का परीक्षण करेगा जो संदिग्ध व्यवहार का पता लगाने के लिए निश्चित पैटर्न या रेगुलर एक्सप्रेशन का उपयोग करते हैं। Sniffles बहुत सरलता से काम करता है। यह रेगुलर एक्सप्रेशन या नियमों का एक सेट लेता है और बेतरतीब ढंग से एक रेगुलर एक्सप्रेशन या नियम चुनता है। फिर यह उस नियम या रेगुलर एक्सप्रेशन के आधार पर सामग्री उत्पन्न करता है। निश्चित स्ट्रिंग्स के लिए, इसका मतलब है कि स्ट्रिंग को सीधे डेटा में जोड़ना (संभवतः Snort नियमों के अनुसार ऑफसेट या अन्य विकल्पों के साथ)। रेगुलर एक्सप्रेशन के लिए प्रक्रिया कुछ अधिक जटिल है। रेगुलर एक्सप्रेशन को NFA में बदल दिया जाता है और NFA के माध्यम से एक यादृच्छिक पथ चुना जाता है (शुरू से अंत तक)। परिणामी डेटा रेगुलर एक्सप्रेशन से मेल खाएगा। अंत में, Sniffles को पूर्ण मिलान या आंशिक मिलान पर सेट किया जा सकता है। पूर्ण मिलान के साथ, पैकेट डेटा कम से कम एक नियम या रेगुलर एक्सप्रेशन से पूरी तरह मेल खाएगा (हालांकि कुछ Snort विकल्पों पर पूरी तरह से विचार नहीं किया जाता है)। आंशिक मिलान मिलान वर्ण अनुक्रम से अंतिम वर्ण मिटा देगा ताकि एक अनुक्रम बने जो मेल नहीं खाना चाहिए (हालांकि दूसरे नियम से मेल खा सकता है)। मिलान वाले नियमों से IDS पर सबसे अधिक बोझ पड़ना चाहिए। इस प्रकार, यह निर्धारित करना संभव है कि IDS सबसे खराब स्थिति के ट्रैफ़िक को कितनी अच्छी तरह संभालता है। आंशिक मिलान ट्रैफ़िक लगभग उतना ही बोझ डालेगा जितना मिलान ट्रैफ़िक। अंत में, Sniffles पूरी तरह से यादृच्छिक डेटा वाला ट्रैफ़िक भी उत्पन्न कर सकता है। ऐसा यादृच्छिक डेटा सर्वोत्तम स्थिति का परिदृश्य प्रदान करता है क्योंकि यादृच्छिक डेटा के किसी भी नियम से मेल खाने की संभावना बहुत कम होती है। इस प्रकार, इसे अधिकतम गति से संसाधित किया जा सकता है। इस प्रकार, Sniffles IDS डीप पैकेट निरीक्षण के सर्वोत्तम और सबसे खराब स्थिति संचालन के लिए पैकेट कैप्चर बनाने की अनुमति देता है।
उपरोक्त के अलावा, Sniffles में मूल्यांकन पैकेट कैप्चर बनाने की क्षमता भी है। मूल्यांकन पैकेट कैप्चर दो प्रकार के होते हैं। पहला मूल्यांकन पैकेट कैप्चर प्रत्येक नियम या रेगुलर एक्सप्रेशन के लिए क्रम में बिल्कुल एक पैकेट बनाएगा। इस प्रकार यह परीक्षण करना और देखना संभव है कि प्रत्येक नियम अपेक्षित रूप से मेल खाता है। पूर्ण मूल्यांकन एक कदम और आगे बढ़ता है और एक रेगुलर एक्सप्रेशन में प्रत्येक संभावित शाखा के लिए एक पैकेट बनाता है। एक एकल रेगुलर एक्सप्रेशन में हजारों संभावित शाखाएँ हो सकती हैं। यह सुनिश्चित करने के लिए परीक्षण करता है कि एक रेगुलर एक्सप्रेशन की सभी संभावित शाखाओं को ठीक से संभाला जाए। मूल्यांकन पैकेट कैप्चर को सभी पैकेटों से मेल खाना चाहिए। कोई भी अमेलित पैकेट संभवतः IDS की विफलता का प्रतिनिधित्व करता है और आगे की जांच की आवश्यकता है। बेशक, हमेशा संभावना है कि Sniffles किसी दिए गए IDS के लिए सही पैकेट नहीं बना रहा है, या किसी नियम के किसी विशेष विकल्प को नहीं पहचानता है। अधिक जानकारी के लिए समर्थित नियम सुविधाएँ देखें।
अंत में, Sniffles यादृच्छिक नेटवर्क ट्रैफ़िक उत्पन्न करने के लिए भी बहुत कुछ कर सकता है। डिफ़ॉल्ट रूप से, यादृच्छिक ट्रैफ़िक TCP, UDP या ICMP होता है और एकदिशीय होता है। हालाँकि, यह प्रत्येक स्ट्रीम के लिए ACK, हैंडशेक और टियरडाउन के साथ TCP ट्रैफ़िक भी उत्पन्न कर सकता है। यह सही अनुक्रम संख्या और चेकसम उत्पन्न करेगा। इसके अलावा, MAC पतों को वांछित वितरण के अनुसार सेट किया जा सकता है, और IP नेटवर्क पतों को होम और एक्सटर्नल पता स्थानों द्वारा परिभाषित किया जा सकता है। इसके अलावा, ट्रैफ़िक कैप्चर के भीतर स्कैन का अनुकरण करना संभव है।
आवश्यकता है: Python 3.3+ और SortedContainers मॉड्यूल
Sniffles में निम्नलिखित फ़ाइलें शामिल हैं:
स्थापित करने के लिए:
python3.x setup.py install टाइप करें।स्थापना नोट्स:
python3.x setup.py build का उपयोग करें, फिर लाइब्रेरी निर्देशिका पर जाएं, lib ढूंढें और स्थानीय रूप से चलाने के लिए python3.4 -c "from sniffles import sniffles; sniffles.main()" का उपयोग करें।Snort: Snort अलर्ट नियम (नियम Alert निर्देश से शुरू होना चाहिए)। Content टैग को पहचाना और सही ढंग से पार्स किया जाता है। PCRE टैग को भी इसी प्रकार सही ढंग से पार्स किया जाता है। HTTP टैग को क्रमिक रूप से संसाधित किया जाता है ताकि वे वांछित पैकेट न बना सकें। Content (और PCRE या HTTP सामग्री) को distance, within और offset द्वारा संशोधित किया जा सकता है। एक नियम फ्लो कंट्रोल विकल्प का उपयोग कर सकता है, हालांकि इससे केवल डेटा की दिशा प्राप्त होती है। nocase विकल्प को अनदेखा किया जाता है और प्रस्तुत मामले का उपयोग किया जाता है। अन्य सभी विकल्पों को अनदेखा किया जाता है। हेडर मानों को पार्स किया जाता है और उन मानों को पूरा करने वाला एक पैकेट उत्पन्न किया जाएगा। यदि होम और एक्सटर्नल नेटवर्क पता स्थानों का उपयोग किया जाता है तो क्रमशः $HOME_NET और $EXTERNAL_NET चर के लिए सही स्थान का उपयोग किया जाएगा। उदाहरण:
alert tcp $EXTERNAL_NET any -> $HOME_NET 8080 (msg:"SERVER-APACHE Apache Tomcat UNIX platform directory traversal"; flow:to_server; content:"/..|5C|/"; content:"/..|5C|/"; http_raw_uri;
रेगुलर एक्सप्रेशन: एक पंक्ति में 1 रेगुलर एक्सप्रेशन, या तो abc या /abc/i के रूप में लिखा गया। वर्तमान में विकल्प i, s, और m का समर्थन करता है। अन्य विकल्पों को अनदेखा किया जाता है। उदाहरण:
/ab*c(d|e)f/i
Sniffles नियम प्रारूप नीचे वर्णित है।
-a TCP Ack: प्रत्येक डेटा पैकेट भेजने के लिए TCP पावती भेजें। डिफ़ॉल्ट रूप से बंद। पावती पैकेट में डिफ़ॉल्ट रूप से कोई डेटा नहीं होता है।
-b द्विदिशीय डेटा: TCP स्ट्रीम की दोनों दिशाओं में डेटा उत्पन्न किया जाएगा। ACK चालू कर दिए जाएंगे। यह सुविधा डिफ़ॉल्ट रूप से बंद है।
-B [पृष्ठभूमि ट्रैफ़िक प्रोटोकॉल:प्रतिशत]: पृष्ठभूमि ट्रैफ़िक उत्पन्न करने के लिए 1 से 100 के बीच मान वाला कम से कम एक प्रोटोकॉल सेट करें। यह मान कुल ट्रैफ़िक के प्रतिशत का प्रतिनिधित्व करता है। उपलब्ध प्रोटोकॉल: FTP, HTTP, IMAP, POP और SMTP। उदाहरण के लिए: "http:20,ftp:30,smtp:10"। यादृच्छिक रूप से ट्रैफ़िक उत्पन्न करने के लिए तर्क मान के रूप में केवल एक संख्या दर्ज करें। उदाहरण के लिए: "80"।
-c गणना: बनाने के लिए स्ट्रीम की संख्या। प्रत्येक स्ट्रीम में कम से कम 1 पैकेट होगा। पैकेट दो एंड-पॉइंट्स के बीच होगा जैसा कि नियम द्वारा परिभाषित किया गया है या बेतरतीब ढंग से चुना गया है। tcp_handshake, tcp_teardown और packets_per_stream प्रति स्ट्रीम पैकेट की संख्या बढ़ाएंगे। वर्तमान में, एक स्ट्रीम में डेटा केवल एक दिशा में बहता है। यदि -b विकल्प का उपयोग किया जाता है तो डेटा दोनों दिशाओं में प्रवाहित होना चाहिए। साथ ही, Sniffles नियम दोनों दिशाओं में डेटा प्रवाहित करने के लिए नामित कर सकते हैं।