В кибербезопасности, обнаружение аномалий – это возможность мониторинга для выявления подозрительной активности или изменений в данных или сетях. Замечая необычное поведение, организации имеют возможность идентифицировать и изолировать аномальные действия, которые могут указывать на угрозу. Аномалии можно найти в различных формах телеметрии безопасности, включая сетевой трафик, действия пользователей и использование системных ресурсов. Передовые методы обнаружения могут помочь организациям заметить потенциальные угрозы прежде, чем они станут настоящей проблемой. Благодаря этому компании могут лучше защитить свои сети и данные.
Это пост-инструкция для сочетания Wazuh и плагина OpenSearch Anomaly Detection для улучшения обнаружения аномальной активности в IТ-инфраструктуре. Тут используется дешборд Wazuh 4.5.3, основанный на OpenSearch 2.6.0. Кроме того, эта публикация содержит примеры применения, демонстрирующие эффективность интеграции плагина OpenSearch с Wazuh.
Установка плагина Anomaly Detection
Плагин OpenSearch Anomaly Detection используется для поиска аномалий в полученных уведомлениях. Это осуществляется с помощью алгоритма Random Cut Forest (RCF) для обнаружения почти в режиме реального времени. Кроме того, плагин снижает риск подозрительной активности.
Чтобы скачать и установить плагин OpenSearch Anomaly Detection на дешборд Wazuh, нужно выполнить следующие действия в командной строке в режиме root.
1)Скачать пакет OpenSearch Dashboard 2.6.0:
Примечание. Важно, чтобы версии Wazuh и OpenSearch Dashboards были совместимы. Рекомендуется ознакомиться с Wazuh release notes.
2)Распаковать пакет OpenSearch Dashboard 2.6.0:
tar -xvzf opensearch-dashboards.tar.gz
3)Скопировать файлы плагина anomalyDetectionDashboards в каталог /usr/share/wazuh-dashboard/plugins:
cp -r opensearch-dashboards-2.6.0/plugins/anomalyDetectionDashboards/ /usr/share/wazuh-dashboard/plugins/
Необязательно: удалить скачанные файлы OpenSearch Dashboards после их копирования в каталог плагинов дешборда Wazuh:
rm -rf opensearch-dashboards-2.6.0/ opensearch-dashboards.tar.gz
4)Изменить право владения и разрешения файлов:
chown -R wazuh-dashboard:wazuh-dashboard /usr/share/wazuh-dashboard/plugins/anomalyDetectionDashboards/
chmod -R 750 /usr/share/wazuh-dashboard/plugins/anomalyDetectionDashboards/
5)Перезапустить дешборд Wazuh:
systemctl restart wazuh-dashboard
6)Проверить правильность установки плагина:
sudo -u wazuh-dashboard /usr/share/wazuh-dashboard/bin/opensearch-dashboards-plugin list
Результат выполнения команды:
alertingDashboards@2.6.0.0
anomalyDetectionDashboards@2.6.0.0
customImportMapDashboards@2.6.0.0
ganttChartDashboards@2.6.0.0
indexManagementDashboards@2.6.0.0
mlCommonsDashboards@2.6.0.0
notificationsDashboards@2.6.0.0
reportsDashboards@2.6.0.0
securityDashboards@2.6.0.0
wazuh@4.5.3-02
Конфигурация
Необходимо настроить плагин OpenSearch Anomaly Detection для получения данных Wazuh, таких как wazuh-alerts-, wazuh-archives-, wazuh-monitoring-, wazuh-statistics-, и обнаружения в них аномалий.
Нужно войти в дешборд Wazuh или обновить его. Затем перейти в Anomaly Detection в разделе OpenSearch Plugins для создания нового детектора аномалий.

Ниже описаны шаги по созданию образца детектора:
Определение детектора
- Нажать Create detector.
- В секции Detector details указать название нового детектора (Name) и соответствующее описание (Description).
- Выбрать индекс (например, wazuh-alerts-, wazuh-archives-, wazuh-monitoring-, wazuh-statistics-) как источник данных. При необходимости можно использовать любой фильтр данных (Data filter).
- Выбрать нужный временной фильтр с помощью Timestamp field в секции Timestamp.
- Определить интервал детектора (Detector interval), который показывает частоту сбора данных для обнаружения аномалий, и указать окно задержки получения данных детектором.
Примечание. Более низкий интервал предоставляет более близкие к реальному времени результаты обнаружения, однако это потребляет больше ресурсов. Для меньшего количества данных рекомендуется указывать интервалы побольше, чтобы детектор мог собрать достаточное количество данных Wazuh для модели обнаружения аномалий. - Нажать Next.

