Eşik ve anomali
- Eşik ve anomali kurallarının farkını öğrenir; sayacı doğru eksene koyar, pencere sınırı tuzağını aşar, sapmayı z puanı ve MAD ile ölçersin.
- web01 ve dc01 verisinde eşiğin nerede işe yaradığını, nerede kör kaldığını parola püskürtme ve dağıtık deneme vakalarıyla göreceksin.
- Log akışının hangi durağında eşik uygulanacağını da seçeceksin.
Puan bütün etkinlikleri cevaplayınca hesaba yazılır. Bu dersi tamamlayınca +55 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.
Eşik kuralı sayı sayar, anomali kuralı sapma ölçer. İkisi farklı saldırganı yakalar. Eşik en basit tespit biçimidir.
Bir olayı sayar, sınırı aşarsa alarm üretir: beş dakikada yirmiden çok başarısız giriş gibi. Kurması kolaydır, açıklaması kolaydır, atlatması da kolaydır. Anomali kuralı ise temel çizgiye göre ne kadar sapıldığına bakar.
Bu derste önce eşiğin iki parametresini ve sayacın eksenini öğreneceksin. Sonra sabit pencerenin sınır tuzağını çözecek, sapmayı z puanı ve medyanla ölçeceksin. En sonda iki yaklaşımı kilitleme politikası ve dağıtık bir saldırı vakasıyla birleştireceksin.
Eşik: sayı ve pencere
Eşik iki parametre taşır: sayı ve zaman penceresi. Sayı, alarmı tetikleyen olay adedidir. Pencere ise bu olayların hangi sürede sayılacağını belirler. İkisini birlikte ayarlamadan yalnız sayıyı değiştirmek yanıltıcı sonuç verir.
Beş dakikada yirmi deneme ile bir saatte yirmi deneme çok farklı saldırganları hedefler. Pencereyi daraltmak kuralı keskinleştirir, genişletmek ise yavaş saldırganı yakalar. İkisini birden isteyemezsin, seçim yaparsın. Eşiğin gücü de zayıflığı da aynı yerden gelir.
Saydığı şey ne kadar dar tanımlanırsa, saldırganın o tanımın dışına çıkması o kadar kolaylaşır. Bu yüzden saymaya başlamadan önce hangi davranışı saymak istediğini netleştirirsin. Sayım log akışının belirli bir durağında döner; aşağıdaki şema bu akışı gösterir.
Saldırgan eşiği bilmese bile yavaşlayarak altından geçer. Buna parola püskürtme (password spraying) denir. Saldırgan yaygın bir parolayı seçer ve her hesaba yalnız bir kez dener.
Hesap başına deneme sayısı birde kalır, hiçbir hesap eşiği aşmaz. Oysa bin hesap denenmiştir ve bir kısmı tutar.
ATT&CK bu tekniği T1110.003 olarak tanımlar. Aynı sayfa önemli bir not da düşer. Saldırgan LDAP ya da Kerberos üzerinden denerse, SMB denemelerinde sık görülen 4625 olayı üretilmeyebilir. Yalnız 4625'e bakan kural bu durumda veriyi hiç görmez.
Etkinlik 1 / 8
Saldırgan 1000 hesaba günde birer parola deniyor. Hesap başına eşik 5 hatalı giriş. Kaç hesap eşiği aşar?
Tahminini kaydır, sonra gönder.
Etkinlik 2 / 8
Eşik ve anomali hesaplaması log akışının hangi durağında yapılır?
Diyagramda doğru kutuyu tıkla.
Sayacı doğru eksene koy
Çözüm sayacı doğru eksene koymaktır. Aynı veriyi farklı alanlara göre grupladığında farklı saldırganları görürsün. Hesap başına saymak kaba kuvveti yakalar. Kaynak başına farklı hesap saymak püskürtmeyi yakalar.
Hedef hesap başına farklı kaynak saymak dağıtık kaba kuvveti yakalar; saldırgan tek hesabı yüz farklı adresten dener. Kimlik başına farklı makine saymak ise yanal hareketi yakalar; çalınmış bir hesap kısa sürede on yedi makineye girer. Eşik kuralını kurarken sayacın neyi saydığını açıkça yaz.
Toplam olay mı, benzersiz hesap mı, benzersiz hedef mi? Bu ayrıntı belgeye yazılmazsa altı ay sonra kimse kuralın niyetini bilmez.
Sayaç ekseni Yakaladığı davranış Splunk kümesi Hesap başına hatalı giriş kaba kuvvet count by TargetUserName Kaynak başına farklı hesap parola püskürtme dc(TargetUserName) by kaynak Hedef hesap başına farklı kaynak dağıtık kaba kuvvet dc(kaynak) by TargetUserName Kimlik başına farklı makine yanal hareket dc(Computer) by TargetUserName
Aşağıdaki sorgu Windows'ta püskürtmeyi arar ve 4625 ile birlikte 4771'i de sayar. 4771, etki alanı denetleyicisinde Kerberos ön kimlik doğrulaması başarısız olunca üretilir. Durum kodu 0x18 yanlış parola demektir. İki olay kaynak adresi farklı biçimde yazabilir; 4771 adresi çoğu zaman ::ffff: önekiyle, IPv6 içine gömülü IPv4 olarak yazar.
replace çağrısı bu öneki siler, yoksa aynı saldırgan iki ayrı kaynak gibi sayılır. Sorgu olayları otuz dakikalık kovalara böler. Her kova ve kaynak için farklı hesap sayısını ve toplam denemeyi hesaplar. Yirmi ya da daha fazla farklı hesabı deneyen kaynak ekrana düşer.
index=wineventlog (EventCode=4625 OR (EventCode=4771 Status=0x18)) | eval kaynak=replace(IpAddress, "^::ffff:", "") | bin _time span=30m | stats dc(TargetUserName) as hesap count as deneme by _time kaynak | where hesap>=20 _time kaynak hesap deneme 2026-09-21 03:00 10.20.30.44 212 214
Çıktıda tek kaynak otuz dakikada 212 farklı hesabı denemiş, toplam deneme 214. Hesap sayısı ile deneme sayısının neredeyse eşit olması püskürtmenin imzasıdır: her hesaba bir deneme. Kaba kuvvette tablo tersine döner, az hesap ve çok deneme görürsün. Eşik değerini de veriye bakarak seç.
Geçmiş otuz günde bu sayı kaç kez aşılmış? Hiç aşılmamışsa eşik çok yüksek olabilir, her gün aşılıyorsa çok düşüktür. Doğru değer, gerçek olayları yakalayıp günlük gürültüyü dışarıda bırakandır. Seçtiğin ekseni, pencereyi ve eşiği gerekçesiyle kuralın notuna yaz.
Etkinlik 3 / 8
Ders başındaki eşik kuralı için kısa bir not yaz: sayaç neyi sayıyor, hangi pencerede sayıyor, bu değerler neden seçildi?
Pencere sınırı tuzağı
Eşiğin en sinsi zayıflığı pencerenin sınırıdır. Çoğu sorgu zamanı sabit kovalara böler: 03:00-03:05, 03:05-03:10 gibi.
Saldırgan 03:04 ile 03:06 arasında yirmi deneme yapsın. Bu denemelerin on tanesi ilk kovaya, on tanesi ikinci kovaya düşer. Eşik on beşse hiçbir kova eşiği aşmaz.
İki dakikada yirmi deneme yapılmıştır, ama kural susar. Bu tuzak hazır araçların ürettiği sorgularda da karşına çıkar. Sigma korelasyon kuralını Splunk'a çevirdiğinde çıkan sorgu da bin _time ile sabit kova kurar. Aşağıda ilk blok bu çeviriyi, ikinci blok kayan pencereyle yazılmış karşılığını gösteriyor.
$ sigma convert -t splunk -p splunk_windows tek_kaynak_cok_hesap.yml Parsing Sigma rules source="WinEventLog:Security" EventCode=4625 | bin _time span=10m | stats dc(TargetUserName) as value_count by _time IpAddress | search value_count >= 10
index=wineventlog EventCode=4625 | eval kaynak=replace(IpAddress, "^::ffff:", "") | sort 0 _time | streamstats time_window=5m count as deneme by kaynak | where deneme>=15 | stats min(_time) as ilk max(deneme) as en_fazla by kaynak
İkinci sorgu kayan pencere kurar. streamstats her olayda geriye doğru beş dakikalık bir pencere açar ve içindeki denemeleri sayar. time_window bağımsız değişkeni olayların zamana göre sıralı olmasını ister; sort 0 _time bu yüzden önce gelir.
03:05'i geçen denemelerde pencere hâlâ 03:04'teki denemeleri kapsar. Sayaç on beşe ulaştığı anda kural tetiklenir. Kayan pencerenin bedeli işlem gücüdür, çünkü hesap her olayda yenilenir.
Başka iki çözüm de var. Birincisi daha geniş pencereli ikinci bir kural eklemektir; on dakikalık kova, iki dakikalık patlamayı tek kovada yakalama olasılığını artırır. İkincisi aynı olayı iki kovaya birden sayan örtüşen pencerelerdir.
Etkinlik 4 / 8
Eşik on beş, kova beş dakika. Saldırgan 03:04:10 ile 03:05:55 arasında aynı kaynaktan yirmi deneme yapıyor; onu 03:05'ten önce. Sabit kovalı sorgu ne döndürür?
Önce kodu oku, sonra çıktıyı seç.
index=wineventlog EventCode=4625 | bin _time span=5m | stats count as deneme by _time IpAddress | where deneme>=15
Anomali: sapmayı ölçmek
Anomali kuralı sayı yerine fark ölçer: temel çizgiye göre bugün ne kadar saptın? Bir hesap normalde iki makineye girerken bugün on yediye girdiyse, mutlak sayı küçük olsa da sapma büyüktür. Farkı ölçmenin en bilinen yolu z puanıdır. Gözlemden ortalamayı çıkarır, sonucu standart sapmaya bölersin.
Önceki dersteki çizgiye dön: 02:00 için ortalama 3, standart sapma 1,5. O saatte 40 istek gelirse z puanı (40 - 3) / 1,5, yani yaklaşık 24,7 olur. Normal dağılımda üçün üstü bile nadirdir; 24,7 çok güçlü bir sapmadır.
02:00 kovası, son yedi gece: 2 3 4 3 2 3 40 (40: bir tarama gecesi) Ortalama = 8,1 Standart sapma = 14,1 Medyan = 3 MAD (medyan mutlak sapma) = 1 Bu gece gelen değer: 25 z puanı = (25 - 8,1) / 14,1 ≈ 1,2 olağan görünür Değiştirilmiş z = 0,6745 x (25 - 3) / 1 ≈ 14,8 güçlü sapma
Z puanının bir zayıflığı var: ortalama ve standart sapma uç değere çok duyarlıdır. Yukarıdaki yedi gecenin birinde bir tarama 40 istek üretmiş. Bu tek değer ortalamayı 8,1'e, standart sapmayı 14,1'e şişirir. Bu gece gelen 25 isteğin z puanı 1,2 çıkar ve olağan görünür.
Medyan ve medyan mutlak sapma (MAD) ise uç değerden etkilenmez. MAD, her değerin medyandan uzaklığının medyanıdır.
Değiştirilmiş z puanı 0,6745 katsayısıyla hesaplanır ve 3,5'in üstü aykırı sayılır. Aynı 25 değeri için sonuç 14,8'dir. Sapma gerçektir ve dayanıklı ölçü onu görür.
Üçüncü ölçü en basitidir: ilk kez görülme. Önceki derste kurduğun hesap ve makine tablosu bunun örneğidir; daha önce hiç görülmemiş çift tek başına sinyaldir. Anomali yavaş saldırganı da yakalar.
Günde bin hesaba yayılan bir püskürtme otuz dakikalık kovada eşiğin altında kalabilir. Kaynağın bir günde dokunduğu farklı hesap sayısını kendi temel çizgisiyle karşılaştıran ölçü ise onu görür.
Anomalinin zayıflığı yeniliktir. Yeni çalışan, yeni sunucu, yeni uygulama hep sapma üretir. Bu yüzden anomali alarmı doğrudan olay değil, incelemeye açılan bir sorudur. Kuralı önce sessiz modda çalıştır, iki hafta biriken listeyi oku, gerekirse ölçüyü değiştir.
Derinleş:Küçük örneklemde z puanının tavanı
NIST'in mühendislik istatistiği el kitabı ilginç bir sınıra dikkat çeker. n gözlemli bir örneklemde bir değerin z puanı en fazla (n - 1) / √n olabilir. Yedi gecelik bir pencerede bu tavan yaklaşık 2,27'dir. Yani yedi gecenin birinde 40 değil 4.000 istek olsa bile, o değerin kendi penceresindeki z puanı 2,27'yi geçemez.
Yukarıdaki örnekte 40'ın z puanı 2,27 çıkar ve tavana dayanır. Küçük pencerede z puanına üç eşiği koymak bu yüzden hiç tetiklenmeyen bir kural yazmak demektir.
El kitabı bu nedenle Iglewicz ve Hoaglin'in önerdiği değiştirilmiş z puanını anar. Medyan ve MAD kullanan bu ölçü küçük örneklemde de çalışır ve 3,5 eşiğiyle aykırı değer işaretler. Pratik ders şudur: pencereyi küçük tutacaksan ölçüyü dayanıklı seç, z puanında ısrar ediyorsan pencereyi büyüt.
Etkinlik 5 / 8
Hangi saldırıyı hangi kural tipi yakalar?
Önce bir seçeneğe, sonra aşağıdaki uygun kutuya bas. İstersen seçeneği kutuya sürükleyip bırak. Yerini değiştirmek için aynı işlemi tekrarla.
0/5 seçenek yerleşti.
Etkinlik 6 / 8
Her hesaba az sayıda parola deneyerek eşiğin altında kalan saldırı tekniğinin adı: parola ____
Birlikte kullanmak: kilitleme ve dağıtık saldırı
Pratikte eşik ve anomaliyi birlikte kullanırsın. Eşik gürültülü ama hızlı saldırganı yakalar. Anomali sessiz ve sabırlı olanı yakalar. Yalnız birini kurarsan, öteki tipteki saldırgan ağında rahat çalışır.
Birleşik kurallar daha da güçlüdür. Tek başına eşiğin altında kalan iki sinyal aynı kaynakta buluştuğunda alarm üretebilir. Çok sayıda başarısız girişin ardından gelen yeni hesap açılışı bu tip bir birleşmenin klasik örneğidir. Birleşik kuralın alarmı tek sinyale göre daha seyrek çalar, ama çaldığında çok daha fazlasını anlatır.
Hesap kilitleme politikası ile alarm eşiğini karıştırma. Kilitleme eşiği hesabı korur: belirli sayıda hatalı denemeden sonra hesap kilitlenir. Alarm eşiği ise sana haber verir. İkisi aynı sayı olmak zorunda değildir.
Püskürtme yapan saldırgan kilitleme eşiğini çoğu zaman bilir ya da tahmin eder ve hesap başına denemeyi onun altında tutar. Sayacın sıfırlanma süresini bekleyip turu tekrarlar. Kilitlenme olayı 4740'tır. Bu olayda TargetUserName kilitlenen hesabı, TargetDomainName ise denemenin geldiği bilgisayarın adını taşır.
Kısa sürede birçok farklı hesapta 4740 görmek, sınırı yanlış tahmin etmiş bir püskürtmenin işaretidir. Bu yüzden 4740'ı da korelasyona katarsın.
Bir vaka düşün. Bir kurumda kaba kuvvet eşiği makine başına kuruluydu: bir sunucu günde 500'den çok hatalı giriş alırsa alarm. Saldırgan denemeleri yirmi farklı sunucuya dağıttı.
Her sunucu 300 civarında deneme aldı ve hiçbiri eşiği aşmadı. Toplamda ise altı bin deneme yapıldı. Eksen makineydi, oysa saldırgan tek bir kaynaktı.
Aşağıda aynı günün verisi iki eksenle sorgulanıyor. Makine eksenli sorgu hiçbir satır döndürmez. Kaynak eksenli sorgu ise tek satırda bütün resmi gösterir: tek adres, 6.000 deneme, 20 makine ve 15 hesap.
# Makine ekseni index=wineventlog EventCode=4625 earliest=-24h | stats count by Computer | where count>500 (sonuç yok; en kalabalık sunucu 318 deneme aldı) # Kaynak ekseni index=wineventlog EventCode=4625 earliest=-24h | eval kaynak=replace(IpAddress, "^::ffff:", "") | stats count dc(Computer) as makine dc(TargetUserName) as hesap by kaynak | where count>500 kaynak count makine hesap 10.20.30.44 6000 20 15
Tablodaki makine sütunu yirmi farklı hedefi, hesap sütunu on beş hesabı gösteriyor. Küçük bir hesap listesi birçok sunucuda denenmiş. Sayaç kaynağa ya da denenen hesaba göre kurulsaydı olay ilk on dakikada görünürdü. Kuralın kör noktasını kendin sına.
Saldırgan bu eşiği nasıl aşar? Yavaşlayarak mı, kaynağı dağıtarak mı, hedefi değiştirerek mi? Cevabı yazıp ikinci bir kural eklemek kuralın ömrünü belirgin biçimde uzatır.
Çok kaynaklı bir saldırıda kaynak ekseni de yetmez; o zaman hedef hesap başına farklı kaynak sayarsın. Her eşik değişikliğinde eski ve yeni değeri, tarihi ve gerekçeyi kuralın notuna yaz. Yoksa alarm sayısındaki düşüş sonradan kural iyileşmesi sanılır.
Derinleş:Kerberos tarafında püskürtme izi
Kerberos'ta kullanıcı önce etki alanı denetleyicisinden bir bilet verme bileti (TGT) ister. Başarılı istek 4768 olayını üretir. Hata kodu 0x10 ya da 0x18 olan başarısız istekte ise 4768 yerine 4771 yazılır. Bu yüzden Kerberos üzerinden yapılan püskürtme 4771'de görünür.
4771 yalnız etki alanı denetleyicisinde üretilir. Hesapta "Kerberos ön kimlik doğrulaması gerektirme" seçeneği açıksa hiç üretilmez; o hesaplar zaten AS-REP roasting için ayrı bir risk taşır. Hata kodları RFC 4120'deki Kerberos belirtiminden gelir.
0x18 KDC_ERR_PREAUTH_FAILED yanlış parolayı, 0x17 KDC_ERR_KEY_EXPIRED süresi dolmuş parolayı, 0x12 KDC_ERR_CLIENT_REVOKED ise iptal edilmiş kimlik bilgisini anlatır. Püskürtme sonrası 0x18 sayısının düşüp 0x17 ya da başarılı 4768 görülmesi, bir parolanın tuttuğunu düşündürür. Bu izler iş istasyonunda değil, etki alanı denetleyicisinin güvenlik kaydında durur; o kaydı SIEM'e taşımayan ekip bu püskürtmeyi hiç görmez.
Etkinlik 7 / 8
Kısa sürede birçok farklı hesapta 4740 olayı görülüyor. Bu tablo en çok neyi düşündürür?
Etkinlik 8 / 8
Parola püskürtmeyi yakalayacak sayaç hangi eksende çalışır?
Okumayı istediğin sırayla sürdürebilirsin. Ders, bütün etkinlikleri cevapladığında tamamlanır.
- Etkinlik 1· Eşik: sayı ve pencere
- Etkinlik 2· Eşik: sayı ve pencere
- Etkinlik 3· Sayacı doğru eksene koy
- Etkinlik 4· Pencere sınırı tuzağı
- Etkinlik 5· Anomali: sapmayı ölçmek
- Etkinlik 6· Anomali: sapmayı ölçmek
- Etkinlik 7· Birlikte kullanmak: kilitleme ve dağıtık saldırı
- Etkinlik 8· Birlikte kullanmak: kilitleme ve dağıtık saldırı