Sigma rules. Поделка или новый стандарт для SOC

Я Сергей Рублев, руководитель SOC (Security Operations Center) в компании «Инфосекьюрити».
В этой статье подробно рассмотрю амбициозный проект Sigma Rules , девиз которого: «Sigma для логов — это как Snort для трафика и Yara для файлов».


Речь пойдет про три аспекта:
  • Применимость синтаксиса Sigma-правил для ведения базы знаний сценариев выявления угроз
  • Возможности инструментария по генерации правил для коробочных SIEM-систем
  • Ценность для SOC текущего наполнения публичных репозиториев Sigma-правил
Давным-давно, в далекой-далекой галактике

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




Причины появления вопросов различны:
  • Рост команды
  • Текучка кадров
  • Большое количество разнородных систем на мониторинге
В случае если приходится брать на сопровождение уже настроенная кем-то SIEM, количество вопросов растет лавинообразно.

Библиотека Use Case

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

Состав знаний, закладываемый в каждый кейс, может разниться, мы отталкиваемся от следующего набора:

  • Objective – задача, решаемая кейсом
  • Threat – угроза, на обнаружение которой направлено действие правила выявления
  • Stakeholders – люди, заинтересованные в работе этого правила: ИБ/IT/Бизнес
  • Data Requirements – набор данных, требуемый для выявления угрозы
  • Logic – логика правила выявления угрозы
  • Testing – алгоритм для тестирования корректности работы правила выявления
  • Priority – приоритет обработки события по кейсу (как правило, вычисляется из потенциального ущерба от успешно реализованной угрозы)
  • Output – Перечень действий по разбору алерта, описание корректных выходов из процедуры разбора и состав данных, фиксируемых в результатах разбора
Пример use case для задачи выявления коммуникации с сервером управления бот-сетью (В народе C&C или просто C2):
Пример значительно упрощен, в реальности кейс при должном описании разрастается на многостраничный документ.

В тот момент, когда количество кейсов перевалило за несколько десятков, мы начали искать готовые средства для ведения подобной базы знаний, желательно имеющие, помимо human friendly, еще и какой-то machine friendly интерфейс для работы.


Проект Sigma

Проект Sigma безусловно заслуживает рассмотрения в разрезе базы знаний по правилам выявления инцидентов. Стартовал он в 2016 году, и я за ним слежу практически с самого основания.

Фактически проект состоит из
  • Самих Sigma-правил
  • Утилит по преобразованию правил в запросы для различных SIEM-систем
Перечень SIEM впечатляет: присутствуют практически все популярные решения для анализа событий. Далее обо всем детально и по порядку.

Синтаксис правил

Sigma-правила представляют из себя YAML-документы, описывающие сценарий выявления определенной атаки. Синтаксически правила состоят из следующих блоков:

Метаинформация

Описательная часть для структуризации и упрощения поиска нужных правил.

bc6c221bc25e83eb5c2a2a977e7ac39f.JPG

Отдельно хочется отметить, что многие правила уже снабжаются ссылками на технику атаки по методологии MITRE ATT&CK.

Декларация источника данных

Описание источника, на базе событий которого реализована логика обнаружения.
0c3528c1e2d971afbfe8a0b9705f72dc.JPG
Синтаксически возможно описать как конечный сервис определенного продукта, так и целую категорию систем.

Декларация логики обработки

На уровне логики обнаружения описываются:
  • Искомые паттерны
  • Значения определенных полей в логе
  • Временные рамки
  • Агрегатные функции
Логика может быть как тривиальной, например, условия, накладываемые на набор полей:
0b38d5414f2f5069244de761870be7af.JPG
так и достаточно сложной:

ed61d28793602ac57ed420835c78aa95.JPG
Выразительные средства языка хоть и не универсальны, но все же достаточно широкие и позволяют описать большое количество кейсов по выявлению атак.
Средства разработки правил

Помимо вашего любимого текстового редактора для YAML доступен еще WEB UI от компании SOC Prime, позволяющий как валидировать синтаксис уже написанного правила, так и создавать правила вручную из графических блоков.



Sigma как средство ведения базы знаний

Подведем краткое резюме.

На текущий момент синтаксис правил в основном концентрируется на описании логики обнаружения угрозы и не предназначен для всестороннего описания use case, соответственно вести полноценную библиотеку только с помощью Sigma Rules не получится.

