Parola Kırma Saldırılarında Hashcat Kullanımı

Hacker’lar kullanıcı bilgilerinin/şifrelerinin bulunduğu veri tabanını ele geçirdikten sonra, veri tabanında tutulan şifreler clear-text olmadığı takdirde bu sefer saldırılarını elde edilen bu hashleri kırma şeklinde değiştirirler. Bu noktada ise karşılarına tek yönlü şifreleme algoritması olarak tanımladığımız hash değerleri çıkar.

Yani parolanın kendisi değil , hashlenmiş hali veritabanında tutulmaktadır.  Tek yönden kastımız; Md5 ile encryption edilmiş bir veriye geri dönüş yolu olmamasıdır. Bu engel’in karşısında ise Hacker’lar deneme- yanıma -brute force- yöntemini seçerek, hashleri kırmak için onlarca olasılığı ilgili encryption algoritması ile hashleyerek, veritabanından elde ettikleri değerle karşılaştırırlar, ta ki karşılaştırma doğrulana kadar.

Hash kırma işlemi için genellikle bu işi otomatize hale getirmiş araçlar tercih edilir. 

Hashcat Kurulum


Windows:
Herhangi bir kurulum gerektirmeyen ve binary dosyası olarak elde edebildiğiniz hashcat’i kurmak için tek yapmanız gerek http://hashcat.net/files/download.php?proj=hashcat adresinden download edip sıkıştırılmış dosyayı bir klasöre çıkartmak.

Linux:
[mince@BGA xrn]$ sudo pacman -Syy && pacman -S p7zip
[mince@BGA xrn]$ sudo 7z x hashcat-0.38.7z
Komutları sırasıyla çalıştırılmalıdır.

Hashcat Özellikleri:
Hashcat sitesini ziyaret ettiğimizde karşıma farklı toolar ve GUI çıkmakta. Bunlar; Hashcat, Hashcat-gui oclHashcat-lite and oclHashcat-plus.

Hepsinin tek bir yazılım altında olmamasının ama nedenleri arasında, her bir tool’un özelleştiği bir alan olması ve bu alan hususunda farklı algoritmalara ihtiyaç duyulması yatmakta.

Bu araçları tanıtmak gerekirse;
Hashcat – Bir çok hash algoritması için crack işlemi yapabilen bu tool, multithreading desteklidir ve CPU gücünden yararlanmaktadır.
oclHashcat-gui – Hashcat multi OS destekli grafik ara yüzü.
oclHashcat-lite – Sadece bir adet hash cracklemek için geliştirilmiştir ve GPU desteklidir.
oclHashcat-plus – Eş zamanlı olarak bir çok hash için cracking işlemi yapabilmektedir. Wordlistleri kullanabilme ve oluşturabilme özellikleri için özelleştirilmiş.
GPU –Graphics processing unit– desteği için doğru ekran kartı driverı kurulu olmalıdır. Nvidia (CUDA) ve AMD (OpenCL). Henuz Intel için destek verememektedir. Yapılan testler sonucunda AMD’nin mimarisinden ötürü AMD performasında Nvidia’dan 3 kat daha hızlı olduğu görülmüştür.

Hashcat onlarca farklı opensource yazılımı için salt cracking, 20 farklı algoritmaya göre cracking işlemi yapabilmektedir.

Hashcat ve Şifre Kırma Teknikleri


Brute Forcing:

Brute Forcing isimli şifre kırma yaklaşımı, teknik olarak kolay bir çalışma olmasına karşın dezavantajları vardır. Tüm kombinasyonları denemek gerekmektedir. Buda bolca zaman gerektirmektedir. Ufak bir örnek verirsek; Türkçe özel karakterlerin çıkarıldığı a-z aralığında ki harflerden ve 0-9 aralığında ki rakamlardan oluşan 5 haneli bir şifre için test edilmesi gereken toplam olasılığın sayısını;
a-z = 26 karakter
0-9 = 10 karakter
(26+10)^5 = 52.521.875 olasılık demektir.

Dictionary Attacks:

Sözlük saldırıları için hazırlanan word listlerde olabildiğince kelimeler, isimler, 123456 gibi weak password’ler bulunur. Bu listelerde bulunan her sözcüğün hash’i alınarak kırılmak istenen hash ile karşılaştırılır. Doğal olarak bu cracking mantığının başarısı wordlistinizin kalitesi ile doğru orantılıdır. Word list’in başarı oranını ve boyutunu artırmak için; word list’te bulunan kelimelerin birbirleriyle kombinasyonları yapılmaktadır.

