Active Directory’yi Ele Geçirme Teknikleri Serisi – Bölüm 3: Password Spraying

Merhaba

Serinin ilk iki bölümünde Kerberoasting ve AS-REP Roasting’i ele aldık; ikisi de Kerberos protokolünün meşru işlevselliğini istismar eden tekniklerdi. Bu bölümde biraz farklı bir yaklaşıma, doğrudan kimlik doğrulama denemesi yapan Password Spraying tekniğine geçiyoruz.

Password Spraying

Password Spraying, tek bir parola veya birden fazla parolayı, başarılı bir kimlik doğrulama gerçekleşene kadar birden fazla kullanıcı objesine karşı denemeyi içerir. Bu parolalar genel parola listelerinden gelebileceği gibi, hedef ortamdan türetilerek başarı olasılığı daha da artırılabilir. Örneğin, saldırganlar hedef ortamda tekrar kullanılan parolaları tespit edip bunları başka kullanıcı objelerine ait olup olmadığını anlamak için Password Spraying’de kullanabilir. Kimlik doğrulama denemelerini ve tespit edilme riskini azaltmak için saldırganlar Active Directory’den bir kullanıcı adı listesi alıp her birine tek bir parola ile kimlik doğrulaması denemesi yapabilir. Bu teknik, parola tekrar kullanımının yaygın olduğu kurumlara karşı özellikle etkilidir. Saldırganlar Password Spraying yoluyla bir kullanıcı objesini ele geçirirse, o kullanıcı objesinin kontrolünü ve erişim/yetkilerini devralır.

Dosya paylaşımları ve Active Directory kimlik bilgileri: Rapor, saldırganların güvensiz şekilde saklanan sırları (Active Directory kullanıcı objelerine ait kimlik bilgileri gibi) bulmak amacıyla dosya paylaşımlarını taradığını vurguluyor. SMBMap ve Snaffler gibi araçlar, dosya paylaşımlarını tespit edip bunları kimlik bilgileri (düz metin parolalar dahil), hassas bilgiler, API anahtarları, dijital sertifikalar, bağımsız parola yöneticileri ve yedekler için tarayabilir. Bu araçlar genellikle bir Active Directory domain’ine ilk erişim sağlandıktan sonra, ayrıcalıklı kullanıcı objelerine ait kimlik bilgilerini bulmak amacıyla kullanılır. Saldırganlar kimlik bilgisi bulursa, bunları yetki yükseltmek ve yanal hareket etmek için kullanma olasılıkları yüksektir; çünkü Kerberoasting ve Password Spraying gibi daha riskli tekniklere başvurmadan diğer kullanıcı objelerinin kontrolünü ele geçirebilirler. Kurumların, dosya paylaşımlarında kimlik bilgisi bulunma olasılığını azaltmak için mümkünse kurumsal düzeyde bir parola yönetim çözümü kullanması ve hassas bilgilerin güvensiz şekilde saklandığı dosya paylaşımlarını tespit etmek için periyodik olarak kendi taramalarını yapması öneriliyor.

Birçok kurum, belirli sayıda başarısız kimlik doğrulama denemesinden sonra kullanıcı objelerini kilitleyen bir hesap kilitleme eşiği (account lockout threshold) politikası uyguluyor. Bu, saldırganların kullanıcı objelerini kilitlemeden çok fazla farklı parola denemesini etkili biçimde engelliyor. Ancak saldırganlar, kilitleme eşiğini aşmadan bu eşiğe kadar Password Spraying uygulamaya devam edebilir. DomainPasswordSpray ve Spray gibi araçlar, kilitleme eşiğini aşmamak için tespit edip Password Spraying uygular; bu araçlar ayrıca belirli bir zaman periyodu boyunca gerçekleşen kimlik doğrulama denemelerini sınırlayacak şekilde de yapılandırılabilir, böylece belirli bir zamanda gerçekleşen kimlik doğrulama denemesi sayısı azaltılarak tespit riski minimize edilir. MFA, ilk erişim elde etmeye çalışan saldırganlara karşı Password Spraying’i mitigasyon etmede etkili olsa da, saldırganlar zaten ilk erişimi elde etmişse Password Spraying’i mitigasyon etmede büyük ölçüde etkisizdir. Bunun nedeni, saldırganların domain’deki herhangi bir kullanıcı objesi olarak, MFA’yı desteklemeyen New Technology LAN Manager (NTLM) protokolü üzerinden doğrudan bir Domain Controller’a kimlik doğrulaması deneyebilmesidir. NTLM tabanlı ihlal riskini azaltmak için, mümkün olduğunda NTLM protokolünü devre dışı bırakın. Bu mümkün değilse LDAP channel binding, extended protection authentication ve Server Message Block (SMB) signing’i etkinleştirin.

