Cuma akşamı 19:00. IT yöneticisi evine gitmiş, ağda kimse kalmamış. 19:23'te m.yildiz@firma.com.tr hesabına 200 başarısız RDP denemesi başlıyor. Saat 21'e kadar 1,847 deneme. Pazartesi sabah log yığınına bakan birinin görmesi 36 saat sürüyor. Saldırgan o zamana kadar başka bir hesaba geçmiş.
Bu yazı, ShamashAi'ın bu zinciri 5 dakikada nasıl kırdığını anlatıyor — hangi event'i hangi tabloya yazıyoruz, eşik hangi sayı, password spray'i nasıl ayırıyoruz, SOAR'a hangi noktada veriyoruz.
1. Sliding window — 5 dakika · 5 fail
Korelasyon motoru her event'i src_ip anahtarıyla gruplar. Window parametreleri:
WINDOW_MS = 5 dakika sliding
THRESHOLD = 5 fail
EMIT_COOLDOWN_MS = 5 dakika (re-trigger önler)
MAX_KEYS = 5,000 src_ip (memory cap, FIFO eviction)
Hangi event tipleri yakalanıyor? FAIL_TYPES seti:
AUTH_FAIL_USER— generic auth failureAUTH_FAIL_RDP— Win 4625 / RDP bruteAUTH_FAIL_UNLOCK— workstation unlock failM365_SIGNIN_FAILURE— Entra ID sign-in (Graph)SQL_LOGIN_FAILED— TDS 18456VPN_LOGIN_FAILED— fortinet sslvpn / ipsec
BRUTE_FORCE_DETECTED composite event üretilir. Severity
high, risk score 70+, kaynak IP'nin geo enrichment'ı + threat intel match'i
eklenmiş halde.
2. Password spray ayrımı
5 fail aynı kullanıcıya geliyorsa "targeted brute-force". 5 fail **3+ farklı kullanıcıya** dağılmışsa "password spray" — saldırı imzası başka. Composite event payload'ında ayırt edici:
{
"event_type": "BRUTE_FORCE_DETECTED",
"subtype": "password_spray",
"distinct_users": ["ahmet", "mehmet", "ayse"],
"src_ip": "185.220.x.x",
"window_start": "...",
"fail_count": 12
}
UI rozeti farklı renkte — operatör hemen anlıyor.
3. SOAR auto-block — eğer aktifse
Eğer Fortigate REST API connector aktif ve cihaz soar_enabled = 1 ise:
event arrives → correlation hits threshold
→ BRUTE_FORCE_DETECTED composite
→ SOAR auto-trigger ("auto:rule")
→ POST /api/v2/cmdb/firewall/address (yeni address objesi)
→ PUT /firewall/addrgrp/Shamashai-Blocked (member ekle)
→ 60 dk sonra auto-expire loop temizler
Tüm zincir 1-2 saniyede tamamlanır. Audit log'da action zinciri görünür:
2026-05-14 19:28:14 · correlation.detect · src_ip=185.220.x.x · count=6
2026-05-14 19:28:14 · soar.auto_trigger · rule=brute_force
2026-05-14 19:28:15 · soar.block_applied · device=fortigate-01 · ttl=60min
2026-05-14 19:28:15 · notification.dispatch · channel=email,push
4. Notification policy
Default davranış: critical & high severity → email + push + webhook. Quiet hours 22:00–07:00 arası push susturulabilir; ama "digest_only" aktif değilse kritik yine push atar (gece bile haber ver mantığı).
Telefondaki PWA bildirim 19:28:16'da çalıyor. IT yöneticisi 30 saniyede durumu görüyor, 1 dakikada onaylıyor, vaka kapalı.
5. Pratikte ne kazandık?
- MTTR (Mean Time To Respond) 36 saatten 2 dakikaya indi
- Saldırgan 200 deneme yapamadan, ilk 6'da bloklandı
- Kapanış evrakı: composite event_id + SOAR action_id + audit zincirinin tamamı
- KVKK Madde 12 (yetkisiz erişim önleme) — kanıt-eşli, audit'e hazır
Limitler ve dürüst notlar
- Private/loopback/CGNAT IP block edilemez (perimeter mantıklı değil; bunlar
- Whitelist gerekli: ofis IP'leri, kendi VPN IP'leri, bilinen partner IP'ler
- Bypass: saldırgan 5'er fail × 10 IP yapsa correlation tetiklenmez —
distinct_users × src_ip count heuristic'i v1.5'te
- Threat intel feed'leri (Tor + FireHOL + Spamhaus) saatlik refresh —
Pratik tavsiye: Brute-force korelasyonunu enable etmeden önce 1 hafta "observe-only" çalıştırın. Hangi servis hesabınız thresshold'a takılıyorsa notification'ı düşürüp whitelist'e ekleyin. SOAR auto-block 2. haftada açılır. ShamashAi pilot programı bu kalibrasyonu 2 haftalık discovery fazında yapıyor.
