Hashcat Nedir?
Hashcat, hashlerin(özetlerin) kırılmasını sağlayan ve açık kaynak olarak geliştirilen araçtır. CPU ve GPU desteği bulunur. Ayrıca Linux, Windows ve macOS gibi işletim sitemlerinde çalıştırabilir. Hashcat içeresinde manual olarak seçebileceğimiz 5 atak tipi bulunur. Bunlar;
- Dictionary attack
- Combinator attack
- Brute-force attack and Mask attack
- Hybrid attack
- Association attack
Yazımız da hashcat dictionary ve Brute-force & Mask attack konularına değineceğim.
Hashcat Kurulumu
Linux dağıtımlarında aşağıda ki kurabilirsiniz.
sudo apt install hashcat
Hashcat hızlı bir araç ama ne yazık ki hash türünü henüz tanımlayamıyor. Yani bir crack hash yaparken kırdığımız hash türünü parametre olarak vermemiz gerekiyor.
Hash türünü tespit etmek ya da tanımlamak
Github üzerinde çok fazla araç bulunmaktadır. Hash identifier olarak aratabilirsiniz. Bu araçlar %100 doğrulukta olmasa da genel olarak doğru sonuçlarda hash türünü belirtebilir. Sizin yapmanız sadece hash değerini vermek ve gelen sonucu okumaktır.
Name-That-Hash Kullanımı
Ben nth kullanıyorum. Kurulumu ve kullanımı oldukça basit olan bir araçtır. Python ile geliştirildiği için aşağıda ki gibi kurulabilir.
pip3 install name-that-hash
ya da
pip install name-that-hash
Name-That-Hash ile hash türünü tespit etmek
nth --text C4318372F98F4C46ED3A32C16EE4D7A76C832886D887631C0294B3314F34EDF1
Yüksek ihtimalle sha-256 olduğunu gösteriyor ki bu doğrudur. Kendim sha-256 genaretor kullanarak bu özeti oluşturmuştum.
Hashcat için önemli parametreler
Aşağıda ki yardım komutu ile ilgili açıklamaları görebiliriz. Hedeflediğim yazıdan dolayı Straight(Dictionary) ve Brute-force saldıların örneklerini göstereceğim.
hashcat --help
# | Mode
===+======
0 | Straight
1 | Combination
3 | Brute-force
6 | Hybrid Wordlist + Mask
7 | Hybrid Mask + Wordlist
Bu ataklardan seçtiğimiz mod bu şekilde belirtilir. -a 0 olacaktır. Yani atak modunu Straight seçmiş oluruz.
a parametresi atak modu içindir.
Hash modları
Verdiğimiz hash türünü belirttiğimiz hash kodudur. Örnek vermek gerekirse, SHA2-256 için -m 1400 verilir. Bu hash kodlarını –help ile ya da https://hashcat.net/wiki/doku.php?id=example_hashes adresinde bulabilirsiniz. Burada bilmemiz gereken -m parametresinin hash türünü alır.
Hashcat Dictiornay Saldırısı
Ufak bir hatırlatmak gerekirse, wordlist üzerinde bulunan tüm kelimeleri deneyerek yapılan atak türüdür.
Hash tipi tespit edilir. Burada hash(özet) değerimizi bir dosya içeresinde verdik. Siz isterseniz –text parametresi ile CLI doğrudan verebilirsiniz.
nth --file hash.txt
bycrypt hash türü olduğu görülür. Şimdi bunun için hash koduna bakalım. Ayrıca hashcat codunu resimde 3200 olarak göstermektedir.
Buradan tipini bulduğumuz hash türünden bağımsızdır. Yani; sha2 ya da md5 de olabilir. Bunlara karşı atak senaryo ve kullanımları aynı olacaktır. Sadece bizim hash kodunu doğru vermemiz gerekir.
Daha önceden el ile oluşturduğum basit bir wordlist.txt bulunmaktadır. Bununla beraber saldırıyı gerçekleştireceğim.
hashcat -a 0 -m 3200 hash.txt wordlist.txt
Görüldüğü üzere şifremiz Fenerbahçe1905’dir
Hashcat Kural Bazlı Saldırılar
Detaylı bilgi için https://hashcat.net/wiki/doku.php?id=rule_based_attack adresinden yararlanabilirsiniz.
Peki neden kural bazlı saldırıya ihtiyaç duyulur ?
Örnek ile anlatmak gerekirse elimizde ki wordlist şu şekilde olsun.
asimM
asimmisirli
misirliasim
asimmisirli.com
www.asimmmisili
fenerbahçe1907
hashcat101
131ASDzxczx
a12122
aa123456
gNU-best
Hashcat rule based attack için kurallar dosya içeresine yazılır. Örnek olarak kullandığım kurallar;
Wordlist içeresinde bulunan asimM için şu şekilde olacaktır
: ifadesi, hiç bir şey yapmadan devam edecektir.
asimM
l ifadesi, tüm harfleri lower yapacaktır.
asimm
u ifadesi, tüm harfleri upper yapacaktır.
ASIMM
c ifadesi, İlk harfi büyük ve geri kalanı lower yapacaktır.
Asimm
Oluşturduğumuz kural dosyası sayesinde saldırı yöntemimiz zengin hale gelecektir.
Örnek saldırıda hashcat eğer kural vermeseydik oluşturulan sözlük ifadelerine bakıp doğru hash değerini bulamayacaktı. Bizim verdiğimiz kurallar sayesinde ek olarak sözlüğü 4 katına çıkarmış olduk.
Hashcat rule based attack
hashcat -a 0 -m 1400 -r rules.txt hash.txt wordlist.txt
İşlemimiz başarılı,şifremiz Asimm olarak bulundu.
Hashcat Mask Attack Kullanımı
Detaylı açıklamayı https://hashcat.net/wiki/doku.php?id=mask_attack adresinden bulabilirsiniz. Elimizde önceden oluşturmadığımız wordlist dosyası olmadan yaptığımız saldırı çeşididir. Burada ki pattern oluşturmamız gerekir. Örnek bazı ifadeler şu şekildedir;
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?h = 0123456789abcdef
?H = 0123456789ABCDEF
?s = «space»!”#$%&'()*+,-./:;<=>?@[]^_`{|}~
?a = ?l?u?d?s
?b = 0x00 – 0xff
hash101 ifadesi için, ?l?l?l?l?d?d?d gibi olur.
Burada -a parameteresi için değerimiz 3 olacaktır. Artık dictionary saldırısı gerçekleştirmiyoruz.
hashcat -a 3 -m 0 hash.txt ?l?l?l?l?l?l?l?d?d?d
İlk 4 karakter için sadece küçük harfleri deneyecek ve son 3 karakter için rakamları deneyecektir. Daha önceden iyi bir analiz yaptıysak bu yöntem ile daha hızlı sonuçlara ulaşabiliriz.