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

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

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

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

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

Конечно, для работы с уязвимостями есть специальные инструменты. Прежде всего это различные сканеры: 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 <table>;

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

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

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

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

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

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

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.:

<wodle name="syscollector">

   <disabled>no</disabled>

   <interval>1h</interval>

   <os>yes</os>

   <packages>yes</packages>

   <hotfixes>yes</hotfixes>

</wodle>

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

<vulnerability-detector>

   <enabled>yes</enabled>

   <interval>5m</interval>

   <min_full_scan_interval>6h</min_full_scan_interval>

   <run_on_start>yes</run_on_start>

 

   <!-- Ubuntu OS vulnerabilities -->

   <provider name="canonical">

      <enabled>yes</enabled>

      <os>trusty</os>

      <os>xenial</os>

      <os>bionic</os>

      <os>focal</os>

      <os>jammy</os>

      <update_interval>1h</update_interval>

   </provider>

 

   <!-- Debian OS vulnerabilities -->

   <provider name="debian">

      <enabled>yes</enabled>

      <os>buster</os>

      <os>bullseye</os>

      <os>bookworm</os>

      <update_interval>1h</update_interval>

   </provider>

 

   <!-- RedHat OS vulnerabilities -->

   <provider name="redhat">

      <enabled>yes</enabled>

      <os>5</os>

      <os>6</os>

      <os>7</os>

      <os>8</os>

      <os>9</os>

      <update_interval>1h</update_interval>

   </provider>

 

   <!-- Windows OS vulnerabilities -->

   <provider name="msu">

      <enabled>yes</enabled>

      <update_interval>1h</update_interval>

   </provider>

 

   <!-- Aggregate vulnerabilities -->

   <provider name="nvd">

      <enabled>yes</enabled>

      <update_interval>1h</update_interval>

   </provider>

</vulnerability-detector>

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

systemctl restart wazuh-manager

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

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

Заключение

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

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

Комментарии (1)


  1. angry-cookie
    31.05.2024 05:18

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

    смысл /etc/shared в том, что конфигурация доставляется менеджером на агенты автоматически, править файл в каталоге /etc/shared/ на агенте бессмыслено, агент берет настройки из памяти, а файл перезапишется с менеджера. Ну и если вы просто переводите чужую статью, хорошо бы давать ссылки на оригинал - https://documentation.wazuh.com/current/user-manual/capabilities/vulnerability-detection/how-it-works.html