SOC Level Up: Introduction to Sigma Rules. Sigma rule что это

Sigma rule что это - Base64offset™ Как появилась эта статья Общий синтаксис Utf16 Дальнейшие инструкции

Приведенная выше выдержка показывает, что правило использует журналы Sysmon и стандартные журналы Windows (т.е. eventID 1 или 4688) в качестве источников данных. Это прямые источники данных, которые Plaso искал в первой статье и загрузил в ES в этом формате.

Все, что вы хотели™ знать о Sigma-правилах. Часть 2

Эта статья™ является продолжением серии статей™, описывающих формат SigmaRules™. Краткое напоминание о структуре круга. В предыдущей статье мы привели пример простого правила™ и подробное описание раздела Описание источника события™. Теперь у вас есть общее представление о структуре ™правил™. Вы знаете, где их определить. И какую информацию необходимо указывать в правилах для обнаружения подозрительной активности?

Далее необходимо научиться описывать логику™, которая работает с вашими данными, и определять, работают ли правила в той или иной ситуации. Эта статья. Сосредоточьтесь на этой части. Правила и их свойства. Раздел Detecting Logic™ является самой важной™ частью синтаксиса, и его знание необходимо для понимания существующих правил™ и создания собственных правил.

В следующих заметках вы узнаете больше об описаниях метаинформации (характеристики с информационными или инфраструктурными символами, такими как описания и идентификаторы) и Коллекциях правил™. Пожалуйста, следите за нашим постом ™!

Описание логики™ детектирования (атрибут detection)

™ условия для активации правила задаются при обнаружении признака. Его подполя описывают основную техническую часть правила. Важно отметить, что правило может содержать только описательные разделы и несколько источников записей и следов. Секция обнаружения ει описывает критерии активации на основе данных™ из секции источника™, поэтому эти две секции™ имеют соотношение один к одному.

В общем™, содержание поля обнаружения™ состоит из двух логических частей™:.

  • описание предположений о полях события (идентификаторы поиска™),
  • логическая взаимосвязь между этими описаниями ( timeframe и выражение в поле condition ).

Гипотетическое описание содержимого поля события обеспечивается путем указания Идентификатора поиска™. Идентификатор может быть один (как здесь) или много (как здесь).

Существует три типа второй части™.

  • обычное условие,
  • условие с агрегатным выражением (как в примере выше),
  • условие с ключевым словом™ near .

Идентификаторы поиска™

Идентификатор поиска™ представляет собой пару ключ-значение, где ключ™ — это имя идентификатора поиска™, а значение — список™ или словарь (или корреляционная таблица™). Как и в языках программирования, списки или карты. Формат списков и словарей определен в стандарте языка YAML; стандарт языка YAML можно найти здесь. Обратите внимание, что имя идентификатора поиска™ не указывается в формате сигма-правила μορφή. Однако вариант παρα с выделением слова™ встречается чаще.

Существуют общие требования, которые относятся как к списку στοιχεία, так и к компоненту словаря.

  • Все значения трактуются как регистронезависимые строки™, то есть нет разницы между заглавными и строчными буквами.
  • В строках допускается использование метасимволов подстановки (wildcards) ‘*’ и ‘?’. Причем™ ‘*’ — любое количество произвольных символов (от нуля до максимального значения), ‘?’ — один произвольный символ™ (или отсутствие символа).
  • Метасимволы подстановки экранируются при помощи™ символа ‘\’, например ‘\*’. Если нужно найти метасимвол подстановки после бэкслеша, то бэкслеш нужно экранировать: ‘\\*’. Это обычные правила экранирования служебных символов в любом привычном нам языке программирования.
  • По умолчанию регулярные выражения чувствительны к регистру символов, то есть существует разница между заглавными и строчными буквами в шаблоне поиска™.
  • Кроме символа одинарной кавычки ‘ и метасимволов экранирования другие™ символы экранирования не требуют.

Идея правил подробно описана в блоге Hexacorn. После внимательного прочтения становится ясно, какие шаги необходимо предпринять, чтобы воспроизвести результаты, описанные в статье.

What Are Sigma Rules?

Sigma — это фреймворк с открытым исходным кодом, который позволяет писать правила для анализа журналов. Он похож на YARA для файлов и Snort для сетевого анализа. Правила Sigma пишутся с использованием предопределенного синтаксиса в формате YAML и преобразуются в формат, соответствующий цели SIEM или платформе, используемой организацией (с помощью sigmac или онлайн-конвертеров). Существует множество поддерживаемых целей, включая Splunk, Elasticsearch и MicrosoftDefender. Sigma можно использовать с различными источниками записи.

Гибкость правил сигма и тот факт, что правила могут использоваться в средах с различными конфигурациями, облегчает аналитикам создание этих правил и обмен ими с коллегами и сообществом.

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

Identify and alert on suspicious activity

