Ana Sayfa / Blog / Event ID 4625
Rehber

Windows Event ID 4625 ile Brute Force Tespiti: Tam Rehber

Başarısız login denemelerini Security Log üzerinden nasıl tespit edersiniz, hangi LogonType'lar kritik, SubStatus kodlarının anlamı ve gerçek zamanlı alarm için SQL kuralları.

K
Kerem M.
💡
Kime faydalı? Windows Server yöneten sistem yöneticileri, SOC analistleri, SIEM kuralı yazanlar. Teknik seviye: orta. Giriş bilgisi: Windows Event Viewer, temel SQL.

Başarısız login denemeleri, saldırılarının en yaygın başlangıç sinyalidir. Ransomware çetelerinden sızma test ekiplerine kadar neredeyse tüm saldırganlar, Windows sistemlere ilk erişim için credential guessing dener. İyi haber: Windows, bu denemeleri Security Log'a yazar. Kötü haber: bu log'ları kimse okumuyor.

Bu rehberde Windows Event ID 4625'i derinlemesine ele alacağız: hangi alanlar kritik, LogonType'lar ne anlama geliyor, SubStatus kodlarını nasıl okuyacaksınız ve en önemlisi — gerçek zamanlı brute force tespiti için SIEM kuralları nasıl yazılır.

Event ID 4625 Nedir?

Event ID 4625, Windows Security Log'da "An account failed to log on" anlamına gelir. Bu event, bir hesap başarısız bir şekilde login olmaya çalıştığında oluşturulur — yanlış şifre, var olmayan kullanıcı, disabled hesap, vs.

Security Log'daki bu event, Audit Logon politikasının aktif olması durumunda oluşur. Modern Windows Server sürümlerinde (2016+) varsayılan olarak açıktır.

🎯
Kritik alanlar: TargetUserName, IpAddress, LogonType, SubStatus, WorkstationName. Bir brute force tespitinin kalitesi, bu 5 alanı doğru yorumlamanıza bağlıdır.

Bir 4625 event'inin yapısı

Tipik bir XML çıktısı şöyle görünür (sadeleştirildi):

<EventData>
  <Data Name="SubjectUserSid">S-1-5-18</Data>
  <Data Name="SubjectUserName">DC01$</Data>
  <Data Name="TargetUserName">administrator</Data>
  <Data Name="TargetDomainName">COMPANY</Data>
  <Data Name="Status">0xC000006D</Data>
  <Data Name="SubStatus">0xC000006A</Data>
  <Data Name="LogonType">3</Data>
  <Data Name="AuthenticationPackageName">NTLM</Data>
  <Data Name="WorkstationName">ATTACKER-PC</Data>
  <Data Name="IpAddress">203.0.113.45</Data>
  <Data Name="IpPort">49832</Data>
</EventData>

Bu event bize şunları söylüyor:

LogonType'ları Anlamak

LogonType, login işleminin nasıl yapıldığını gösterir. Her birinin tespit önceliği farklıdır.

Tip Adı Anlamı Brute Force Riski
2 Interactive Konsol/klavye (fiziksel oturum) Orta
3 Network SMB, network share, RPC Yüksek
4 Batch Scheduled task Düşük
5 Service Windows service başlatma Düşük
7 Unlock Screen unlock Düşük (ama stalker senaryosu var)
8 NetworkCleartext Clear text network auth Yüksek (genelde yanlış yapılandırma)
10 RemoteInteractive RDP oturumu Çok Yüksek
11 CachedInteractive Cache'li kimlik bilgisi Düşük

En kritik üç tip: Type 3 (Network), Type 10 (RDP) ve Type 8 (Cleartext). Brute force alarmları öncelikle bu üçünde tetiklenmelidir.

LogonType 10 — RDP Brute Force

RDP (Remote Desktop Protocol) brute force, 2023-2024'te ransomware çetelerinin en sevdiği giriş vektörlerinden biri. Tek bir RDP port'u internete açıksa, Shodan'da görünür hale gelmeniz 48 saatten kısa sürer.

⚠️
Gerçek veri: Shodan.io'da anlık olarak 4 milyondan fazla port 3389 (RDP) açık sistem görünmektedir. Bunların büyük kısmı Türkiye dahil olmak üzere NAT arkasındaki küçük/orta işletmelerdir.

SubStatus Kodlarını Okumak

SubStatus alanı, bir login denemesinin neden başarısız olduğunu söyler. Bu kod, brute force tespit kalitenizi direkt etkiler.

SubStatus Anlamı Saldırı Göstergesi
0xC0000064 User not found User enumeration (kullanıcı tarama)
0xC000006A Yanlış şifre Brute force
0xC0000234 Hesap kilitlendi Başarılı lockout (saldırgan limiti aştı)
0xC0000072 Hesap disabled Eski hesap deneniyor (olması gereken)
0xC0000193 Hesap expired Eski hesap
0xC0000070 Workstation restriction Bilinmeyen lokasyondan deneme
0xC0000071 Password expired Düşük öncelik
0xC0000133 Time difference Saat senkronu sorunu

Tespit için en kritik iki kod: 0xC0000064 (kullanıcı sayımı) ve 0xC000006A (brute force). İkisini birleştirirseniz, saldırının iki aşamasını da yakalarsınız.

Gerçek Zamanlı Alarm Kuralları

Teori yeterli. Şimdi pratik. SIEM'inizde yazmanız gereken 4 temel kural:

Kural 1: Klasik Brute Force

Aynı IP'den 10 dakikada 10+ başarısız login.

SELECT 
    src_ip,
    COUNT(*) AS fail_count,
    ARRAY_AGG(DISTINCT username) AS targeted_users,
    MIN(ts) AS first_attempt,
    MAX(ts) AS last_attempt
