Sigma Модификаторы: Полное руководство по использованию с примерами

Sigma rules

Представленные в 2019 году, модификаторы Sigma были включены в спецификацию Sigma, позволив инженерам по обнаружению выполнять более сложные операции с правилами Sigma. Эти операции, включая регулярные выражения (Regex), булеву логику и запись в нотации CIDR, поддерживаются большинством SIEM-систем.

Обзор

Значения заданных полей внутри правил Sigma могут быть изменены с помощью Модификаторов Значений (Value Modifiers). Модификаторы значений (или проще «модификаторы») добавляются после имени поля с помощью символа вертикальной черты | к каждому полю, которое вы хотите модифицировать.

Модификаторы также могут быть объединены в цепочку (chained) для выполнения более сложных операций.

Доступные модификаторы полей

Ниже приведен список доступных модификаторов полей.

  • all
  • base64 / base64offset
  • cased
  • cidr
  • contains
  • endswith
  • exists
  • expand
  • fieldref
  • gt
  • gte
  • lt
  • lte
  • re
  • startswith
  • utf16 / utf16le / utf16be / wide
  • windash

all

Обычно списки значений в сгенерированном запросе связываются оператором OR. Модификатор all изменяет это на AND.

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

Примечание: Значения, состоящие из одного элемента, не могут иметь модификатор all, так как некоторые системы не могут его поддерживать. Если вы используете его как обходной путь для дублирования поля в выборке, вместо этого создайте новую выборку.

base64 / base64offset

Набор модификаторов base64 закодирует предоставленные значения в строки в формате base64. Часто используется вместе с contains для идентификации вредоносной инъекции в приложения.

Эту технику часто используют злоумышленники, чтобы скрыть поведение, выполняя команды или отправляя HTTP-параметры с использованием base64, что иногда предотвращает работу традиционных методов обнаружения.

Совет: Модификатор base64offset обычно предпочтительнее модификатора base64, потому что значение ASCII, закодированное в base64, может иметь 3 разных смещения (offset или shift), которые могут возникнуть в процессе кодирования.

cased

Модификатор cased указывает, что значение применяется с учетом регистра. Поведение Sigma по умолчанию — сопоставление без учета регистра.

cidr

Модификатор cidr позволяет использовать подсети в формате CIDR в качестве значений полей. Поддерживаются как IPv4, так и IPv6 адреса.

contains

Модификатор contains вставит подстановочный знак (обычно *) вокруг предоставленного значения(ий), так что значение будет найдено в любом месте поля.

endswith

Модификатор endswith вставит подстановочный знак (обычно *) в начале предоставленного значения(ий), так что значение будет найдено в конце поля.

exists

Модификатор exists сгенерирует запрос для проверки существования поля fieldname. Значением модификатора может быть true или false. Установка значения в false приведет к созданию запроса not exists.

expand

Модификатор expand может использоваться с Конвейерами Sigma (Sigma Pipelines) для замены значений-заполнителей (placeholder) на другое значение, общее для данного конвейера обработки.

fieldref

Модификатор fieldref преобразует обычную строку в ссылку на поле (field reference). fieldname и fieldasString должны иметь одинаковое значение. Ссылка на поле может использоваться для непосредственного сравнения полей совпадающих событий во время выполнения запроса/сопоставления.

gt

Модификатор gt обеспечит поиск, при котором значение поля fieldname больше предоставленного значения.

gte

Модификатор gte обеспечит поиск, при котором значение поля fieldname больше или равно предоставленному значению.

lt

Модификатор lt обеспечит поиск, при котором значение поля fieldname меньше предоставленного значения.

lte

Модификатор lte обеспечит поиск, при котором значение поля fieldname меньше или равно предоставленному значению.

re

Модификатор re обеспечит поиск, при котором значение поля fieldname соответствует предоставленному регулярному выражению.

Существуют под-модификаторы re|?:

  • i: (insensitive) для включения сопоставления без учета регистра.
  • m: (multi line) для сопоставления across multiple lines. ^/$ соответствуют началу/концу строки.
  • s: (single line) чтобы включить сопоставление точки (.) со всеми символами, включая символ новой строки.

startswith

Модификатор startswith вставит подстановочный знак (обычно *) в конце предоставленного значения(ий), так что значение будет найдено в начале поля.

utf16 / utf16le / utf16be / wide

Добавляет метку порядка байтов (BOM) и кодирует в UTF16 (используется только в комбинации с модификаторами base64).

Не заканчивайте цепочку на utf16, utf16le, utf16be или wide

Цепочка модификаторов не должна заканчиваться модификаторами кодировки символов (utf16, utf16le, utf16be и wide). Итоговые значения внутренне представлены как последовательности байтов, а не текстовые строки, и содержат нулевые символы, которые обычно сложно обрабатывать в запросах. Поэтому за ними должен следовать модификатор кодирования (base64, base64offset).

windash

Модификатор windash преобразует любые предоставленные аргументы или флаги командной строки для использования -, а также /, – (En Dash), — (Em Dash) и ― (Horizontal Bar).

Это невероятно полезно в экосистеме Windows, где есть два стандарта передачи аргументов командам: обычно - для PowerShell (напр., -a) и / для cmd.exe (напр., /a), но большое количество команд обычно принимают оба варианта. Многие инструменты, включая PowerShell, принимают не только обычный дефис, но и другие похожие на него символы, такие как – (En Dash), — (Em Dash) и ― (Horizontal Bar).

Комментарии: 0