Правила Sigma могут быть интегрированы в платформы SIEM и могут обнаруживать различные события по мере их возникновения, помогая обнаружить и остановить их до того, как будет нанесен дальнейший ущерб. Например, правила crawl† могут быть созданы для: несанкционированных действий, доступа к интернету/ресурсам, изменения файлов, создания процессов и т.д.

Threat Hunting

Сигма-правила могут быть использованы для поиска угроз.

  1. Use the rules to detect when a certain attack or threat targets your organization.
  2. Check if your organization was breached by applying Sigma rules to old logs (assuming your organization aggregates logs for at least a few months). Often it takes an organization several months before they discover that an attacker is already in the system. By analyzing the logs for suspicious activity you increase the chances of discovering a security breach and starting an incident response process sooner.

Sigma Rules Syntax

Как показано на рисунке выше, структура сигма-правила состоит из необязательной и обязательной частей.

Metadata

Эти поля предоставляют информацию о правиле и добавляют полезные комментарии и заметки. Хотя это и не обязательно, но особенно важно добавить эту информацию, если правило будет передано другим людям. Здесь имеется несколько полей.

  • Title of the rule
  • Author (optional)
  • Date (optional)
  • Unique ID (optional)
  • License (optional) – it is recommended to add this field if you plan to share the rule. By default the distribution is very strict, you can choose to change it using SPDX standard.
  • Tag (optional) – For example, associate the rule with a technique from the MITRE ATT&CK framework.
  • Status (optional) – possible values can be experimental or test, to indicate that the rule might need further tuning and testing.

Log Source

В разделе Источники журналов описаны журналы, которые необходимо искать и анализировать. Есть несколько необязательных полей, которые определяют тип файла журнала, связанного с правилом сигма. Хотя эти поля являются необязательными, правила должны включать хотя бы одно поле, поскольку они предоставляют важную информацию для отслеживания и помогают пользователям правил интегрировать правила в свою инфраструктуру.

  • Category: specify the logs from a group of products. For example: firewall, process_creation, file_event.
  • Product: a specific software or service. For example: Windows, Apache, Zeek.
  • Service: select subset from the product.
  • Definition: a place for comments and additional information regarding the log.

Detection

В этом разделе определено, что искать в журналах. Этот раздел содержит один или несколько блоков, обычно называемых «отборами» или «фильтрами», но может иметь и другое название. Каждый блок содержит соответствующие поля и информацию, необходимую для обнаружения конкретного события. При поиске совпадения можно использовать следующие поля и свойства для поиска определенной строки, идентификатора события или их комбинации. Рассмотрим следующий пример.

Правило для обнаружения выполнения mshta, когда родительский образ процесса заканчивается на ‘\svchost.exe’, а образ процесса заканчивается на ‘\mshta.exe’:.

Исходя из того, что вы узнали в предыдущем разделе, вы видите, что можете использовать это правило для сканирования журнала генерации процессов в операционных системах Windows.

Затем есть блок под названием ‘selection’, который представляет собой карту (или каталог), содержащую пары ключей и значений. В приведенном выше примере есть два ключа, ‘ParentImage’ и ‘Image’. Элементы карты связаны логическим И. Это означает, что мы ищем совпадение как с изображением процесса, так и с его родительским изображением.

В случае родительских образов строки имеют форму списка — они связаны с OR и должны иметь хотя бы одно совпадение в конце пути (для ‘endswith’): ‘svchost.exe’, ‘cmd.exe’ или ‘powershell.exe’. На языке SIGMA буквенно-цифровыми символами являются: ‘svchost.exe’, ‘cmd.exe’ или ‘powershell.exe’.

  • Case insensitive.
  • Can contain regular expressions (regex) – in this case it will be case sensitive.
  • Wildcards can be used (* and ? ) in the detection. If needed these characters can be escaped using the backslash.

Обратите внимание, что в значениях используются классификаторы: ‘ endswith’ — указывает, где найти строку — существует множество других квалификаторов, которые могут быть использованы. В примере образ процесса должен заканчиваться на ‘\mshta.exe’.

Наконец, условие определяет условия, которые должны быть выполнены, чтобы обнаружить событие и, если необходимо, активировать оповещение. Если правило состоит из многих частей, оно может быть связано с различными логическими операциями, такими как AND, OR и NOT. Используя эти условия, вы можете создавать более подробные правила, отфильтровывать конкретные совпадения и корректировать правила, чтобы избежать ложных срабатываний. В этом примере обнаружение выполняется, если файл журнала содержит указанный путь к изображению.

Попробуйте правила, созданные в программе ‘Sigmac’, которая требует Python 3. Попробуйте использовать правила, созданные в папке «. /tools». Существует несколько целей, которые можно искать/настраивать на основе правил.

Writing Sigma Rules

