
Wazuh + Suricata SOC лаборатория, обнаруживающая реальные эксплойты (CVE-2011-2523) и атаки методом перебора, с пользовательскими правилами обнаружения для пробелов в стандартных сигнатурах IDS.
Самодельная лаборатория Security Operations Center, созданная для обнаружения реальных техник атак на умышленно уязвимую цель, с использованием Wazuh в качестве SIEM и Suricata в качестве сетевого IDS-сенсора. Построено для демонстрации навыков разработки детектирований — а не просто развёртывания инструментов.
Современная работа SOC — это не просто «установить SIEM и смотреть на дашборд». Это понимание почему существует пробел в обнаружении и знание того, как его закрыть. Эта лаборатория симулирует небольшую, реалистичную среду: машину атакующего, устаревшую/уязвимую цель без поддержки нативного логирования и стек SIEM, который должен работать в условиях этого ограничения, используя видимость на сетевом уровне вместо хостовых агентов.
Ключевое архитектурное решение: цель (Metasploitable 2) работает на ОС, слишком старой для поддержки современного агента Wazuh или даже syslog-форвардера с доступом в интернет. Вместо того чтобы рассматривать это как препятствие, проект переключается на полностью сетевое обнаружение через Suricata — реалистичный паттерн для устаревших, IoT или OT-активов, которые невозможно инструментировать напрямую.
┌─────────────┐ атаки ┌──────────────────────┐
│ Kali VM │ ────────────────────────▶│ Metasploitable 2 │
│ (атакующий +│ │ (немониторимая жертва, │
│ Suricata │ │ нет агента, нет │
│ сенсор + │ │ доступа в интернет) │
│ агент Wazuh)│ └──────────────────────┘
└──────┬──────┘
│ eve.json (оповещения/события Suricata)
│ пересылается через агент Wazuh
▼
┌─────────────────────┐
│ Wazuh Manager │
│ (Amazon Linux 2023)│
│ Indexer + Dashboard│
└─────────────────────┘
Все три ВМ работают на VirtualBox, в NAT-сети 192.168.0.0/24.

| Компонент | Роль | ОС |
|---|---|---|
| Wazuh Manager | SIEM: indexer, dashboard, механизм правил | Amazon Linux 2023 |
| Kali Linux | Атакующий + сетевой сенсор Suricata + агент Wazuh | Kali (на базе Debian) |
| Metasploitable 2 |
Suricata необходима видимость трафика между атакующим и целью. Есть два варианта: выделенная ВМ-сенсор с promiscuous/зеркальным интерфейсом, или запуск сенсора на одном из двух хостов, уже находящихся на пути трафика. Поскольку Wazuh manager (Amazon Linux 2023) не имеет поддержки EPEL и установка Suricata на нём оказалась непрактичной, а цель вообще не может запускать никакие агенты, Suricata работает непосредственно на Kali. Таким образом, она видит 100% атакующего трафика на своём собственном интерфейсе без необходимости в promiscuous mode или span-порту и отправляет свои события менеджеру через уже зарегистрированный на Kali агент Wazuh.
Атака:
nmap -sV -A 192.168.0.138

Обнаружение: Набор правил Emerging Threats от Suricata отметил множество сигнатур, связанных со сканированием и аномалиями протоколов, в реальном времени, когда сканирование затронуло каждый открытый порт, включая трафик на открытом сервисе UnrealIRCd Metasploitable (ET CHAT IRC USER command).
Результат: 132+ событий IDS сгенерировано и корректно классифицировано в группах правил ids, suricata в представлении Threat Hunting Wazuh в течение нескольких секунд после завершения сканирования.

Атака:
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 > set RHOSTS 192.168.0.138
msf6 > set LHOST 192.168.0.200
msf6 > run

vsftpd 2.3.4 на Metasploitable содержит бэкдор, активируемый некорректной строкой FTP-логина, который открывает root-шелл на TCP-порту 6200. Эксплойт сработал чисто и вернул сессию Meterpreter с правами root.
Обнаружение: Сигнатура Suricata GPL ATTACK_RESPONSE id check returned root (SID 2100498) сработала через 11 секунд после открытия шелла, обнаружив простую текстовую строку uid=0(root) в выводе команд шелла, передаваемую по сети на порту 6200.
"signature": "GPL ATTACK_RESPONSE id check returned root",
"signature_id": 2100498,
"src_ip": "192.168.0.138",
"src_port": 6200,
"dest_ip": "192.168.0.200",
"direction": "to_client"

Почему это важно: это подтверждение на сетевом уровне успешной компрометации root на активе с нулевым хост-логированием — именно тот сценарий, для обработки которого и была спроектирована архитектура.
Атака:
hydra -l msfadmin -P /tmp/quicklist.txt -t 4 ftp://192.168.0.138

Hydra попыталась выполнить множество FTP-логинов в быстрой последовательности, корректно определив допустимую пару учётных данных msfadmin:msfadmin после нескольких неудачных попыток.
Статус обнаружения: Парсер FTP-протокола Suricata зафиксировал каждую отдельную команду USER/PASS и серверный код ответа в eve.json (event_type: ftp), подтверждено их наличие в архиве сырых событий менеджера:
{"event_type":"ftp","src_ip":"192.168.0.200","dest_ip":"192.168.0.138",
"dest_port":21,"ftp":{"command":"PASS","command_data":"root",
"completion_code":["530"],"reply":["Login incorrect."]}}

В стандартном наборе правил Suricata нет специальной сигнатуры для FTP-брутфорса, поскольку это паттерн протокола, а не известная вредоносная строка. Для закрытия этого пробела было разработано пользовательское корреляционное правило Wazuh:
<group name="suricata,ftp,brute_force,">
<rule id="100100" level="5">
<if_sid>86600</if_sid>
<field name="event_type">^ftp$</field>
<field name="data.ftp.command">^PASS$</field>
<description>Suricata: Обнаружена попытка FTP-пароля на $(data.dest_ip)</description>
</rule>
<rule id="100101" level="10" frequency="4" timeframe="60">
<if_matched_sid>100100</if_matched_sid>
<description>Suricata: Обнаружена возможная атака FTP-брутфорсом - множественные попытки пароля за 60 секунд</description>
<mitre>
<id>T1110</id>
</mitre>
</rule>
</group>
Статус: в процессе — подтверждено, что базовые данные событий достигают менеджера, синтаксис правил проверен через wazuh-logtest, но корреляционное правило (100101) пока не срабатывает надёжно от начала до конца. Следующий шаг отладки — подтверждение пути поля декодера, назначенного вложенным полям FTP Suricata во время парсинга, с помощью wazuh-logtest на живом образце. Отмечено как будущая работа ниже.
archives.log/archives.json не включены по умолчанию (logall/logall_json имеют значение no из коробки) и необходимы для отладки того, что SIEM фактически получил, по сравнению с тем, на что он решил сработать.usermap_script (CVE-2007-2447) в качестве пятой техники| Техника | ID | Статус |
|---|---|---|
| Активное сканирование | T1595 | ✅ Обнаружено |
| Эксплуатация публичного приложения | T1190 | ✅ Обнаружено |
| Брутфорс | T1110 | 🔶 В процессе |
| Уязвимая цель, без мониторинга |
| Ubuntu 8.04 (устаревшая) |