
एक नेटवर्क निरीक्षण उपकरण
एक नेटवर्क ट्रैफ़िक निरीक्षण उपकरण
यह IP को डीफ़्रेगमेंट करने और TCP पैकेटों को पुनः संयोजित करने के लिए libnids (Jon Oberheide के पायथन बाइंडिंग के माध्यम से: pynids) का उपयोग करता है (UDP का निरीक्षण प्रति-पैकेट आधार पर किया जाता है) ताकि नेटवर्क प्रवाह उत्पन्न किया जा सके। फिर इन प्रवाहों का निरीक्षण चार निरीक्षण मोडों में से एक का उपयोग करके किया जाता है:
Regex मिलान re2 लाइब्रेरी और इसके पायथन बाइंडिंग, pyre2 का उपयोग करके किया जाता है, जो PCRE, केस-असंवेदनशील, इन्वर्ट और मल्टीलाइन मिलान आदि का समर्थन करता है। Python में निर्मित re मॉड्यूल (जो re2 स्थापित न होने पर एक फ़ॉलबैक के रूप में उपयोग किया जाता है) की तुलना में इसका भारी प्रदर्शन लाभ है।
फ़ज़ी स्ट्रिंग मिलान सुविधाएँ fuzzywuzzy मॉड्यूल के माध्यम से कार्यान्वित की जाती हैं। यह सटीक और सापेक्ष दोनों स्ट्रिंग मिलान करने में मदद करता है। एक डिफ़ॉल्ट मिलान थ्रेशोल्ड 75 का उपयोग डिफ़ॉल्ट के रूप में किया जाता है और इसे cli के माध्यम से ओवरराइड किया जा सकता है।
Libemu और इसके पायथन बाइंडिंग, pylibemu, शेलकोड का पता लगाने के लिए उपयोग किए जाते हैं। Libemu द्वारा उपयोग की जाने वाली GetPC ह्यूरिस्टिक्स एक अच्छा पहचान अनुपात प्रदान करती हैं। कुछ मामले हैं जहाँ libemu बस विफल हो जाता है, लेकिन अधिकांश उपयोग मामलों के लिए यह पर्याप्त है।
Yara एक हस्ताक्षर-आधारित मैलवेयर पहचान और वर्गीकरण उपकरण है। इसके yara-python बाइंडिंग एक इनपुट बफर (जो इस मामले में एक नेटवर्क स्ट्रीम है) पर मौजूदा/कस्टम हस्ताक्षर फ़ाइलों का उपयोग करने के लिए एक API प्रदान करते हैं।
निरीक्षण CTS/STC/ANY दिशाओं या उनके संयोजनों में से किसी के लिए अनुरोध किया जा सकता है। निरीक्षण बफ़र्स नेटवर्क ट्रैफ़िक आने पर पॉप्युलेट होते हैं और इस प्रकार CTS मिलान (CTS या ANY) पहले होते हैं। यदि निरीक्षण के एक से अधिक मोड का अनुरोध किया गया है, तो प्रवाहों का निम्नलिखित क्रम में निरीक्षण किया जाता है: regex, fuzzy, libemu, और अंत में yara। TCP के लिए, यदि निरीक्षण मोडों में से कोई भी सफल होता है, तो मिलान किए गए प्रवाह का आगे निरीक्षण नहीं किया जाएगा। यह एक आशावादी दृष्टिकोण है और डिफ़ॉल्ट रूप से सक्षम है। हालाँकि, यदि किसी निश्चित उपयोग मामले के लिए किसी TCP स्ट्रीम का कई बार निरीक्षण करना हो, तो इसे cli का उपयोग करके स्पष्ट रूप से अनुरोध किया जा सकता है।
यदि आवश्यक हो तो linemode cli विकल्प के माध्यम से निरीक्षण को पूरी तरह से अक्षम किया जा सकता है। यह मोड वास्तव में सहायक है और जब किसी उपयुक्त outmode के साथ जोड़ा जाता है, तो यह नेटवर्क संचार को वैसे ही देखने में मदद करता है जैसे वह तार पर हो रहा है। Linemode एक फ़ॉलबैक के रूप में स्वचालित रूप से सक्षम होता है यदि cli के माध्यम से कोई निरीक्षण मोड प्रदान नहीं किया गया है।
UDP के लिए, मिलान प्रति-पैकेट आधार पर होते हैं और इसलिए एक UDP प्रवाह पर पहले ही मिलान मिल जाने के बाद भी बाद के पैकेटों का परीक्षण किया जाएगा। चूँकि केवल बाद के पैकेटों और उनकी सामग्री का निरीक्षण किया जाता है, यह सुनिश्चित करता है कि पहले के निरीक्षण चक्रों के दौरान पहले से मिलान किया गया डेटा फिर से निरीक्षण नहीं किया जाए।
मिलान के दायरे को BPF एक्सप्रेशन, Snort-समान ऑफ़सेट-डेप्थ सामग्री संशोधक या पैकेट्स/स्ट्रीम्स निरीक्षण सीमा cli विकल्पों के माध्यम से सीमित किया जा सकता है। TCP के लिए, आवश्यकता पड़ने पर मिलान किए गए प्रवाहों को मारा भी जा सकता है। प्रवाहों को stdout पर डंप किए जाने के अलावा फ़ाइलों में भी लॉग किया जा सकता है। कुछ उपयोगी आउटपुट मोड (quiet, meta, hex, print, raw) आगे के विश्लेषण में मदद करते हैं। meta outmode विशेष रूप से उपयोगी है क्योंकि यह मिलान-विशिष्ट कुछ महत्वपूर्ण विवरण दिखाता है जैसे मिलान की गई सामग्री का कुल आकार, नेटवर्क स्ट्रीम में मिलान की शुरुआत का ऑफ़सेट, वे पैकेट आईडी जिन पर मिलान फैला है, वह दिशा जिस पर मिलान हुआ, आदि।
मिलान करने वाले प्रवाहों के लिए Pcap जनरेशन भी समर्थित है। यदि सक्षम किया जाता है, तो यह प्रवाह की शुरुआत से अंत तक सभी पैकेटों को डंप करेगा। मिलान किए गए TCP प्रवाहों को जैसे ही कोई close/reset देखा जाता है, डंप किया जाता है, और उन प्रवाहों के लिए जहाँ हम close/reset नहीं देखते हैं, वे उपकरण के बाहर निकलने से पहले डंप किए जाते हैं। UDP के लिए, चूँकि close/reset जैसी कोई स्थिति जानकारी उपलब्ध नहीं है, वे केवल तब डंप किए जाते हैं जब उपकरण बाहर निकलता है। यह सुनिश्चित करता है कि सभी पैकेट, यहाँ तक कि जो मिलान के बाद आते हैं, प्रवाह pcap में कैप्चर किए जाते हैं। कस्टम pcap वैश्विक हेडर, प्रति-पैकेट pcap हेडर और ईथरनेट II L2 हेडर (जो flowinspect द्वारा नहीं देखा जाता) को छोड़कर, ऊपर सब कुछ डंप किए गए पैकेट कैप्चर में यथावत रहता है।
सहायता: -----```c ______ _ __ / / /_ _ () _________ ___ / / / // / __ \ | /| / / / __ / / __ / _ / / __/ / __/ / // / |/ |/ / / / / ( ) // / / // / // //_/|/|/// /// ._/_/___/_/ //
flowinspect v0.2 - A network inspection tool Ankur Tyagi (7h3rAm [at] gmail [dot] com)
usage: flowinspect.py [-h] (-p --pcap | -d --device) [-c --cregex] [-s --sregex] [-a --aregex] [-i] [-m] [-G --cfuzz] [-H --sfuzz] [-I --afuzz] [-r fuzzminthreshold] [-C --cdfa] [-S --sdfa] [-A --adfa] [-l] [-X --dfaexpr] [-g [graphdir]] [-P --cyararules] [-Q --syararules] [-R --ayararules] [-M] [-y] [-Y --emuprofileoutsize] [-O --offset] [-D --depth] [-T --maxinspstreams] [-U --maxinsppackets] [-t --maxdispstreams] [-u --maxdisppackets] [-b --maxdispbytes] [-w [logdir]] [-o {quite,meta,hex,print,raw}] [-f --bpf] [-v] [-V] [-e] [-k] [-j] [-Z] [-n] [-L]
optional arguments: -h, --help show this help message and exit -p --pcap input pcap file -d --device listening device
RegEx per Direction: -c --cregex regex to match against CTS data -s --sregex regex to match against STC data -a --aregex regex to match against ANY data
RegEx Options: -i ignore case -m disable multiline match
Fuzzy Patterns per Direction: -G --cfuzz string to fuzzy match against CTS data -H --sfuzz string to fuzzy match against STC data -I --afuzz string to fuzzy match against ANY data
Fuzzy Options: -r fuzzminthreshold threshold for fuzzy match (1-100) - default 75
DFAs per Direction ('m[0-9][1-9]='): -C --cdfa DFA expression to match against CTS data -S --sdfa DFA expression to match against STC data -A --adfa DFA expression to match against ANY data
DFA Options: -l switch default boolean operator to 'or' -X --dfaexpr expression to test chain members -g [graphdir] generate DFA transitions graph
Yara Rules per Direction: -P --cyararules Yara rules to match on CTS data -Q --syararules Yara rules to match on STC data -R --ayararules Yara rules to match on ANY data
Shellcode Detection: -M enable shellcode detection -y generate emulator profile for detected shellcode -Y --emuprofileoutsize emulator profile memory size (default 1024K | max: 10240K)
Content Modifiers: -O --offset bytes to skip before matching -D --depth bytes to look at while matching (starting from offset)
Inspection Limits: -T --maxinspstreams max streams to inspect -U --maxinsppackets max packets to inspect