Brute force’un tam tersi
Brute force tek bir hesabı binlerce parolayla döver ve kırılana kadar durmaz. Bu yaklaşım hesap kilitleme eşiğini dakikalar içinde tetikler; üstelik savunmacıların en kolay fark ettiği şey de tam olarak budur. Password spraying mantığı tersine çevirir: tek bir yaygın parola seçip domain’deki her hesaba, her birine yalnızca bir kez olacak şekilde dene. Denemeler tek bir hesapta birikmediği için kimse kilitlenmez ve yeniden kullanılmış tek bir parola hedefe ulaşmak için yeter.
Bu yüzden spraying’in başarısı hızla değil, dağıtımla ilgilidir: aynı parolayı çok sayıda hesaba yaymak, tek bir hesabı zorlamaktan hem daha sessiz hem de kilitleme açısından çok daha güvenlidir.
Tekniğin tamamı, ilk adımda kilitleme politikasını bilmeye bağlıdır. Eşiği bilmeden atmaca davranırsan hesapları kilitleyip dikkat çekebilirsin. nxc --pass-pol bu politikayı doğrudan DC’den okur:
$ nxc smb 192.168.56.11 -u samwell.tarly -p Heartsbane --pass-pol
SMB 192.168.56.11 445 WINTERFELL Account Lockout Threshold: 5
SMB 192.168.56.11 445 WINTERFELL Password Complexity Flags: 000000
Burada iki sayı önemlidir. Eşik 5 olduğu için bir hesapta kilitleme devreye girmeden önce güvenle 4 giriş deneyebilirsin; ancak spray sırasında her hesabı parola başına yalnızca bir kez denediğin için bu sınır zaten hiçbir zaman riske girmez. Karmaşıklık bayraklarının 000000 olması (yani karmaşıklığın kapalı olması) ise zayıf ve tahmin edilebilir parolaların bu domain’de gerçekten kabul edildiğini söyler. Bu ikisi bir arada spray için yeşil ışıktır: hem kilitlenme riski yoktur hem de tahmin edilebilir parolaların var olma ihtimali yüksektir.
Spray’in kendisi
Onu güvenli kılan şey yönüdür: tek maddelik bir parola listesi, çok maddelik bir kullanıcı listesi. nxc kullanıcıları tek tek gezer ve yalnızca sen açıkça söylersen durur (--continue-on-success, yani bir isabet bulunduğunda koşunun kesilmemesi için):
$ nxc smb 192.168.56.11 -u users.txt -p "Password1" --continue-on-success
SMB 192.168.56.11 445 WINTERFELL [-] arya.stark:Password1 STATUS_LOGON_FAILURE
SMB 192.168.56.11 445 WINTERFELL [-] eddard.stark:Password1 STATUS_LOGON_FAILURE
... (all twelve fail) ...
$ nxc smb 192.168.56.11 -u users.txt -p "Winter2022" --continue-on-success
SMB 192.168.56.11 445 WINTERFELL [+] north.sevenkingdoms.local\rickon.stark:Winter2022
İlk spray (Password1) temiz bir şekilde sonuçsuz kalır — bu normal bir sonuçtur. İkinci spray (Winter2022) ise mevsimsel bir parolayı yeniden kullanan tek bir hesap yakalar. O tek [+] satırı bir dayanak noktasıdır: az önce on bir hesapta başarısız olan aynı parola bir hesapta işe yaramıştır ve artık 5 denemelik eşiği hiç tetiklemeden geçerli bir domain girişimiz vardır.
Parola seçimi bu işin asıl ustalık kısmıdır. Gerçek spray’lerde sıradan kullanıcıların aklına ilk gelen mevsimsel ve kuruma özgü tahminler kullanılır — Summer2024!, CompanyName1, Welcome123 gibi — çünkü karmaşıklık kapalı olduğunda bu tür tahminler domain’de gerçekten yaşayabilir. Birkaç yüz kullanıcıya karşı bir düzine böyle paroladan oluşan bir liste genellikle tek bir isabet için yeterlidir ve neredeyse hiç kilitleme trafiği üretmez. Bu da saldırıyı hem ucuz hem de savunma tarafında gözden kaçması kolay hale getirir.
Tespit ve çözüm
Tespit: Bir spray, tek bir kaynaktan kısa süre içinde farklı kullanıcı adlarına ait 4625 (başarısız giriş) olaylarının patlaması gibi görünür — bu, tek bir kullanıcı adı için çok sayıda başarısızlık üreten brute force’un tam tersidir. Tek bir IP’den farklı TargetUserName değerleriyle gelen çok sayıda 4625 kaydını izle; spray’in imzası budur. Yalnızca hesap bazında değil, kaynak bazında da desen aramak gerekir, çünkü tek tek bakıldığında her başarısızlık sıradan görünür.
Kontrol: Parola karmaşıklığını zorunlu kıl (bu domain’de kapalıydı), yaygın ve mevsimsel parolaları yasaklı parola listesiyle engelle ve tahmin edilen bir parolanın tek başına yetmemesi için MFA iste. İzleme tarafında ise yalnızca hesap başına değil, tek bir kaynaktan farklı kullanıcı adlarına gelen N sayıda başarısız giriş için alarm ver; böylece spray’in dağıtık yapısı yakalanabilir.
Özet
| Adım | Araç | Not |
|---|---|---|
| Politikayı oku | nxc smb <dc> --pass-pol | eşik 5 → 4 güvenli deneme |
| Kullanıcı listesini kur | nxc smb <dc> -u user -p pass --users | her hesap bir hedef |
| Tek parolayı spreyle | nxc smb <dc> -u users.txt -p "<tahmin>" --continue-on-success | 1 parola × çok kullanıcı |
| İsabette kır | — | dayanak noktası geri kalan her şeyi besler |
Kanıt ve sınırlar
Parola politikası sorgusu (--pass-pol) ve tek adaylı parola spreyleme (Hod0r!, Winter2022!), izole GOAD laboratuvarındaki WINTERFELL (192.168.56.11) üzerinde yürütülmüştür. Buradaki tüm hesaplar ve parolalar GOAD’ın sentetik north.sevenkingdoms.local dizinine aittir; yani gerçek bir kurumda karşılaşacağın parola dağılımını değil, kontrollü bir test ortamını temsil eder.
Referanslar
- Orange Cyberdefense, GOAD: orange-cyberdefense.github.io/GOAD
- The Hacker Recipes, Password Spraying: thehacker.recipes/ad/movement/credentials/bruteforcing/spraying
- HackTricks, Password Spraying: book.hacktricks.xyz
- NetExec documentation: netexec.wiki
- MITRE ATT&CK, Password Spraying (T1110.003): attack.mitre.org/techniques/T1110/003
Bu teknik not ne kadar güncel?
En son kaynak incelemesi, içerik güncellemesi veya yayın tarihi gösterilmektedir.
Birincil kamu kayıtları kontrol edildi. Ortama özgü davranış, ayrıca yeniden üretilmedikçe iddianın dışındadır.

