Написание правил Sigma
Переносимый синтаксис правил обнаружения
«Написание правил Sigma» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Что такое Sigma
Sigma — это универсальный, независимый от поставщика формат сигнатур для обнаружения на основе журналов. Вы один раз записываете логику обнаружения в YAML, а затем преобразуете её в SPL-запросы для Splunk, запросы Elastic, KQL-запросы Sentinel и запросы для многих других целевых систем.
Sigma относится к обнаружению в журналах так же, как YARA — к обнаружению файлов: это общий язык. Он позволяет командам открыто обмениваться правилами и не переписывать одну и ту же идею для каждой SIEM.
Структура правила
Правило Sigma представляет собой документ YAML с обязательными и необязательными разделами. Основные разделы — это title, logsource и detection.
title: Suspicious PowerShell Encoded Command
id: 7e3f3c1a-1f2b-4c3d-9a8b-1234567890ab
status: experimental
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\\powershell.exe'
CommandLine|contains: '-enc'
condition: selection
level: highБлок источника журналов
Блок logsource сообщает преобразователю, к каким журналам применяется правило. Он не выполняет непосредственный запрос к данным, а выбирает правильное сопоставление полей и индекс во время преобразования.
Распространённые ключи:
product— например, windows, linux, awscategory— например, process_creation, network_connection, file_eventservice— например, sysmon, security, sshd
Выбирайте наиболее конкретное сочетание, поддерживаемое Вашими данными, чтобы конвейер правильно сопоставил поля.
Выборки и идентификаторы поиска
Внутри detection Вы определяете один или несколько именованных идентификаторов поиска (выборок). Каждый из них представляет собой набор критериев сопоставления полей со значениями. Несколько полей внутри одной выборки объединяются с помощью логического AND.
Здесь оба условия должны быть истинными, чтобы сработала selection.
detection:
selection:
EventID: 4688
NewProcessName|endswith: '\\whoami.exe'
condition: selectionМодификаторы полей
Модификаторы уточняют способ сопоставления значения. Они добавляются к имени поля после вертикальной черты.
contains— сопоставление по подстрокеstartswith/endswith— сопоставление с привязкой к началу или концуall— в списке должны присутствовать все значенияre— регулярное выражениеbase64offset|contains— сопоставление с подстроками, закодированными в base64
Модификаторы объединяются слева направо и применяются по порядку.
detection:
selection:
CommandLine|contains|all:
- 'Invoke-WebRequest'
- 'DownloadString'
condition: selectionСписки и карты как OR / AND
Логику внутри выборки определяют два правила:
- Список значений для одного поля означает OR — достаточно совпадения с любым значением.
- Карта из нескольких полей означает AND — должны совпасть все поля.
Ниже Image сопоставляется с любым из двух двоичных файлов, а User также должен иметь значение SYSTEM.
detection:
selection:
Image|endswith:
- '\\net.exe'
- '\\net1.exe'
User: 'SYSTEM'
condition: selectionВыражение условия
condition объединяет именованные выборки с помощью булевой логики. Здесь Вы задаёте фильтры и исключения.
Операторы включают and, or, not, круглые скобки и агрегатные функции, такие как count(). Также можно использовать 1 of selection* / all of selection*, чтобы обращаться к группам идентификаторов по префиксу.
detection:
selection:
EventID: 4625
timeframe: 5m
condition: selection | count() by SourceIp > 10Фильтрация шума
Чтобы подавить заведомо допустимую активность, определите отдельный идентификатор и исключите её в условии с помощью not. Так вредоносная логика остаётся понятной, а исключения — явными.
Здесь правило срабатывает, когда rundll32 создаёт сетевое соединение, за исключением известного легитимного процесса обновления.
detection:
selection:
Image|endswith: '\\rundll32.exe'
filter_legit:
ParentImage|endswith: '\\MicrosoftEdgeUpdate.exe'
condition: selection and not filter_legitМетаданные для первичного анализа
Помимо логики, хорошие правила содержат метаданные, которые помогают специалистам быстрее реагировать и поддерживают актуальный охват для разработчиков.
level— информационный, низкий, средний, высокий, критическийtags— техники ATT&CK, например attack.t1059.001falsepositives— известные доброкачественные причины срабатыванияreferences— отчёты об угрозах или документацияauthorиdate
На заполнение этих полей уходят минуты, но во время инцидента они экономят часы.
Правила корреляции
Правила для отдельных событий не могут описать многоэтапные атаки. Правила корреляции Sigma объединяют несколько базовых правил во времени, чтобы обнаруживать последовательности и закономерности.
Поддерживаются такие типы, как event_count (N совпадений за интервал), value_count (различные значения, например множество пользователей с неудачными входами) и temporal (сначала правило A, затем правило B). Это позволяет, например, обнаружить успешный вход сразу после серии неудачных попыток.
name: bruteforce_then_success
correlation:
type: temporal
rules: [failed_logins, successful_login]
group-by: [SourceIp, TargetUser]
timespan: 10mПреобразование для целевой системы
С помощью sigma-cli Вы преобразуете правило в целевой язык запросов. Конвейер обработки сопоставляет имена полей Sigma с реальной схемой Ваших данных.
На выходе получается готовый к развертыванию запрос, который можно вставить вручную или отправить через API.
sigma convert -t splunk -p sysmon \
-f default rule.yml
# Example output (Splunk SPL):
# Image="*\\powershell.exe" CommandLine="*-enc*"Краткая проверка
Проверьте, насколько хорошо Вы понимаете логику обнаружения в Sigma.
Итоги
Теперь Вы умеете создавать переносимые правила Sigma:
logsourceвыбирает журналы и применимые сопоставления полей- Выборки — это именованные критерии «поле — значение» (поля = AND, списки значений = OR)
- Модификаторы, такие как проверка вхождения, окончания, всех значений и регулярных выражений, уточняют сопоставление
conditionобъединяет выборки с помощью and/or/not, фильтров и агрегатных функций- Отдельные идентификаторы фильтра исключают заведомо допустимый шум
- Метаданные (level, tags, falsepositives) ускоряют первичный анализ
sigma convertкомпилирует правило для целевой системы SIEM
Далее Вы свяжете эти правила с техниками злоумышленников с помощью MITRE ATT&CK.
Часто задаваемые вопросы
Урок «Написание правил Sigma» бесплатный?
Да — полный текст урока «Написание правил Sigma» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Написание правил Sigma»?
Переносимый синтаксис правил обнаружения Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Написание правил Sigma»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Принципы обнаружения как кода
- Написание правил Sigma
- Сопоставление с MITRE ATT&CK
- Тестирование и настройка механизмов обнаружения