İçeriğe atla
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ı.

6 bölüm30 satırSon güncelleme

SPL temel arama

5 satır
  • 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ı

5 satır
  • ... | 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

5 satır
  • ... | 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

5 satır
  • 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

5 satır
  • ... | 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

5 satır
  • ... | 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.