AIEngine – управляемая система обнаружения вторжений в сети

AIEngine – это интерактивное / программируемое ядро ​​системы обнаружения вторжений на основе Python / Ruby / Java / Lua и Go следующего поколения с возможностями обучения без вмешательства человека, классификации доменов DNS, обнаружения спама, сбора данных в сети, сетевой экспертизы и многое другое.

 



AIEngine также помогает сетевым специалистам / специалистам по безопасности идентифицировать трафик и разрабатывать подписи для его использования в NIDS, межсетевых экранах, классификаторах трафика и так далее.

Функциональность AIEngine

Основными функциями AIEngine являются:

  • Поддержка взаимодействия / программирования с пользователем во время работы Engine.
  • Поддержка PCRE JIT для сопоставления регулярных выражений.
  • Поддержка регулярных выражений (сложные шаблоны обнаружения).
  • Поддержка шести типов NetworkStacks (LAN, мобильный, LAN 6, виртуальный, Oflow и Mobile 6).
  • Наборы поддержки и фильтры Bloom для поиска по IP.
  • Поддерживает архитектуру x86_64, ARM и MIPS в операционных системах, таких как Linux, FreeBSD и MacOS.
  • Поддержка совпадения доменов HTTP, DNS и SSL.
  • Поддержка запрещенных доменов и хостов для HTTP, DNS, SMTP и SSL.
  • Анализ частоты неизвестного трафика и генерация авто-регулярных выражений.
  • Поколение подписей Yara.
  • Простая интеграция с базами данных (MySQL, Redis, Cassandra, Hadoop и т. Д.) Для корреляции данных.
  • Простая интеграция с другими пакетными движками (Netfilter).
  • Поддержка очистки кеша памяти для обновления хранящейся в памяти информации.
  • Поддержка обнаружения DDoS на сетевом / прикладном уровне.
  • Поддержка отклонения соединений TCP / UDP.
  • Поддержка сетевой экспертизы в режиме реального времени.
  • Поддержка JA3 TLS подписей на SSL.
  • Поддерживает протоколы, такие как Bitcoin, CoAP, DHCPv4 / DHCPv6, DNS, GPRS, GRE, HTTP, ICMPv4 / ICMPv6, IMAP, IPv4 / v6, Modbus, MPLS, MQTT, Netbios, NTP, OpenFlow, PPPoE, POP, Quic, RTP, SIP, SMB, SMTP, SSDP, SSH, SSL, TCP, UDP, VLAN, VXLAN.
  • Интеграция HTTP-сервера для получения и настройки системы.

Использование системы обнаружения вторжений, управляемой AIEngine



Чтобы использовать AIEngine (уменьшенная версия), просто запустите двоичный файл aiengine или используйте привязку python / ruby ​​/ java / lua.

[email protected]:~/c++/aiengine/src$ ./aiengine -h
aiengine 1.9.0
Mandatory arguments:
  -I [ --input ] arg 
Устанавливает сетевой интерфейс, файл pcap или каталог с файлами pcap.

Link Layer optional arguments:
  -q [ --tag ] arg  
Выбирает тип тега уровня Ethernet (vlan, mpls).

TCP optional arguments:
  -t [ --tcp-flows ] arg (=32768)   
Устанавливает количество потоков TCP в пуле.

UDP optional arguments:
  -u [ --udp-flows ] arg (=16384) Устанавливает количество UDP-потоков в пуле.

Regex optional arguments:
  -R [ --enable-signatures ]  
Включает механизм подписи.
  -r [ --regex ] arg (=.*)
Устанавливает регулярное выражение для оценки потоков.
  -c [ --flow-class ] arg (=all) Использует tcp, udp или все для совпадений с подписью на потоках.
  -m [ --matched-flows ]         Показывает потоки, которые соответствуют регулярному выражению.
  -M [ --matched-packet ]        Показывает полезную нагрузку пакета, которая соответствует регулярному выражению.
  -C [ --continue ]              Продолжить оценку регулярного выражения с помощью следующего пакета потока.
  -j [ --reject-flows ]          Отклоняет потоки, которые совпадают с регулярным выражением.
  -w [ --evidence ]              Создает файл pcap с соответствующим регулярным выражением для анализа.

Frequencies optional arguments:
  -F [ --enable-frequencies ]       Включает engine частоты.
  -g [ --group-by ] arg (=dst-port) Группирует частоты по src-ip,dst-ip,src-port и dst-port.
  -f [ --flow-type ] arg (=tcp)     Использует потоки tcp или udp.
  -L [ --enable-learner ]           Включает движок Learner.
  -k [ --key-learner ] arg (=80)    Устанавливает ключ для engine Learner.
  -b [ --buffer-size ] arg (=64)    Устанавливает размер внутреннего буфера для создания регулярного выражения
  -Q [ --byte-quality ] arg (=80)   Устанавливает минимальное качество для байтов сгенерированного регулярного выражения.

  -y [ --enable-yara ]              Генерирует подпись yara.

Optional arguments:
  -n [ --stack ] arg (=lan)    Устанавливает network stack (lan,mobile,lan6,virtual, oflow).
  -d [ --dumpflows ] 
Дамп потоков в стандартного вывода.
  -s [ --statistics ] arg (=0) Показать статистику network stack (5 levels).
  -T [ --timeout ] arg (=180)  Устанавливает время ожидания потоков.
  -P [ --protocol ] arg        Показать статистику определенного протокола network stack.
  -a [ --port ] arg (=0)       Устанавливает порт прослушивания HTTP.
  -e [ --release ]             очистить кэш.
  -l [ --release-cache ] arg   Освободить определенный кеш.
  -p [ --pstatistics ]         Показать статистику процесса.
      -o [ --summary ]             Показать итоговую статистику протокола (bytes,packets,% bytes,cache miss,memory).
  -h [ --help ]                Показать справку
  -v [ --version ]             Показать строку версии.