Для той структуры use case, которую мы выбрали, Sigma закрывает только половину (Objective, Data requirements, Logic и Priority).



Конвертация в различные SIEM

Поскольку мы являемся сервис-провайдером услуг SOC, для нас очень заманчивой выглядела идея держать все наши наработки по правилам корреляции в некотором универсальном формате и на этапе внедрения преобразовывать в формат нужного SIEM.

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



Преобразование происходит в 3 этапа:

  1. Парсинг правил — думаю, с этим все понятно: YAML-документ разбирается на составляющие блоки
  2. Приведение к таксономии SIEM
    Необходимость данного этапа связана с тем, что нормализация в SIEM-системах реализована немного по-разному, соответственно декларации из Sigma-правил нужно привести к таксономии событий выбранного SIEM
  3. Генерация запроса для SIEM
    Для работы данного этапа требуется еще один компонент — backend для этой SIEM.
    Фактически backend — это плагин для утилиты конвертации, в который заложена логика преобразования в конечный формат запроса в SIEM. Преобразуются блоки detection и logsource c учетом ранее наложенного маппинга полей, добавляется дополнительная SIEM-специфичная информация.


В итоге запуск утилиты преобразование выглядит следующим образом
:



В качестве параметров передаются:
  • Целевая SIEM
  • Правило
  • Файл с маппингами для данной SIEM
Для функции конвертации у SOC Prime также существует готовый UI ( uncoder.io )




Подводные камни конвертации
  • Изучив механику конвертации, мы столкнулись с существенными ограничениями, что удержало нас от перевода всех наработок в формат Sigma:
  • Конвертер оперирует только запросом. Правило корреляции в SIEM затрагивает больше аспектов: временное окно, агрегация, действия по результатам выявленных алертов
  • Не учитываются ключевые особенности отдельных SIEM, например, ActiveList’ы
  • Недостаточная детализация маппинга полей — в рамках конфигурации маппинга описаны поля всего нескольких источников, соответственно, имея в базе правила для нескольких десятков различных типов источников событий, придется сильно вкладываться в написание маппингов.
База правил

Посмотрим, что несет в себе публично доступная база правил Sigma. На текущий момент контент активно добавляется в два репозитория:

  • Основной репозиторий проекта
  • Threat Detection Marketplace от компании SOC Prime

Правила в составе репозиториев имеют ненулевое пересечение.
У SOC Prime ряд правил распространяется в платной подписке, их контент в этой статье не рассматриваю.

Для аналитики нам потребуется библиотека sigmatools для Python и немного скиллов программирования.

Для парсинга и загрузки правил из каталога в словарь можно воспользоват
ься таким кодом:

9535e101e8db66177209e31c85b4386e.JPG

Дедуплицируя одинаковые правила, выходит следующая картина:



В рамках уникального перечня правил получаем следующие распределения:

По типу источника событий:





Немного укрупняя статистику
  • Windows ~80 %
  • Sysmon ~53 %
  • Proxy ~8 %
  • Linux ~ 4 %
В основном текущий контент ориентируется на систему Windows и Sysmon, в частности, правил по остальным системам считанные единицы.

По степени готовности контента:





Выходит, что разработчики Sigma-правил пометили как стабильные менее 20% всех существующих правил.

Подведем итоги

В публично доступных источниках присутствует большое количество правил. Они регулярно обновляются, и оперативно появляются правила обнаружения индикаторов, а иногда даже и техник по наиболее громким APT-компаниям.

Для применения правил в реальной жизни есть большое количество ограничений:

  • Очень много правил для Microsoft Sysmon, который достаточно редко используется в энтерпрайзе.
  • Много правил, которые фактически осуществляют проверку по IoC (хэши, IP-адреса, URL, User Agent). Такие правила быстро устаревают, и для поиска IoC есть механизмы более эффективные, чем правила.
  • Много экспериментального контента, соответственно накладываются дополнительные требования на качественное тестирование перед введением в эксплуатацию.

Мы в «Инфосекьюрити» используем контент Sigma-правил как дополнительный источник знаний для более эффективного выявления инцидентов. Если находим что-то интересное – реализуем уже в рамках наших правил корреляции, которые учитывают и ядро, на котором работают правила (Apache Spark), и специфику инфраструктур и используемых нами средств защиты.