FROM logs
WHERE event_type = 'auth'
  AND action = 'login_fail'
  AND event_id = 4625
  AND (extra->>'sub_status') = '0xC000006A'
  AND ts > NOW() - INTERVAL '10 minutes'
  AND src_ip IS NOT NULL
  AND src_ip != ''
GROUP BY src_ip
HAVING COUNT(*) >= 10;

Kural 2: Credential Stuffing

Aynı IP'den farklı kullanıcılarla 5+ başarısız login — bu klasik brute force değil, çalınmış credential listesi denemesi.

SELECT 
    src_ip,
    COUNT(*) AS fail_count,
    COUNT(DISTINCT username) AS unique_users,
    ARRAY_AGG(DISTINCT username ORDER BY username) AS users
FROM logs
WHERE event_id = 4625
  AND ts > NOW() - INTERVAL '15 minutes'
  AND src_ip IS NOT NULL
GROUP BY src_ip
HAVING COUNT(DISTINCT username) >= 5
   AND COUNT(*) >= 8;
🎯
Neden bu önemli: Klasik brute force tek kullanıcıya odaklanır (administrator, admin, root). Credential stuffing'de saldırgan 10-50 farklı email/user'ı bir şifre ile dener. İki davranış tamamen farklı tespit edilmelidir.

Kural 3: RDP Saldırısı

Özellikle LogonType=10 için agresif threshold.

SELECT 
    src_ip,
    username,
    COUNT(*) AS attempts
FROM logs
WHERE event_id = 4625
  AND (extra->>'logon_type')::int = 10   -- RDP
  AND ts > NOW() - INTERVAL '5 minutes'
GROUP BY src_ip, username
HAVING COUNT(*) >= 3;

RDP için threshold daha düşük (5 dakikada 3) çünkü RDP brute force'un başarı şansı yüksektir ve hemen müdahale lazım.

Kural 4: User Enumeration

Bir saldırgan önce geçerli kullanıcıları bulmaya çalışır (0xC0000064), sonra şifre tahmin eder. Bu ilk fazı yakalarsanız, saldırganı henüz masum olduğu anda engelleyebilirsiniz.

SELECT 
    src_ip,
    COUNT(*) AS enum_attempts,
    COUNT(DISTINCT username) AS unique_targets
FROM logs
WHERE event_id = 4625
  AND (extra->>'sub_status') = '0xC0000064'   -- user not found
  AND ts > NOW() - INTERVAL '30 minutes'
GROUP BY src_ip
HAVING COUNT(*) >= 15;

Yanlış Pozitiflerle Nasıl Başa Çıkılır?

Brute force kuralları yanlış pozitif üretmeye eğilimlidir. En yaygın sebepler:

  1. Kayıtlı cihaz parolası değişti — Aynı user'ın şifresi değişti ama bir backup servisi hâlâ eski şifreyi deniyor.
  2. Scheduled task parolası unutuldu — Yıllardır çalışan bir task, AD'de değişen parolayla çarpışıyor.
  3. Yavaş laptop — Kullanıcı şifreyi girmeden ekran kilitlendi, sonra beceriksiz giriş denemeleri.
  4. Cep telefonu Wi-Fi — Eski Wi-Fi parolasıyla bağlanmaya çalışan cihazlar.

Gerçek brute force'u yanlış pozitiften ayırmak için şu işaretlere bakın:

NXLog ile Log Toplama

Windows Event Log'u bir SIEM'e göndermek için NXLog Community Edition en pratik yol. Ücretsiz, 15+ yıllık, stabil.

Basit bir konfigürasyon:

<Input eventlog>
    Module im_msvistalog
    Query <QueryList>\
        <Query Id="0">\
            <Select Path="Security">\
                *[System[(EventID=4624 or EventID=4625 or EventID=4740)]]\
            </Select>\
        </Query>\
    </QueryList>
    Exec $Message = to_json();
</Input>

<Output oxisec>
    Module om_udp
    Host siem.example.com
    Port 5515
    Exec to_syslog_ietf();
</Output>

<Route windows_auth>
    Path eventlog => oxisec
</Route>

Bu konfigürasyon sadece auth ile ilgili 3 event'i (login success, login fail, account lockout) toplar. Tüm Security Log'u göndermek yerine seçici olmak, hem bandwidth hem storage hem de SIEM performansı için kritik.

📦
OxiSec SIEM ile bu rehberde anlatılan 4 kural, hazır template olarak gelir. Sadece NXLog'u kurun, Windows log'larınız akmaya başlasın — tespit otomatik çalışır.

Community planı ile ücretsiz başlayın →

Sonraki Adımlar

Bu rehberde brute force tespit temelleri kapsayıcı biçimde ele alındı. Daha ileri gitmek isteyen okuyucular için:

Bu konulardaki yazılar yakında gelecek.

Özet

  1. Event ID 4625, Windows başarısız login'lerin standart sinyalidir
  2. LogonType saldırı tipini ayırt eder: Type 3 (Network), 10 (RDP), 8 (Cleartext) kritik
  3. SubStatus başarısızlık nedenini verir: 0xC000006A brute force, 0xC0000064 enumerasyon
  4. Dört temel kural: klasik brute force, credential stuffing, RDP saldırısı, user enumeration
  5. Yanlış pozitiflerle başa çıkmak için IP kaynağı + kullanıcı + saat bağlamını kullanın
  6. NXLog ile toplama ücretsiz ve 5 dakikada kurulur

Windows loglarınızı OxiSec ile analiz edin

Community planı 1 cihaz, 1.000 log/gün — kredi kartı gerekmez.

Ücretsiz Başla →