Конфигурация модели
Необходимо определить поля индекса, в которых нужно обнаруживать аномалии, указав функции модели. Это помогает снизить нагрузку на детектор и позволяет сосредоточиться на указанных полях. После установки функций модели и других дополнительных параметров можно предварительно просмотреть аномалии, которые он найдет в выдаче функции.
Для настройки функции модели необходимо выполнить следующие действия:
- Определить уникальное название функции (Feature name) в секции Add feature.
- Убедиться, что Feature state включен.
- Выбрать Field value или Custom expression под параметром Find anomalies based on.
- В Aggregation method выбрать нужные настройки, например average(), count(), sum(), min(), max(). Этот параметр отображается только при выборе Field value в пункте 3.
- Выбрать поле индекса (Field), которое должно быть проверено на аномалии.
Примечание. Можно добавить до пяти функций для кастомного детектора. - Нажать Next.

Настройка задач детектора
Есть два типа задач детектора: Real-time detection (обнаружение в режиме реального времени) и Historical analysis detection (исторический анализ).
Нужно выбрать Real-time detection и нажать Next.

Обзор и создание
Следует проверить все конфигурации: Detector setting, Model configuration, Detector schedule. Затем нажать Create detector. В следующем окне появится сообщение об успешном создании детектора и модели.

На диаграмме ниже показано, как плагин работает в Wazuh после успешной настройки.

Детектор получает данные Wazuh и передает их в модель обнаружения аномалий. Он имеет определенные внутренние детекторы и окна задержки сбора данных. Модели настраиваются на основе полей данных, индексированных Wazuh, и запускаются через разные функции. Задачи детектора определяют, как часто он должен обнаруживать аномалии.
Дешборд предоставляет важную информацию, как последнее появление аномалии, степень серьезности и наличие подтверждения аномалии, общее количество и так далее.
Кейс применения: Аномалия неудачного входа
В этом кейсе показано, как создать детектор на дешборде Wazuh для обнаружения аномалий в неудачных входах. Нижеперечисленные шаги описывают процесс настройки среды Wazuh для этой цели.
Определение детектора
- Нажать Create detector.
- Указать название (Name) failed-logins-anomaly и соответствующее описание (Description) нового детектора в секции Detector details.
- Указать Index wazuh-alerts-* как источник данных и определить rule.groups is not authentication_success их фильтром.
- Выбрать поле timestamp в поле Timestamp field в секции Timestamp.
- Установить интервал детектора (Detector interval) и окно задержки (Window delay) в 1 минуту.
- Нажать Next.
Конфигурация модели
- Добавить failed-logins-srcip как Feature name в секции Add feature.
- Убедиться, что Feature state включен.
- Выбрать Field value под параметром Find anomalies based on.
- Выбрать count() как Aggregation method.
- Выбрать data.srcip как поле индекса (Field),
- Нажать Add another feature.
- Добавить failed-logins-agentip как Feature name в секции Add feature.
- Убедиться, что Feature state включен.
- Выбрать Field value под параметром Find anomalies based on.
- Выбрать count() как Aggregation method.
- Выбрать agent.ip в качестве поля индекса (Field).
- Нажать Next.
Настройка задач детектора
- Убедиться, что выбран параметр Start real-time detector automatically (recommended) для обнаружения аномалий в режиме реального времени.
- Нажать Next.
Обзор и создание
Если в среде Wazuh достаточно собранных данных о неудачных входах, то должны отобразиться уведомления Detector settings are validated, Model configurations are validated. В противном случае появится предупреждение, которое предложит увеличить интервал детектора для получения большего количества данных.
Нужно нажать Create detector для окончания конфигурации и создания детектора.
Имитация атаки
Можно организовать brute force атаку на службу SSH на конечной точке Ubuntu, чтобы плагин отобразил аномалии на дешборде Wazuh.
Для этого следует выполнить следующие действия на конечной точке Kali Linux.
- Создать список юзернеймов и паролей для использования во время атаки:
$ sudo apt-get install pwgen -y
$ pwgen 5 40 >> user.txt
$ pwgen 16 40 >> pass.txt - Запустить процесс атаки с помощью этой команды:
$ hydra -L user.txt -p pass.txt ssh -t 4
Результат
Нужно перейти во вкладку Detectors в секции плагина Anomaly Detection на дешборде Wazuh и выбрать детектор failed-logins-anomaly. Там можно увидеть следующее:

Live anomalies («живые» аномалии) отображают аномалии за последние 60 интервалов. Также можно просмотреть Latest Anomaly Grade (последнюю степень серьезности аномалий) и рейтинг Latest Confidence (последнее подтверждение наличия) (диапазон от 0,0 до 1,0).

Anomaly overview (обзор аномалий) по умолчанию дает целостное представление об аномалиях за последние 7 дней. Кроме того, есть возможность настроить временные рамки в соответствии с потребностями. Обзор содержит общее количество, степень серьезности и подтверждение аномалий, а также дату и время последней.

В секции Feature breakdown отображаются аномалии на основе функций failed-login-srcip и failed-login-agentip за последние 7 дней по умолчанию.
failed-logins-srcip показывает Feature output (результат функции) и Expected value (ожидаемое значение) с помощью поля data.srcip в данных Wazuh, используя value_count как метод агрегации:

