У кібербезпеці, виявлення аномалій – це можливість моніторингу для викриття підозрілої активності або змін у даних чи мережах. Помічаючи незвичну поведінку, організації можуть ідентифікувати й ізолювати аномальні дії, які можуть вказувати на загрозу. Аномалії можна знайти в різних формах телеметрії безпеки, включаючи мережевий трафік, дії користувачів і використання системних ресурсів. Передові методи виявлення можуть допомогти організаціям помітити потенційні загрози до того, як вони стануть справжньою проблемою. Завдяки цьому компанії можуть краще захистити свої мережі та дані.
Це допис-інструкція для поєднання Wazuh і плагіну OpenSearch Anomaly Detection для покращення виявлення аномальної активності в ІТ-інфраструктурі. Тут використовується дешборд 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.







