Bir güvenlik ekibinin yazdığı tespit kuralı çoğu zaman tek bir SIEM'in sorgu diline bağlıdır. Splunk için SPL, Microsoft Sentinel için KQL, Elastic için EQL ya da ES|QL yazılır; platform değiştiğinde ya da bir kuralı başka bir ekiple paylaşmak gerektiğinde bu birikim baştan çevrilmek zorunda kalır. Sigma, bu sorunu çözmek için geliştirilmiş, günlük (log) olayları için açık ve platformdan bağımsız bir kural biçimidir. Ağ trafiği için Snort/Suricata, dosyalar için YARA neyse, günlükler için Sigma odur.

Bu rehberde Sigma kural yapısını, alan değiştiricilerini, sigma-cli ile dönüştürmeyi ve kuralları kod gibi test edip yöneten bir tespit mühendisliği hattını ele alıyoruz.

1. Sigma kuralının anatomisi

Sigma kuralları YAML dosyalarıdır. Tipik bir kural şu bölümlerden oluşur:

CODE TERMINAL
title: Şüpheli Certutil ile Dosya İndirme
id: 5b8e3f2a-1c4d-4e6f-9a7b-2c3d4e5f6a7b
status: experimental
description: certutil.exe'nin uzak adresten dosya indirmek için kötüye kullanılmasını tespit eder
references:
    - https://attack.mitre.org/techniques/T1105/
author: TRSiber
date: 2026-09-23
tags:
    - attack.command-and-control
    - attack.t1105
logsource:
    category: process_creation
    product: windows
detection:
    selection_img:
        Image|endswith: '\certutil.exe'
    selection_cli:
        CommandLine|contains|all:
            - 'urlcache'
            - 'http'
    condition: all of selection_*
falsepositives:
    - Sertifika yönetimi için meşru yönetici betikleri
level: high



  • logsource: Kuralın hangi tür günlüğe uygulanacağını tanımlar. category, product ve service alanları dönüştürücünün doğru kaynağa (ör. Sysmon Olay Kimliği 1 veya Windows Güvenlik 4688) eşleme yapmasını sağlar.
  • detection: Bir veya daha fazla seçim (selection) ve bunları birleştiren condition ifadesinden oluşur.
  • id: Kuralın kalıcı UUID'sidir; kural güncellense de değişmez ve SIEM'deki uyarıyı kurala geri bağlar.
  • level ve falsepositives: Analistin uyarıya ne kadar öncelik vereceğini ve olası yanlış pozitifleri belgeler.



2. Değiştiriciler ve koşullar

Alan adlarına eklenen değiştiriciler eşleşmenin nasıl yapılacağını belirler:

DeğiştiriciAnlamı
containsDeğer alanın içinde geçer
startswith / endswithDeğer alanın başında / sonunda yer alır
allListedeki tüm değerler eşleşmelidir (varsayılan: herhangi biri)
reDüzenli ifade ile eşleşme
cidrIP adresi belirtilen ağ aralığındadır
base64offsetDeğerin base64 kodlanmış biçimlerini arar
windashKomut satırı parametrelerinde - ve / varyasyonlarını kapsar


Koşul ifadelerinde and, or, not, parantez ve 1 of selection_* ya da all of them gibi toplu ifadeler kullanılabilir. Yanlış pozitifleri azaltmanın en yaygın yolu bir filtre seçimi tanımlayıp koşula eklemektir:

CODE TERMINAL
detection:
    selection:
        Image|endswith: '\powershell.exe'
        CommandLine|contains|windash: ' -enc '
    filter_main_sccm:
        ParentImage|startswith: 'C:\Windows\CCM\'
    condition: selection and not 1 of filter_main_*


3. sigma-cli ile dönüştürme

Sigma kuralları doğrudan çalışmaz; hedef platformun sorgu diline çevrilir. Bugün bunun standart aracı pySigma kütüphanesi üzerine kurulu sigma-cli'dir:

CODE TERMINAL
pip install sigma-cli
sigma plugin list
sigma plugin install splunk
sigma convert -t splunk -p sysmon kurallar/