Ранее мы уже описывали, как правила Sigma включаются в файл YAML. Этот файл YAML следует стандартам или спецификациям, указанным авторами Sigma. Он также доступен на странице GitHub. Чтобы обобщить эту информацию — следующий раздел представляет собой хорошее правило.

  • Metadata (Title, ID, Author, References, Tags, Level)
  • Log Source (Define the log source which will be used to collect the data from e.g. the Windows Security log channel)
  • Detections (selections, filters, and conditions)
  • False-positives
  • Optional (and custom) tags

Официальная спецификация на GitHub содержит подробное описание каждого раздела и полей внутри каждого раздела. Если вам нужен подробный обзор спецификации, перейдите по ссылке. Краткое введение из правил Сигмы и их написание см.

Step 2: Create a YAML file

Создайте локально новый файл YAML и начните писать правила Sigma. Вы можете использовать вашу любимую среду разработки или ваш любимый процессор (даже Блокнот, если вам нравится мучительная боль). С помощью обработчика кода вы можете легко форматировать, проверять синтаксис и выделять YAML-файл, не ударяясь головой о стену. После того как файл будет создан, скопируйте спецификации в файл.

Следующим шагом является получение информации из источника использования обнаружения и заполнение необходимых функций. В этом примере украдите и откройте одно из правил из хранилища sigma. Эти правила перечислены. \ правит \.

В большинстве случаев, вот некоторые из функций, доступных в подсказке.

Здесь статус функции определяет зрелость самого правила. Может присутствовать любое из этих значений.

  • Stable — Usable in production environments
  • Test — Tuning is required if an FP is thoroughly vetted
  • Experimental — Usable in the test environment and needs tuning to reduce the noise and FPs

Аналогично, уровень характеристики определяет важность самого правила. Если уведомление на основе правил уже создано — что делать? Исходя из ваших внутренних процессов, вы можете использовать следующие четыре значения для характеристики уровня и реагировать соответствующим образом.

Затем находится раздел logSource и обнаружение. Давайте рассмотрим их по порядку. С теми же правилами:.

Раздел LogSource охватывает сам журнал, к которому применяется пункт обнаружения. Основных функций может быть три.

  • Category — log files which fall under a particular category e.g. DNS server logs, process_creation, file_event logs, etc.
  • Product — log files generated by a particular product e.g. windows (Eventlog), linux, splunk, etc.
  • Service — Subset of a product’s log e.g. security, powershell, sysmon, etc.

В этом примере мы использовали категорию Process_Creation, которая охватывает общий процесс регистрации файлов в Windows EventLog.

В разделе обнаружения были определены следующие характеристики

  • Selections — What you actually wish to select/search from the log data
  • Conditions — How should the selection or filters be evaluated

Здесь средство поиска сопоставляет поле командной строки с журналом и использует contains для проверки наличия перечисленных ключевых слов. Краткий список модификаторов приведен ниже.

Вы также можете использовать символ WildCarter для сопоставления широкого списка ключевых слов с журналом. Например, вместо жестко заданного пути вы хотите найти запись выполнения cmd.exe — вы можете использовать «\*cmd.exe». Все три варианта повторяют один и тот же формат. Наконец, характерное условие оценивает три варианта посредством рационального действия OR.

Для условий выражение можно оценить, используя

  • Logical AND/OR operations
  • 1 of (selection) OR all of (selection) — this you might recognize from Yara as well
  • Negation using ‘not’ — e.g. not selection
  • Grouping expressions by using parenthesis — e.g. (selection1 and selection2) or selection3

Step 4: Compiling the Rule

Чтобы преобразовать правила Sigma из платформы Siem или записей в поисковые вопросы, можно использовать инструмент Sigmac с самой Sigma. Перейти к списку. Запустите sigmac с помощью \ инструментов \.

Sigmac можно использовать для преобразования определенных правил в такие цели, как Splunk, QRadar и даже PowerShell. Sigmac также использует сопоставление полей для преобразования полей, используемых в правилах, в фактические поля, которые могут быть использованы в интересующей цели. Например, поле командной строки может быть преобразовано в «командную строку» в пользовательском решении (на основе цели/конфигурации).

Чтобы просмотреть все доступные цели, конфигурации и квалификаторы, просто выполните следующую команду

Чтобы окончательно преобразовать правило в цель (например, Splunk), используйте следующее (вам также понадобится флаг -c в конфигурации, чтобы правильно определить сопоставление полей).

После этого вы можете продолжать использовать правило в присутствии Splunk.

Более подробную информацию о конфигурации и сопоставлении полей см. в https: //github.com/SigmaHQ/sigma/blob/master/tools/README.md.

Более быстрый способ создания правил Sigma заключается в следующем. Проверьте каталог \ Rules \, найдите выбранное вами правило (или правило с похожими ползунками/опциями) и отредактируйте его. Это экономит время — вы можете создать новое правило в справочнике, а затем отредактировать его. Однако убедитесь, что вы отредактировали функциональность так, чтобы новые правила также были уникальными. Очень часто вдохновляешься имеющимися правилами (особенно на этапе обучения).

Оцените статью
The Elder Scrolls Online