Selamun Aleyküm Herkese İyi Forumlar
Konuya başlamadan önce şunu belirtmek isterim ki Kali Linux kullanımı ve araçları hakkında konular açmayı düşünüyorum. Konularım bittiği zaman Kali Linux'u tüm detayları ile kullanmayı öğreneceksiniz tabii ki antrenman yapmanız şart
Hadi o zaman ilk konumuz olan HASHCAT aracına geçelim...
Bu Konuda Öğrenecekleriniz:
1-)Hash nedir?
2-)Hashcat aracı nedir? Çalışma mantığı nasıldır?
3-)Rainbow Tables,Hybrid Attack,Dictionary Attacks,Mask Attacks ve Brute Force nedir?
4-)Bütün hashler kırılabilir mi? Kırılabilirse nasıl?
1-)HASH Nedir?
Diyelim ki hasbelkader bir veritabanına ulaştınız ve kullanıcı bilgilerini çekmeye başladınız. Kullanıcı adı 'Faruk' fakat şifre kısmında '5f4dcc3b5aa765d61d8327deb882cf99' tarzında bir çıktı aldınız. İşte bu (5f4dcc3b5aa765d61d8327deb882cf99) çıktıya hash denilmekte.
Peki ama neden böyle? Neden hashler kullanılıyor? Sebebi aslında basit dediğimiz kurguda kötü niyetli bir kişi veritabanına ulaştığı zaman 'şifreyi hemen öyle basitçe ele geçirmesin, biraz daha uğraşsın mantığında' saklı. Yani site yöneticisi şifreleri hash değerlerine dönüştürüp siteye giriş esnasında veri tabanında kayıtlı hash ile kullanıcının girdiği parolanın hash değeri karşılaştırılır ve eğer uyum varsa giriş sağlanır. Kapılar açıldı..
Peki her seferinde neden aynı hash çıkıyor? Bu hash değeri örneğin 'a' harfi sürekli aynı mıdır? Bir gün şifremi yanlış girdiğimi söyleyemez mi? Bunun cevabı da "HAYIR". Çünkü hash algoritması mantığında aslında hem şifrenizin uzunluğuna bakılmaksızın aynı uzunlukta hash değerleri çıkarması hem de her karakter için oluşturulan hash değeri bir ömür aynı kalması, değişmemesidir. Tabii ki hash algoritmalarınında türleri var.Bunlar ;
a-)MD5
b-)Sha1
c-)SHA256 ... diye uzar gider.
Her türde karakterlerin değerleri kendi içinde sabittir. Yani MD5 ile 'a' karakterinin değeri (0cc175b9c0f1b6a831c399e269772661) MD5 için her zaman aynıdır fakat sha1 için farklı bir 'a' hash değeri(86f7e437faa5a7fce15d1ddcb9eaeaea377667b8) vardır. Yani MD5'de 'a' karakterinin hash değeri bütün hash türlerinde aynı değere sahip değildir.MD5 için bu değer ömür boyu sabittir.
Dedik ki hash değerleri orjinal şifrenin uzunluğundan bağımsız olarak hep aynı uzunlukta çıktılar verir.Peki bunun sebebi nedir? Aslında buda ufak bir mantık yürütme ile anlaşılabilir. Diyelim ki 12 karakterli bir şifrenin hash değerinin uzunluğu 40 olsa ve 8 karakterli bir şifrenin de hash değeri 25 karakter uzunluğunda olsa; o zaman kötü niyetli saldırgan bulduğu hash değerinin uzunluğuna bağlı olarak bu şifrenin gerçekte kaç karakter olacağını bilir ve bu doğrultuda saldırılarını gerçekleştirirdi.
Kısmen de olsa saldırganın işini zorlaştırmayı düşünülmüş diyebiliriz.Bence anlaşılır olmuştur hash'in ne olduğu diye düşünüyorum.
2-) HASHCAT ARACI
Hashcat aracı da yukarıda bahsettiğimiz elimize geçen bu hashleri orjinal haline getirmeye yarayan çok kullanışlı ve bir o kadar gelişmiş bir araçtır. Kali Linux ile kurulu olarak gelmektedir. Kurulu olmayanlar için Kali deposunda mevcut indirme komutu:
Kod:
apt install hashcat
git clone https://github.com/hashcat/hashcat.git
ile kurulum yapabilirsiniz.
Hashcat aracı dediğimiz gibi çok gelişmiş bir araç içerisinde 300'den fazla hash türüne yönelik işlem yapabilme kabiliyetine sahiptir.Bu işlemleri Ekran Kartını(CPU) veya GPU kullanarak yapmaktadır. Yapılan araştırmalara göre AMD markalı cihazlarda diğerlerine göre 3 kat daha hızlı işlem yaptığı tespit edilmiştir.
Peki bu aracın çalışma mantığı nasıldır?
Bu aracın çalışma mantığı verdiğiniz hashler ile oluşturduğunuz wordlist içerisindeki kelimeleri hash türüne çevirerek eşleştirme yapar ve uygun olanları yani eşleşen değerleri sizlere bildirir. Böylece o hash değerinin hashlenmemiş haline ulaşılmış olur. Tabii işlem yapmak için öncelikle elimize geçen hash değerinin hangi tür ile hashlendiğini bilmemiz lazım. Bunun içinde Kali Linux ile kurulu gelen Hash-İdentifier aracı mevcut. Bu aracın kullanımı oldukça basit olduğundan anlatmayacağım.( Aracı çalıştırıp hash değerini kopyala-yapıştır + Enter = > Hash türü karşımızda )
Hash tipini belirledikten sonra hashcat aracına uygun komutlar vererek o türe yönelik işlemler başlatabilirz. Bu işlemler arasında Brute Force(Kaba Kuvvet) Attacks,Dictionary(Sözlük) Attacks,Rainbow Tables,Hybrid Attacks,Mask Attacks yer almaktadır. Önce bunları tanımlayalım daha sonra görsel olarak deneme yapmaya geçelim.
Brute Force =Brute Force işlemi aslında şifre kırmak için en garantici yöntemdir.Fakat en büyük dezavantajı klavyede gördüğünüz tüm karakterleri deneyebildiği için(a z-1..9-!....* gibi )çok fazla zaman gerektirmesidir. Yani normal bir bilgisayar ile bütün ihtimallerin denendiği 12 karakterli bir kırma işleminde aylarca beklemeniz gerekebilir Kısa uzunlukta denemelerde veya diğer yöntemlerden sonuç alınmaması durumunda en son başvurulacak yöntemdir
Dictionary Attacks= Sözlük saldırısı yapılmadan önce hedefe yönelik bir wordlist oluşturulur. Bu wordlist içine istenilen kelimeler,sayılar veya özel karakterler eklenebilir. (Fakat benim tavsiyem yine Kali Linux üzerinde kurulu olarak gelen Cewl aracından faydalanmak olacaktır. Bunu da bir başka konumda ele alacağım.)
Rainbow Attacks= Bu saldırı tipi Sözlük saldırısına benzemekte. Aralarındaki fark ise Sözlük saldırısında wordlist oluşturuyorduk ve hashcat bunları kendisi hash değerlerine dönüştürüp öyle eşleme yapıyordu fakat burada tam tersi bir durum mevcut. Wordlist oluştururken karşılarına hash değerlerini de ekliyoruz ki hashcat bununla uğraşmasın ve daha çabuk sonuç versin.Geliştiriciler ise bu saldırıları önlemek için salts ekleme işlemi yaparlar.Yani diyelimki şifremiz tht site bunu hashlerken tht1117! şeklinde ekleme yaparak hashler ki rainbow saldırısında saldırgan (salts olarak ne kullanıldığını bilmediğinden ) başarısız olsun ve güvenlik arttırılmış olsun.
Hybrid Attacks= Bu işlem Wordlist ve brute force saldırılarının harmanlanmış halidir diyebiliriz. Wordlist içindeki kelimelerin başlarına ve sonlarına sayılar eklenerek denemeler yapılmasıdır. Günümüzde çoğu kişinin şifresinin başında veya sonunda sayılar koymasını düşünürsek gayet mantıklı bir saldırı türüdür dememek ayıp olur
Mask Attacks= Genel olarak normal kullanıcıların şifrelerini kırmak için kullanmaktayım. Çünkü bu saldırı tipinin mantığı şöyle; şifrenin sonuna rakamlar ekle veya ilk harfi büyük yap gibi seçenekler belirleyebiliyoruz. Sıradan kullanıcılarda zaten böyle şifrelemez mi?
Kısaca atak tipleri ve mantıkları bu şekilde. Şimdi en sevdiğim soruya gelelim;
4-) Bütün hashler kırılabilir mi?
Evet arkadaşlar bütün hashler kırılabilir. Tabii bunun süresi 1 dakika da olabilir 1 ay da 1 yılda ama kırılır. Peki ama nasıl kırılı? Yukarda bahsetmiştik brute force diye bir işlem var diye. Bu brute force içinde sayısız karakter denemesi yapabiliyoruz. İşte karakter uzunluğuna göre CPU gücüne göre süreler uzayıp kısalacaktır.(Çok nadiren bazı güvenlik önlemleri ile kırılması çok ama çok zor duruma getirilebilir veya eksik değer bırakılarak doğru şifreyi bulmanız engellenebilir ama bulduğunuz hash yine de kırılacaktır.)
Hadi şimdi bir deneme yapalım bir hash değeri alalım. Ben 123456 nın MD5 türündeki hash değerini alacam ve buna wordlist ile denemeler gerçekleştirecem. Sonra da brute force deneyecez bakalım nasıl sonuçlar bulacağız.
İlk önce hash değerimiz (123456 nın hash değerini) bir txt içine alıp masaüstüne kaydediyorum.
Ardından bir wordlist oluşturuyorum ve doğru şifreyide aralarına ekliyorum.
Ardından " hashcat -h " komutu ile aracın özelliklerine bakıyoruz.
Dediğimiz gibi 300 den fazla hash tipi arasından bizimkini buluyoruz ve koduna bakıyoruz.
Saldırı tipimi belirliyorum a=0 ben yanlışlıkla 3 vermişim bf komutu o ama wordlist belirttiğim için zaten wordlistte denemeler yapıyor.Bu kısımda charset işimize yaramıyor çünkü wordlist ile saldırı yapıyoruz.O kısım birazdan BruteForce da işimize yarayacak.
Ardından
Kod:
hashcat -m 0 -a 0 hash.txt wordlist.txt -o /root/Masaüstü/sonuc.txt
komutu ile işlemi başlatıyoruz.
Ve gördüğünüz gibi 5 saniyede sonucu verdi Hem seri hemde kullanımı oldukça basit değil mi
Hadi şimdi Brute Force deneyelim.Bu sefer "abcde" için hash değeri alıp(MD5) bunu brute force ile kırmayı deneyelim bakalım.
Yine masaüstüne hash.txt oluşturup içine hash değerimizi atıyoruz.Ardından yine özelliklere bakacaz.
Kod:
hashcat -h
Hash tipimi belirlemem lazım m 0(MD5) ,
Saldırı türü -a 3 brute force için.
Ayrıca karakterler kısmında brute force için hangisini kullanmak istediğini belirtebilirsiniz.Gayet anlaşılır sanırım bu kısım. Kullanımı ise örneğin ?l = 1 karakterli küçük harflerin hepsini dene ?l?l =2 karakterli küçük harflerin alayını dene şeklinde ordan işinize yarayanı belirleyip kaç karakterli olduğunu biliyorsanız ona göre verirsiniz.Bilmiyorsanız eğer tüm ihtimallerin olduğu ?a şeklinde teker teker deneyerek gideceksiniz ta ki sonuç çıkana kadar her bittiğinde 1 karakter daha arttırarak deneme yapacaksınız ve böylece kırılmayacak hiçbir hash olmadığı mantığını doğrulamış olduk
Ve şimdi komutumuzu yazalım;
Kod:
hashcat -m 0 -a 3 hash.txt ?l?l?l?l?l
Ve 4 saniye gibi bir sürede 5 karakterli şifremizi çözmüş olduk.
Hashcat aracının kullanımını görmüş olduk arkadaşlar diğer yazımda " John ve John The Ripper " araçlarından bahsedecem böylece hem dosya şifreleri hem de hash kırma olayları tam olarak aklınıza oturacaktır diye düşünüyorum.
Lütfen Aklınıza Takılan Soruları Çekinmeden Sorun
Herkese İyi Forumlar Dostlar...
Lütfen Aklınıza Takılan Soruları Çekinmeden Sorun
Herkese İyi Forumlar Dostlar...
Son düzenleme: