Содержание
Еще по теме: Как установить и использовать Timesketch
В наших предыдущих публикациях я рассказывал, как извлечь различные события из компьютера, создавать таймлайн и настроить систему совместного анализа. Если вы разобрались с интерфейсом Timesketch, то наверняка поняли, что это мощный инструмент, который может работать не только с Plaso, но и с другими произвольными CSV, содержащими таймлайн событий. Главное, чтобы в нем присутствовали поля datetime, timestamp_desc и message (ключевые поля Timesketch). Это открывает возможность добавить в один таймлайн данные из разных источников. Большее количество источников — лучший результат и более точная картина.
В результате этого, зачастую, получается довольно большой таймлайн, когда на каждую минуту инцидента приходится до 250k событий. Проанализировать такой объем почти невозможно. Для этого существуют инструменты Snort, Yara и Sigma.
Использование Sigma в Timesketch
Sigma появилась в 2016 году, и год спустя на GitHub появился первый релиз. Задумывался проект в качестве универсального формата описания правил детектирования, основанного на данных из логов.
Он также может служить в качестве конвертера, который позволит перевести эти правила в формат любой поддерживаемой SIEM-системы, в том числе сформировать запрос к Elasticsearch (дальше буду использовать сокращение ES). Этот конвертер работает, если для него есть соответствующий конфигурационный файл, который объясняет Sigma, как перегнать то или иное правило под конкретный бэкенд. По сути своей это обычный файл формата YAML, где указывается соответствие используемых в правилах полей реальным данным в бэкенде.
На сегодняшний день в репозитории Sigma хранится примерно 1200 правил (что почти на два порядка больше имеющихся по дефолту анализаторов в Timesketch). Эти правила позволяют найти все что хочешь, начиная от использования mimikatz и обнаружения следов эксплуатации ProxyShell в Exchange до выявления следов работы APT-группировки.
На нашей виртуалке с Timesketch конфигурационный файл для конвертера хранится по пути:
1 |
/opt/timesketch/etc/timesketch/sigma_config.yaml |
Благодаря этому Sigma и работает с Timesketch. Посмотрим в него.
1 |
$ nano /opt/timesketch/etc/timesketch/sigma_config.yaml |
В разделе
backends мы можем наблюдать все бэкенды, с которыми Sigma должна работать, дабы правила завелись на Timesketch:
backends:
1 2 3 4 |
- es-dsl - es-qs - es-qr - es-rule |
А дальше идут два самых больших блока logsources и fieldmappings, в которых маппятся те самые типы источников логов из бэкенда на конкретные типы, используемые в правилах (посмотрим на них ниже).
В рамках интеграции Sigma в Timesketch разработчики напилили нам отдельный анализатор во вкладке Analyzer и чуть меньше месяца назад сделали одноименную вкладку с возможностью просмотреть и применить каждое отдельное правило прямо в веб‑интерфейсе.
Клонируем себе проект, чтобы дальше было проще разбираться.
1 |
$ git clone https://github.com/SigmaHQ/sigma.git |
Структура Sigma-правила
Все правила лежат в каталоге rules (а на нашей виртуалке в /opt/timesketch/etc/timesketch/sigma/rules), описываются в файлах YAML и состоят из обязательных и дополнительных секций. Подробная спецификация есть в документации.
Давайте сразу посмотрим на правило windows/process_creation/win_susp_whoami_anomaly.yml, я на его примере поясню некоторые поля.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
title: Whoami Execution Anomaly # Название правила id: 8de1cbe8-d6f5-496d-8237-5f44a721c7a0 # UUID для однозначной идентификации правила status: experimental description: Detects the execution of whoami with suspicious parents or parameters # Описание в свободной форме references: # Любые ссылки на статьи или whitepaper - https://brica.de/alerts/alert/public/1247926/agent-tesla-keylogger-delivered-inside-a-power-iso-daa-archive/ - https://app.any.run/tasks/7eaba74e-c1ea-400f-9c17-5e30eee89906/ author: Florian Roth # Реквизиты автора правила date: 2021/08/12 # Дата создания modified: 2021/08/26 # Дата модификации tags: - attack.discovery - attack.t1033 - car.2016-03-001 logsource: # Тип источника логов. Основные используемые поля — это produc, category и service category: process_creation product: windows detection: # Формирование сигнатуры для детекта selection: Image|endswith: '\whoami.exe' filter1: ParentImage|endswith: - '\cmd.exe' - '\powershell.exe' filter2: ParentImage: - 'C:\Program Files\Microsoft Monitoring Agent\Agent\MonitoringHost.exe' - '' filter3: ParentImage: null selection_special: CommandLine|contains: - 'whoami -all' - 'whoami /all' - 'whoami.exe -all' - 'whoami.exe /all' condition: ( selection and not filter1 and not filter2 and not filter3 ) or selection_special # Итоговая сигнатура falsepositives: # Опциональное поле, в котором стоит отражать ситуации, когда может быть ложное срабатывание - Admin activity - Scripts and administrative tools used in the monitored environment - Monitoring activity level: high # Уровень важности low, medium, high или critical |
А теперь заглянем, что за logsource category: process_creation в файле sigma_config.yaml.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
title: Timesketch Sigma config order: 20 backends: - es-dsl - es-qs - es-qr - es-rule logsources: ... process_creation: category: process_creation product: windows conditions: EventID: - 1 - 4688 source_name: - "Microsoft-Windows-Sysmon" - "Microsoft-Windows-Security-Auditing" - "Microsoft-Windows-Eventlog" fieldmappings: Image: NewProcessName ParentImage: ParentProcessName ... |
Из приведенного фрагмента видно, что правило в качестве источника данных использует логи Sysmon и стандартные журналы Windows, а именно eventID 1 или 4688. Это непосредственно те источники данных, в которых в первой статье копался Plaso и которые потом были загружены в данном виде в ES.
Если вдруг то или иное правило отказывается заводиться на Timesketch, убедитесь, что в файле конфигурации есть маппинг для всех logsource, которые в нем используются, и по необходимости добавляйте свой.
В итоге это правило улетит на бэкенд Timesketch в следующем виде:
1 2 3 4 5 |
((data_type:"windows\:evtx\:record" AND event_identifier:("1" OR "4688") AND source_name:("Microsoft\-Windows\-Sysmon" OR "Microsoft\-Windows\-Security\-Auditing" \ OR "Microsoft\-Windows\-Eventlog")) AND ((data_type:"windows\:evtx\:record" AND event_identifier:("1" OR "4688") AND source_name:("Microsoft\-Windows\-Sysmon" \ OR "Microsoft\-Windows\-Security\-Auditing" OR "Microsoft\-Windows\-Eventlog") AND ((xml_string:*\\whoami.exe AND (NOT (ParentImage:(*\\cmd.exe OR *\\powershell.exe)))) \ AND (NOT (ParentImage:("C\:\\Program\ Files\\Microsoft\ Monitoring\ Agent\\Agent\\MonitoringHost.exe" OR "")))) AND (NOT (NOT _exists_:ParentImage))) OR xml_string:(*whoami\ \-all* \ OR *whoami\ \/all* OR *whoami.exe\ \-all* OR *whoami.exe\ \/all*))) |
В принципе, ничего сложного. Давайте теперь вернемся к нашему кейсу.
Поиск очистки логов
Если помните, в предыдущих статьях мы убедились в том, что криворукие попытки зачистить за собой логи мало того что не сильно помогают быть крутым ниндзей, а наоборот, служат очередным «тревожным звоночком» для спеца форензики.
Давайте закинем следующее правило в Timesketch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ sudo nano /opt/timesketch/etc/timesketch/sigma/rules/win_susp_security_eventlog_cleared.yml title: Security Eventlog Cleared id: f2f01843-e7b8-4f95-a35a-d23584476423 description: Some threat groups tend to delete the local 'Security' Eventlog using certain utitlities tags: - attack.defense_evasion - attack.t1070 - car.2016-04-002 author: Florian Roth date: 2017/02/19 logsource: product: windows service: security detection: selection: EventID: - 517 - 1102 condition: selection falsepositives: - Rollout of log collection agents (the setup routine often includes a reset of the local Eventlog) - System provisioning (system reset before the golden image creation) level: high |
Сохраним его, затем переберемся в браузер, откроем наш скетч и перейдем во вкладку Sigma. Как видите, наше только что добавленное правило уже тут.
Перейдем во вкладку Analyze и натравим анализатор Sigma со всеми правилами, которые в него сейчас добавлены, на наш таймлайн. Ждем пару мгновений и смотрим на результат.
Так и есть, мы успешно обнаружили, что логи чистили.
Когда анализатор находит в ES подходящий документ, он обновляет его, добавляя новое поле ts_sigma_rule, в котором записывает имя сработавшего правила, а также вносит в поля tag и ts_ttp данные из раздела tags нашего правила. Соответственно, эти поля становятся доступными для поиска и агрегации во вкладке Aggregate.
Теперь можно сразу посмотреть, что же интересного нашлось, с помощью простых запросов в строке поиска, например такого:
1 2 |
ts_sigma_rule:* tag:* |
Понятное дело, анализировать такой объем информации намного комфортнее, чем смотреть на сотни тысяч ивентов, которые предстали вашему взору поначалу.
Кроме того, без запуска анализатора можно открыть каждое отдельное правило во вкладке Sigma и нажать кнопку Search. Правило автоматически будет подставлено в строку поиска и покажет вам подходящие события.
Верификация новых правил
Чтобы проверить, будет ли корректно работать найденное на просторах сети или написанное вами правило в конкретной системе, в Sigma предусмотрен отдельный инструмент, который находится в каталоге tools и называется sigmac.
1 |
$ python3 sigmac -t es-qs --config /opt/timesketch/etc/timesketch/sigma_config.yaml /opt/timesketch/etc/timesketch/sigma/rules/win_susp_security_eventlog_cleared.yml |
В качестве параметра t указывается используемый бэкенд (в случаях, когда конвертируете правило под свою SIEM-систему, значение должно быть соответствующим), далее передается конфигурационный файл конвертера и последним параметром само правило. Предусмотрена проверка сразу целого каталога с правилами.
Дальнейшие инструкции
К сожалению, просто скопировать скопом все правила в Timesketch и запустить анализатор не выйдет. Движок Sigma весьма прожорлив, и у некоторых правил могут возникнуть проблемы с интеграцией в Timesketch (обычно из‑за отсутствия нужных logsource). Поэтому лучше пройтись по списку правил и целенаправленно выбирать те из них, которые подойдут к конкретному кейсу. И уже после проверки с использованием sigmac закидывать их в Timesketch. Ведь, например, если на исследуемой системе не был установлен Sysmon, нет нужды тратить время на запуск соответствующих правил.
Дальше, как и в любом деле, потребуется опыт. А его, просто читая интересные статьи, набираться сложновато. Чтобы набить руку, вам придется неоднократно «воочию увидеть» те или иные события, их группы и теги.
Есть весьма полезные репозитории, где люди специально складывают записи событий, которые происходят во время того или иного инцидента. Изучать способы их выявления — один из самых простых путей заработать необходимый опыт. Так что запускайте Plaso, загружайте результаты в Timesketch и пишите правила для их детекта. И не забывайте потом коммитить их в проект.
Кроме того, Sigma можно применить и по прямому назначению — подключив к SIEM-системе, которой вы, возможно, пользуетесь.
Заключение
Я надеюсь, что после прочтения цикла данных статей у кого‑то из админов по безопасности появится время на лишних две чашки кофе в день. Кому‑то из бравых бойцов с шевроном DFIR станет немного легче жить, а кто‑то, возможно, возьмет и пришьет такой шеврон себе на рукав, и HR-отделу останется отыскать всего 249 996 недостающих человек.
Еще по теме: Создание лаборатории для анализа вредоносных файлов