Yerleşik Administrator hesabı ve hesap kilitleme eşiği: Her Active Directory domain’inde, domain oluşturulurken yaratılan yerleşik bir Administrator hesabı bulunur. Bu hesap, Domain Admins ve Administrators güvenlik gruplarının varsayılan bir üyesidir; domain forest root domain ise Enterprise Admins güvenlik grubunun da üyesidir. Bu güvenlik grupları bu kullanıcı objesini, domain’deki tüm objelere yönetici erişimine sahip olacak şekilde yüksek yetkili kılar. Belirli sayıda başarısız kimlik doğrulama denemesinden sonra hesapları kilitleyen hesap kilitleme eşiği politikası, yerleşik Administrator hesabı için geçerli değildir. Birden fazla başarısız kimlik doğrulama denemesi gerçekleşse ve hesap kilitli olarak raporlansa bile, doğru parola girildiğinde yine de kimlik doğrulaması yapılabilir; bu durum kilitli statüyü otomatik olarak kaldırır ve hatalı parola sayacını sıfırlar. Yerleşik Administrator hesabının kilitlenememesi, onu Password Spraying için cazip bir hedef haline getirir. Bu hesabın kilitlenme riskini azaltmak için minimum 30 karakterlik, benzersiz, tahmin edilemez ve yönetilen bir parola belirleyin. Ek olarak, bu hesap yalnızca acil durum (“break glass”) hesabı olarak kullanılmalı ve bu hesapla ilişkili kimlik doğrulama olayları, Password Spray gibi kötü niyetli aktivite belirtileri için izlenmelidir. Kurumlar ayrıca kullanıcı objesini delegasyona kapalı (sensitive) olarak yapılandırma ve kullanıcı objesinin nerede kullanılabileceğini kısıtlama gibi ek korumalar da uygulayabilir.

Password Spraying’i Mitigasyon Etmek

Password Spraying’i mitigasyon etmek için aşağıdaki güvenlik kontrolleri uygulanmalıdır:

  • Yerel yönetici hesapları, servis hesapları ve break glass hesapları için uzun (minimum 30 karakter), benzersiz, tahmin edilemez ve yönetilen parolalar oluşturun. Yerel yönetici hesapları için bunu sağlamak amacıyla Microsoft’un Local Administrator Password Solution (LAPS) kullanılabilir. Güçlü parolalar kullanmak başarılı Password Spraying olasılığını azaltır.
  • Tek faktörlü kimlik doğrulama için kullanılan parolaları, toplam minimum 15 karakter uzunluğunda en az dört rastgele kelimeden oluşacak şekilde oluşturun. Bu, başarılı bir Password Spraying olasılığını azaltır.
  • Break glass hesapları hariç, kullanıcı objelerini maksimum beş başarısız oturum açma denemesinden sonra kilitleyin. Beş başarısız kimlik doğrulama denemesinden sonra bir hesap kilitleme eşiği uygulamak, Password Spraying’de denenebilecek olası deneme sayısını azaltır.
  • Kullanıcı objeleri için oluşturulan parolaların rastgele üretilmesini sağlayın, örneğin bir kullanıcı objesi oluşturulduğunda veya bir kullanıcı parola sıfırlama talep ettiğinde. Saldırganlar tekrar kullanılan parolaları tespit edip Password Spraying’de kullanmaya çalışacaktır; bunları artırmak başarı olasılığını yükseltir.
  • Yerleşik ‘Administrator’ domain hesabını delegasyona kapalı olacak şekilde yapılandırın, delege edilememesini sağlamak için.
  • Ağları, düz metin olarak saklanan kimlik bilgilerini tespit etmek için ayda en az bir kez tarayın. Saldırganlar Password Spraying’de kullanmak üzere düz metin kimlik bilgileri için ağları tarar. Bu kimlik bilgilerini proaktif olarak tespit edip kaldırmak bu riski mitigasyon eder.
  • NTLM protokolünü devre dışı bırakın. NTLM protokolü MFA’yı desteklemez ve saldırganlar tarafından MFA gereksinimlerini atlamak için kötüye kullanılabilir.

Password Spraying’i Tespit Etmek

Password Spraying, tipik olarak her başarısız kimlik doğrulama denemesi için bir olay üretir. Hedeflenen kullanıcı objesi sayısına bağlı olarak, bu çok sayıda olay üretilmesine neden olabilir. Password Spraying’i etkili biçimde tespit etmek için, kısa bir zaman diliminde çok sayıda başarısız kimlik doğrulama olayı gerçekleştiğinde uyarılar üretilmelidir. DomainPasswordSpray ve CrackMapExec gibi popüler Password Spraying araçları genellikle SMB protokolü üzerinden kimlik doğrulaması yapmayı dener. Saldırganlar tespitten kaçınmak amacıyla farklı bir olay üreten başka bir protokolü, örneğin Lightweight Directory Access Protocol’ü (LDAP) kullanabilir. Password Spraying’i etkili biçimde izlemek için her iki olayı da toplamak önemlidir. Aşağıdaki Event ID’ler merkezi olarak loglanmalı ve zamanında analiz edilmelidir.

