Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
batea — Рейтинг сетевых устройств на основе ИИ, управляемый контекстом | Kitploit
Инструменты/GitHubGitHub/delvelabs/batea
Анализ уязвимостейСбор информацииСетевая безопасностьМашинное ОбучениеОбнаружение Аномалий
GitHubdelvelabs/batea

batea

Рейтинг сетевых устройств на основе ИИ, управляемый контекстом

Репозиторий
303474 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

Python package

logo

Batea

Батэа — это большой мелкий поднос из дерева или железа, традиционно используемый золотоискателями для промывки песка и гравия с целью извлечения золотых самородков.

Batea — это контекстно-ориентированная система ранжирования сетевых устройств, основанная на семействе алгоритмов машинного обучения для обнаружения аномалий. Цель Batea — позволить командам безопасности автоматически фильтровать интересные сетевые активы в больших сетях, используя отчёты nmap. Мы называем их Gold Nuggets.

Для получения дополнительной информации о Gold Nuggeting и научной основе Batea ознакомьтесь с нашей технической документацией здесь.

Как это работает

Batea строит числовое представление (numpy) всех устройств из ваших отчётов nmap (XML), а затем применяет методы обнаружения аномалий для выявления золотых самородков. Система легко расширяется путём добавления специфических признаков (features) — интересных характеристик — в числовое представление элементов сети.

Числовое представление сети строится с использованием признаков, вдохновлённых опытом сообщества специалистов по безопасности. Эти признаки действуют как элементы интуиции, а методы обучения без учителя (unsupervised) позволяют использовать контекст сетевого актива (полное описание сети) в качестве центрального строительного блока алгоритма ранжирования. Используемый алгоритм — Isolation Forest (https://en.wikipedia.org/wiki/Isolation_forest).

Модели машинного обучения являются сердцем Batea. Модели — это алгоритмы, обученные на всём наборе данных и используемые для предсказания оценки для тех же (и других) точек данных (сетевых устройств). Batea также поддерживает сохранение моделей, что позволяет повторно использовать предварительно обученные модели и экспортировать модели, обученные на больших наборах данных, для дальнейшего использования.

Использование

root@kitploit:~
# Полная информация
$ sudo nmap -A 192.168.0.0/16 -oX output.xml

# Частичная информация
$ sudo nmap -O -sV 192.168.0.0/16 -oX output.xml


$ batea -v output.xml

Установка

root@kitploit:~
$ git clone [email protected]:delvelabs/batea.git
$ cd batea
$ python3 setup.py sdist
$ pip3 install -r requirements.txt
$ pip3 install -e .

Установка для разработчиков

root@kitploit:~
$ git clone [email protected]:delvelabs/batea.git
$ cd batea
$ python3 -m venv batea/
$ source batea/bin/activate
$ python3 setup.py sdist
$ pip3 install -r requirements-dev.txt
$ pip3 install -e .
$ pytest

Пример использования

root@kitploit:~
# Простое использование (вывод топ-5 золотых самородков в формате по умолчанию)
$ batea nmap_report.xml

# Вывод топ-3
$ batea -n 3 nmap_report.xml

# Вывод всех активов
$ batea -A nmap_report.xml

# Использование нескольких входных файлов
$ batea -A nmap_report1.xml nmap_report2.xml

# Использование масок (по умолчанию xsl)
$ batea ./nmap*.xml
$ batea -f csv ./assets*.csv

# Можно использовать Batea с предварительно обученными моделями и экспортировать обученные модели.

# Обучение, вывод и сохранение модели для повторного использования
$ batea -D mymodel.batea nmap_report.xml

# Использование предварительно обученной модели
$ batea -L mymodel.batea nmap_report.xml

# Использование предварительно отформатированного CSV вместе с XML-файлами
$ batea -x nmap_report.xml -c portscan_data.csv

# Настройка уровня подробности вывода
$ batea -vv nmap_report.xml

Как добавить признак (feature)

Batea работает путём присвоения числовых признаков каждому хосту в отчёте (или серии отчётов). Хосты — это объекты Python, производные от отчёта nmap. Они состоят из следующего списка атрибутов: [ipv4, hostname, os_info, ports], где ports — это список объектов порта. Каждый порт имеет следующий набор атрибутов: [port, protocol, state, service, software, version, cpe, scripts], все по умолчанию имеют значение None.

Признаки — это объекты, наследующие от класса FeatureBase и реализующие специфический метод _transform. Этот метод всегда принимает список всех хостов в качестве входных данных и возвращает лямбда-функцию, которая отображает каждый хост в столбец numpy с числовыми значениями (порядок хостов сохраняется). Затем столбец добавляется к матричному представлению отчёта. Признаки должны выдавать правильные числовые значения (float или int) и ничего больше.

Большинство преобразований признаков реализуются с помощью простой лямбда-функции. Убедитесь, что для каждого хоста задано числовое значение по умолчанию для обеспечения совместимости моделей.

Пример:

root@kitploit:~

class CustomInterestingPorts(FeatureBase):
    def __init__(self):
        super().__init__(name="some_custom_interesting_ports")

    def _transform(self, hosts):
      """Этот метод принимает список хостов и возвращает функцию, которая подсчитывает количество
      портов хоста, входящих в предопределённый список «интересных» портов; по умолчанию возвращает 0.

      Parameters
      ----------
      hosts : list
          Список всех хостов

      Returns
      -------
      f : lambda function
          Подсчитывает количество портов из определённого списка.
      """
        member_ports = [21, 22, 25, 8080, 8081, 1234]
        f = lambda host: len([port for port in host.ports if port.port in member_ports])
        return f

Затем вы можете добавить признак в отчёт с помощью метода NmapReport.add_feature в batea/__init__.py

root@kitploit:~
from .features.basic_features import CustomInterestingPorts

def build_report():
    report = NmapReport()
    #[...]
    report.add_feature(CustomInterestingPorts())

    return report

Использование предварительно обработанных табличных данных (CSV)

Можно использовать предварительно обработанные данные для обучения модели или для предсказания. Данные должны быть проиндексированы по (ipv4, port) с уникальной комбинацией в каждой строке. Тип данных должен быть близок к тому, что вы ожидаете от XML-версии отчёта nmap. Столбец должен иметь одно из следующих имён, но не обязательно использовать все. Парсер по умолчанию присваивает значения null, если столбец отсутствует.

root@kitploit:~
  'ipv4',
  'hostname',
  'os_name',
  'port',
  'state',
  'protocol',
  'service',
  'software_banner',
  'version',
  'cpe',
  'other_info'

Пример:

root@kitploit:~
ipv4,hostname,os_name,port,state,protocol,service,software_banner
10.251.53.100,internal.delvesecurity.com,Linux,110,open,tcp,rpcbind,"program version   port/proto  service100000  2,3,4        111/tcp  rpcbind100000  2,3,4    "
10.251.53.100,internal.delvesecurity.com,Linux,111,open,tcp,rpcbind,
10.251.53.188,serious.delvesecurity.com,Linux,6000,open,tcp,X11,"X11Probe: CentOS"

Вывод числового представления

Для тех, кто занимается анализом данных, или просто ради интереса и пользы, вы можете вывести числовую матрицу вместе со столбцом оценки вместо обычного вывода. Это может быть полезно для дальнейшего анализа данных и отладки.

root@kitploit:~
$ batea -oM network_matrix nmap_report.xml
Скачать инструмент