Sigma Timesketch

sigma timesketch

Существует множество инструментов, которые позволяют специалистам ИБ отслеживать и детек­тировать сис­темные события. В этой статье я познакомлю вас с одним из них, который называется Sigma.

Еще по теме: Как установить и использовать Timesketch

Sigma появилась в 2016 году, и год спус­тя на GitHub появил­ся пер­вый релиз. Задумы­вал­ся проект в качес­тве уни­вер­саль­ного фор­мата опи­сания пра­вил детек­тирова­ния, осно­ван­ного на дан­ных из логов.

Он также может слу­жить в качес­тве кон­верте­ра, который поз­волит перевес­ти эти пра­вила в фор­мат любой под­держи­ваемой SIEM-сис­темы, в том чис­ле сфор­мировать зап­рос к Elasticsearch (даль­ше буду исполь­зовать сок­ращение ES). Этот кон­вертер работа­ет, если для него есть соот­ветс­тву­ющий кон­фигура­цион­ный файл, который объ­ясня­ет Sigma, как перег­нать то или иное пра­вило под кон­крет­ный бэкенд. По сути сво­ей это обыч­ный файл фор­мата YAML, где ука­зыва­ется соот­ветс­твие исполь­зуемых в пра­вилах полей реаль­ным дан­ным в бэкен­де.

На сегодняшний день в репози­тории Sigma хра­нит­ся примерно 1200 пра­вил (что поч­ти на два поряд­ка боль­ше име­ющих­ся по дефол­ту ана­лиза­торов в Timesketch). Эти пра­вила поз­воля­ют найти все что хочешь, начиная от исполь­зования mimikatz и обна­руже­ния сле­дов экс­плу­ата­ции ProxyShell в Exchange до выяв­ления сле­дов работы APT-груп­пиров­ки Silence.

На нашей вир­туал­ке с Timesketch кон­фигура­цион­ный файл для кон­верте­ра хра­нит­ся по пути:

/opt/timesketch/etc/timesketch/sigma_config.yaml

Бла­года­ря этому Sigma и работа­ет с Timesketch. Посмотрим в него.

$ nano /opt/timesketch/etc/timesketch/sigma_config.yaml

В раз­деле backends мы можем наб­людать все бэкен­ды, с которы­ми Sigma дол­жна работать, дабы пра­вила завелись на Timesketch:
backends:

  - es-dsl
  - es-qs
  - es-qr
  - es-rule

А даль­ше идут два самых боль­ших бло­ка logsources и fieldmappings, в которых мап­пятся те самые типы источни­ков логов из бэкен­да на кон­крет­ные типы, исполь­зуемые в пра­вилах (пос­мотрим на них ниже).

В рам­ках интегра­ции Sigma в Timesketch раз­работ­чики напили­ли нам отдель­ный ана­лиза­тор во вклад­ке Analyzer и чуть мень­ше месяца назад сде­лали одно­имен­ную вклад­ку с воз­можностью прос­мотреть и при­менить каж­дое отдель­ное пра­вило пря­мо в веб‑интерфей­се.

Кло­ниру­ем себе про­ект, что­бы даль­ше было про­ще раз­бирать­ся.

$ 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, я на его при­мере пояс­ню некото­рые поля.

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.

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, которые в нем исполь­зуют­ся, и по необ­ходимос­ти добав­ляй свой.
info

Ког­да будешь писать свои собс­твен­ные пра­вила, для того что­бы они работа­ли на дру­гих SIEM-сис­темах, необ­ходимо сле­довать тре­бова­ниям, опи­сан­ным на Wiki про­екта.

В ито­ге это пра­вило уле­тит на бэкенд Timesketch в сле­дующем виде:

((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:

$ 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. Как видишь, наше толь­ко что добав­ленное пра­вило уже тут.

Пра­вило добав­лено в Sigma
Пра­вило добав­лено в Sigma

Пе­рей­дем во вклад­ку Analyze и нат­равим ана­лиза­тор Sigma со все­ми пра­вила­ми, которые в него сей­час добав­лены, на наш тай­млайн. Ждем пару мгно­вений и смот­рим на резуль­тат.

Результат анализа
Результат анализа

Так и есть, мы успешно обна­ружи­ли, что логи чис­тили.

Ког­да ана­лиза­тор находит в ES под­ходящий документ, он обновля­ет его, добав­ляя новое поле ts_sigma_rule, в котором записы­вает имя сра­ботав­шего пра­вила, а так­же вно­сит в поля tag и ts_ttp дан­ные из раз­дела tags нашего пра­вила. Соот­ветс­твен­но, эти поля ста­новят­ся дос­тупны­ми для поис­ка и агре­гации во вклад­ке Aggregate.

Вклад­ка Aggregate
Вклад­ка Aggregate

Те­перь мож­но сра­зу пос­мотреть, что же инте­рес­ного наш­лось, с помощью прос­тых зап­росов в стро­ке поис­ка, нап­ример такого:

ts_sigma_rule:*
tag:*

По­нят­ное дело, ана­лизи­ровать такой объ­ем информа­ции нам­ного ком­фор­тнее, чем смот­реть на сот­ни тысяч ивен­тов, которые пред­ста­ли тво­ему взо­ру понача­лу.

Кро­ме того, без запус­ка ана­лиза­тора мож­но открыть каж­дое отдель­ное пра­вило во вклад­ке Sigma и нажать кноп­ку Search. Пра­вило авто­мати­чес­ки будет под­став­лено в стро­ку поис­ка и покажет тебе под­ходящие события.

Верификация новых правил

Что­бы про­верить, будет ли кор­рек­тно работать най­ден­ное на прос­торах сети или написан­ное тобой пра­вило в кон­крет­ной сис­теме, в Sigma пре­дус­мотрен отдель­ный инс­тру­мент, который находит­ся в катало­ге tools и называ­ется sigmac.

$ 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, нет нуж­ды тра­тить вре­мя на запуск соот­ветс­тву­ющих пра­вил.

Где‑то с год назад ребята из Positive Technologies написа­ли отличный рус­ско­языч­ный гайд по раз­работ­ке Sigma-пра­вил (статья раз, статья два, статья три). Если хочешь научить­ся раз­бирать­ся в нерабо­тающих пра­вилах и научить­ся писать работа­ющие самос­тоятель­но — обя­затель­но про­читай эти статьи.

Даль­ше, как и в любом деле, пот­ребу­ется опыт. А его, прос­то читая инте­рес­ные статьи, набирать­ся слож­новато. Что­бы набить руку, тебе при­дет­ся неод­нократ­но «воочию уви­деть» те или иные события, их груп­пы и теги.

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

Кро­ме того, Sigma мож­но при­менить и по пря­мому наз­начению — под­клю­чив к SIEM-сис­теме, которой ты, воз­можно, поль­зуешь­ся.

Заключение

Я наде­юсь, что пос­ле проч­тения цик­ла дан­ных ста­тей у кого‑то из адми­нов по безопас­ности появит­ся вре­мя на лиш­них две чаш­ки кофе в день. Кому‑то из бра­вых бой­цов с шев­роном DFIR ста­нет нем­ного лег­че жить, а кто‑то, воз­можно, возь­мет и пришь­ет такой шев­рон себе на рукав, и HR-отде­лу оста­нет­ся отыс­кать все­го 249 996 недос­тающих человек.

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *