Hashcat Derin Analiz//

26 Tem 2010
97
14
Adana
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
veya
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
ile saldırı tipinden BruteForce ve kullanılacak kelime ve sayıların kodlarına bakıyoruz.



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

6LeEH1.png


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...
 
Son düzenleme:

Rozz

Uzman üye
19 Ağu 2019
1,386
47
Hash ile ilgili verdiğiniz tanım yanlış, ve bu işlemler sadece k*li denen halta özel değil debian tabanlı her sistemde yapabilirsin hatta blackarch reposunu ekleyerek arch tabanlı sistemlerde de yapabilirsin. Hash verilen metinin çeşitli işlemlerden geçirilip özetinin alındığını belirten bir kriptografi terimidir. Senin yazdığın gibi doğru sitelerde güvenlik için de kullanılır lakin tek kullanım yöntemi de bu şekilde değildir. Ve bir bilgi yanlışı daha mevcut her metnin hash'ı kendine has değildir, belirli metinler şifrelendikten sonra aynı özete sahip olabilir ama bunun görülme olasılığı çok azdır. Hash değerlerinin sayılarının olduğu sayfayı eklesen de yararlı olabilirdi, mobildeyim şimdi bakmaya üşeniyorum bilgisayara geçersem bu mesaja eklerim o sayfayıda.

Konuyu renklendirip düzene sokarsan ve yukarıda yazdığım yanlışları düzeltirsen güzel olur, eline sağlık falan
 

Rozz

Uzman üye
19 Ağu 2019
1,386
47
Kaliye özel bilgi demedim zaten bu işlemler sadece Kali'de yapılır da demedim. Giriş cümleme bakarsan anlarsın. Hash'in kullanım alanı tabii ki daha geniş fakat bizler saldırı timi olduğumuz için bu kısmından bahsettim :) Her metnin farklı hash değerine bir örnek verir misin? Mesela MD5'te 'a' karakterinin 2 tane şifrelenmiş halini verir misin? MD5'te iki farklı 'a' karakter hashi yazarsan memnun olurum :)

Konuyu renklendirip yazıları büyütecem biraz daha teşekkür ederim önerin için .

dediklerimi yanlış anladın,
Kod:
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

Bu kısımda senin belirtmeye çalıştığın şey o araçların kali linux'a ait olduğu, ama öyle birşey yok ben bunu demek istedim.

şu hash mevzusuna gelir isek,
örnek olarak md5'i verelim madem, elindeki metni sıkıştırarak 128 bitlik bir özet oluşturuyor ama bu aşamada metnin başından sıkıştırma işlemi geçtiğinden dolayı içerisindeki veri bozuluyor ve sınırlı bir bölümü depolanabiliyor. Tabii yukarıda yazdığım biraz teorik örnek veremeyeceğim ama şöyle açıklayabilirim, "asd" metninin 128 bitlik özetini aldığında sınırlı bir veri saklayabiliyorsun ya işte bu verinin tıpa tıp aynısını başka bir metni 128 bit özetini aldığında saklama gibi bir şansın düşük ve teorik olsa da var.
 
26 Tem 2010
97
14
Adana
Eline emeğine sağlık

Teşekkürler Profesör :)

dediklerimi yanlış anladın,
Kod:
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

Bu kısımda senin belirtmeye çalıştığın şey o araçların kali linux'a ait olduğu, ama öyle birşey yok ben bunu demek istedim.

şu hash mevzusuna gelir isek,
örnek olarak md5'i verelim madem, elindeki metni sıkıştırarak 128 bitlik bir özet oluşturuyor ama bu aşamada metnin başından sıkıştırma işlemi geçtiğinden dolayı içerisindeki veri bozuluyor ve sınırlı bir bölümü depolanabiliyor. Tabii yukarıda yazdığım biraz teorik örnek veremeyeceğim ama şöyle açıklayabilirim, "asd" metninin 128 bitlik özetini aldığında sınırlı bir veri saklayabiliyorsun ya işte bu verinin tıpa tıp aynısını başka bir metni 128 bit özetini aldığında saklama gibi bir şansın düşük ve teorik olsa da var.

Sağ ol dostum :)
 
Moderatör tarafında düzenlendi:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.