Brute Force Attack Nasıl Yapılır
DVWA web uygulamasındaki Brute Force saldırısını deneme sayfasında bir login ekranı sizi karşılayacaktır.
[!] Uyarı:
Brute force tekniğiyle şifre kırma saldırılarında limitler programa ne kadar yukarı değerlerde verilirse şifre kırma süresi de türetilecek bu kombinasyonlar adedince uzayacaktır. Dolayısıyla DVWA'da admin kullanıcısı şifresi password olduğundan ve bu şifre 8 karakterli olduğundan verilecek limitleri ne kadar küçültürseniz küçültün şifreyi kısa sürede kırma deneyimi elde edemeyeceksiniz. Bu nedenle işleyişi anlamak adına şimdilik DVWA'nın bir başka saldırıyı konu edindiği bir sayfasındaki (CSRF sayfasındaki) şifre değiştirme ekranından şifrenizi daha basit bir şifreyle değiştirin. Bu sayede brute force ile şifre kırma saldırısı yaptığınızda şifreyi kırma süreniz ciddi oranda düşecektir. Örneğin bu derste biz, şifremizi 4 karakter uzunluğunda ve alfabedeki harflerden oluşan "saat" yapalım (not: bu işlem sonrası DVWA'dan çıkış yapıp tekrar login oldurken admin hesabına saat şifresiyle giriş yapabildiğinizi görebilirsiniz).
|
| |
| 1 | 2 | |
3 |
Dersin hedefi başlığında da belirtildiği gibi hedefimiz admin kullanıcısının şifresini kırmaktır. Bu iş için BurpSuite yazılımını ve saldırı esnasında kullanacağınız tarayıcıyı yapılandırmanız gerekmektedir. Bunun için BurpSuite'i başlatın ve Proxy sekmesine geçiş yapın.
Sonra Options sekmesine tıklayın.
Ardından Edit butonuna tıklayın ve aşağıdaki resimdeki gibi ayarlamaları yapın.
Ardından BurpSuite'in penceresinden biraz aşağıya kayın ve aşağıdaki resimden de görülebileceği gibi Intercept Client To Server Message'a tick işareti koyulu olduğundan emin olun. Bu tick işareti sizin login ekranında deneme mahiyetinde yapacağınız ilk giriş teşebbüsünde talebinizi sunucuya gitmeden BurpSuite'in yakalamasını sağlayacaktır. Ardından BurpSuite'e vereceğimiz limitler doğrultusunda bu ilk giriş teşebbüsü türetilen her olası şifre (kelime) ile denenmek üzere tekrarlanacaktır.
Şimdi Firefox'u (veya başka bir tarayıcıyı) açın ve aşağıdaki adımları uygulayın.
Artık Brute Force için hazırsınız. DVWA'nın Brute Force ders ekranına gelin. Login ekranına rastgele bir şeyler girin. Mesela kullanıcı adı için deneme ve şifre için de deneme girin:
Login butonuna tıkladığınız an BurpSuite bu isteğinizi sunucuya giderken yakalayacaktır ve brute force saldırısı için gerekli limitleri ekleyebilmeniz adına bekletecektir. BurpSuite penceresine gelin ve Proxy > Intercept sekmelerine tıklayın.
Yukarıdaki pencerede yer alan kodların bulunduğu alana sağ tıklayın ve Send To Intruder seçeneğine tıklayın. Bu işlem sizi aşağıdaki resimde görünen sekmeye yönlendirecektir:
Yukarıdaki resmin sağ tarafında bulunan Clear $ butonuna tıklayın. Bu işlem, BurpSuite'in brute force uygulamak adına otomatik olarak seçtiği tüm parametreleri seçimli halden kaldırmak içindir. Biz, bu $ seçimini sadece şifre parametresine yapacağız. Çünkü şifre kırmaya (otomatize şifre denemeleri yapmaya) çalışıyoruz. Bunun için aşağıda yer alan resimdeki gibi deneme yazısını seçin ve sağ taraftaki Add $ butonuna tıklayın.
Böylelikle brute force saldırısının üzerinde çalışacağı bölge belirlenmiş olur. Sonra kullanıcı adı tutan parametreye ise elle admin girelim. Çünkü kullanıcı adının admin olduğunu bildiğimizi varsayıyoruz. Not: Eğer istersek şifreyle beraber kullanıcı adına da brute force yapabiliriz.
Ardından bulunduğunuz sekme olan Positions'ın yanındaki Payloads sekmesine gelin.
Brute Forcer (Brute Force yapıcı) saldırı türünü seçin.
Daha sonra brute force saldırısı için verilmesi gereken kriterleri belirleyin.
Biz burada kriter olarak a'dan z'ye tüm küçük harfler karakter setini, minimum 1 karakter uzunluğunu ve maksimum 4 karakter uzunluğunu belirledik.
Daha sonra Options sekmesine geçin.
Şimdi geriye son bir şey kaldı. O da yazılımın yapacağı şifre denemelerinde hangisinde başarılı olunduğunu bize sunacak bir işaret gerekmekte. Bu işareti ise DVWA'nın login ekranına normalde elle gireceğimiz rastgele kullanıcı adı ve şifre sonrası ekranın vermekte olduğu şu uyarıyı kullanarak belirleyeceğiz:
Görüldüğü üzere tarayıcı arayüzünde normal bir şekilde elle kullanıcı adı & şifre girildiğinde ve yanlış olduğunda bir bildirim ekrana gelmektedir. Ne zaman kullanıcı adı ve şifre doğru olursa o zaman bu hata bildirimi gelmeyecektir. İşte bu etki tepkiyi şimdi yazılıma verelim ve yazılım her şifre denemesinde tepki olarak bu hatayı alıyorsa ekranımıza bu şifre denemesinde hata aldım diyebilsin.
Şimdi BurpSuite'e tekrar dönün ve bulunduğunuz Options sekmesinin aşağılarına pencereyi kaydırın. Orada Grep - Match adlı bir bölüm vardır. Oradaki Clear butonuna tıklayın.
Şimdi BurpSuite'e tekrar dönün ve bulunduğunuz Options sekmesinin aşağılarına pencereyi kaydırın. Orada Grep - Match adlı bir bölüm vardır. Oradaki Clear butonuna tıklayın.
Sildiklerimizin yerine şimdi DVWA'nın hata bildirimini koyacağız. Bunun için hata bildirimindeki tüm kelimeleri cümle olarak girmenize gerek yoktur. Sadece hata durumunda beliren spesifik bir kelimeyi - eğer şifre doğru olduğunda, yani oturum açıldığında o kelime sayfanın herhangi bir yerinde yoksa o kelimeyi - kullanabilirsiniz. Hata bildirimi şuydu:
Username and/or password is incorrect.
Bu cümledeki incorrect kelimesini yazılıma ekleyelim. Bunun için aşağıdaki resimdeki gibi metin kutusuna incorrect kelimesini girin ve Add butonuna tıklayın.
Username and/or password is incorrect.
Bu cümledeki incorrect kelimesini yazılıma ekleyelim. Bunun için aşağıdaki resimdeki gibi metin kutusuna incorrect kelimesini girin ve Add butonuna tıklayın.
Hepsi bu kadar. Artık yazılım, belirttiğiniz kriterler ölçüsünde türetebileceği tüm kelimeleri (şifreleri) login sayfasına deneyecektir ve denediği login bilgilerinin yanlış olup olmadığı konusunda bizi bilgilendirecektir. Bulunduğunuz sekmenin en yukarısına pencereyi kaydırın ve Start Attack butonuna tıklayarak Brute Force saldırısını başlatın.
Ekrana yeni bir pencere gelecektir ve size anlık olarak denediği kullanıcı adı ve şifre ikililerini gösterecektir. Bu ikililerin yanlış olduğunu penceredeki incorrect sütunundaki tick işaretlerinden anlayabilirsiniz. Eğer incorrect sütununda tick işareti varsa girilen kullanıcı bilgileri sonucu uygulamadan tepki olarak incorrect bilgisi geldi anlamına gelir. Yani demek ki denenen kullanıcı bilgileri yanlışmış. Eğer incorrect sütununda tick işareti yoksa bu durumda denenen kullanıcı bilgisi sonucu incorrect kelimesi gelmemiş demektir. Yani denenen kullanıcı bilgileri doğru demektir. Böylece admin kullanıcısının şifresini elde etmiş (kırmış) olursunuz.
Saldırı başlar
Request sütununa basılarak denenen en son
şifre teşebbüsleri anlık olarak ekranda akar
Saldırı bittiğinde incorrect sütununa iki kez
tıklanır ve tick'i olmayan satır en üste gelir.
Böylece doğru şifre bulunmuş olur
Görüldüğü üzere şifrenin "saat" string'i olduğu tespiti yapılabilmiştir. Dilerseniz DVWA'nın Brute Force ekranındaki login ekranına BurpSuite'in tespit ettiği bilgileri girerek doğruluğunu test edebilirsiniz.
Dictionary Attack Nasıl Yapılır
BurpSuite yazılımı ile bu sefer bir diğer şifre kırma saldırı türü olan Dictionary Attack (Sözlük Saldırısı) yapalım. Aşağıda DVWA uygulamasının Brute Force bölümündeki login ekranını yine görüntülemektesiniz:
Dictionary Attack Nasıl Yapılır
BurpSuite yazılımı ile bu sefer bir diğer şifre kırma saldırı türü olan Dictionary Attack (Sözlük Saldırısı) yapalım. Aşağıda DVWA uygulamasının Brute Force bölümündeki login ekranını yine görüntülemektesiniz:
[!] Uyarı:
Brute force tekniğiyle şifre kırma saldırısında (yukarıda bir önceki başlıkta) yazılım şifre kırma işlemini çabuk yapabilsin diye DVWA admin hesabı şifresi değiştirilmişti. Şu an ki admin hesabı şifresi "saat"tir. Dolayısıyla aynı şifre üzerinden gidilecektir. Şayet şifreyi eski haline döndürmek ("password" yapmak) isterseniz aşağıdaki 1,2 ve 3 nolu resimlerde yer alan adımları takip edebilirsiniz.
|
| |
| 1 | 2 | |
3 |
Dersin hedefi başlığında da belirtildiği gibi hedefiniz admin kullanıcısının şifresini kırmaktır. Bunun için devasa satır sayısına sahip (devasa sayıda olası şifreye sahip) .txt sözlük dosyası kullanmak yerine hemen çözüme ulaşabileceğimiz basit bir sözlük dosyası oluşturalım. Bu sözlük dosyası olası şifreleri içeren bir txt dosyasından ibaret olduğu için içeriğinin şu şekilde olduğunu varsayalım:
Kullanıcı adı olarak admin kullanıcısını hedef almıştık. Fakat biraz kapsamı genişletmek adına birden fazla kullanıcı adının yer aldığı bir sözlük dosyası kullanalım. Böylece her bir kullanıcı adı için yukarıdaki tüm şifreler birer birer denensin:
Yukarıdaki olası kullanıcı adlarını barındıran sözlük dosyasına dikkat ederseniz çoğu, web sahipleri tarafından sıklıkla kullanılan kullanıcı adlarından seçilmiştir. Hakeza şifreleri barındıran sözlük dosyası da o şekildedir. Sözlük dosyalarımızı oluşturduğumuza göre şimdi BurpSuite adlı yazılıma geçiş yapalım. Öncelikle BurpSuite yazılımını ve saldırı esnasında kullanılacak tarayıcı yapılandırmasının yapılması gerekmektedir. Bunun için BurpSuite'i başlatın ve Proxy sekmesine geçiş yapın.
Sonra Options sekmesine tıklayın.
Ardından Edit butonuna tıklayın ve aşağıdaki resimdeki gibi ayarlamaları yapın.
Ardından BurpSuite'in penceresinden biraz aşağıya kayın ve aşağıdaki resimden de görülebileceği gibi Intercept Client To Server Message'a tick işareti koyulu olduğundan emin olun. Bu tick işareti sizin login ekranında deneme mahiyetinde yapacağınız ilk giriş teşebbüsünde talebinizi sunucuya gitmeden BurpSuite'in yakalamasını sağlayacaktır. Ardından BurpSuite'in içerisinden sözlük dosyalarını ekleyeceğiz ve BurpSuite yaptığımız ilk giriş teşebbüsünü sözlük dosyalarınındaki tüm kelimeleri sırasıyla deneyecek kadar tekrarlayacaktır.
Şimdi Firefox'u (veya başka bir tarayıcıyı) açın ve aşağıdaki adımları uygulayın.
Artık Dictionary Attack için hazırsınız. DVWA'nın Brute Force ders ekranına gelin. Login ekranına rastgele bir şeyler girin. Mesela kullanıcı adı için deneme ve şifre için de deneme girin:
Login butonuna tıkladığınız an BurpSuite bu isteğinizi sunucuya giderken yakalayacaktır ve sözlük dosyalarını eklemek ve kuralları belirlemek için bekletecektir. BurpSuite penceresine gelin ve Proxy > Intercept sekmelerine tıklayın.
Yukarıdaki pencerede yer alan kodların bulunduğu alana sağ tıklayın ve Send To Intruder seçeneğine tıklayın. Bu işlem sizi aşağıdaki resimde görünen sekmeye yönlendirecektir:
Yukarıdaki resmin sağ tarafında bulunan Clear $ butonuna tıklayın. Bu işlem BurpSuite'in brute force için seçtiği parametreleri seçimli halden kaldıracaktır. Bu seçimi elimizle yapacağız. Clear $ butonuna tıkladıktan sonra username parametresine $ sembolünü koyacağız. Bunun için aşağıdaki resimdeki gibi deneme yazısını seçin ve sağ taraftaki Add $ butonuna tıklayın.
Aynı işlemi password parametresinin içerdiği deneme yazısı için de yapın. Yani password'ün yanındaki denemeyi farenizle seçin ve Add $ butonuna tıklayın.
Böylelikle sözlük saldırısının üzerine çalışacağı bölgeleri belirlemiş olduk.
Hatırlarsanız en başta login ekranına kullanıcı adı olarak deneme, şifre olarak da deneme girmiştik. İşte bu metin kutularını $ işareti ile kod üzerinde belirledik ve şimdi bu belirlediğimiz noktalara sözlükleri denettireceğiz. Bulunduğunuz BurpSuite penceresindeki Sniper'ı Cluster Bomb olarak değiştirin.
Not: Sniper yerine Cluster Bomb seçiyoruz, çünkü artık bir parametreye değil, iki parametreye saldırıyı uygulayacağız. Bir parametre için Sniper (Nişancı) seçeneğini kullanmıştık. İki ve daha fazlası için Cluster Bomb (Küme Bombardımanı) seçeneği kullanılır. Bu tamamen Burpsuite jargonudur. Saldırı dünyasının jargonu değildir.
Not: Sniper yerine Cluster Bomb seçiyoruz, çünkü artık bir parametreye değil, iki parametreye saldırıyı uygulayacağız. Bir parametre için Sniper (Nişancı) seçeneğini kullanmıştık. İki ve daha fazlası için Cluster Bomb (Küme Bombardımanı) seçeneği kullanılır. Bu tamamen Burpsuite jargonudur. Saldırı dünyasının jargonu değildir.
Ardından bulunduğunuz sekme olan Positions'ın yanındaki Payloads sekmesine gelin. Load butonuna tıklayın ve kullanıcı adları için oluşturduğunuz sözlük dosyasını ekleyin.
Şimdi ikinci metin kutusuna denenecek şifrelerin yer aldığı sözlük dosyasını eklemek için Payload Set'in yanındaki 1'i 2 olarak değiştirin, ardından tekrar Load butonuna tıklayın ve şifreler için oluşturduğunuz sözlük dosyasını ekleyin.
Sözlük dosyalarının deneneceği metin kutularını kod bazında seçtik, sözlük dosyalarını da ekledik. Geriye bir şey kaldı. Şimdi geriye son bir şey kaldı. O da yazılımın yapacağı şifre denemelerinde hangisinde başarılı olunduğunu bize sunacak bir işaret gerekmekte. Bu işareti ise DVWA'nın login ekranına normalde elle gireceğimiz rasgele kullanıcı adı ve şifre sonrası ekranın vermekte olduğu şu uyarıyı kullanarak belirleyeceğiz:
Görüldüğü üzere tarayıcı arayüzünde normal bir şekilde elle kullanıcı adı & şifre girildiğinde ve yanlış olduğunda bir bildirim ekrana gelmektedir. Ne zaman kullanıcı adı ve şifre doğru olursa o zaman bu hata bildirimi gelmeyecektir. İşte bu etki tepkiyi şimdi yazılıma verelim ve yazılım her şifre denemesinde tepki olarak bu hatayı alıyorsa ekranımıza bu şifre denemesinde hata aldım diyebilsin.
Şimdi BurpSuite'e tekrar dönün ve bulunduğunuz Options sekmesinin aşağılarına pencereyi kaydırın. Orada Grep - Match adlı bir bölüm vardır. Oradaki Clear butonuna tıklayın.
Şimdi BurpSuite'e tekrar dönün ve bulunduğunuz Options sekmesinin aşağılarına pencereyi kaydırın. Orada Grep - Match adlı bir bölüm vardır. Oradaki Clear butonuna tıklayın.
Sildiklerimizin yerine şimdi DVWA'nın hata bildirimini koyacağız. Bunun için hata bildirimindeki tüm kelimeleri cümle olarak girmenize gerek yoktur. Sadece hata durumunda beliren spesifik bir kelimeyi - eğer şifre doğru olduğunda, yani oturum açıldığında o kelime sayfanın herhangi bir yerinde yoksa o kelimeyi - kullanabilirsiniz. Hata bildirimi şuydu:
Username and/or password is incorrect.
Bu cümledeki incorrect kelimesini yazılıma ekleyelim. Bunun için aşağıdaki resimdeki gibi metin kutusuna incorrect kelimesini girin ve Add butonuna tıklayın.
Username and/or password is incorrect.
Bu cümledeki incorrect kelimesini yazılıma ekleyelim. Bunun için aşağıdaki resimdeki gibi metin kutusuna incorrect kelimesini girin ve Add butonuna tıklayın.
İşlemler bitmiştir. Artık yazılım, koyduğunuz dosyalardaki olası kullanıcı adılarını ve olası şifreleri sırayla eşleyip login sayfasına deneyecektir ve denediği login bilgilerinin yanlış olup olmadığı konusunda bizi bilgilendirecektir. Bulunduğunuz sekmenin en yukarısına pencereyi kaydırın ve Start Attack butonuna tıklayarak Brute Force saldırısını başlatın.
Ekrana yeni bir pencere gelecektir ve size denediği kullanıcı adı ve şifre ikililerini gösterecektir. Bu ikililerin yanlış olduğunu penceredeki incorrect sütunundaki tick işaretlerinden anlayabilirsiniz. Eğer incorrect sütununda tick işareti varsa girilen kullanıcı bilgileri sonucu uygulamadan tepki olarak incorrect bilgisi geldi anlamına gelir. Yani demek ki denenen kullanıcı bilgileri yanlışmış. Eğer incorrect sütununda tick işareti yoksa bu durumda denenen kullanıcı bilgisi sonucu incorrect kelimesi gelmemiş demektir. Yani denenen kullanıcı bilgileri doğru demektir. Böylece DVWA uygulamasında kullanıcı adı ve aynı zamanda şifresini bilmediğiniz bir hesabı elde edebilmiş olursunuz.
Görüldüğü üzere şifrenin "saat" string'i olduğu tespiti yapılabilmiştir. Dilerseniz DVWA'nın Brute Force ekranındaki login ekranına BurpSuite'in tespit ettiği bilgileri girerek doğruluğunu test edebilirsiniz.
NOT: Eğer kullanıcı adı olarak admin ve şifre olarak password ikilisinin denenme sırası ortalarda bir yerde yer alsaydı bu durumda onların bulunduğu konumdan sonraki bütün Incorrect sütununun satırlarında tick işareti olmayacaktır. Bu tüm sonraki denemelerin başarılı olduğu anlamına gelmiyor. Yanıltmasın. İlk tick işaretinin olmadığı satır ile DVWA'da oturum açıldığından sonraki denemeler oturum açıkken denendiği için sanki başarılıymış gibi bir izlenim vermektedir. Yani ilk tick işaretinin olmadığı satır asıl doğru bilgilerin yer aldığı satırdır.
NOT: Eğer kullanıcı adı olarak admin ve şifre olarak password ikilisinin denenme sırası ortalarda bir yerde yer alsaydı bu durumda onların bulunduğu konumdan sonraki bütün Incorrect sütununun satırlarında tick işareti olmayacaktır. Bu tüm sonraki denemelerin başarılı olduğu anlamına gelmiyor. Yanıltmasın. İlk tick işaretinin olmadığı satır ile DVWA'da oturum açıldığından sonraki denemeler oturum açıkken denendiği için sanki başarılıymış gibi bir izlenim vermektedir. Yani ilk tick işaretinin olmadığı satır asıl doğru bilgilerin yer aldığı satırdır.
Sonuç
Bu derste bir login ekranına Brute Force'umsu bir tekniğe sahip Dictionary Attack yaparak admin'in şifresini kırmış olduk. Bu dersin anlaşılması için basit ve kısa sözlük dosyaları kullanılmıştır. Fakat internette türkçe, ingilizce kapsamlı sözlük dosyaları bulunabilir. Bu sözlük dosyaları binlerce, onbinlerce, yüzbinlerce ve milyonlarca satırdan oluşabilmektedir. Eğer dilerseniz kendi sözlük dosyanızı da oluşturabilirsiniz. Bunun için tek tek elle bir şeyler yazmanız da gerekmiyor. Bir tool'a komut vererek istekleriniz doğrultusunda sözlük dosyası ürettirebilirsiniz ki bu sonraki başlığın konusudur.
Ek olarak
Kendi sözlük dosyanızı otomatize bir şekilde kendiniz oluşturmak için Crunch adlı tool'u kullanabilirisiniz. Bu tool'u kullanabilmek için bilgisayarınıza indirip kurmayı seçebilir ya da Virtual Machine / Virtualbox gibi bir sanallaştırıcı program kurup içine Kali adlı linux dağıtımını kurarak kullanmayı da seçebilirsiniz. İkinci seçimin şöyle bir avantajı vardır: Kali Linux işletim sistemi crunch, burpsuite ve daha onlarca siber güvenlik tool'unu bünyesinde hazır kurulu olarak barındırmaktadır. Dolayısıyla bu şekilde büyük bir yükten kurtulmuş olursunuz. Neyse, şimdi derse dönelim. Crunch tool'unun kullanımı şu şekildedir:
crunch <min> <max> <karakterseti> -t <desen> -o <sözlükdosyası.txt>
Diyelim ki 10 haneli 911 sayısıyla başlayan ve 0,1,2,3,4,5,6,7,8,9 sayılarının kullanıldığı olabilecek tüm sayıları sozluk.txt dosyasına kaydetmek isteyelim. Bu durumda aşağıdaki komutu komut ekranına girmemiz gerekir:
crunch <min> <max> <karakterseti> -t <desen> -o <sözlükdosyası.txt>
Diyelim ki 10 haneli 911 sayısıyla başlayan ve 0,1,2,3,4,5,6,7,8,9 sayılarının kullanıldığı olabilecek tüm sayıları sozluk.txt dosyasına kaydetmek isteyelim. Bu durumda aşağıdaki komutu komut ekranına girmemiz gerekir:
cruch 10 10 0123456789 -t 911@@@@@@@ -o sozluk.txt |
1
[/td]Böylece sözlük dosyamız oluşturulur:
Komut ekranı bize 10 milyon satırlı bir sözlük dosyası oluşturduğunu söylemektedir. Aşağıda bu sözlük dosyasının içeriğini görmektesiniz.
Sözlük dosyasına bakacak olursanız sırayla tüm kombinasyonların oluşturulduğunu görebilirsiniz. İsterseniz sayı karakterleri yerine harfler kullanabilir ve aynı zamanda şu şu karakterle başlasın ya da bitsin gibi kurallar koymadan olabilecek tüm kombinasyonlardan bir sözlük dosyası oluşturabilirsiniz. Hatta sadece 10 karakter uzunluğunda olsun şeklinde değil de 1'den 10'a kadar olsun dahi diyebilirsiniz. Fakat baştan söylüyeyim: Eğer garantici olmaya çalışırsanız bilgisayarınızı kapatmadan yıllarca açık vaziyette tutmanıza sebep olabilir.
Benden söylemesi.
Oluşturacağınız sözlük dosyasını BurpSuite'e ekleyerek daha etkili şifre kırma teşebbüslerinde bulunabilirsiniz.
Yararlanılan Kaynak
Oluşturacağınız sözlük dosyasını BurpSuite'e ekleyerek daha etkili şifre kırma teşebbüslerinde bulunabilirsiniz.
Yararlanılan Kaynak
Son düzenleme:

