Препарируем Wazuh: Обнаружение уязвимостей

Любое серьезное программное обеспечение всегда содержит ошибки. Причин для этого может быть много: от невнимательности или низкой квалификации самих разработчиков, и до ошибок в тех пакетах и фреймворках, которые разработчики также используют при создании приложений. Ошибаться могут не только разработчики, но и инженеры и администраторы. Первые при развертывании приложения могут забыть установить критические обновления для ОС, что подвергнет риску всю систему. Вторые в процессе эксплуатации приложения могут использовать слабые пароли или сознательно ослабить настройки безопасности потому что «так лучше работает».

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

Однако, всякая уязвимость — это ошибка. Это может быть ошибка в коде, например переполнение буфера. Или ошибка в настройках, использование слабого пароля, непропатченной ОС, отсутствие криптографии и т.д.

Так или иначе злоумышленники могут проэксплуатировать уязвимости в инфраструктуре, например внедрив вредоносное ПО. Ну, а после внедрения вредоносного ПО хакеры могут удаленно выполнить код, извлечь данные и осуществить другие крайне неприятные действия.

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

Конечно, для работы с уязвимостями есть специальные инструменты. Прежде всего это различные сканеры: MaxPatrol, Nessus, Qualys и другие. Принцип работы сканера заключается в выявлении различными способами версий установленных на сканируемом узле версий и архитектур ОС и прикладного ПО. Для этого могут использоваться агенты, устанавливаемые на сканируемые узлы. Возможны также варианты идентификации сервисов по открытым портам и используемым протоколам. На основании информации о версиях софта сканер проверяет в своей базе уязвимостей, какие есть уязвимости в данной версии ПО. В результате сканирования мы получаем отчет, содержащий список найденных уязвимостей с рекомендациями по их устранению.

Возможности Wazuh

SIEM системы тоже часто содержат в себе функционал по сканированию на уязвимости. Так, модуль обнаружения уязвимостей Wazuh помогает пользователям обнаруживать уязвимости в операционной системе и приложениях, установленных на контролируемых конечных узлах. Модуль функционирует с использованием встроенной интеграции Wazuh с внешними источниками уязвимостей: Debian, Red Hat, Arch Linux, Amazon Linux Advisories Security (ALAS), Microsoft и Национальной базой данных уязвимостей (NVD).

Для обнаружения уязвимостей Wazuh использует агентов, которые собирают список установленных приложений с отслеживаемых конечных точек и периодически отправляют его на сервер Wazuh. Этот список хранится в локальных базах данных SQLite на сервере Wazuh. Кроме того, сервер Wazuh создает глобальную базу данных уязвимостей из общедоступных репозиториев CVE. Он использует эту базу данных для сопоставления этой информации с данными инвентаризации приложений агента.

Для настройки поиска уязвимостей запустите SQLite и откройте базу данных уязвимостей, используя следующую команду.

# sqlite3 /var/ossec/queue/vulnerabilities/cve.db

Перечислите таблицы в базе данных, используя следующую команду.

 sqlite> .tables

Извлеките данные из таблицы, выполнив следующую команду.

sqlite> select * from

;

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

Сервер Wazuh автоматически создаст глобальную базу уязвимостей содержащую описания уязвимостей от NIST, RedHat, Debian и других. При этом, Wazuh регулярно обновляет эту базу данных, обеспечивая проверку решения на наличие последних обновлений CVE.

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

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

Рабочий процесс

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

43e1663945e11661731ba70481900561.png

Vulnerability Detector поддерживает несколько операционных систем, среди которых Ubuntu, Debian, Red Hat и другие дистрибутивы Linux. Также поддерживается ОС Windows начиная с XP.

Для систем Microsoft Windows и определенных продуктов Microsoft функция обнаружения уязвимостей включена в настройках syscollector на Wazuh agent. Использование этого параметра позволяет модулю обнаруживать пакеты, которые были исправлены пользователем. Когда детектор уязвимостей обнаруживает исправление, он использует информацию, предоставленную Корпорацией Майкрософт, чтобы определить, устранило ли исправление уязвимости CVE. Затем он удаляет их из списка уязвимостей.

Типы сканирования

В Wazuh есть три различных типа сканирования.

Базовый уровень: Детектор уязвимостей запускает этот тип сканирования при первом включении модуля. Детектор уязвимостей выполняет полное сканирование операционной системы и каждого установленного пакета. Он создает реестр CVE и генерирует оповещение для каждой уязвимости.

Полная проверка: Детектор уязвимостей проверяет каждый установленный пакет и операционную систему при этом типе проверки. Он запускается только по истечении срока действия настроенного значения min_full_scan_interval и когда база данных CVEs содержит новую информацию. В результате Wazuh генерирует оповещения при любом обновлении/изменении списка уязвимостей.

Частичное сканирование: Детектор уязвимостей сканирует только новые пакеты. В результате Wazuh генерирует оповещения при любом обновлении/изменении списка CVE.

Далее посмотрим, как можно настроить сканирование в Wazuh на практике.

Настройка и запуск сканирования

Для запуска сканирования уязвимостей в Wazuh требуется включить модуль обнаружения уязвимостей и настроить конфигурацию для сканирования. На сервере Wazuh модуль обнаружения уязвимостей по умолчанию отключен при установке, в то время как на агенте Wazuh по умолчанию включен Syscollector.

В файле /var/ossec/etc/shared/default/agent.conf  добавьте следующий блок настроек на сервере Wazuh. Также необходимо настроить эти параметры в каждом файле конфигурации агента ossec.conf.:



   no

   1h

   yes

   yes

   yes

 Включите модуль обнаружения уязвимостей в файле /var/ossec/etc/ossec.conf на сервере Wazuh. Установите значение для тега равным yes для модуля обнаружения уязвимостей и для каждой операционной системы, которую вы собираетесь сканировать. Ниже представлен пример такого файла настроек:



   yes

   5m

   6h

   yes

 

   

   

      yes

      trusty

      xenial

      bionic

      focal

      jammy

      1h

   

 

   

   

      yes

      buster

      bullseye

      bookworm

      1h

   

 

   

   

      yes

      5

      6

      7

      8

      9

      1h

   

 

   

   

      yes

      1h

   

 

   

   

      yes

      1h

   

После внесения изменений нам необходимо перезапустить Wazuh Manager.

systemctl restart wazuh-manager

В итоге агенты, установленные на целевые узлы будут по расписанию производить сканирования, и в случае выявления уязвимостей мы увидим уведомления следующего вида:

b515e14776b4e63e5e0782b2ab10945f.png

Более детально описание выявленной уязвимости будет иметь следующий вид:

11f75489eaab23c938cc068fdb8d4016.png

Заключение

Управление уязвимостями является важным элементом в процессе обеспечения информационной безопасности. В этой статье мы рассмотрели работу с уязвимостями с помощью Wazuh.

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

© Habrahabr.ru