failed-logins-agentip показывает Feature output (результат функции) и Expected value (ожидаемое значение) с помощью поля data.agentip в данных Wazuh, используя value_count как метод агрегации:

Примечание. Feature output (результат функции) – это набор значений, создаваемых алгоритмом Random Cut Forest (RCF), когда ему предоставляются данные Wazuh. Expected value (ожидаемое значение) предназначено для измерения точности прогнозов, сделанных с помощью алгоритма. Оно рассчитывается с помощью среднего арифметического всех возможных результатов.
Можно дополнительно исследовать обнаруженные аномалии, перейдя во вкладку Security events на дешборде Wazuh.
Кейс применения: Аномалия использования ресурсов Linux
Кейс показывает, как создать детектор для обнаружения аномалий в использовании процессора и памяти на конечной точке Linux.
Чтобы настроить детектор аномалий с информацией об использовании ресурсов Ubuntu, необходимо выполнить следующие действия.
Определение детектора
- Нажать Create detector.
- Указать название (Name) linux-resource-utilization-anomaly и соответствующее описание (Description) нового детектора в секции Detector details.
- Указать Index wazuh-alerts-* как источник данных.
- Выбрать поле timestamp в Timestamp field в секции Timestamp.
- Установить интервал детектора (Detector interval) в 1 минуту.
- Нажать Next.
Конфигурация модели
- Добавить cpu-usage-avg как Feature name в секции Add feature.
- Убедиться, что Feature state включен.
- Выбрать Field value под параметром Find anomalies based on.
- Выбрать average() как Aggregation method.
- Выбрать data.cpu_usage_% в качестве поля индекса (Field).
- Нажать Add another feature.
- Добавить cpu_usage_max как Feature name в секции Add feature.
- Убедиться, что Feature state включен.
- Выбрать Field value под параметром Find anomalies based on.
- Выбрать max() как Aggregation method.
- Выбрать data.cpu_usage_% в качестве поля индекса (Field).
- Нажать Add another feature.
- Добавить memory_usage_avg как Feature name в секции Add feature.
- Убедиться, что Feature state включен.
- Выбрать Field value под параметром Find anomalies based on.
- Выбрать average() как Aggregation method.
- Выбрать data.memory_usage_% в качестве поля индекса (Field).
- Нажать Add another feature.
- Добавить memory_usage_max как Feature name в секции Add feature.
- Убедиться, что Feature state включен.
- Выбрать Field value под параметром Find anomalies based on.
- Выбрать max() как Aggregation method.
- Выбрать data.cpu_usage_% в качестве поля индекса (Field).
- Нажать Next.
Настройка задач детектора
- Убедиться, что выбран параметр Start real-time detector automatically (recommended).
- Нажать Next.
Обзор и создание
Если в среде Wazuh достаточно собранных данных об использовании ресурсов Linux, то должны отобразиться уведомления Detector settings are validated, Model configurations are validated. В противном случае появится предупреждение, которое предложит увеличить интервал детектора для получения большего количества данных.
Нужно нажать Create detector для окончания конфигурации и создания детектора.
Имитация атаки
Можно выполнить следующие действия для стресс-тестирования контролируемой конечной точки Ubuntu. Это позволит плагину отобразить аномалии на дешборде Wazuh.
- Выполнить следующую команду, чтобы установить инструмент стресс-тестирования:
$ sudo apt-get install stress -y - Привлечь по четыре работника для стресс-тестирования CPU и памяти, выделяя 512 МБ и тайм-аут через 160 секунд:
$ stress -c 4 -m 4 –vm-bytes 512M -t 160
Результат
Нужно перейти во вкладку Detectors в секции плагина Anomaly Detection на дешборде Wazuh и выбрать linux-resource-utilization-anomaly. Там можно увидеть следующее:

Live anomalies («живые» аномалии):

Anomaly overview (обзор аномалий):

В секции Feature breakdown отображаются аномалии на основе функций cpu-usage-avg, cpu-usage-max, memory-usage-avg, memory-usage-max за последние 7 дней по умолчанию.
cpu-usage-avg показывает Feature output (результат функции) и Expected value (ожидаемое значение) с помощью поля data.cpu_usage_% в данных Wazuh, используя avg как метод агрегации:

cpu-usage-max показывает Feature output (результат функции) и Expected value (ожидаемое значение) с помощью поля data.cpu_usage_% в данных Wazuh, используя max как метод агрегации:

memory-usage-avg показывает Feature output (результат функции) и Expected value (ожидаемое значение) с помощью поля data.memory_usage_% в данных Wazuh, используя avg как метод агрегации:

memory-usage-max показывает Feature output (результат функции) и Expected value (ожидаемое значение) с помощью поля data.memory_usage_% в данных Wazuh, используя max как метод агрегации:

Можно дополнительно исследовать обнаруженные аномалии, перейдя во вкладку Security events на дешборде Wazuh.