Rainbow Tables:

Hash karşılığı bilinen kelimelerin bir listede tutulmasıyla Dictionary Attacks saldırılarına çok benzemektedir. Tek fark ise bu saldırı türünde herhangi bir hashing işlemi yapılmamaktadır. Hash kırma çalışmalarının en önemli noktası kısa sürece sonuca ulaşmak olduğu için, kırılması istenen hash ile Rainbow tables’da tutulan hashler ile karşılaştırılır. Eğer bir eşlenme gerçekleşir ise bu hash’in karşılığının hangi kelime olduğu Rainbow tables’dan kontrol edilir. Bu sayede herhangi bir hashing işlemi gerçekleşmediği için süreç çok daha hızlıdır.

Rainbow Table üzerinden yapılan saldırılardan korunmak için uygulama geliştiriciler salts ekleme mantığına gitmişlerdir. Kullanıcı şifre olarak kendisine “bga” kelimesini seçerse, yazılım şifrenin hashini almadan önce bir prefix yahut postfix eklemesi gerçekleştirir. “bga321!” olarak eklenir ve bu şekilde hash’i alınır. Bu durumda opensource olmayan uygulamaların veri tabanı ele geçirildiğinde salt grubun ne olduğu bilinmediği için veriler korunabilmektedir.

Hybrid Attacks:

Wordlist ve brute forcing saldırılarının kombinasyonudur. Wordlist’te ki kelimelerin sonuna yahut başına sayılar eklenmesiyle yapılan saldırı tekniğidir. Rainbow Table’da bahsettiğimiz “salt” uygulamasına karşı başarı gösterebilecek bir hash cracking tekniğidir.

Mask Attacks:
Generate edilmeyen yani kullanıcılar tarafından girilen şifrelerin hashlerini kırmak için kullanılabilecek en ideal hash cracking mantıklarından birisidir. Bir çok insan şifresinin son hanelerine doğru rakam kullanmakta yahut şifresinin ilk karakteri büyük harfle başlamakta. Mask Attaks ise bu durumu spesifik olarak belirtebildiğimiz pattern’lerden yararlanarak hash cracking işlemleri gerçekleştirme.

Peki hangi yöntemi Seçmeli ? Eğer aynı anda olabildiğince çok hash cracklemek istiyorsanız Hybrid ve Mask ataklar daha fazla başarı gösterecektir. Tek bir hash’e yönelik cracking çalışmalarında ise Dictionary yahut Rainbow tercih edilebilir.

Hashcat ile Hash Cracking
hashcat kurulumunu yaptıktan sonra bir adet md5 cracking işlemi gerçekleştirip yazılımın performansını test edelim.
Clear Text = 9102837465
Md5 Hash = 3b22036943c23584ab5de618b9650d01

[root@BGA hashcat]# echo “3b22036943c23584ab5de618b9650d01” > hashfile.txt
[root@BGA hashcat]# ./hashcat-cli32.bin -a 3 –bf-pw-min=1 –bf-pw-max=10 –bf-cs-buf=0123456789 hashfile.txt

Komutlarını hashcat klasöründe sırasıyla ile çalıştırılıyor.

[root@BGA hashcat]# ./hashcat-cli32.bin -h
komutu ile hashcat yaziliminin parametrelerini ve açıklamalarını okuyabilirsiniz. -a 3 ile attack modu olarak brute-forcing seçilmiştir. –

-bf-pw-min=1 –bf-pw-max=10 parametrelerin şifrenin 1 ile 10 karakter aralığında olduğunu belirtmektedir.

-bf-cs-buf=0123456789 kısmında bir pattern belirlemesi yapıyoruz. Sadece rakamlar ile test gerçekleştirildi. Tercihen abcxz gibi karakterlerde dahil edilebilir.

Ardından hashcat yazilimi size 10 adet paragraf output verecektir. Bu açıklamalar incelendiğinde brute forcing işleminin bir basamaklı sayılardan başlayıp, on basamaklı sayılara ilerlemekte olduğunu görülecektir.
1,2,3,4,5,6 basamaklı sayı gruplarının total test süresinin 0 saniye altında olduğu görülmektedir.

Length….: 7
Index…..: 0/1 (segment), 10000000 (words), 0 (bytes)
Recovered.: 0/1 hashes, 0/1 salts
Speed/sec.: – plains, 26.04M words
Progress..: 10000000/10000000 (100.00%)
Running…: 00:00:00:01
Estimated.: –:–:–:–

7 basamaklı sayı grupları için totalde 1saniyelik bir çalışma yapılmıştır. Ve saniyede 26,04 Milyon sayı test edilmiştir.

Length….: 8
Speed/sec.: – plains, 26.23M words
Running…: 00:00:00:03
8 basamaklı sayılar için saniyede 26,23 Milyon deneme ile 3saniye sürmüştür.
Length….: 9
Speed/sec.: – plains, 25.34M words
Estimated.: 00:00:00:38

9 basamaklı sayılar için saniyede 25.34 Milyon deneme ile 38 saniye.

Length….: 10
Index…..: 0/1 (segment), 10000000000 (words), 0 (bytes)
Recovered.: 0/1 hashes, 0/1 salts
Speed/sec.: – plains, 24.98M words
Progress..: 3144636980/10000000000 (31.45%)
Estimated.: 00:00:04:34
3b22036943c23584ab5de618b9650d01: 9102837465
All hashes have been recovered

4dk34saniye ‘den daha kısa bir sürede hash kırma işlemi tamamlanmıştır. Adsl modemlerinin şifreleri, sabit hat telefon numaları olması. İnsanların mail şifrelerinin cep telefonlarının olması gibi durumlar ülkemizde sıkça görülmektedir.

Bu test sırasında sistem load’ı değerlerine baktığımız. Şifre kırma işlemi tamamlanmadan hemen önce
top – 04:04:37 up 1:06, 2 users, load average: 8.47, 6.20, 3.03

Şifre kırma işlemi sırasında CPU sıcaklığını incelediğimizde ise sonuç aşağıdadır.

[root@BGA hashcat]# pacman -S acpi
[mince@BGA hashcat]# while [ TRUE ]; do acpi -t >> /tmp/cputest.txt ; sleep 2; done &

Komutu ile CPU sıcaklığını her 2sn bir kontrol ederek sonuc /tmp/cputest.txt dosyasına yazdırılmakta.
[mince@BGA hashcat]# tail -F /tmp/cputest.txt

Komutu ile çıktılar kontrol edilebilmiştir.

Bu sıcaklık dataları istatistige döküldüğünde ise

[mince@BGA ~]$ cat /tmp/cputest.txt | sort -n | uniq -c
2 Thermal 0: ok, 45.0 degrees C
1 Thermal 0: ok, 53.0 degrees C
2 Thermal 0: ok, 54.0 degrees C
1 Thermal 0: ok, 57.0 degrees C
1 Thermal 0: ok, 60.0 degrees C
1 Thermal 0: ok, 65.0 degrees C
1 Thermal 0: ok, 66.0 degrees C
2 Thermal 0: ok, 67.0 degrees C
2 Thermal 0: ok, 68.0 degrees C
2 Thermal 0: ok, 69.0 degrees C
4 Thermal 0: ok, 70.0 degrees C
5 Thermal 0: ok, 71.0 degrees C
9 Thermal 0: ok, 72.0 degrees C
13 Thermal 0: ok, 73.0 degrees C
62 Thermal 0: ok, 74.0 degrees C
18 Thermal 0: ok, 75.0 degrees C
2 Thermal 0: ok, 41.0 degrees C

Görülmüştür. Bu ise hash cracking esnasında CPU’nun hangi sıcaklık değerleri aralığında gezindiğini göstermektedir.

Testler için Kullanılan Bilgisayarın Özellikleri
İşletim Sistemi:
Archlinux
Kernel : Linux 3.2.2-1-ARCH (i686)
Desktop Environment : XFCE 4

Fiziksel Özellikler:
Processor : 4x Intel(R) Core(TM) i5 CPU M 460 @ 2.53GHz
Memory : 2573MB

HP g62 serisi laptop. Testler boyunca USB ile bilgisayara bağlanan notebook altına konan harici fan.

Mehmet Dursun INCE
mehmet.ince@bga.com.tr
PS: Bu döküman Archlinux işletim sistemi üzerinde LibreOffice kullanılarak  hazırlanmıştır.

KAYNAKLAR

http://en.wikipedia.org/wiki/Dictionary_attack
http://en.wikipedia.org/wiki/Brute_force_attack#Unbreakable_codes
http://en.wikipedia.org/wiki/Rainbow_table#Example
http://itsecblog.net/cms/index.php/secblog/encryption/hashcracking1
http://itsecblog.net/cms/index.php/secblog/encryption/hashcracking2
http://hashcat.net/wiki/