Sigma Kuralları: Evrensel Algılama Mantığı ve SIEM Dönüşümü
Savunma siber güvenliği dünyasında her zaman en kalıcı sorunlardan biri olmuştur. the algılama dillerinin parçalanması: Her SIEM'in kendi sözdizimi vardır Tescillidir, her platform farklı sorgular ve Splunk için yazılmış kurallar gerektirir Elastic üzerinde çalışmazlar ve bu da Microsoft Sentinel ile uyumlu değildir. Sonuç olarak SOC ekipleri bunları yeniden yazmak için çok fazla zaman harcıyor Gerçekten önemli olana odaklanmak yerine her araç için algılama mantığı: Tehditleri hasara yol açmadan önce tespit edin.
Le Sigma kuralları tam olarak bu sorunu çözmek için doğdular. Florian Roth ve Thomas Patzke tarafından tanıtılan Sigma, bugün fiili standart formattır Algılama kurallarını taşınabilir ve platformdan bağımsız bir şekilde yazmak. Bir kez yazılan Sigma kuralı otomatik olarak sorguya dönüştürülebilir Splunk SPL, Elasticsearch KQL, Microsoft Sentinel KQL, IBM QRadar, Chronicle YARA-L, ve 40'tan fazla başka hedef. Bu makalede Sigma sözdizimini derinlemesine inceliyoruz, günlük kaynağı eşleme kalıpları, düzenleme ve dönüştürme teknikleri ve nasıl entegre edileceği Sigma, modern bir Kod Olarak Algılama hattında.
Bu Makalede Neler Öğreneceksiniz?
- Sigma kuralının eksiksiz yapısı: başlık, günlük kaynağı, algılama, koşul
- Logsource eşleme: kategori, ürün, hizmet ve bunların SIEM'lere nasıl çevrildiği
- Gelişmiş değiştiriciler: içerir, başlar, biter, re, base64offset
- Toplama koşulları: tespit istatistikleri için sayım, toplam, minimum, maksimum
- Sigma-cli ile Splunk, Elastic ve Sentinel'e otomatik dönüştürme
- Yanal hareketin, ısrarın, dışarı sızmanın tespiti için desen
- Sigma kurallarının sentetik verilerle test edilmesi ve doğrulanması
- Şirketin Sigma deposunun en iyi uygulamalarla yönetimi
Sigma nedir ve neden Standart haline geldi?
Sigma, algılama modellerini tanımlamak için açık, YAML tabanlı bir formattır güvenlik günlüklerinde platformdan bağımsız bir şekilde. Şöyle düşün Günlükler için YARA: tıpkı YARA'nın kural yazmanıza izin vermesi gibi Herhangi bir tarayıcıda çalışan kötü amaçlı dosyalar için Sigma yazmanıza olanak tanır Herhangi bir SIEM'de çalışan algılama kuralları.
SigmaHQ projesi bugün daha fazlasına ev sahipliği yapıyor 3.000 topluluk kuralı sürekli bakım kapsamındadır, MITRE ATT&CK çerçevesiyle eşlenmiştir ve kullanıma hazırdır dönüştürülecek. Büyüme patlayıcı oldu: niş bir araçtan Tehdit avcıları için Sigma, tespit mühendislerinin ortak dili haline geldi profesyoneller. Başlıca avantajları üçtür:
- Taşınabilirlik: bir kural yazın ve onu N farklı SIEM'e dağıtın
- İşbirliği: kurallar, kullanılan SIEM'e bakılmaksızın herkes tarafından okunabilir
- Otomasyon: dönüşüm CI/CD'de tamamen otomatikleştirilebilir
Sigma Kuralının Anatomisi
Bir Sigma kuralı ve iyi tanımlanmış alanlara sahip bir YAML dosyası. Yapıyı görelim mimikatz'ın kullanımına dikkat çeken gerçek bir örnekle tamamlayın Windows Olay Günlükleri:
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
Her bölümü ayrıntılı olarak inceleyelim:
Zorunlu Alanlar ve Meta Veriler
Kuralın başlangıcındaki meta veri bloğu dokümantasyon içindir yönetim otomasyonu için:
- başlık: kuralın okunabilir adı. Benzersiz olmalı ve açıklayıcı. Kural: "Fiil + Konu + Bağlam"
- İD: Benzersiz UUID v4. Zamanla asla değişmez, izin ver versiyonların takibi ve hatalı pozitif raporlar
-
durum: kuralın yaşam döngüsü. Geçerli değerler şunlardır:
stable,test,experimental,deprecated,unsupported -
seviye: ciddiyet. Değerler:
informational,low,medium,high,critical -
Etiketler: .format formatında MITRE ATT&CK etiket listesi
attack.t<ID>teknikler için veyaattack.<tactic>taktikler için
Logsource: Taşınabilirliğin Kalbi
Blok günlük kaynağı ve Sigma'yı taşınabilir kılan sihir. SIEM'e özgü bir dizin veya veri akışı belirtmek yerine, günlük türünü soyut olarak üç alan aracılığıyla yazın:
# 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
Sigma-cli boru hattı sistemi bu soyut günlük kaynaklarını
her SIEM'in somut yolları. Örneğin, category: process_creation
su product: windows olur:
| SIEM Hedefi | Günlük kaynağı çevirisi |
|---|---|
| Splunk | source="WinEventLog:Security" EventCode=4688 |
| Elasticsearch (ECS) | event.category:process AND event.type:start |
| Microsoft Sentinel (KQL) | SecurityEvent | where EventID == 4688 |
| Tarihçe (YARA-L) | $event.metadata.event_type = "PROCESS_LAUNCH" |
Algılama: Seçimler ve Koşullar
Blok algılama ve algılama mantığının tanımlandığı yer. İki bölümden oluşur: seçimler (günlük alanlarındaki filtreler) ve durum (Seçimleri birleştiren Boole mantığı).
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
Gelişmiş Değiştiriciler
I değiştiriciler alan adlarına eklenen son eklerdir
boru karakteri ile | Eşleme türünü değiştirmek için
Etkili kurallar yazmak için hepsini bilmek önemlidir:
| Değiştirici | Tanım | Örnek |
|---|---|---|
contains |
Alt dize eşleşmesi (her iki tarafta da joker karakter) | CommandLine|contains: 'mimikatz' |
startswith |
Değerin başında eşleştir | Image|startswith: 'C:\Users\' |
endswith |
Değerin sonundaki eşleşme | Image|endswith: '\cmd.exe' |
re |
Normal ifade PCRE | CommandLine|re: '(?i)sekurlsa' |
base64offset |
Base64 ofset 0,1,2 ile kod çözme | CommandLine|base64offset|contains: 'IEX' |
wide |
Unicode geniş dizelerde eşleşme | CommandLine|wide|contains: 'sekurlsa' |
all |
Listedeki tüm değerler eşleşmelidir | CommandLine|contains|all: ['-enc', 'bypass'] |
windash |
Hem kısa çizgiyi hem de eğik çizgiyi eşleştir | CommandLine|contains|windash: '-Enc' |
cidr |
IP için CIDR aralığında eşleşme | DestinationIp|cidr: '10.0.0.0/8' |
lt, lte, gt, gte |
Sayısal karşılaştırmalar | EventID|gte: 4624 |
Toplama Koşulları: İstatistiksel Tespit
Bazı tespitler olayların belirli bir zaman aralığında sayılmasını gerektirir, tek bir olayla eşleşmemek. Sigma'nın destekleri toplama koşulları bu kullanım durumları için:
# 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
sigma-cli ile dönüşüm: Pratik Kılavuz
sigma-cli ve kuralları dönüştürmek için resmi araç SIEM sorgu dillerinde Sigma. Temel Kurulum ve Kullanım:
# 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
Dikkat: Boru Hattı ve Saha Haritalaması
Her kuruluşun kendi günlük normalizasyonu vardır. Günlükleriniz standart modeli takip etmeyin (örn. Windows için Sysmon), özel boru hattı Sigma alanlarını alanlarla eşleyen SIEM'inizin gerçek verileri. Bu eşleme olmadan dönüştürülen kurallar çalışmayacaktır.
Özel İşlem Hatları Oluşturun
Sigma işlem hatları, Sigma soyut alanlarının alanlarla nasıl eşleneceğini tanımlar SIEM'inizin somut unsurları. Kullandığınız bir altyapı için nasıl bir tane oluşturacağınız aşağıda açıklanmıştır özel bir günlük formatı:
# 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'
Yaygın Kullanım Durumlarına Yönelik Algılama Modelleri
Yüksek öncelikli kullanım durumları için hazır bir Sigma kuralları koleksiyonu görelim. en çok yararlanılan MITRE ATT&CK teknikleriyle eşleştirildi:
Yanal Hareket: Karma Geçişi
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: '






