İçeriğe atla
0 XP 0
Kopya kâğıtları
SOC ve sorgulama

SPL ve KQL sorgu kalıpları

Splunk SPL ve Microsoft Sentinel/Defender KQL için sık kullanılan arama, istatistik ve zaman kalıpları.

Son güncelleme 2026-09

SPL temel arama

index=guvenlik sourcetype=firewall

Belirtilen indeks ve kaynak türüyle arama kapsamını daraltır.

index=* "Failed password"

Tüm indekslerde belirtilen metni arar.

eventtype=basarisiz_giris

Önceden tanımlanmış bir olay türüne göre süzer.

sourcetype=WinEventLog:Security EventCode=4625

Windows güvenlik günlüğünde belirli bir olay kimliğini arar.

index=web status>=500

Sunucu hatası döndüren web isteklerini süzer.

SPL istatistik komutları

... | stats count by src_ip

Kaynak IP başına olay sayısını hesaplar.

... | timechart span=1h count

Olay sayısını saatlik zaman dilimlerine göre grafikler.

... | top limit=10 src_ip

En sık görülen ilk 10 kaynak IP'yi gösterir.

... | rare user

En nadir görülen kullanıcı adlarını gösterir, anomali taramasında kullanılır.

... | stats dc(user) as benzersiz_kullanici

Benzersiz kullanıcı sayısını hesaplar.

SPL veri şekillendirme

... | eval risk=if(seviye>=8,"yuksek","dusuk")

Alan değerine göre yeni bir hesaplanmış alan üretir.

... | rex field=_raw "user=(?<kullanici>\w+)"

Ham metinden düzenli ifadeyle yeni bir alan çıkarır.

... | table _time src_ip user action

Sonucu yalnız belirtilen sütunlarla tablo halinde gösterir.

... | sort -_time

Sonuçları en yeniden en eskiye sıralar.

... | dedup src_ip

Her kaynak IP için yalnız ilk kaydı tutar, tekrarları eler.

KQL temel kalıplar

SecurityEvent | where EventID == 4625

Belirtilen olay kimliğine göre satırları süzer.

SigninLogs | project TimeGenerated, UserPrincipalName, IPAddress

Sonuçtan yalnız belirtilen sütunları seçer.

SecurityEvent | extend Saat = format_datetime(TimeGenerated,'HH')

Var olan sütunlardan yeni bir hesaplanmış sütun ekler.

SigninLogs | summarize Sayi=count() by IPAddress

IP adresi başına kayıt sayısını hesaplar.

SecurityEvent | where Account contains 'admin'

Belirtilen metni içeren hesap adlarını süzer.

KQL zaman ve birleştirme

... | where TimeGenerated > ago(24h)

Son 24 saatteki kayıtları getirir.

... | summarize count() by bin(TimeGenerated, 1h)

Kayıtları saatlik dilimlere göre gruplar.

let esikDegeri = 5;

Sorgu içinde tekrar kullanılacak bir değişken tanımlar.

TabloA | join kind=inner (TabloB) on Anahtar

İki tabloyu ortak bir alan üzerinden birleştirir.

... | join kind=leftanti (TabloB) on Anahtar

Yalnız TabloB'de karşılığı olmayan satırları getirir.

KQL örüntü ve karşılaştırma

... | make-series Sayi=count() default=0 on TimeGenerated in range(ago(7d), now(), 1h)

Zaman serisi oluşturup eğilim analizine hazırlar.

... | render timechart

Sonucu zaman ekseni grafiği olarak görselleştirir.

has

Tam kelime eşleşmesi arar, contains'e göre daha hızlı ve kesindir.

contains

Alt dize eşleşmesi arar, kelime sınırı gözetmez.

==

Tam ve büyük/küçük harf duyarlı eşitlik karşılaştırması yapar.