Burada -t hedef arka ucu (backend), -p ise işleme hattını (pipeline) seçer. Pipeline, Sigma'daki genel alan adlarını sizin ortamınızdaki gerçek alan adlarına eşler. Kendi günlük şemanız standart dışıysa özel bir YAML pipeline yazmak genellikle ilk yapılması gereken iştir; aksi halde dönüştürülen sorgu sözdizimi doğru olsa bile hiçbir olayla eşleşmez.

4. Kuralları doğrulamak

Kural deposunu büyüttükçe söz dizimi ve kalite kontrolü önem kazanır:

CODE TERMINAL
sigma check kurallar/


Bu komut YAML ve şema hatalarının yanı sıra eksik alanlar, tekrarlanan kimlikler ve benzeri kalite sorunlarını raporlar. Ancak söz dizimi doğruluğu, kuralın gerçekten çalıştığını göstermez. Bunun için her kurala bir pozitif test verisi (saldırıyı temsil eden örnek olay) ve mümkünse bir negatif test verisi (benzer ama meşru olay) eşlemek gerekir. Atomic Red Team gibi araçlarla üretilen örnek olaylar bu amaçla sık kullanılır.

5. Detection-as-Code hattı

Olgun ekipler Sigma kurallarını bir Git deposunda yazılım gibi yönetir:


  1. Analist yeni kuralı ayrı bir dalda yazar ve çekme isteği (pull request) açar.
  2. CI hattı sigma check ile doğrulama yapar ve kuralı hedef platform(lar)a dönüştürür.
  3. Dönüştürülen sorgu test verisine karşı çalıştırılır; beklenen eşleşme yoksa hat başarısız olur.
  4. İnceleme sonrası birleştirilen kural otomatik olarak SIEM'e dağıtılır.
  5. Üretimde yanlış pozitif oranı izlenir; status alanı experimental'dan test'e, oradan stable'a yükseltilir.



Bu yaklaşım, kuralın kimin tarafından neden değiştirildiğini izlenebilir kılar ve SIEM konsolunda yapılan belgelenmemiş değişikliklerin önüne geçer.

6. Topluluk kurallarından yararlanmak

SigmaHQ'nun GitHub deposu binlerce hazır kural barındırır. Bu kuralları doğrudan içe aktarmak cazip olsa da her ortamda aynı sonucu vermezler. Önerilen yol:


  • Kendi günlük kaynaklarınızla eşleşen kuralları seçin; toplanmayan bir günlüğe yazılmış kural hiçbir şey yakalamaz.
  • Önce yalnızca kayıt tutan (uyarı üretmeyen) modda çalıştırıp yanlış pozitifleri ölçün.
  • Yerel istisnaları topluluk kuralını değiştirmek yerine ayrı filtre dosyalarında tutun; böylece güncellemeleri kolayca alırsınız.
  • Kuralların MITRE ATT&CK etiketlerini kullanarak kapsama haritası çıkarın ve kör noktaları belirleyin.



7. Sık yapılan hatalar


  • Alan eşlemesini atlamak: En yaygın hata, pipeline olmadan dönüştürülen kuralın boş sonuç vermesidir.
  • Aşırı geniş contains ifadeleri: Kısa dizgiler performansı düşürür ve gürültü üretir.
  • Büyük/küçük harf varsayımları: Hedef platformun karşılaştırma davranışını dönüştürülen sorguda kontrol edin.
  • Kuralı tek olaya göre yazmak: Saldırganın küçük bir varyasyonu kuralı atlatmamalı; davranışı hedefleyin, tek bir dosya adını değil.



Sonuç

Sigma, tespit bilgisini tek bir ürüne kilitlemeden yazmayı, paylaşmayı ve test etmeyi sağlar. Doğru alan eşlemesi, test verisi ve CI ile birleştiğinde tespit mühendisliğini tekrarlanabilir bir yazılım sürecine dönüştürür. Sitemizdeki Sysmon ve Microsoft Sentinel KQL rehberleriyle birlikte okunduğunda uçtan uca bir tespit hattı kurmak için sağlam bir temel oluşturur.

Kaynaklar: SigmaHQ — Rules, SigmaHQ — sigma-cli, SigmaHQ — Sigma kural deposu
TR Siber Ekibi Yazar · TRSiber
← Ana sayfaya dön