oclHashcat ile Kaba Kuvvet Saldırıları için Mask Kullanımı

oclHashcat parola kırmak için GPU’nun gücünden yararlanan defacto bir araçtır. Desteklediği(GPU için) 5 atak türü vardır. Bunlardan birisi olan Mask atak türü kaba kuvvet saldırılarını daha verimli yapmak için kullanılır. Olası tüm parolaların hesaplandığı kaba kuvvet saldırılarında parola basit dahi olsa 9 hane ve üzeri olduğunda süre yıllar alabilmektedir. Windows 7 üzerinde çalışan AMD Radeon 7970 HD grafik kartı için tam bir kaba kuvvet saldırısında hane uzunluğuna göre ortalama süreler aşağıdaki gibidir.(Ortalama hız: 8000MH/s (saniyede 8 milyar deneme))

Parola uzunluğuna göre parola kırma süreleri

Uzunluk Süre
6 hane 1 dakika 32 saniye
7 hane 2 saat 25 dakika
8 hane 9 – 10 gün arası
9 hane 2 – 3 yıl arası
10 hane 10 yıldan fazla

Mask atakta ise parolaların oluşturulma düzenleri tespit edilir ve sadece bu düzene göre parolalar hesaplanır. Örneğin, Bilgi987*! gibi bir parola için hashcat maskesi ?u?l?l?l?l?d?d?d?s?s şeklindedir.
u büyük harfi(uppercase), l küçük harfi(lowercase), d rakamları(digit) ve s özel karakterleri(special chars) ifade eder. Böyle bir maske için süre ise yaklaşık 30 dakikadır.

Rockyou, phpbb, Linkedin gibi yaklaşık 35 milyon sızıntı parola üzerinde yapılan çalışma, mask atağın önemini ortaya koymaktadır. 35 milyon parolanın %50’si sadece 13 tane mask ile kırılabilmektedir[kaynak]. Toplam mask sayısı ise 260000 civarıdır.

Bu maskeleri çıkartmak için şart olmasa dahi uygun bir sözlüğe(wordlist) ihtiyaç vardır. Bu yazıda yaklaşık 24000 parola içeren Türkçe bir sözlük kullanılmıştır.

PACK, python ile yazılmış, parola analizi yapan bir araçtır. Analiz ettiği sözlük için uzunluk ve maske ile ilgili istatistikler çıkartır. Bu yazıya konu olan özelliği ise hashcat için mask listesi çıkartabilmesidir.
PACK içerisinde 4 tane araç barındırır: statsgen, maskgen, policygen ve rulegen.

python statsgen.py sozluk.txt -o sozluk_stats.txt

ile sozluk_stats.txt dosyasına çıktı alınır. Bu liste oldukça uzun çıkabilir. Eğer vakit sınırlıysa –hiderare seçeneği ile çok az karşılaşılan maskeler ve istatistikleri dahil edilmeyebilir. Yada –simplemask seçeneğinde stringdigit, mixedalpha gibi filtreler uygulanarak maskeler azaltılabilir.
Çıktı olarak alınan sozluk_stats.txt dosyası maskgen‘e input olarak verilir ve hashcat için hcmask dosyası elde edilir.

python maskgen.py sozluk_stats.txt -o sozluk.hcmask



Statsgen gibi burada da çeşitli filtreler uygulanabilir: –minlength, –masklength, –targettime ve –pps

En az 9 haneli, en fazla 12 haneli parolalar için, saniyede 5 milyar deneme yapabilen bir makinede 3 saatte(3*60*60) kırmak için maskgen aşağıdaki gibi kullanılabilir.

python maskgen.py sozluk_stats.txt –minlength 9 –maxlength 12 –pps 5000000000 –targettime 10800 -o sozluk.hcmask

Sonuç:

?d?d?d?d?d?d?d?d?d
?u?l?l?d?d?d?d?d?d
?d?d?d?d?d?d?d?d?d?d
?u?l?d?d?d?d?d?d?d
?u?l?l?l?l?d?d?d?d
?l?l?d?d?d?d?d?d?d
?d?d?d?d?d?d?d?d?l
?l?d?d?d?d?d?d?d?d
?u?l?d?d?d?d?d?d?s
?d?d?d?d?d?d?l?l?l

Elde edilen sozluk.hcmask dosyası ise direk olarak hashcatte kullanılabilir.

oclhashcat.exe -m 1000 -a 0 hash_listesi.txt  maskssozluk.hcmask

Aynı işlem elde sözlük olmasada her satıra bir mask gelecek şekilde elle oluşturulabilir. Ancak iyi bir sözlük başarı oranını %20-30 civarında artıracaktır.