Препарируем Wazuh: активно противодействуем угрозам

f8e762de8a9eaf8b13476e7971f50fe2.png

Системы класса SIEM традиционно используются для сбора событий ИБ с источников и выявления подозрительных активностей в этих событиях. Однако, системы SIEM можно также использовать в качестве ядра для комплекса автоматического реагирования на выявленные угрозы. По сути, мы получаем некий аналог Intrusion Prevention System. В качестве нашего рабочего инструмента у нас традиционно будет Wazuh. В предыдущих статьях мы уже рассмотрели написание правил нормализации и корреляции для данного SIEM, и теперь мы можем смело подключить любой источник, в котором есть журналы событий и написать любые правила корреляции.

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

Подбор пароля

Нестареющая классика. В качестве примера можно привести использование переборщика паролей Hydra. Если уязвимый сайт victim_host использует для передачи паролей метод POST, и известно, как выглядит запрос, передающий данные и сообщение о неверном вводе пароля, команда для подбора паролей из файла pass.txt для пользователя admin будет иметь следующий вид:


hydra -l admin -P pass.txt victim_host http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed”


Каждая попытка аутентификации должна фиксироваться в логах веб сервера и передаваться в SIEM и, таким образом мы можем выявлять данные атаки.
Кстати, приведенное в примере приложение DVWA содержит много других, интересных уязвимостей, которые тоже можно выявлять с помощью SIEM.

Directory Traversal

Атака с обходом каталога использует недостаточную проверку безопасности или недостаточную очистку предоставленных пользователем имен файлов и путей, так что символы, представляющие «переход в родительский каталог», передаются в API файловой системы операционной системы. Уязвимое приложение может быть использовано для получения несанкционированного доступа к файловой системе. Например, веб ресурсу можно передать что-то такое: https://localhost/wp-admin/post.php? post=application_id&action=edit&sjb_file=…/…/…/…/wp-config.php
И в случае наличия данной уязвимости мы увидим содержимое wp-config.php

Перебор каталогов и файлов — dirbusting

Dirtbusting — это перебор известными имен папок и файлов и отслеживание HTTP-ответов для выявления содержимого сервера. Эта информация может быть использована как для поиска файлов по умолчанию и их атаки, так и для фингерпринта веб-приложения. В качестве примера можно использовать утилиту dirb из состава Kali Linux. Указываем адрес жертвы и словарь: dirb http://127.14.0.1 /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt

Признаками такого перебора в логах является большое количество записей со статусом 404, ведь большинство обращений будут идти в пустоту.

Сканирование на уязвимости

В Kali Linux можно найти множество утилит, предназначенных для поиска уязвимостей на веб сайтах. Например, можно попробовать воспользоваться утилитой nikto.

nikto –h victim_host

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

Еще один вариант проверить IP адрес на принадлежность к хакерским ресурсам это воспользоваться базами данных репутации IP-адресов, содержащими информацию о подозрительных узлах.

Общая стратегия

Мы получаем IP адрес узла атакующего либо из логов веб сервера, либо от средства защиты, либо из базы репутаций, но так или иначе, у нас есть адрес узла атакующего. Что мы будем делать дальше? В качестве примера активного реагирования предлагается заблокировать средствами Wazuh доступ к веб серверу узла атакующего, например на 60 секунд. Это позволит отбить у злоумышленников охоту продолжать свои вредоносные действия.

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

Собираем тестовый стенд

Развернем тестовый веб сервер на который и будут производиться атаки. На сервере для установки Apache выполните следующие действия:

$ sudo apt update
$ sudo apt install apache2

Если брандмауэр включен, измените его настройки, чтобы разрешить внешний доступ к веб-портам. Пропустите этот шаг, если брандмауэр отключен:

$ sudo ufw status
$ sudo ufw app list
$ sudo ufw allow 'Apache'

Проверьте статус сервиса Apache. Он должен быть Running:

$ sudo systemctl status apache2

И в завершении убедитесь в доступности дефолтной веб страницы:

$ curl http://

Если с веб сервером все успешно настроено, то можно переходить к настройкам Wazuh. Для этого откроем файл настроек /var/ossec/etc/ossec.conf и настроим мониторинг логов Apache. Для этого в файл нужно добавить следующие строки:


  syslog
  /var/log/apache2/access.log

