Password spraying ve credential stuffing, loglarda bir yığın başarısız oturum açma denemesi olarak görünür. Ancak bu yığının şekli farklıdır, çözümü de farklıdır. Elinizdeki tek alarm "tek hesapta beş başarısız deneme" ise ikisini de kaçırırsınız.
Üç saldırı, üç farklı görünüm
OWASP Credential Stuffing Prevention Cheat Sheet bu saldırıları şöyle ayırıyor:
| Saldırı | Saldırgan ne yapar? |
|---|---|
| Brute force | Tek bir hesaba karşı sözlükten çok sayıda parola dener |
| Credential stuffing | Başka bir sitenin ihlalinden elde edilen kullanıcı adı/parola çiftlerini dener |
| Password spraying | Tek bir zayıf parolayı çok sayıda farklı hesapta dener |
OWASP, savunmaların birçok durumda aynı olduğunu ve brute force'a karşı da işe yaradığını belirtiyor.
Loglarda nelere bakmalı?
MITRE'ın password spraying için tanımladığı tespit stratejisi, belirli bir zaman aralığında çok sayıda kullanıcı hesabında tek bir parola ya da küçük bir parola kümesiyle yapılan yüksek hacimli kimlik doğrulama hatalarıdır. Credential stuffing için ise tek bir IP adresinden veya oturumdan kısa sürede gelen, birbirinden farklı kullanıcı adı/parola çiftleriyle yapılmış birden fazla hatadır.
Saldırganlar bilinen karşı önlemlere uyum sağlar:
- Yavaşlatılmış spraying. MITRE, APT28 araçlarının günler veya haftalar boyunca hedeflenen hesap başına saatte yaklaşık dört deneme yaptığını anlatıyor. Quad7 faaliyetlerinde 24 saatlik sürede tek bir oturum açma denemesi kullanıldı ve bu, brute force tespit eşiklerinin altında kaldı. Hesap bazlı sayaçlar bunu yakalayamaz.
- Dağıtık spraying. MITRE ayrıca APT28'in dağıtık ve büyük ölçekli spray'ler için bir Kubernetes cluster'ı kullandığını not ediyor. Yalnızca kaynak IP başına sayım bunu kaçırır, çünkü hiçbir adres sık sık hata üretmez. Bunun yerine tüm kaynaklar genelinde zaman penceresi başına başarısız olan farklı hesapları da sayın ve aynı veriyi ASN ve user agent bazında kırılımlayın.
- Daha sessiz protokoller. Saldırganlar LDAP ve Kerberos denemelerini kullanabilir. Bunlar, genellikle başarısız SMB bağlantılarıyla tetiklenen Windows "logon failure" olay kimliği 4625 gibi yüksek görünürlüklü olayları tetikleme olasılığı daha düşük olan yöntemlerdir. 4625'in yanı sıra LDAP ve Kerberos hatalarını da toplayın.
Saldırganlar çoğunlukla yaygın portlardaki yönetim servislerini hedefler: SSH (22/TCP), RDP (3389/TCP), SMB (445/TCP), LDAP (389/TCP), Kerberos (88/TCP) ve 80 ile 443 üzerindeki web yönetim arayüzleri. SSO'yu, federated authentication kullanan bulut uygulamalarını ve Office 365 ile OWA gibi dışarıya açık e-posta servislerini de hedef alırlar.
Microsoft 365: smart lockout'u doğru kullanın
Microsoft Entra smart lockout her zaman açıktır. Varsayılan olarak Azure Public tenant'larında 10, Azure US Government tenant'larında ise üç başarısız denemeden sonra hesabı kilitler. İlk kilitleme bir dakika sürer ve sonraki başarısız denemelerde uzar. Microsoft artış hızını açıklamıyor.
- Son üç hatalı parolanın hash'ini takip eder, dolayısıyla aynı yanlış parolayı tekrar denemek sayacı artırmaz. Bu, kullanıcının tekrarlanan yazım hatası yüzünden kilitlenmesini önler. Her hesabın parolayı yalnızca bir kez gördüğü spray saldırısına karşı ise pek işe yaramaz.
- Tanıdık ve tanıdık olmayan konumların kilitleme sayaçları ayrıdır. Bu nedenle yeni bir konumdaki saldırgan kilitlenirken gerçek kullanıcı çalışmaya devam edebilir.
- Özel değerler için Microsoft Entra ID P1 veya üzeri gerekir. Microsoft Entra admin center'a en az Authentication Policy Administrator olarak giriş yapın ve Entra ID > Authentication methods > Password protection bölümüne gidin. Burada Lockout threshold ve saniye cinsinden Lockout duration (varsayılan 60) değerlerini ayarlarsınız.
- Entra ayrıca bazı oturum açma denemelerini IP trafiği ve davranış sinyallerine göre varsayılan olarak engeller ve parola geçerli olsun olmasın
AADSTS50053 - IdsLockedhatasını döndürür. Bu kodu gösteren hesapları hedef alınmış sayın, ancak parolanın yanlış ya da doğru olduğunun kanıtı olarak yorumlamayın.
Smart lockout, gerçek bir kullanıcının asla kilitlenmeyeceğini garanti etmez. MITRE işin diğer yüzünü de ekliyor: aşırı sıkı bir politika, saldırıdaki tüm hesapların kilitlenmesiyle bir denial of service durumu yaratabilir.
Hibrit yapılar
Pass-through authentication kullanıldığında Entra eşiği şirket içi AD DS eşiğinden düşük olmalıdır. AD DS eşiği ise en az iki veya üç kat yüksek olmalıdır. Entra kilitleme süresi AD DS süresinden uzun olmalıdır. Microsoft'un örneği, 20'ye karşı 10 eşik değeri ve 60'a karşı 120 saniyelik süredir. Entra süresi saniye, AD DS süresi dakika cinsinden ayarlandığı için birimleri kontrol edin.
Pass-through authentication ile hash takibi kullanılamaz. AD DS değerlerinizi görmek için Group Policy Management'ı açın, kilitleme ayarlarınızı içeren politikayı düzenleyin ve Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies > Account Lockout Policy yolunu izleyin.
Kendi giriş sayfanız ve dışarıya açık servisler
Kilitleme, hesap bazlı bir kontroldür. Bizim değerlendirmemize göre her hesabı bir veya iki kez deneyen bir stuffing saldırısı çoğu zaman eşiğe hiç ulaşmaz, bu yüzden kilitlemeyi ana savunmanız olarak görmeyin. MITRE, stuffing'in çok sayıda hataya ve kilitlenmeye yol açabileceği konusunda uyarıyor, ancak bu sizin politikanıza bağlıdır. Her iki teknik için önerdiği önlemler şunlara da yer veriyor:
- Mümkün olduğunda dışarıya açık servislerde etkinleştirilmiş çok faktörlü kimlik doğrulama (MFA).
- Uyumlu olmayan cihazlardan ya da kurumun tanımlı IP aralıkları dışından gelen girişleri engelleyen conditional access politikaları.
- Anonimleştirme servislerinden veya proxy'lerden gelenler gibi riskli isteklerin engellenmesi.
- NIST rehberliğine dayalı parola politikaları.
- Stuffing için, ele geçirilmiş kimlik bilgileri arasında yer aldığı bilinen hesapların hemen ya da brute force denemelerini tespit ettikten sonra proaktif olarak sıfırlanması.
Özel geliştirilmiş bir uygulama için OWASP Authentication Cheat Sheet, otomatik saldırılara karşı korunma, CAPTCHA ile loglama ve izleme konularında bölümler içeriyor.
Nereden başlamalı?
- Internete açık tüm giriş noktalarını listeleyin: Microsoft 365 veya OWA, VPN, RDP, SSH, SSO ve kendi web formlarınız. Açık kalması gerekmeyen yönetim portlarını kapatın.
- Entra ID > Authentication methods > Password protection altında smart lockout eşiğini ve süresini kontrol edin. Pass-through authentication kullanıyorsanız, yukarıdaki kuralları esas alarak bunları AD DS lockout politikanızla karşılaştırın.
- Oturum açma loglarınız üzerinde iki sorgu oluşturun. Birincisi, kaynak IP başına saatte başarısız oturum açan farklı hesapları sayar. İkincisi kaynağı yok sayar: zaman penceresi başına genelde başarısız olan farklı hesapları sayar, ardından ASN ve user agent'a göre böler. Her ikisi için de alarm kurun ve
AADSTS50053için ayrı bir görünüm tutun. - Dışarıya açık her serviste MFA'yı etkinleştirin, ardından yönetilmeyen cihazlar ve anonimleştirme servisleri için conditional access kuralları ekleyin.
- Çalışan hesaplarını bilinen ihlallerle karşılaştırın, örneğin breached password check aracımızla, ve eşleşenleri sıfırlayın. Logları her gün izleyecek kadar kaynağınız yoksa yönetilen izleme hizmeti bu açığı kapatır.
