HASH NEDİR?


Hash fonksiyonları(MD5, SHA-1, SHA-256) ile değişken uzunluklu verilerden belirli bir uzunluğa sahip çıktı üretilir. Bu çıktı girdiye özel olarak oluşturulur. Yani aynı girdiyle hep aynı çıktı oluşur. Hash fonksiyonları matematiksel olarak geri döndürülemezdir.

Md5 için girdiğimiz veriye göre oluşan değerler;

hashcat

Kullanım amaçlarından biri; web uygulamalarında veritabanına yapılabilecek saldırılara önlem amaçlı kullanıcıların parolaları clear-text şeklinde tutulmaz. Bunun yerine kullanıcıların parolaları hashlenerek veritabanına kaydedilir. Kullanıcı giriş yaparken alınan parolası da hashlenerek veritabanındaki hash karşılığıyla kontrol edilerek doğrulama işlemi yapılır. Veritabanı hacklense dahi parolaların açığa çıkması bu şekilde engellenir.

Hash fonksiyonu tek yönlü olduğu için hash değeri geriye döndürülemez. İşte bu noktada hackerlar hash değerlerini kırmak için brute-force yöntemi ile kırmaya çalışırlar. Hashcat gibi araçlar bu işi otomatize hale getirmek için kullanılır.

 

HASH NASIL KIRILIR?

En basit yollardan biri olan parolayı tahmin edip hashini alıp karşılaştırma yapmak yöntemlerden biridir. Dictionary ve brute-force saldırıları parolaları tahmin etmenin en yaygın yollarıdır. Brute-force çalışma mantığı çok karmaşık olmayıp verilen aralığa göre tüm kombinasyonları deneme şeklinde gerçekleştirilir. Buda demek oluyor ki brute-force için oldukça zaman gerekir. Dictionary saldırısında ise wordlistle gerçekleştirilir. Wordlistte parolalar, kelimeler bulunur. Bu wordlistin hashleri alınarak karşılaştırılır. Başarılı olmak wordlistle doğru orantılıdır. Ayrıca brute-force ve dictionary gibi saldırıların net bir çözümü yoktur.

Hash kırmak için kullanılan diğer yaklaşımlarda şunlardır.

Rainbow Tables: Dictionary saldırısına benzerdir. Elimizdeki listede parolaların hash karşılığı bulunur. Farkı dictionary saldırısındaki gibi wordlist hash işlemine sokulmaz.

Hybrid Attack: Wordlist ve brute-force saldırılarının birlikte kullanıldığı halidir. Wordlistteki kelimelerin sonuna veya başına sayılarak eklenerek yapılır.

Hashcat Kali Linux dağıtımında kurulu gelmektedir.

hashcat –help

hashcat

Şimdide hashcat kullanarak Dictionary saldırısını gerçekleştireceğiz.

Öncelikle parola oluşturup hash değerlerini alıyoruz.

hashcat

-n yeni satıra geçmesini sağlar.
md5sum ile çıktısının MD5 hashi alınır.
tr -d “ -” boşlukları ve – karakterini siler.

Çıktı;

hashcat

Kali linux kullanabileceğimiz wordlistlere gözatıyoruz.

locate wordlists

hashcat

Buradaki /usr/share/wordlists/rockyou.txt.gz`yi kullanacağız. rockyou.txt’ yi Desktop’a kopyalıyorum.

Son adım olarak hashcat ile prisma.txt’de bulunan değerleri kırmaya çalışıyoruz.

hashcat -m 0 -a 0 -o cozulmus.txt prisma.txt /root/Desktop/rockyou.txt –force

-m 0 parametresi ile kullanılan hash türü seçilir. (md5)

hashcat

-m

hashcat

0

-a 0 parametresi ile saldırı tipi belirlenilir. (dictionary attack)

hashcat

-o parametresi ile çıktının nereye yazılacağı belirlenir. (cozulmus.txt)
–force Bu parametresinin kullanılmasının sebebi hashcatin GPU kullanıyor olmasıdır. Sanal makinede kurulu olan Kali hashtcat kullanırken GPU desteklemiyor.

hashcat

cozulmus.txt yi görünlediğimizde ise kırabildiklerinin hashlerini bize gösteriyor.

hashcat

Basit parolaların hashlerinin kırılması çok zor değildir. Karmaşık parolalar içinde yukarıda belirttiğimiz gibi kullandığınız wordlist büyük önem taşımaktadır. Bu yüzden karmaşık ve özgün parolalar kullanmak önemlidir.

Kullanılan bazı parametreler;
-threads veya –n Multi-threaded işlemciler için kullanılır.
–remove Kırılan parolaların tekrar işleme sokulup zaman kaybedilmemesi için kullanılır.
–stdout Taranan tüm verileri ve hashleri ekrana yazar.

Yorumlar