Custom SIEM + Sentinel BAS
Платформа обнаружения и реагирования, написанная с нуля на Python, в паре с Sentinel BAS — движком breach-and-attack simulation, который запускает техники Atomic Red Team против живой лаборатории и проверяет, какие правила обнаружения действительно срабатывают.
- Роль
- Дизайн, разработка и проверка
- Год
- 2026
- Статус
- Открытый, лицензия MIT
- Правил обнаружения
- 35
- Измеренное покрытие, 7 из 10 техник
- 70%
- Окно корреляции цепочки атак
- 60 мин
- Готовых сценариев threat hunting
- 8
Обзор
Проблема
Правило обнаружения, которое на ревью выглядит верным, всё равно может не срабатывать: парсер может терять поле, от которого оно зависит, или телеметрия может быть засорена. Пока через конвейер не прогнаны реальные техники атак, покрытие обнаружения — лишь предположение.
Что я создал
Mini SIEM — платформа обнаружения и реагирования, написанная с нуля на Python: сбор данных из нескольких источников, 35 правил обнаружения, движок Sigma, корреляция цепочек атак, управление инцидентами, threat hunting и SOAR с одобрением аналитика.
Рядом с ней Sentinel BAS прогоняет техники Atomic Red Team против живой лаборатории и относит каждую к одной из категорий: «обнаружена», «с задержкой» или «пропущена».
Почему это важно
Первый же прогон выявил дефекты, которые пропустило ревью правил. Правило для Kerberoasting структурно не могло сработать, потому что TicketEncryptionType никогда не извлекался, а пересыльщик логов засорял телеметрию собственным шумом.
Архитектура
Телеметрия проходит через один конвейер — от сбора до реагирования, а Sentinel BAS замыкает цикл, проверяя его реальными техниками.
- СборWindows Event Log, Sysmon, Linux syslog, удалённый пересыльщик
- ХранениеSQLite с параметризованными запросами
- Обнаружение35 правил, движок Sigma, список IOC, автоматические теги ATT&CK
- Корреляция3+ типа правил, один пользователь или IP, 60 минут
- РеагированиеИнциденты и SOAR с одобрением аналитика
- ПроверкаSentinel BAS воспроизводит Atomic Red Team
Сбор данных
Журналы Windows Security и System, Sysmon (создание процесса, доступ к процессу, инъекция, DNS-запрос) и Linux syslog (SSH, sudo, su, useradd/usermod). Удалённые хосты Windows отправляют события через агент-пересыльщик на основе Get-WinEvent.
Расследование
Инциденты превращаются в пронумерованные дела с доказательствами, назначением ответственного и отслеживанием решения. У аналитиков есть язык запросов для threat hunting с 8 сохранёнными сценариями, тепловая карта MITRE ATT&CK, хронологии, контекст риска и сводки инцидентов с помощью AI.
Реагирование
Плейбуки SOAR ставят ответные действия в очередь за шлюзами одобрения аналитика, поэтому ничего разрушительного не запускается автоматически.
Развёртывание
Автономный исполняемый файл для Windows (PyInstaller + waitress), режим хостинга на Linux (gunicorn) и публичный демо-режим, в котором эндпоинт приёма данных полностью отключён.
Известные ограничения
SQLite не рассчитана на интенсивный параллельный приём данных, система работает на одном узле, отдаёт HTTP, а не HTTPS, а движок Sigma покрывает распространённые шаблоны, а не всю спецификацию. Всё это описано в репозитории.
Стек
Обнаружение
Тридцать пять правил для Windows, Sysmon, Linux и поведенческой аналитики. Каждое оповещение автоматически размечается по MITRE ATT&CK.
| Категория | Правил | Примеры |
|---|---|---|
| Базовые Windows | 11 | Перебор паролей, password spraying, очистка журнала аудита, новая служба, Kerberoasting |
| Расширенные Windows / Sysmon | 7 | Запуск shell из Office, обход AMSI, доступ к LSASS, инъекция через CreateRemoteThread, DNS-туннелирование |
| Разведка, lateral movement, закрепление | 8 | Злоупотребление LOLBin, закрепление через ключ Run, удалённый запуск служб, удаление теневых копий |
| Linux | 5 | Перебор SSH, подозрительный sudo, новый пользователь, добавление в привилегированную группу |
| Поведенческие | 2 | Необычное время входа, новый IP-источник |
| Безопасность платформы | 1 | Перебор паролей к входу в саму SIEM |
| Список IOC | 1 | Сопоставляет события с известными индикаторами |
Правило Sigma из репозитория
Движок Sigma загружает YAML-правила с распространёнными одиночными и множественными условиями AND/OR. Это правило ловит известные инструменты для кражи учётных данных.
title: Credential Dumping Tool Execution
status: stable
logsource:
category: process_creation
detection:
selection:
EventID: 4688
CommandLine:
- '*mimikatz*'
- '*sekurlsa*'
- '*lsadump*'
condition: selection
level: critical
tags:
- attack.credential_access
- attack.t1003
Корреляция цепочки атак
Когда для одного пользователя или IP-источника в течение 60 минут срабатывают три и более разных типа правил, оповещения автоматически объединяются в один инцидент, и аналитик видит одну цепочку атаки вместо десятка разрозненных оповещений.
Проверка
Sentinel BAS превращает «эти правила должны работать» в измеренный отчёт о покрытии.
Методика
- ВыполнениеЗапуск техники Atomic Red Team на лабораторном хосте
- СборСбор оповещений, которые подняла SIEM
- СопоставлениеПо технике ATT&CK, хосту и времени
- КлассификацияОбнаружена за 60 с, с задержкой — за 5 мин, иначе пропущена
Сопоставление техник учитывает иерархию: тест для T1003 правильно засчитывает оповещение с тегом T1003.001.
Результаты по техникам
Ни одна техника не была обнаружена с задержкой и не осталась в ожидании.
| Техника | Atomic-тест | Результат | Задержка |
|---|---|---|---|
T1003.001 Память LSASS | Дамп памяти LSASS | Обнаружена | 0 с |
T1059.001 PowerShell | Закодированная команда PowerShell | Обнаружена | 0 с |
T1136.001 Локальная учётная запись | Создание нового локального пользователя | Обнаружена | 0 с |
T1490 Препятствие восстановлению системы | Удаление теневых копий томов | Обнаружена | 0 с |
T1547.001 Ключи реестра Run | Закрепление через ключ реестра Run | Обнаружена | 0 с |
T1543.003 Служба Windows | Установка новой службы | Обнаружена | 4 с |
T1082 Сбор сведений о системе | Всплеск разведывательных команд | Обнаружена | 21 с |
T1558.003 Kerberoasting | Запрос билетов SPN | Пропущена | Нет оповещения |
T1070.001 Очистка журналов событий Windows | Очистка журнала событий Security | Пропущена | Нет оповещения |
T1053.005 Запланированная задача | Создание запланированной задачи | Пропущена | Нет оповещения |
Что показали пропуски
Правило, которое никогда не могло сработать
Правило для Kerberoasting зависело от
TicketEncryptionType, который конвейер никогда не извлекал, поэтому оно структурно не могло сработать. Ревью правил этого не заметило.Засорённая телеметрия
Удалённый пересыльщик создавал собственный шум внутри телеметрии, которую отправлял.
Безопасность
SIEM хранит чувствительную телеметрию, поэтому сама платформа была укреплена и проверена.
Найдена и исправлена хранимая XSS
Отдельный аудит XSS нашёл настоящую хранимую XSS: заголовки правил Sigma выводились без экранирования. Исправлено, во всём проекте включено автоэкранирование Jinja2.
Сессии и секреты
Секреты берутся из переменных окружения, пароли хешируются, сессии хранятся на сервере. Cookie — HttpOnly, SameSite=Lax, Secure при включении и живут 8 часов.
Контроль доступа
Ролевой доступ для Viewer, Analyst и Admin, а также блокировка входа после 5 неудачных попыток за 15 минут.
Заголовки безопасности
CSP, X-Frame-Options, nosniff, Referrer-Policy, Permissions-Policy и HSTS в каждом ответе.
Защита от инъекций
Параметризованный SQL и проверка ввода по перечню допустимых значений.
Сканирование зависимостей
Flask с 3.0.3 до 3.1.3 (PYSEC-2026-2151) и requests с 2.32.3 до 2.32.4 / 2.33.0 (PYSEC-2026-1872, PYSEC-2026-2275).
Задокументированный компромисс: тот, кто знает действующее имя пользователя, может намеренно вызвать блокировку.
Скриншоты
Нажмите на скриншот, чтобы открыть его в полном размере, затем листайте свайпом или стрелками.