Password Spraying’i Tespit Eden Olaylar

Event ID Kaynak Açıklama
2889 Domain Controller’lar Bir bilgisayar objesi imzasız bir LDAP bind denemesi yaptığında üretilir. LDAP protokolünü kullanarak Password Spraying uygulayan saldırganlar, her parola denemesinde imzasız bir LDAP bind yaptığı için bu olayı üretir. Kısa bir zaman diliminde çok sayıda 2889 olayı gerçekleşiyorsa, LDAP protokolü kullanılarak Password Spraying gerçekleştiğine işaret edebilir.
4624 Domain Controller’lar Bir obje başarıyla oturum açtığında üretilir. Bu olay 4625 olaylarıyla neredeyse eş zamanlı gerçekleşiyorsa, bir kullanıcı objesinin Password Spraying sonucu başarıyla oturum açtığını gösterebilir.
4625 Domain Controller’lar Bir obje SMB protokolü üzerinden oturum açmayı başaramadığında üretilir. Yaygın Password Spraying araçları varsayılan olarak SMB protokolü üzerinden kimlik doğrulaması dener. Kısa bir zaman diliminde çok sayıda 4625 olayı gerçekleşiyorsa, SMB protokolü kullanılarak Password Spraying gerçekleştiğine işaret edebilir. LDAP gibi başka protokoller de Password Spraying için kullanılabilir; saldırganlar tespitten kaçınmak için farklı bir protokol kullanmayı tercih edebilir. Active Directory kullanıcı objesindeki ‘badPasswordTime’ özniteliği, son başarısız kimlik doğrulama denemesinin tarih ve saatini tespit etmek için sorgulanabilir. Birden fazla kullanıcı objesi aynı veya yakın bir tarih/saati paylaşıyorsa, Password Spraying gerçekleştiğine işaret edebilir.
4648 (kaynak: domain’e katılı bir workstation veya sunucu gibi Password Spraying kaynağı) Password Spraying kaynağı Açık kimlik bilgileriyle bir oturum açma denemesi yapıldığında üretilir. Password Spraying, domain’e katılı bir sistem üzerinde çalıştırılırsa, bu olay her kimlik doğrulama denemesi için üretilir. Kısa bir zaman diliminde farklı kullanıcı adlarıyla çok sayıda 4648 olayı varsa, sistemde Password Spraying’in çalıştırıldığına işaret edebilir. Not: saldırganlar altyapılarından bir tünel kurmuşsa, Password Spraying’i kendi sistemlerini kullanarak çalıştırabilir; bu durumda bu olay üretilmez.
4740 Domain Controller’lar Bir kullanıcı objesi kilitlendiğinde üretilir. Password Spraying, çok sayıda başarısız kimlik doğrulama denemesi nedeniyle kullanıcı objelerinin kilitlenmesine neden olabilir. Kısa bir zaman diliminde birden fazla kullanıcı objesi kilitleniyorsa, Password Spraying gerçekleştiğine işaret edebilir. Birçok Password Spraying aracı, tespitten kaçınmak amacıyla domain’in kilitleme politikasını ve kullanıcı objeleri için başarısız kimlik doğrulama deneme sayısını kontrol eder.
4771 Domain Controller’lar Kerberos ön kimlik doğrulaması başarısız olduğunda üretilir. Tespitten kaçınmak amacıyla, saldırganlar Password Spraying’i çalıştırmak için LDAP protokolünü kullanabilir. Bu durumda, event 4771 ‘Failure Code’ özniteliği ‘0x18’ değerini üretir; bu değer, hatalı parolanın olayın nedeni olduğu anlamına gelir. Active Directory kullanıcı objesindeki ‘badPasswordTime’ özniteliği, son başarısız kimlik doğrulama denemesinin tarih ve saatini tespit etmek için sorgulanabilir. Birden fazla kullanıcı objesi aynı veya yakın bir tarih/saati paylaşıyorsa, Password Spraying gerçekleştiğine işaret edebilir.

Lab Uygulaması: Windows Server 2025 Üzerinde Password Spraying

Yukarıdaki teoriyi kendi lab ortamımda pratikte gösterelim. Harici bir saldırı aracına gerek yok; `System.DirectoryServices.AccountManagement` .NET sınıfının `ValidateCredentials` metodu, SMB paylaşım bağlantısı kurmadan doğrudan domain’e karşı kimlik doğrulaması denemeyi sağlıyor – tam olarak Password Spraying araçlarının arka planda yaptığı şey. Test ortamında `sprayuser1` ila `sprayuser5` adında beş test hesabı oluşturdum ve domain’in hesap kilitleme eşiğini (varsayılan olarak devre dışıydı) 5 başarısız denemeye ayarladım:

Set-ADDefaultDomainPasswordPolicy -Identity bakicubuk.local -LockoutThreshold 5 -LockoutDuration 00:10:00 -LockoutObservationWindow 00:10:00

Ardından, domain’e katılı bir Windows 11 client’tan, `sprayuser1` hesabına karşı bilerek yanlış bir parolayla art arda altı deneme yaptım:

Add-Type -AssemblyName System.DirectoryServices.AccountManagement

$context = New-Object System.DirectoryServices.AccountManagement.PrincipalContext(

[System.DirectoryServices.AccountManagement.ContextType]::Domain, "bakicubuk.local")

1..6 | ForEach-Object {

$sonuc = $context.ValidateCredentials("sprayuser1", "BaskaYanlisParola!456")

Write-Host "Deneme $_ -> $sonuc"

}

Her deneme, DC üzerinde bir Event ID 4625 (An account failed to log on) kaydı üretti. Kayıtta talep edilen hesap adı (sprayuser1), kaynak workstation (W11CLIENT) ve kullanılan kimlik doğrulama paketi (NTLM) görülüyor – raporun bahsettiği gibi, popüler Password Spraying araçları genellikle NTLM veya SMB üzerinden kimlik doğrulaması dener:

Event ID 4625 detayı – hesap ve kaynak bilgileri:

 

Event ID 4625 detayı – kimlik doğrulama paketi bilgileri (NTLM): Belirlediğimiz eşik beş başarısız denemeydi; altıncı deneme zaten kilitlenmiş bir hesaba karşı yapıldı ve DC üzerinde ek olarak bir Event ID 4740 (A user account was locked out) kaydı üretti. Bu kayıt, kilitlenen hesabı (sprayuser1) ve kilitleme işlemini gerçekleştiren domain controller’ı (W25DC$) gösteriyor:

Event ID 4740 – hesap kilitlenmesi kaydı: Bu üç görsel birlikte, raporun tarif ettiği iki farklı tespit sinyalini gösteriyor: art arda gelen 4625 kayıtları (Password Spraying’in kendisi) ve ardından gelen 4740 kaydı (kilitleme eşiğinin aşılması). Gerçek bir saldırıda bu desen tek bir hesaba değil, kısa bir zaman aralığında birçok farklı hesaba yayılır – o yüzden merkezi loglamada asıl aranması gereken şey, farklı kullanıcı adlarıyla art arda gelen çok sayıda 4625 kaydıdır; tek bir hesaba karşı çok sayıda deneme (bizim burada demo amacıyla yaptığımız gibi) aslında klasik brute-force’a daha yakındır ve genellikle daha hızlı fark edilip kilitlenir.

Uyumluluk ve Çerçeve Eşlemesi Tablosu

Çerçeve İlgili Kontrol/Madde
PCI DSS Gereksinim 8.2 (Güçlü kimlik doğrulama), Gereksinim 8.3 (MFA)
HIPAA 164.312(d) – Kişi veya Varlık Kimlik Doğrulaması
ISO 27001 A.9.2 (Kullanıcı Erişim Yönetimi), A.9.4 (Sistem ve Uygulama Erişim Kontrolü)
KVKK Madde 12 – Veri Güvenliğine İlişkin Yükümlülükler
TCMB Bilgi Sistemleri Yönetimi Tebliğ – Erişim ve Yetkilendirme Kontrolleri
NIST CSF PR.AC-1 (Kimlik ve kimlik bilgisi yönetimi), PR.AC-7 (Kimlik doğrulama)
CIS Controls CIS 5 (Hesap Yönetimi), CIS 6 (Erişim Kontrol Yönetimi)

MITRE ATT&CK: T1110.003 (Brute Force: Password Spraying)

Sonuç

Password Spraying, önceki iki bölümde ele aldığımız Kerberos tabanlı tekniklerden farklı olarak doğrudan kimlik doğrulama denemesine dayanıyor ve MFA’nın bile tek başına yeterli koruma sağlamadığı nadir senaryolardan biri; çünkü saldırganlar NTLM üzerinden MFA’yı tamamen atlayabiliyor. Güçlü, benzersiz parolalar, makul bir kilitleme eşiği ve NTLM’in devre dışı bırakılması bu tekniği büyük ölçüde etkisiz hale getiriyor. Serinin bir sonraki bölümünde, varsayılan bir Active Directory ayarını istismar eden MachineAccountQuota tekniğini ele alacağız.

Başka bir yazımızda görüşmek dileğiyle…

Bir yanıt yazın

Başa Dön