
Programmable packet inspection engine with NIDS, DNS classification, frequency analysis, and auto-regex generation. Supports Python/Ruby/Java/Lua bindings for integration with databases and other security tools.
AIEngine एक अगली पीढ़ी का इंटरैक्टिव/प्रोग्रामेबल Python/Ruby/Java/Lua पैकेट निरीक्षण इंजन है, जिसमें बिना किसी मानवीय हस्तक्षेप के सीखने की क्षमता, NIDS (नेटवर्क इंट्रूज़न डिटेक्शन सिस्टम) कार्यक्षमता, DNS डोमेन वर्गीकरण, नेटवर्क कलेक्टर, नेटवर्क फोरेंसिक और कई अन्य सुविधाएँ हैं।
यह वास्तविक प्रोजेक्ट https://bitbucket.org/camp0/aiengine पर है।
AIEngine नेटवर्क/सुरक्षा पेशेवरों को ट्रैफ़िक की पहचान करने और NIDS, फ़ायरवॉल, ट्रैफ़िक क्लासिफ़ायर आदि में उपयोग के लिए सिग्नेचर विकसित करने में भी मदद करता है।
AIEngine की मुख्य कार्यक्षमताएँ हैं:
AIEngine (कम किए गए संस्करण) का उपयोग करने के लिए बस बाइनरी aiengine को निष्पादित करें या Python/Ruby/Java/Lua बाइंडिंग का उपयोग करें।
luis@luis-xps:~/c++/aiengine/src$ ./aiengine -h
aiengine 1.5
अनिवार्य तर्क:
-I [ --input ] arg नेटवर्क इंटरफ़ेस, pcap फ़ाइल या
pcap फ़ाइलों वाली निर्देशिका सेट करता है।
लिंक लेयर वैकल्पिक तर्क:
-q [ --tag ] arg ईथरनेट लेयर का टैग प्रकार चुनता है (vlan, mpls)।
TCP वैकल्पिक तर्क:
-t [ --tcp-flows ] arg (=32768) पूल पर TCP फ़्लो की संख्या सेट करता है।
UDP वैकल्पिक तर्क:
-u [ --udp-flows ] arg (=16384) पूल पर UDP फ़्लो की संख्या सेट करता है।
रेगेक्स वैकल्पिक तर्क:
-R [ --enable-signatures ] सिग्नेचर इंजन को सक्षम करता है।
-r [ --regex ] arg (=.*) फ़्लो के विरुद्ध मूल्यांकन के लिए रेगेक्स सेट करता है।
-c [ --flow-class ] arg (=all) फ़्लो पर सिग्नेचर मिलान के लिए tcp, udp या all का उपयोग करता है।
-m [ --matched-flows ] उन फ़्लो को दिखाता है जो रेगेक्स से मेल खाते हैं।
-j [ --reject-flows ] उन फ़्लो को अस्वीकार करता है जो रेगेक्स से मेल खाते हैं।
-w [ --evidence ] फोरेंसिक विश्लेषण के लिए मेल खाने वाले रेगेक्स के साथ एक pcap फ़ाइल उत्पन्न करता है।
आवृत्ति वैकल्पिक तर्क:
-F [ --enable-frequencies ] आवृत्ति इंजन को सक्षम करता है।
-g [ --group-by ] arg (=dst-port) आवृत्तियों को src-ip, dst-ip, src-port और dst-port द्वारा समूहित करता है।
-f [ --flow-type ] arg (=tcp) tcp या udp फ़्लो का उपयोग करता है।
-L [ --enable-learner ] लर्नर इंजन को सक्षम करता है।
-k [ --key-learner ] arg (=80) लर्नर इंजन के लिए कुंजी सेट करता है।
-b [ --buffer-size ] arg (=64) रेगेक्स उत्पन्न करने के लिए आंतरिक बफ़र का आकार सेट करता है।
-y [ --enable-yara ] एक yara सिग्नेचर उत्पन्न करता है।
वैकल्पिक तर्क:
-n [ --stack ] arg (=lan) नेटवर्क स्टैक सेट करता है (lan, mobile, lan6, virtual, oflow)।
-d [ --dumpflows ] फ़्लो को stdout पर डंप करता है।
-s [ --statistics ] arg (=0) नेटवर्क स्टैक के आँकड़े दिखाता है (5 स्तर)।
-T [ --timeout ] arg (=180) फ़्लो टाइमआउट सेट करता है।
-P [ --protocol ] arg नेटवर्क स्टैक के एक विशिष्ट प्रोटोकॉल के आँकड़े दिखाता है।
-e [ --release ] कैश जारी करता है।
-l [ --release-cache ] arg एक विशिष्ट कैश जारी करता है।
-p [ --pstatistics ] प्रक्रिया के आँकड़े दिखाता है।
-h [ --help ] सहायता दिखाता है।
-v [ --version ] संस्करण स्ट्रिंग दिखाता है।
AIEngine नेटवर्क टोपोलॉजी के आधार पर पाँच प्रकार के नेटवर्क स्टैक का समर्थन करता है।
StackLan (lan) IPv4 पर आधारित स्थानीय क्षेत्र नेटवर्क।
StackLanIPv6 (lan6) IPv6 समर्थन के साथ स्थानीय क्षेत्र नेटवर्क।
StackMobile (mobile) IPv4 के लिए मोबाइल नेटवर्क (Gn इंटरफ़ेस)।
StackVirtual (virtual) VxLan और GRE ट्रांसपेरेंट के साथ वर्चुअल/क्लाउड वातावरण के लिए स्टैक।
StackOpenFlow (oflow) ओपनफ़्लो वातावरण के लिए स्टैक।
AIEngine एक python/ruby/java/lua मॉड्यूल भी है जो अन्य सिस्टम और कार्यक्षमताओं के साथ एकीकरण के मामले में अधिक लचीला होने की अनुमति देता है। Python मॉड्यूल प्रदान करने वाले मुख्य ऑब्जेक्ट निम्नलिखित हैं।
DNSInfo
BitcoinInfo
DatabaseAdaptor (अमूर्त वर्ग)
DomainName
DomainNameManager
Flow
FlowManager
Frequencies
FrequencyGroup
HTTPInfo
HTTPUriSet
IMAPInfo
IPAbstractSet (अमूर्त वर्ग)
IPSet
IPSetManager
LearnerEngine
NetworkStack (अमूर्त वर्ग)
StackLan
StackLanIPv6
StackMobile
StackOpenFlow
StackVirtual
POPInfo
PacketDispatcher
PacketFrequencies
Regex
RegexManager
SIPInfo
SMTPInfo
SSLInfo
MQTTInfo
CoAPInfo
वर्ग विधियों के पूर्ण विवरण के लिए
import pyaiengine
help(pyaiengine)
अधिक रोचक उदाहरणों के लिए कॉन्फ़िगरेशन विकी पेज या उदाहरण निर्देशिका देखें। [https://bitbucket.org/camp0/aiengine/wiki/Configurations]
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ make
लाइब्रेरी को संकलित करने का पहला विकल्प O3 कम्पाइल ऑप्टिमाइज़ेशन का उपयोग करना है, इससे एक छोटी लाइब्रेरी उत्पन्न होगी।
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make python
$ python pyai_test.py
दूसरा विकल्प setup.py का उपयोग करके मानक pythonic तरीके से लाइब्रेरी को संकलित करेगा, इससे पिछले विकल्प की तुलना में बड़ी लाइब्रेरी आकार उत्पन्न होगा।
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ python setup.py build_ext -i
$ python pyai_test.py
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make ruby
$ ruby ruai_tests.rb
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make java
$ java -cp ".:/usr/share/java/junit.jar:/usr/share/java/hamcrest/core.jar:./buildjava" org.junit.runner.JUnitCore JunitTestSuite
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make lua
$ lua luai_tests.lua
AIEngine c++11/14 मानक के साथ विकसित किया गया है और GPLv2 की शर्तों के अंतर्गत है।
AIEngine स्रोत की जाँच करें
$ git clone https://bitbucket.com/camp0/aiengine
यदि आप किसी कार्यक्षमता या कुछ सहायता में रुचि रखते हैं तो बस मुझे एक ईमेल भेजें। योगदान हमेशा मददगार होते हैं।
AIEngine को परीक्षण-संचालित विकास का उपयोग करके विकसित किया गया है। इसलिए उसी जीवन चक्र को बनाए रखने के लिए, नई कार्यक्षमता में नई कार्यक्षमता की निर्देशिका पर यूनिट परीक्षण होना चाहिए और सभी सिस्टम के साथ एकीकरण के लिए, बाद में /src निर्देशिका पर मुख्य tests.cc फ़ाइल के साथ एकीकृत करना चाहिए।