Перезапустим агента Wazuh:

$ sudo systemctl restart wazuh-agent

В случае, если у вас в качестве ОС для веб сервера используется Windows, то вы также можете установить Apache. Для этого установите последнюю версию Visual C++ Redistributable package. Далее загрузите установочный файл Apache web server Win64 и распакуйте ZIP архив. Скопируйте содержимое архива например, в папку Apache24 на диске C:.
Далее перейдите в каталог C:\Apache24\bin\ и запустите под административными привилегиями следующую команду PowerShell:

.\httpd.exe

При первом запуске Windows Defender Firewall выдаст запрос для разрешения доступа для веб сервера. Нажмем Allow Access. Это позволит серверу Apache взаимодействовать с внешними сетями. По сути мы создадим входящее соединение на порт 80. Также проверим доступность веб сервера с помощью браузера.
Настройка агента на виндовой машине выполняется аналогичным образом: вносим дополнения в файл настроек агента C:\Program Files (x86)\ossec-agent\ossec.conf, чтобы агент Wazuh мог отслеживать журналы доступа Apache:


  	syslog
  C:\Apache24\logs\access.log

И перезапустим Wazuh agent в терминале PowerShell с правами администратора, чтобы применить изменения:

Restart-Service -Name wazuh

Wazuh CDB

Прежде чем переходить к настройкам сервера Wazuh поговорим о базах CDB. Constant DB это по сути список в формате ключ : значение. Однако, записи могут содержать только одно значение, например:

10.1.1.1:

Для того, чтобы блокировать узел атакующего нам необходимо добавить IP-адрес атакующего в список CDB, а затем настроить правила и активный ответ. В общем случае мы можем просто создать текстовый файл, в который с помощью правил корреляции будет добавлен выявленный адрес атакующего:

$ sudo echo "" >> /var/ossec/etc/lists/alienvault_reputation

Назначим необходимые права и владельца на данный файл

$ sudo chown wazuh:wazuh /var/ossec/etc/lists/blacklist-alienvault

Теперь нам необходимо настроить скрипт для активного реагирования. Для этого добавим в файл /var/ossec/etc/rules/local_rules.xml следующие строки:


  
    web|attack|attacks
    etc/lists/blacklist-alienvault
    IP address found in AlienVault reputation database.
  

Далее, отредактируем конфигурационный файл Wazuh server /var/ossec/etc/ossec.conf и добавим список etc/lists/blacklist-alienvault в раздел :


 
    
    ruleset/decoders
    ruleset/rules
    0215-policy_rules.xml
    etc/lists/audit-keys
    etc/lists/amazon/aws-eventnames
    etc/lists/security-eventchannel
    etc/lists/blacklist-alienvault

    
    etc/decoders
    etc/rules
  

Затем добавим команду firewall-drop, которая вносит изменения в настройки локального файрволла iptables, блокирующие входящие соединения с узла атакующего на 60 секунд:


  
    firewall-drop
    local
    100100
    60
  


В завершении перезапустим менеджер:

$ sudo systemctl restart wazuh-manager

Теперь, если адрес атакующего попадет в CDB, то файрволл заблокирует его узел на одну минуту.

А что в консоли Wazuh?

Действия атакующего можно увидеть в консоли нашего SIEM. Для этого нам необходимо открыть модуль Threat Hunting и добавить в поиск следующие фильтры. Для веб-сервера под Linux — rule.id:(651 OR 100100)

3de62eb6635f5bceec683676621b4665.png

Для веб-сервера под Windows — rule.id:(657 OR 100100)

f9fbe8251720589babd1ae3bff068c98.png

В результате мы получаем отчет о том, сколько попыток обращений было заблокировано.

Заключение

В этой статье мы рассмотрели достаточно простой сценарий, в котором система SIEM не только выявляет подозрительную активность, но и принимает защитные меры по блокировке данной активности. Более сложные сценарии мы с коллегами рассматриваем в рамках практического онлайн-курса «Специалист по внедрению SIEM». По ссылке вы можете зарегистрироваться на бесплатный вебинар: «Как поймать хакера с помощью SIEM?».

Приходите, будет интересно.

© Habrahabr.ru