Buruteforce Attack Engelleyici

Python ile tanışmamın sebebi aklıma takılan " ‘abc’ yada ‘123’ gibi basit bir parola olsa ama deneme yöntemleriyle kırılamasa, mümkün mü? " sorusuydu ve sanırım yaptım.

Bu metodun kullanıcıyı uzun yada karmaşık parolalar kullanmak derdinden kurtarabileceğini sanıyorum. Yöntemi test etmek için emaneten bir web adresine yükledim. Bazı saldırı kodları yazarak giriş denemeleri yaptım ve saldırıyı atlatmayı başarıyor gibi görünüyor. Ancak mutlaka benden daha mahir arkadaşlar vardır.

Denemek isteyen olursa görüşlerinizi almak isterim.
www.savadizayn.com.tr/BFA/ adresinden test edebilirsiniz. Kendinize bir kullanıcı adı belirliyorsunuz ve sistem size üç haneli basit bir parola belirlyor. Sonra kullanıcı adınızla parolanızı kırmak size kalmış.

  • Eğer forum yetkilisi bir sakınca görmez ise (?) saldırı kodlarımı da paylaşabilirim. Bu kodlarla orta hızda bir internet cafeden dakikada 1800-2000 civarı parola denemesi gönderebiliyorum sayfaya.
1 Beğeni

Tam olarak nasıl kırılamıyor, önemli bir bilgiyi elde etmek isteyen kötü amaçlı kişiler bu paroları mı daha hızlı kırar yoksa uzun ve daha çok karaktere sahip paroları mı? Şifrelerin sadece ASCII karakterler içereceğini varsayarsak ve de deneme yanılma yolu ile şifre kırmanın (brute force) bütün olasılıkları belli bir sıra ile denemek olduğunu düşünürsek üç karakter uzunluğunda bir şifre için 255**3 = 16581375 olasılık varken 8 karakter uzunluğunda bir şifre için 255**8 = 17878103347812890625 olasılık var.

Hangi metod?

Normal girisi de atlatmayi basariyor :slight_smile: Kullanici actim ama parola belirtemedim. Kendim giremiyorum.

Deneyebilmek icin kullanici adi bilmemiz gerekiyor zira ilk adim dogru bir kullanici adi girmek. Deneyemiyoruz.

Baslangic seviyesinde programlama bilen herhangi biri basit bir saldiri kodu yazabilecegine gore bir sakinca goremiyorum. Ama bir gerek de goremiyorum. Savunma koduyla/algoritmasiyla ilgili zerre konusulmamis; nereye, niye saldiriyoruz o zaman?

1 Beğeni

:slightly_smiling_face: Olay zaten kendi şifremizi de bilmeden giriş sayfasına brute force yapmak sanırım. Sanki başkasının hesabına saldırır gibi. Kendi kullanıcı adımızı bilmek yetiyor.

Bence yöntem rastgele üç karakter oluşturmaya dayalı …


Bir de şifrenin içerebileceği karakterleri söylememişsiniz, oysa gerçek bir sitede saldırıyı yapacak kişi bir hesap açmayı deneyerek hangi karakterlerin kullanılabileceğini, hangilerinin kullanılamayacağını görebilir.

2 Beğeni

255**3 olasılık olduğunu nasıl hesapladınız? Ben permütasyon olarak düşündüm, yani 255 karakterin 3’lü permütasyonları.

P(255,3) = 16.386.810 çıkıyor

Permütasyonda aaa gibi bir değeri elde edemezsiniz. Şifrenin karakterleri birbirinden bağımsız olduğu için 256 karakter x 256 karakter x 256 karakter (16777216) oluyor (255’i yanlış düşündük, 0 da dahil çünkü)

1 Beğeni

Anladım. Ama 0 zaten ascii karakterlerinden değil mi? Dahil etmemize gerek var mıydı?

256 tane ascii karakter yok mu?

len(range(0, 256))
1 Beğeni

Şimdi dikkatli baktım da, evet varmış :smiley:

1 Beğeni

ascii nedir anlatırmısınz ?

https://python-istihza.yazbel.com/karakter_kodlama.html#ascii

  • Haklısınız, Amaç yabancı bir hesaba girmeye çalışır gibi şifrenizi bilmeden, sadece kullanıcı adı ile kendi parolanızı kırmak. Sayfa içindeki açıklamalar yazmıştım ama daha açıklayıcı olmalı belki…

  • Parola 3 haneli oluşturuluyor, ve işi kolaylaştırmak için karakter sayısını düşük tuttum. Büyük küçük harfler, sayılar birkaç da karakter. Sanırım 77 adet ve bu da 456533 ihtimal yapıyor.
    “ABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZabcçdefgğhiijklmnoöpqrsştuüvwxyz0123456789-_@”

  • Normalde kısa parola kolay kırılır elbette ama algoritma bunu engelliyor.
  • Sisteme en son kayıt yapmış üyeler hede1234, NinjaBaba ve anonymous. Sen hangisisin bilmiyorum dostum ama hızlıca bir ad yazıp unuttuysan bunlardan biridir.
    Şifre için de, parolamı unuttum butonunu denersin bir olmazsa :smile: :smile:

Ben kim olduğunu tahmin edebiliyorum :sweat_smile:

Bir de başarılı giriş yaptığımızı kod ile nasıl anlayacağız?

Artık ekranda “PAROLA HATALI” yazmıyorsa başarılı giriş yapmışız demektir sanırım

Her seferinde HTML içerisinde onu aramak zaman kaybı olur, şu an kötü bir internetle dakikada 3 bin deneme yapabiliyorum.

Evet bu işlem için iyi bir internet lazım, sunuculardaki gibi. HTML içinde aramak dışında, eğer başka bir sayfaya yönlendirme yaparsa da başarılı giriş yapmışız demektir.

Eğer bu yapılıyorsa tabii. Emin olmak için sormuştum.

1 Beğeni

doğru parolayı bulduğunuzda giris.php ye aktaracak sizi. kodunuza ekleyebilirsiniz. ben ittertol ve mechanize modüllerini kullanarak bir saldırı kodu yazmıştım.

verdiğim karakter setini kullanıyorsanız. 150 dakikada bütün ihtimalleri denemiş olursunuz.