Типы NetworkStack

AIEngine поддерживает шесть типов NetworkStack в зависимости от топологии сети.

  • StackLan (LAN) Локальная сеть на основе IPv4.
  • StackLanIPv6 (lan6) Локальная сеть с поддержкой IPv6.
  • StackMobile (мобильная) Сеть Mobile (интерфейс Gn) для IPv4.
  • StackVirtual (виртуальная) Stack для виртуальной / облачной среды с VxLan и GRE Transparent.
  • StackOpenFlow (oflow) Stack для среды с открытым потоком.
  • StackMobileIPv6 (mobile6) Сеть Mobile (интерфейс Gn) для IPv6.

Интеграция / Программа AIEngine с другими системами

AIEngine – это также модуль python / ruby ​​/ java / lua, который позволяет быть более гибким в плане интеграции с другими системами и функциями. Основными объектами, которыми модуль python обеспечивает экспорт, являются следующие:

    BitcoinInfo
    CoAPInfo
    DCERPCInfo
    DHCPInfo
    DHCPv6Info
    DNSInfo
    DatabaseAdaptor (Абстрактный класс)
    DomainName
    DomainNameManager
    Flow
    FlowManager
    Frequencies
    FrequencyGroup
    HTTPInfo
    HTTPUriSet
    IMAPInfo
    IPAbstractSet (Абстрактный класс)
        IPSet
    IPSetManager
    LearnerEngine
    MQTTInfo
    NetbiosInfo
    NetworkStack (Абстрактный класс)
        StackLan
        StackLanIPv6
        StackMobile
        StackOpenFlow
        StackVirtual
        StackMobileIPv6
    POPInfo
    PacketDispatcher
    PacketFrequencies
    Regex
    RegexManager
    SIPInfo
    SMBInfo
    SMTPInfo
    SSDPInfo
    SSLInfo

Для полного описания методов класса в Python

import pyaiengine
help(pyaiengine)

Компилируем двоичный файл AIEngine

Необходимо установить pcre-devel, libpcap-devel и boost-devel в вашей системе.

git clone //bitbucket.com/camp0/aiengine
./autogen.sh
./configure
make

Дополнительные возможности

Система предоставляет следующие функции включения / выключения в зависимости от ваших требований.

  • –enabletcpqos Включить поддержку Metrics TCP QoS для измерения QoS соединений.
  • –enable-bloomfilter Включить поддержку фильтра Bloom для поиска по IP. Эта опция должна иметь правильно настроенные библиотеки.
  • –enable-reject Включить поддержку отклоняющих соединений TCP / UDP для разрыва, устанавливающего соединения для объектов StackLans и StackLanIPv6.
  • –enable-pythongil Включить поддержку Python Gil для многопоточных приложений.
  • –enable-static-memory Включить поддержку статической / фиксированной памяти для систем с низкими требованиями к памяти (слот 256 байт).
  • –enable-code-coverage Включить поддержку покрытия кода (разработка).
  • –enable-sanatizer Включить поддержку тестов sanatizer (разработка).
  • –enable-ja3 Включить генерацию отпечатков TLS в формате JA3.

Этот параметр можно включить / отключить только во время компиляции в скрипте конфигурации.

Компиляция библиотеки AIEngine Python

Для компиляции библиотеки Python также рекомендуется использовать boost-python3-devel или boost-python-devel и python-devel.

Первый вариант для компиляции библиотеки использует оптимизацию компиляции O3, это создаст небольшую библиотеку

git clone //bitbucket.com/camp0/aiengine
./autogen.sh
./configure
cd src
make python
python pyai_test.py

Второй вариант скомпилирует библиотеку с использованием стандартного python способа с использованием setup.py, это сгенерирует большой размер библиотеки по сравнению с предыдущим.

git clone //bitbucket.com/camp0/aiengine
./autogen.sh
./configure
cd src
python setup.py build_ext -i 
python pyai_test.py
python3.6 setup.py build_ext -i 
python3.6 pyai_test.py

Библиотека Python содержит все функциональные возможности, которые предоставляет engine.

Компиляция библиотеки AIEngine Ruby

Для компиляции на Ruby необходимы swig и ruby-devel.

git clone //bitbucket.com/camp0/aiengine
./autogen.sh
./configure
cd src
make ruby
ruby ​​ruai_tests.rb

Ruby lib не предоставляет всю функциональность движка.

Компиляция библиотеки AIEngine Java

Для компиляции на Java необходим пакет java devel.

git clone //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

Java-библиотека предоставляет некоторые функциональные возможности engine, за некоторыми исключениями.

Компиляция библиотеки AIEngine Lua

Для компиляции на Lua swig необходим пакет lua-devel.

git clone //bitbucket.com/camp0/aiengine
./autogen.sh
./configure
cd src
make lua
lua luai_tests.lua

Lua lib обеспечивает большую часть функциональности engine.

Компиляция библиотеки AIEngine Go

Для компиляции на Go swig.

git clone //bitbucket.com/camp0/aiengine
./autogen.sh
./configure
cd src
make go 
./goai_test

Go lib имеют некоторые функциональные ограничения из-за характера языка.

Исходник AIEngine здесь

RuCoreNET - лучшее для вас!


Поделись статьей с друзьями


86 просмотров


0 0 vote
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments


Do NOT follow this link or you will be banned from the site!
0
Would love your thoughts, please comment.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: