Pravidla Sigma: Univerzální detekční logika a SIEM konverze
Ve světě defenzivní kybernetické bezpečnosti byl vždy jedním z nejtrvalejších problémů a fragmentace detekčních jazyků: Každý SIEM má svou vlastní syntaxi proprietární, každá platforma vyžaduje jiné dotazy a pravidla napsaná pro Splunk nefungují na Elastic, který zase není kompatibilní s Microsoft Sentinel. Výsledkem je, že týmy SOC tráví obrovské množství času jejich přepisováním detekční logika pro každý nástroj, spíše než se zaměřovat na to, co je skutečně důležité: najít hrozby dříve, než způsobí škodu.
Le Pravidla Sigmy se narodili právě proto, aby tento problém vyřešili. Sigma, kterou představili Florian Roth a Thomas Patzke, je dnes de facto standardním formátem psát pravidla detekce přenosným a na platformě nezávislým způsobem. Jednou napsané pravidlo Sigma lze automaticky převést na dotaz Splunk SPL, Elasticsearch KQL, Microsoft Sentinel KQL, IBM QRadar, Chronicle YARA-L, a více než 40 dalších cílů. V tomto článku prozkoumáme syntaxi Sigma do hloubky, logsource mapovací vzory, editační a konverzní techniky a jak je integrovat Sigma v moderním kanálu Detection-as-Code.
Co se dozvíte v tomto článku
- Kompletní struktura pravidla Sigma: název, zdroj protokolu, detekce, podmínka
- Mapování logsource: kategorie, produkt, služba a jak se převádějí do SIEM
- Pokročilé modifikátory: obsahuje, začíná, končí, znovu, base64offset
- Podmínky agregace: počet, součet, min, max pro statistiku detekce
- Automatická konverze se sigma-cli na Splunk, Elastic a Sentinel
- Vzor pro detekci laterálního pohybu, persistence, exfiltrace
- Testování a validace pravidel Sigma se syntetickými daty
- Správa firemního úložiště Sigma s osvědčenými postupy
Co je Sigma a proč se stala standardem
Sigma je otevřený formát založený na YAML pro popis vzorců detekce na bezpečnostních protokolech způsobem nezávislým na platformě. Představte si to jako YARA pro kulatinu: stejně jako vám YARA umožňuje psát pravidla pro škodlivé soubory, které fungují na jakémkoli skeneru, vám Sigma umožňuje zapisovat detekční pravidla, která fungují na jakémkoli SIEM.
Projekt SigmaHQ dnes hostí více 3000 komunitních pravidel pokryto nepřetržitou údržbou, namapováno na rámec MITER ATT&CK a připraveno být převeden. Růst byl explozivní: od specializovaného nástroje až po lovci hrozeb, Sigma se stala běžným jazykem detekčních inženýrů profesionálové. Hlavní výhody jsou tři:
- Přenosnost: napsat pravidlo, nasadit ho do N různých SIEM
- Spolupráce: pravidla jsou čitelná pro každého, bez ohledu na používaný SIEM
- Automatizace: převod je v CI/CD zcela automatizovatelný
Anatomie pravidla Sigma
Pravidlo Sigma a soubor YAML s dobře definovanými poli. Podívejme se na strukturu doplněný skutečným příkladem, který poukazuje na použití mimikatz prostřednictvím Protokoly událostí systému Windows:
title: Mimikatz Detection via Windows Security Events
id: 0d82df6e-0e4e-4fbb-a12b-6e7a00a9c7c3
status: stable
description: Detects mimikatz usage patterns via LSASS access events
and command-line indicators
references:
- https://github.com/gentilkiwi/mimikatz
- https://attack.mitre.org/techniques/T1003/001/
author: Federico Calo
date: 2026/03/01
modified: 2026/03/09
tags:
- attack.credential_access
- attack.t1003.001
- attack.defense_evasion
logsource:
category: process_access
product: windows
detection:
selection_lsass:
TargetImage|endswith: '\lsass.exe'
GrantedAccess|contains:
- '0x1010'
- '0x1038'
- '0x1400'
- '0x143a'
selection_mimikatz_cli:
CommandLine|contains|all:
- 'sekurlsa'
- 'logonpasswords'
filter_legitimate:
SourceImage|startswith:
- 'C:\Windows\System32\'
- 'C:\Program Files\Windows Defender\'
condition: (selection_lsass and not filter_legitimate) or selection_mimikatz_cli
falsepositives:
- Legitimate security tools performing LSASS inspection
- Antivirus and EDR solutions
level: high
Pojďme analyzovat každou sekci podrobně:
Povinná pole a metadata
Blok metadat na začátku pravidla je určen pro dokumentaci že pro automatizaci řízení:
- titul: čitelný název pravidla. Musí to být jedinečné a popisný. Konvence: "Sloveso + Předmět + Kontext"
- id: Unikátní UUID v4. Časem se to nikdy nemění, dovolte sledování verzí a falešně pozitivních zpráv
-
postavení: životní cyklus pravidla. Platné hodnoty jsou:
stable,test,experimental,deprecated,unsupported -
úroveň: závažnost. Hodnoty:
informational,low,medium,high,critical -
značky: Seznam značek MITRE ATT&CK ve formátu
attack.t<ID>pro techniky popřattack.<tactic>pro taktiku
Logsource: Srdce přenositelnosti
Blok logsource a kouzlo, díky kterému je Sigma přenosná. Místo určení indexu nebo datového toku specifického pro SIEM, definuje typ protokolu abstraktně prostřednictvím tří polí:
# Esempio 1: Windows Security Events
logsource:
category: process_creation
product: windows
# Esempio 2: Linux Authentication
logsource:
category: process_creation
product: linux
# Esempio 3: Web Server Logs
logsource:
category: webserver
# nessun product specifico: generico
# Esempio 4: Log specifico di un servizio
logsource:
product: windows
service: security
# Esempio 5: Log di rete
logsource:
category: network_connection
product: windows
# Esempio 6: Cloud Trail
logsource:
product: aws
service: cloudtrail
Potrubní systém sigma-cli převádí tyto abstraktní logsources do
konkrétní cesty každého SIEM. Například, category: process_creation
su product: windows se stává:
| SIEM cíl | Logsource překlad |
|---|---|
| Splunk | source="WinEventLog:Security" EventCode=4688 |
| Elasticsearch (ECS) | event.category:process AND event.type:start |
| Microsoft Sentinel (KQL) | SecurityEvent | where EventID == 4688 |
| Kronika (YARA-L) | $event.metadata.event_type = "PROCESS_LAUNCH" |
Detekce: Výběry a podmínky
Blok detekce a kde je definována detekční logika. Skládá se ze dvou částí: výběry (filtry v polích protokolu) a stav (Booleovská logika, která kombinuje výběry).
detection:
# Selection con match esatto su campo singolo
selection_exact:
EventID: 4625
# Selection con lista di valori (OR implicito)
selection_multi_value:
CommandLine|contains:
- 'net user'
- 'net localgroup'
- 'whoami'
# Selection con match su tutti i valori (AND implicito con |all)
selection_and_all:
CommandLine|contains|all:
- '-enc'
- 'powershell'
# Selection con regex
selection_regex:
CommandLine|re: '(?i)(invoke-mimikatz|sekurlsa::)'
# Selection con wildcard
selection_wildcard:
TargetFilename|startswith: 'C:\Users\'
TargetFilename|endswith: '.exe'
# Filter per ridurre i falsi positivi
filter_system_processes:
ParentImage|startswith: 'C:\Windows\System32\'
# Condition: logica booleana
condition: selection_exact and (
selection_multi_value or selection_and_all
) and not filter_system_processes
Pokročilé modifikátory
I modifikátory jsou to přípony, které se přidávají k názvům polí
s dýmkovým charakterem | změnit typ shody.
Znát je všechny je nezbytné pro napsání účinných pravidel:
| Modifikátor | Popis | Příklad |
|---|---|---|
contains |
Shoda podřetězců (zástupný znak na obou stranách) | CommandLine|contains: 'mimikatz' |
startswith |
Shoda na začátku hodnoty | Image|startswith: 'C:\Users\' |
endswith |
Shoda na konci hodnoty | Image|endswith: '\cmd.exe' |
re |
Regex PCRE | CommandLine|re: '(?i)sekurlsa' |
base64offset |
Base64 dekódování s offsetem 0,1,2 | CommandLine|base64offset|contains: 'IEX' |
wide |
Shoda na širokých řetězcích Unicode | CommandLine|wide|contains: 'sekurlsa' |
all |
Všechny hodnoty v seznamu se musí shodovat | CommandLine|contains|all: ['-enc', 'bypass'] |
windash |
Používejte pomlčku i lomítko | CommandLine|contains|windash: '-Enc' |
cidr |
Shoda s rozsahem CIDR pro IP | DestinationIp|cidr: '10.0.0.0/8' |
lt, lte, gt, gte |
Číselná srovnání | EventID|gte: 4624 |
Podmínky agregace: Statistická detekce
Některé detekce vyžadují počítání událostí v určitém časovém intervalu, neodpovídat jediné události. Sigma podporuje agregační podmínky pro tyto případy použití:
# Rilevare brute force: più di 10 login falliti in 60 secondi
title: Windows Brute Force Login Attempt
logsource:
product: windows
service: security
detection:
selection:
EventID: 4625
LogonType: 3
condition: selection | count() > 10
timeframe: 60s
falsepositives:
- Users with expired passwords
level: medium
---
# Rilevare data exfiltration: upload anomalo per destinazione
title: Potential Data Exfiltration by Volume
logsource:
category: network_connection
product: windows
detection:
selection:
Initiated: 'true'
DestinationPort:
- 443
- 80
condition: selection | count(DestinationHostname) by SourceIp > 50
timeframe: 1h
level: high
---
# Port scan detection: molte porte diverse dallo stesso sorgente
title: Network Port Scan Detection
logsource:
category: network_connection
detection:
selection:
EventID: 5156
condition: selection | count(DestinationPort) by SourceAddress > 30
timeframe: 10m
level: medium
Konverze se sigma-cli: Praktický průvodce
sigma-cli a oficiální nástroj pro převod pravidel Sigma v dotazovacích jazycích SIEM. Základní instalace a použití:
# Installazione
pip install sigma-cli
pip install pySigma-backend-splunk
pip install pySigma-backend-elasticsearch
pip install pySigma-backend-microsoft365defender
# Verifica backend disponibili
sigma list backends
# Conversione base: Sigma -> Splunk SPL
sigma convert -t splunk -p splunk_windows rules/mimikatz.yml
# Output atteso:
# (source="WinEventLog:Microsoft-Windows-Sysmon/Operational"
# EventCode=10 TargetImage="*\\lsass.exe"
# GrantedAccess IN ("0x1010", "0x1038", "0x1400", "0x143a"))
# NOT (SourceImage="C:\\Windows\\System32\\*"
# OR SourceImage="C:\\Program Files\\Windows Defender\\*")
# Conversione con pipeline personalizzata
sigma convert \
-t splunk \
-p splunk_windows \
-p my_custom_field_mapping.yml \
rules/
# Conversione per Elasticsearch con ECS
sigma convert \
-t elasticsearch \
-p ecs_windows \
-f lucene \
rules/credential_access/
# Conversione per Microsoft Sentinel (KQL)
sigma convert \
-t microsoft365defender \
-p microsoft365defender \
rules/lateral_movement/
# Output in formato JSON per automazione
sigma convert \
-t splunk \
-p splunk_windows \
--format-output json \
rules/ > converted_rules.json
Pozor: Mapování potrubí a polí
Každá organizace má svou vlastní normalizaci protokolu. Pokud vaše logy neřiďte se standardním vzorem (např. Sysmon pro Windows), musíte vytvořit a vlastní potrubí který mapuje pole Sigma na pole reálná data vašeho SIEM. Bez tohoto mapování nebudou převedená pravidla fungovat.
Vytvořte vlastní potrubí
Sigma pipelines definují, jak mapovat abstraktní pole Sigma na pole konkrétní prvky vašeho SIEM. Zde je návod, jak jej vytvořit pro infrastrukturu, kterou používáte vlastní formát protokolu:
# custom_pipeline.yml
name: Custom Windows Pipeline
priority: 20
transformations:
# Rinominare campo Sigma -> campo reale nel SIEM
- id: field_mapping_process
type: field_name_mapping
mapping:
CommandLine: process.command_line
Image: process.executable
ParentImage: process.parent.executable
User: user.name
TargetImage: target.process.executable
GrantedAccess: target.process.granted_access
rule_conditions:
- type: logsource
category: process_creation
# Aggiungere condizioni all'index di destinazione
- id: index_condition
type: detection_item_keyword
keyword: 'index=windows_events'
rule_conditions:
- type: logsource
product: windows
# Sostituire valori nei campi
- id: winlog_channel_map
type: field_value_mapping
field_name: winlog.channel
mapping:
'Security': 'security'
'System': 'system'
'Application': 'application'
Detekční vzory pro běžné případy použití
Podívejme se na sbírku pravidel Sigma připravenou pro případy použití s vysokou prioritou, mapováno na nejpoužívanější techniky MITER ATT&CK:
Laterální pohyb: Pass-the-Hash
title: Pass-the-Hash Attack Pattern
id: 6571d552-4c16-4f50-b5f6-11ae9d1b0a38
status: stable
description: Detects Pass-the-Hash attacks via anomalous NTLM authentication
tags:
- attack.lateral_movement
- attack.t1550.002
logsource:
product: windows
service: security
detection:
selection:
EventID: 4624
LogonType: 3
AuthenticationPackageName: NTLM
KeyLength: 0
filter_local:
IpAddress:
- '127.0.0.1'
- '::1'
filter_machine:
SubjectUserName|endswith: '






