🌎 English
- Версія 1.0.0
- Дата релізу 2023-10-06
У Roota використовується формат YAML.
name: Rule Name
details: Rule description
author: Rule author
severity: high
type: query
class: behaviour
date: 2020-05-24
mitre-attack:
- t1003.001
- t1136.003
detection:
language: splunk-spl-query # elastic-lucene-query, logscale-lql-query, mde-kql-query
body: index=* ((((process="*comsvcs*") AND (process="*MiniDump*")) OR ((process="*comsvcs*") AND (process="*#24*"))) OR ((process="*comsvcs*") AND (process="*full*")))
logsource:
product: Windows # Sigma or OCSF products
log_name: Security # OCSF log names
class_name: Process Activity # OCSF classes
#category: # Sigma categories
#service: # Sigma services
audit:
source: Windows Security Event Log
enable: Computer Configuration -> Windows Settings -> Security Settings -> Advanced Audit Policy Configuration -> System Audit Policies -> Detailed Tracking -> Audit Process
timeline: # for Actors and campaigns only
2022-04-01 - 2022-08-08: Bumblebee
2022-07-27: KNOTWEED
2022-12-04: UAC-0082, CERT-UA#4435
references:
- https://badoption.eu/blog/2023/06/21/dumpit.html
tags: Bumblebee, UAC-0082, CERT-UA#4435, KNOTWEED, Comsvcs, cir_ttps, ContentlistEndpoint
license: DRL 1.1
version: 1
uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
#correlation: [] # extended format
#response: [] # extended format
Формат: текст (макс. 1024 символи)
Чи є обов'язковим: обов'язкове
Опис: Назва правила, яка показує, що і яким чином воно виявляє.
Приклад: name: Possible Credential Dumping using comsvcs.dll
Формат: текст (макс. 8192 символи)
Чи є обов'язковим: не обов'язкове
Опис: Короткий опис правила, який містить додатковий контекст щодо роботи алгоритму та загроз, які це правило може виявити.
Приклад: details: Adversaries can use the built-in library comsvcs.dll to dump credentials on a compromised host.
Формат: текст (макс. 256 символів)
Чи є обов'язковим: не обов'язкове
Опис: Ім'я того, хто створив правило. Авторам рекомендується використовувати одне й те саме ім'я для всіх своїх правил. Якщо значень декілька, вони подаються через кому.
Приклад: author: SOC Prime Team
Формат: текст (макс. 16 символів)
Чи є обов'язковим: не обов'язкове
Опис: Рівень критичності правила, який показує його значимість і пріоритет розслідування у разі його спрацювання.
Можливі значення:
critical
(критичний). Коли спрацьовують правила з рівнем критичності 'critical', необхідно терміново вжити дій. У таких правил дуже низька ймовірність хибнопозитивного спрацьовування, або ж вони пов'язані з надважливими діями, яким завжди треба приділяти першочергову увагу для запобігання негативним наслідкам.high
(високий). Коли спрацьовують правила з високим рівнем критичності, необхідно відкрити й провести розслідування із високим пріоритетом. Такі правила мають низьку ймовірність хибнопозитивного спрацьовування після мінімального додаткового налаштування.medium
(середній). Правила з середнім рівнем критичності зазвичай потребують додаткового налаштування. Якщо після налаштування таке правило спрацьовує, потрібно створювати тікет із середнім пріоритетом.low
(низький). Правила з низьким рівнем критичності слід використовувати в кореляціях або для цілей розслідування й отримання додаткових даних для аналізу. Деякі з таких правил можна використовувати для створення тікетів після суттєвого додаткового налаштування.
Приклад: severity: medium
Формат: текст (макс. 16 символів)
Чи є обов'язковим: не обов'язкове
Опис: Тип правила, який показує його призначення: query
– запит для трет-хантінгу (може давати хибнопозитивні результати) або alert
– правило для генерації сповіщень в реальному часі (рідко дає хибнопозитивні результати).
Тип alert
застосовується до правил, які в більшості середовищ матимуть низький рівень хибнопозитивних спрацьовувань або істинопозитивних спрацьовувань, що викликані нешкідливою активністю. Наприклад, якщо для правила потрібно, щоб хтось додав контроллери доменів для відфільтровування нешкідливих подій, його НЕ можна кваліфікувати як alert
.
Тип query
застосовується до будь-якого правила, яке з високою ймовірністю доведеться додатково налаштовувати в більшості середовищ.
Можливі значення:
query
alert
Приклад: type: query
Формат: текст (макс. 128 символів)
Чи є обов'язковим: не обов'язкове
Можливі значення:
campaign
behavioral
tool
generic
exploit
ioc
Опис:
-
exploit
– правила для виявлення експлойтів
Ці правила покликані виявляти експлуатацію вразливості або спробу її знайти (наприклад, CVE, загальні правила для виявлення SQL-I / XSS). Багато таких правил можна кваліфікувати як 'alert'. Як приклад, можна навести правило для детектування Log4j. Ці правила залишаються корисними необмежений час. -
behavioral
– правила для виявлення поведінки
Ці правила призначені для виявлення патернів поведінки, що збігаються з поведінкою зловмисників, відомою по звітам про минулі інциденти. Багато таких правил можна кваліфікувати як 'query`. Прикладом правила для виявлення поведінки може бути правило, яке виявляє віддалений вхід у систему з локального акаунту адмністратора. Такі правила НЕ включають інформацію, специфічну для певної кампанії. Вони мають користь при ретроспективному застосуванні й у середньому залишаються корисними не менше 12 мсяців. -
campaign
– правила для виявлення кампаній
Ці правила прив'язані до конкретної кампанії. Багато таких правил можна кваліфікувати як 'alert'. Як приклад можна навести правило, що виявляє кампанію за назвою сервісу, встановленого на хості Windows. Ці правила мають допомагати клієнтам визначити, чи є вони ціллю певної кампанії. Вони мають користь при ретроспективному застосуванні й у середньому залишаються корисними 3–12 місяців. -
tool
– правила для виявлення інструментів
Ці правила виявляють використання конкретного інструмента (призначеного для кібератак або легітимного, який використовується у злочинних цілях). Як приклад можна навести правило, яке виявляє psexec. Правило, покликане виявляти psexec і будь-які подібні інструменти, де напряму не визначено характеристики, унікальні для таких інструментів, кваліфікується як правило для визначення поведінки. -
ioc
– правила для визначення індикаторів компрометації
Правила, створені для виявлення новітніх дій зловмисників, для детектування яких не існує або майже не існує інших засобів (наприклад, wannacry, notpetya, масова експлуатація новітніми методами). Більшою частиною для індикаторів компрометації (IOC), таких як домени, IP-адреси, хеші, URL. -
generic
– загальні правила
Ці правила призначені для виявлення потенційних слабких місць у середовищі. Як приклад можна навести правило, яке виявляє слабке шифрування в Kerberos (RC4_HMAC_MD5). Ці правила дозволяють отримати інформацію, яка з дуже низькою ймовірністю буде істинопозитивним результатом, але клієнтам корисно її знати. Наприклад, використання акаунта root-юзера в AWS.
Приклад: class: campaign
Format: YYYY-MM-DD
Чи є обов'язковим: не обов'язкове
Опис: Дата створення правила.
Приклад: date: 2022-10-31
Формат: текст (макс. 1024 символи)
Чи є обов'язковим: не обов'язкове
Опис: перелік ідентифікаторів технік, підтехнік, груп та програмного забезпечення за системою MITRE ATT&CK(r). Усі ідентифікатори мають бути в нижньому регістрі.
Приклад:
mitre-attack:
- t1136.003
- t1087.004
- t1069
Чи є обов'язковим: обов'язкове
Опис: Ця секція містить поля, в яких задано логіку детектування і мову, якою вона написана. Див. специфікацію цих полів нижче.
Формат: текст (макс. 128 символів)
Чи є обов'язковим: обов'язкове
Опис: Це поле містить назву SIEM/EDR/XDR у відповідному форматі. Див. перелік підтримуваних платформ у розділі "Можливі значення".
Можливі значення:
sentinel-kql-query
для Microsoft Sentinel Querysplunk-spl-query
для Splunk Querycrowdstrike-spl-query
для CrowdStrike Queryelastic-lucene-query
для Elasticsearch Queryopensearch-lucene-query
для AWS OpenSearch Querylogscale-lql-query
для Falcon LogScale Querymde-kql-query
для Microsoft Defender for Endpoint Queryqradar-aql-query
для IBM QRadar Queryathena-sql-query
для AWS Athena Query (Security Lake)chronicle-yaral-query
для Chronicle Security Queryfortisiem-rule
for FortiSIEM Ruleaxon-ads-rule
for LogRhythm Axon Ruleaxon-ads-query
for LogRhythm Axon Query
Приклад: language: splunk-spl-query
Формат: текст (макс. 8192 символи)
Чи є обов'язковим: обов'язкове
Опис: Ця секція містить логику правила. Це має бути запит у нативному форматі певної системи SIEM/EDR/XDR. Запит має складатися з одного рядка. Якщо запит складається з декількох рядків, об'єднайте їх, перш ніж додавати в правило Roota.
Приклад: index=* source="WinEventLog:*" AND (Image="*.exe" OR Image="*.com")
Чи є обов'язковим: не обов'язкове
Опис: Ця секція описує джерела логів, потрібні для роботи правила. Вона не обов'язкова, але може бути необхідною у випадках, коли логіка детектування не описує потрібні джерела логів.
Формат: текст (макс. 128 символів)
Чи є обов'язковим: не обов'язкове
Опис: Продукт, від якого надійшли дані про подію.
Приклад: product: windows
Формат: текст (макс. 128 символів)
Чи є обов'язковим: не обов'язкове
Опис: Назва логу події. Наприклад, назва файлу syslog або підсистеми логування Windows: Security.
Приклад: log_name: Security
Формат: текст (макс. 128 символів)
Чи є обов'язковим: не обов'язкове
Опис: Класи подій за OCSF. Детальний опис можна знайти тут: https://schema.ocsf.io/1.0.0/classes
Приклад: class_name: Process Activity
Формат: текст (макс. 128 символів)
Чи є обов'язковим: не обов'язкове
Опис: Категорія використовується, коли різні джерела даних забезпечують той самий тип логування подій. Наприклад, Microsoft Windows 4688 та Sysmon Event ID 1 обидва логують створення процесів і мають багато спільних полів. Тож, можна створювати й використовувати правила, написані під загальну категорію "process_creation", а не конкретне джерело даних. Це також стосується більшості фаєрволів, проксі, тощо.
Приклад: category: process_creation
Формат: текст (макс. 128 символів)
Чи є обов'язковим: не обов'язкове
Опис: Сервіс використовується, коли для необхідних логів подій існує конкретне джерело даних. Наприклад, події Amazon Cloudtrail логуються лише в AWS. Зазвичай правило, написане під певний сервіс, не можна використати з іншим джерелом даних.
Приклад: service: apache
Чи є обов'язковим: не обов'язкове
Опис: Ця секція містить докладний опис того, які сервіси логування необхідно ввімкнути, щоб мати логи, необхідні для даного правила.
Формат: текст (макс. 128 символів)
Чи є обов'язковим: не обов'язкове
Опис: Повна назва постачальника логів або сервісу логування, які записують подію. Наприклад, Microsoft-Windows-Security-Auditing.
Приклад: source: Microsoft-Windows-PowerShell/Operational
Формат: текст (макс. 2048 символів)
Чи є обов'язковим: не обов'язкове
Опис: Ця секція містить докладні вказівки, як увімкнути запис необхідних логів аудиту в системі-джерелі.
Приклад: enable: 'Computer Configuration -> Windows Settings -> Security Settings -> Advanced Audit Policy Configuration -> System Audit Policies -> Detailed Tracking -> Audit Process Creation'
Формат:
YYYY-MM-DD - YYYY-MM-DD: Актор1, Актор2, TLP:CLEAR
YYYY-MM-DD: Актор1, Актор3, TLP:GREEN
Чи є обов'язковим: не обов'язкове
Опис: Має включати ім'я актора, маркування за протоколом TLP і дати, коли актор проявляв поведінку, описану в правилі Roota. На відміну від індикаторів компрометації, які є специфічними для актора, одні й ті самі патерни поведінки можуть застосовуватися різними акторами. Якщо маркування за протоколом TLP не задано, то вважається, що воно має значення TLP:CLEAR. Період може задаватися двома датами (перше й останнє проявлення) або однією датою.
Приклад:
timeline:
2023-01-01 - 2023-03-06: Ducktail, MerlinAgent
2023-02-04: Lazarus
Формат: текст (макс. 2048 символів)
Чи є обов'язковим: не обов'язкове
Опис: Посилання на статті у ЗМІ, публікації або інші джерела, які описують загрозу, експлойт, поведінку, тощо, які виявляє правило.
Приклад:
references:
- https://badoption.eu/blog/2023/06/21/dumpit.html
Формат: текст (макс. 1024 символи)
Чи є обов'язковим: не обов'язкове
Опис: Короткі слова, подані через кому, які позначають правило Roota для пошуку за ключовими словами.
Приклад: tags: MerlinAgent, UAC-0173, UAC-0006, Ducktail, CERT-UA#4753
Формат: текст (макс. 256 символів)
Чи є обов'язковим: не обов'язкове
Опис: Ліцензія правила. Також може містити посилання на файл з ліцензією.
Приклад: license: DRL 1.1
Формат: X.X (суттєвий.несуттєвий номер версії)
Чи є обов'язковим: не обов'язкове
Опис: Унікальний номер версії правила.
Приклад: version: 0.1
Формат: текст (32 символи)
Чи є обов'язковим: не обов'язкове
Опис: Унікальний ідентифікатор правила. Рекомендується використовувати UUID версії 4.
Приклад: uuid: 009a001b-1623-4320-8369-95bf0d651e8e
Чи є обов'язковим: не обов'язкове
Опис: У цій секції виконується кореляція результатів запиту.
Приклад:
correlation:
timeframe: 1m
functions: count() > 10
Формат: текст (8 символів)
Чи є обов'язковим: не обов'язкове
Опис: Період часу для функцій, який задається у секундах (s), хвилинах (m), годинах (h), днях (d) або тижнях (w).
Приклад: timeframe: 1m
Формат: текст (128 символів)
Чи є обов'язковим: не обов'язкове
Опис: Функції можна використовувати для кореляції результатів запиту, наприклад, щоб правило спрацьовувало, лише якщо досягаються певні граничні значення певних полів. Це поле все ще в розробці. Першими будуть реалізовані такі функції:
count()
– кількість значень поляby
– групування по полюdcount
– унікальні значення поля
Приклад: functions: count() > 10
Зарезервовано на майбутнє.