Parolga asoslangan login jarayonini qo'llagan vebsaytlarda foydalanuvchilar yo o'zlari hisob ochadilar, yo administrator ularga hisob tayinlaydi. Bu hisob unikal username va maxfiy parol bilan bog'lanadi; foydalanuvchi login formasiga shularni kiritib, o'zini autentifikatsiya qiladi.
Bunday holatda maxfiy parolni bilish foydalanuvchi shaxsining yetarli isboti deb qabul qilinadi. Ya'ni agar hujumchi boshqa foydalanuvchining login ma'lumotlarini qo'lga kirita olsa yoki taxmin qila olsa, saytning xavfsizligi buziladi.
Bunga bir necha yo'l bilan erishish mumkin. Quyidagi bo'limlarda hujumchi brute-force hujumlaridan qanday foydalanishi va brute-force himoyasidagi ayrim kamchiliklar ko'rsatiladi. Shuningdek, HTTP basic authentication'dagi zaifliklar haqida ham bilib olasiz.
Brute-force hujumi — bu hujumchi to'g'ri login ma'lumotlarini topguncha sinov va xato (trial and error) usuli bilan taxmin qilishidir. Bunday hujumlar odatda username va parollarning wordlist'lari yordamida avtomatlashtiriladi. Bu jarayonni, ayniqsa maxsus vositalar bilan avtomatlashtirish hujumchiga juda ko'p login urinishlarini yuqori tezlikda amalga oshirish imkonini beradi.
Brute-force har doim ham username va parolni butunlay tasodifiy taxmin qilish emas. Oddiy mantiq yoki ochiq mavjud ma'lumotdan foydalanib, hujumchi taxminlarini ancha aniqroq qilib sozlashi mumkin. Bu esa hujumning samaradorligini sezilarli oshiradi. Faqat parolga asoslangan loginidan yagona usul sifatida foydalanadigan saytlar yetarli brute-force himoyasi bo'lmasa juda zaif bo'lishi mumkin.
Username'lar tanib olinadigan naqshga (masalan email manzili) mos kelsa, ularni taxmin qilish ayniqsa oson. Masalan, korporativ loginlar ko'pincha firstname.lastname@somecompany.com ko'rinishida bo'ladi. Aniq naqsh bo'lmasa ham, ba'zan hatto yuqori imtiyozli hisoblar admin yoki administrator kabi oldindan aytsa bo'ladigan username bilan yaratiladi.
Audit paytida sayt username'larni ochiqchasiga oshkor qilyaptimi yoki yo'qmi, tekshiring. Masalan, login qilmasdan foydalanuvchi profillariga kira olasizmi? Profil mazmuni yashirin bo'lsa ham, undagi ism ba'zan login username bilan bir xil bo'ladi. Shuningdek, HTTP response'larda email manzillari oshkor bo'lyaptimi, tekshiring — ba'zan javoblarda administrator yoki IT-support kabi yuqori imtiyozli foydalanuvchilarning emaillari chiqib qoladi.
Parollarni ham brute-force qilish mumkin; qiyinligi parolning kuchiga qarab o'zgaradi. Ko'p saytlar parol siyosatini (password policy) qo'llab, foydalanuvchilarni yuqori entropiyali, nazariy jihatdan brute-force bilan buzish qiyinroq parollar yaratishga majbur qiladi. Bu odatda quyidagilarni talab qiladi:
Biroq, yuqori entropiyali parollarni faqat kompyuter bilan buzish qiyin bo'lsa-da, inson xatti-harakati haqidagi oddiy bilim yordamida foydalanuvchilar bilmasdan kiritadigan zaifliklardan foydalanish mumkin. Belgilarning tasodifiy kombinatsiyasidan kuchli parol yaratish o'rniga, foydalanuvchilar ko'pincha eslab qoladigan parolni olib, uni parol siyosatiga zo'rma-zo'raki moslashtiradilar. Masalan, mypassword ruxsat etilmasa, foydalanuvchi Mypassword1! yoki Myp4$$w0rd kabi variantni sinaydi.
Siyosat parolni muntazam o'zgartirishni talab qilsa, foydalanuvchilar odatda sevimli paroliga kichik, oldindan aytsa bo'ladigan o'zgarish kiritadilar. Masalan, Mypassword1! Mypassword1? ga yoki Mypassword2! ga aylanadi.
Ehtimoliy login ma'lumotlari va oldindan aytsa bo'ladigan naqshlar haqidagi bu bilim brute-force hujumlarini shunchaki barcha belgilar kombinatsiyasini sanab chiqishdan ko'ra ancha murakkab va samarali qiladi.
Username enumeration — bu hujumchi berilgan username to'g'rimi yoki yo'qligini aniqlash uchun saytning xatti-harakatidagi o'zgarishlarni kuzata olishidir.
Username enumeration odatda login sahifasida (masalan, to'g'ri username, lekin noto'g'ri parol kiritganingizda) yoki ro'yxatdan o'tish formasida (band bo'lgan username kiritganingizda) yuz beradi. Bu login'ni brute-force qilishga ketadigan vaqt va kuchni ancha kamaytiradi, chunki hujumchi tez orada to'g'ri username'lardan qisqa ro'yxat tuza oladi.
Login sahifasini brute-force qilishga urinayotganda, quyidagilardagi har qanday farqga alohida e'tibor bering:
Brute-force hujumi hisobni muvaffaqiyatli buzishdan oldin ko'plab muvaffaqiyatsiz taxminlarni o'z ichiga olishi katta ehtimol. Mantiqan, brute-force himoyasi jarayonni avtomatlashtirishni imkon qadar qiyinlashtirishga va hujumchi login urinishlari tezligini pasaytirishga qaratilgan. Brute-force'ning oldini olishning eng keng tarqalgan ikki usuli:
Ikkala yondashuv ham turlicha darajada himoya beradi, lekin ayniqsa buzuq mantiq bilan joriy qilinsa, hech biri daxlsiz emas.
Masalan, ba'zan ko'p marta muvaffaqiyatsiz login qilsangiz IP'ingiz bloklanishini ko'rasiz. Ayrim implementatsiyalarda IP egasi muvaffaqiyatli login qilsa, muvaffaqiyatsiz urinishlar hisoblagichi nolga tushadi. Bu esa hujumchi bu chegaraga hech qachon yetmaslik uchun har necha urinishda o'z hisobiga login qilib turishi kifoya ekanini bildiradi.
Bu holatda o'zingizning login ma'lumotlaringizni wordlist bo'ylab muntazam oralatib qo'yishning o'zi bu himoyani deyarli foydasiz qilib qo'yadi.
Vebsaytlar brute-force'ning oldini olishning bir yo'li — ma'lum shubhali mezonlar (odatda belgilangan sondagi muvaffaqiyatsiz login urinishi) bajarilsa hisobni qulflash. Oddiy login xatolari kabi, serverning hisob qulflangani haqidagi javobi ham hujumchiga username'larni aniqlashda yordam berishi mumkin.
Hisobni qulflash ma'lum bir hisobni maqsadli brute-force qilishdan biroz himoya qiladi. Biroq bu yondashuv hujumchi shunchaki istalgan tasodifiy hisobga kirishga urinayotgan brute-force hujumlarining oldini yetarlicha ololmaydi.
Masalan, bunday himoyani chetlab o'tish uchun quyidagi usuldan foydalanish mumkin:
Hisobni qulflash credential stuffing hujumlaridan ham himoya qilmaydi. Bu hujumda ma'lumotlar buzilishida o'g'irlangan haqiqiy username:password juftliklaridan iborat ulkan lug'atdan foydalaniladi. Credential stuffing ko'p odamlar bir xil username va parolni bir necha saytda qayta ishlatishiga tayanadi — shu sabab lug'atdagi ba'zi buzilgan ma'lumotlar nishon saytda ham to'g'ri kelishi ehtimoli bor. Har bir username faqat bir marta sinalgani uchun hisobni qulflash bunga to'sqinlik qilmaydi. Credential stuffing ayniqsa xavfli, chunki ba'zan bitta avtomatlashtirilgan hujum bilan hujumchi ko'plab turli hisoblarni buzishi mumkin.
Vebsaytlar brute-force'ning oldini olishning yana bir usuli — user rate limiting. Bunda qisqa vaqt ichida juda ko'p login so'rovi yuborsangiz, IP manzilingiz bloklanadi. Odatda IP quyidagi yo'llardan biri bilan blokdan chiqariladi:
User rate limiting ba'zan hisobni qulflashdan afzalroq ko'riladi, chunki u username enumeration va DoS hujumlariga kamroq moyil. Biroq u ham to'liq xavfsiz emas. Oldingi labda ko'rganimizdek, hujumchi blokni chetlab o'tish uchun o'zining ko'rinadigan IP'sini bir necha yo'l bilan o'zgartirishi mumkin.
Chegara foydalanuvchi IP'sidan yuborilgan HTTP so'rovlar tezligiga asoslangani uchun, agar bitta so'rov ichida bir nechta parolni qanday taxmin qilishni bilib olsangiz, bu himoyani chetlab o'tish ham ba'zan mumkin bo'ladi.
Ancha eski bo'lsa-da, nisbatan soddaligi va joriy qilish osonligi sabab HTTP basic authentication'ni hali-hanuz uchratib turishingiz mumkin. Bunda mijoz (client) serverdan autentifikatsiya tokenini oladi; token username va parolni birlashtirib, Base64'da kodlash orqali tuziladi. Bu token brauzer tomonidan saqlanadi va boshqariladi hamda har bir keyingi so'rovning Authorization sarlavhasiga avtomatik qo'shiladi:
Authorization: Basic base64(username:password)Bir necha sabablarga ko'ra bu odatda xavfsiz autentifikatsiya usuli hisoblanmaydi. Birinchidan, u har bir so'rovda foydalanuvchi login ma'lumotlarini qayta-qayta yuborishni o'z ichiga oladi. Agar sayt HSTS'ni ham joriy qilmagan bo'lsa, login ma'lumotlari man-in-the-middle hujumida ushlab olinishi mumkin.
Bundan tashqari, HTTP basic authentication implementatsiyalari ko'pincha brute-force himoyasini qo'llamaydi. Token faqat statik qiymatlardan iborat bo'lgani uchun, bu uni brute-force'ga zaif qoldirishi mumkin.
HTTP basic authentication, shuningdek, sessiyaga oid ekspluatatsiyalarga, xususan CSRF'ga alohida zaif — o'zi bunga hech qanday himoya bermaydi.
Ba'zan zaif HTTP basic authentication'dan foydalanish hujumchiga faqat qiziq bo'lmagan sahifaga kirish berishi mumkin. Biroq qo'shimcha hujum yuzasini berishdan tashqari, shu tarzda oshkor bo'lgan login ma'lumotlari boshqa, maxfiyroq kontekstlarda qayta ishlatilgan bo'lishi mumkin.