
AIEngine는 차세대 대화형/프로그래밍 가능한 Python/Ruby/Java/Lua 및 Go NIDS(네트워크 침입 탐지 시스템)입니다.
AIEngine은 인간의 개입 없이 학습할 수 있는 기능, DNS 도메인 분류, 스팸 탐지, 네트워크 수집기, 네트워크 포렌식 등 다양한 기능을 갖춘 차세대 대화형/프로그래밍 가능한 Python/Ruby/Java/Lua 및 Go 네트워크 침입 탐지 시스템 엔진입니다.
또한 AIEngine은 네트워크/보안 전문가가 트래픽을 식별하고 NIDS, 방화벽, 트래픽 분류기 등에서 사용할 시그니처를 개발하는 데 도움을 줍니다.
AIEngine의 주요 기능은 다음과 같습니다:
자세한 내용은 docs 폴더를 확인하세요.
AIEngine(축소 버전)을 사용하려면 aiengine 바이너리를 실행하거나 python/ruby/java/lua 바인딩을 사용하면 됩니다.
luis@luis-xps:~/c++/aiengine/src$ ./aiengine -h
aiengine 2.1.0
Mandatory arguments:
-I [ --input ] arg Sets the network interface ,pcap file or
directory with pcap files.
Link Layer optional arguments:
-q [ --tag ] arg Selects the tag type of the ethernet layer (vlan,mpls).
TCP optional arguments:
-t [ --tcp-flows ] arg (=32768) Sets the number of TCP flows on the pool.
UDP optional arguments:
-u [ --udp-flows ] arg (=16384) Sets the number of UDP flows on the pool.
Domain optional arguments:
-D [ --domain-file ] arg Reads domain names from file.
-B [ --domain-protocol ] arg (=dns) Protocol to plug the domain-file (dns,
ssl, http).
-S [ --matched-domain ] Shows only the domains that matches.
Regex optional arguments:
-R [ --enable-signatures ] Enables the Signature engine.
-r [ --regex ] arg (=.*) Sets the regex for evaluate agains the flows.
-c [ --flow-class ] arg (=all) Uses tcp, udp or all for matches the signature
on the flows.
-m [ --matched-flows ] Shows the flows that matchs with the regex.
-M [ --matched-packet ] Shows the packet payload that matchs with
the regex.
-C [ --continue ] Continue evaluating the regex with the
next packets of the Flow.
-j [ --reject-flows ] Rejects the flows that matchs with the
regex.
-w [ --evidence ] Generates a pcap file with the matching
regex for forensic analysis.
Frequencies optional arguments:
-F [ --enable-frequencies ] Enables the Frequency engine.
-g [ --group-by ] arg (=dst-port) Groups frequencies by src-ip,dst-ip,src-por
t and dst-port.
-f [ --flow-type ] arg (=tcp) Uses tcp or udp flows.
-L [ --enable-learner ] Enables the Learner engine.
-k [ --key-learner ] arg (=80) Sets the key for the Learner engine.
-b [ --buffer-size ] arg (=64) Sets the size of the internal buffer for
generate the regex.
-Q [ --byte-quality ] arg (=80) Sets the minimum quality for the bytes of
the generated regex.
-y [ --enable-yara ] Generates a yara signature.
Optional arguments:
-n [ --stack ] arg (=lan) Sets the network stack (lan,mobile,lan6,virtual,
oflow).
-d [ --dumpflows ] Dump the flows to stdout.
-s [ --statistics ] arg (=0) Show statistics of the network stack (5 levels).
-T [ --timeout ] arg (=180) Sets the flows timeout.
-P [ --protocol ] arg Show statistics of a specific protocol of the
network stack.
-a [ --port ] arg (=0) Sets the HTTP listenting port.
-e [ --release ] Release the caches.
-l [ --release-cache ] arg Release a specific cache.
-p [ --pstatistics ] Show statistics of the process.
-o [ --summary ] Show protocol summmary statistics
(bytes,packets,% bytes,cache miss,memory).
-h [ --help ] Show help.
-v [ --version ] Show version string.
AIEngine은 네트워크 토폴로지에 따라 6가지 유형의 Network 스택을 지원합니다.
StackLan (lan) IPv4 기반 근거리 통신망(Local Area Network).
StackLanIPv6 (lan6) IPv6를 지원하는 근거리 통신망(Local Area Network).
StackMobile (mobile) IPv4용 모바일 네트워크(Gn 인터페이스).
StackVirtual (virtual) VxLan 및 GRE Transparent를 지원하는 가상/클라우드 환경용 스택.
StackOpenFlow (oflow) OpenFlow 환경용 스택.
StackMobileIPv6 (mobile6) IPv6용 모바일 네트워크(Gn 인터페이스).
AIEngine은 python/ruby/java/lua 모듈이기도 하여 다른 시스템 및 기능과의 통합 측면에서 더 유연합니다. python 모듈이 내보내는 주요 객체는 다음과 같습니다.
BitcoinInfo
Cache
CoAPInfo
DCERCPInfo
DHCPInfo
DHCPv6Info
DNSInfo
DTLSInfo
DatabaseAdaptor
DomainName
DomainNameManager
Flow
FlowManager
Frequencies
FrequencyGroup
HTTPInfo
HTTPUriSet
IMAPInfo
IPAbstractSet
IPRadixTree
IPSet
IPSetManager
LearnerEngine
MQTTInfo
NetbiosInfo
NetworkStack
StackLan
StackLanIPv6
StackMobile
StackMobileIPv6
StackOpenFlow
StackVirtual
POPInfo
PacketDispatcher
PacketFrequencies
QuicInfo
Regex
RegexManager
SIPInfo
SMBInfo
SMTPInfo
SSDPInfo
SSHInfo
SSLInfo
TCPInfo
Python 클래스 메서드에 대한 전체 설명은 다음을 참조하세요.
import pyaiengine
help(pyaiengine)
유용한 사용 사례는 examples 디렉터리를 확인하고, 문서는 /docs를 확인하세요.
시스템에 최소한 pcre-devel, libpcap-devel 및 boost-devel이 설치되어 있어야 합니다.
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ make
시스템은 요구 사항에 따라 다음 기능을 활성화/비활성화할 수 있습니다.