11 Şubat 2015 Çarşamba

Crunch ile Wordlist Oluşturmak

Crunch seçilen karakter kümesinden, istenilen uzunlukta parolalar üreten ve bu parolaları bir dosyaya yazarak wordlist oluşturan kullanışlı bir araçtır. Çalışmak için özel bir yetkiye ihtiyaç duymaz. Yalnızca derlenip çalıştırılması yeterlidir. Çalıştığında istenilen karakter kümesinden parolalar üretir ve bir dosyaya yazar.

Oldukça hızlı çalışır ve kolay kullanılır.



Crunch Kurulumu
Öncelikle crunch yazılımını indirelim.
harun@gondor:~$ wget http://garr.dl.sourceforge.net/project/crunch-wordlist/crunch-wordlist/crunch-3.0.1.tgz

İndirme işlemi bittikten sonra crunch-3.0.1.tgz arşivini açalım.

harun@gondor:~$ tar zxvf crunch-3.0.1.tgz 
crunch3.0/
crunch3.0/Makefile
crunch3.0/GPL.TXT
crunch3.0/crunch.1
crunch3.0/charset.lst
crunch3.0/crunch.c
Arşivin açılmasıyla oluşan crunch3.0/ dizinine geçelim ve ardından make komutunu vererek derleme işlemini başlatalım.
harun@gondor:~$ cd crunch3.0/
harun@gondor:~/crunch3.0$ make
Building binary...
/usr/bin/gcc -Wall -lm -pthread -std=c99 -m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 crunch.c -o crunch
Kısa bir derleme işleminden sonra crunch yazılımı çalışmaya hazır hale gelecektir. Bu aşamadan sonra istenirse make install komutu ile derlenen yazılım sisteme kurulabilir. make install komutunu verdiğinizde crunch yazılımı, Backtrack dağıtımındaki gibi /pentest/passwords/crunch dizini altına yerleştirilecektir. 

Ben sisteme kurulum yapmak yerine derleme yaptığım dizinden çalıştırmayı tercih ediyorum. Bu nedenle make install komutu vermedim. 

Genel Kullanım Şekli
./crunch [min uzunluk] [max uzunluk] [karakter seti] -o [dosya adı]
Örneğin 0123456789 karakter setinden 1 ve 4 karakter aralığında parolalar üretmek için crunch aşağıdaki gibi kullanılabilir.
harun@gondor:~/crunch3.0$ ./crunch 1 4 0123456789 -o ornek1.txt
Crunch will now generate the following amount of data: 54320 bytes    0 MB    0 GB
Crunch will now generate the following number of lines: 11110 
Görüldüğü gibi crunch istenilen wordlistin disk üzerinde kaplayacağı boyutu ve kaç satırdan oluşacağı gibi istatistikleri gösteriyor ve daha sonra ise ilgili dosyayı oluşturmaya başlıyor. Dosya boyutu ve oluşturulmas süresinin seçmiş olduğunuz karakter kümesi ve parola uzunluğuna bağlı olduğunu unutmamak gerekiyor. Çok geniş bir aralık tercih ederseniz wordlist oluşturmanız sonsuza kadar sürebilir...

Crunch ile gelen dosyalar arasında yer alan charset.lst dosyası içerisinde ön tanımlı karakter kümeleri yer alıyor. Dilerseniz bu karakter kümelerinden birini seçerek kullanabiliyorsunuz.

charset.lst dosyasından bazı karakter kümeleri;
numeric: [0123456789]
ualpha: [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lalpha: [abcdefghijklmnopqrstuvwxyz]
ualpha-numeric: [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
lalpha-numeric: [abcdefghijklmnopqrstuvwxyz0123456789]
mixalpha:[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]
mixalpha-numeric:[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
mixalpha-numeric-all-space:[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
Parola oluştururken kullanmak istediğimiz karakter kümesinin büyük harfler [A-Z], küçük harfler [a-z] ve rakamlardan oluştuğunu [0-9] var sayalım. Bu karakter kümesin charset.lst dosyasında mixalpha-numeric olarak tanımlıdır. mixalpha-numeric kümesinden yalnızca 8 karakter uzunluğunda parolalar oluşturmak için crunch aşağıdaki gibi kullanılabilir.
harun@gondor:~/crunch3.0$ ./crunch 8 8 -f charset.lst mixalpha-numeric -o ornek2.txt
Crunch will now generate the following amount of data: 1965060950264064 bytes    1874028158 MB    1830105 GB
Crunch will now generate the following number of lines: 218340105584896 
Yukarıdaki çıktıya dikkat ederseniz crunch belirttiğimiz özelliklere sahip bir wordlistin 218.340.105.584.896 satırdan oluşacağını ve sabit diskimizde 1.830.105 GB yer tutacağını hesapladı. Bu aşamadan sonra yeterince disk alanınız ve zamanınız var ise crunch yazılımın işini bitirmesini bekleyebilirsiniz... 

Biraz Matematik

Parola kırma, wordlist oluşturma gibi işlerle uğraşıyorsanız biraz matematik bilmek oldukça faydalı olacaktır. En azından gücünüzün neye yeteceğini bilip ona göre denemeler yapabilirsiniz.  

Olası tüm parolaların sayısı şu şekilde hesaplanır;
Olası Parola Sayısı = [Karakter Kümesindeki Elaman Sayısı] ^ [Parola Uzunluğu]

Öncelikle parolaların oluşturulacağı karakter kümesinin yalnızca rakamlardan oluştuğunu varsayalım.
Karakter Kümesi = {0,1,2,3,4,5,6,7,8,9}
Görüldüğü gibi karakter kümemiz 10 elamana sahip. Şimdi de parolamızın uzunluğunun 8 karakter olduğunu var sayalım. 

Olası Parola Sayısı = 10 ^ 8;
Olası Parola Sayısı = 100.000.000;


Şimdi işin içine İngiliz alfabesindeki küçük harflerin giridğini düşünelim ve karakter kümemize 26 karakter daha eklemiş olalım.

Karakter Kümesi = {0123456789abcdefghijklmnopqrstuvwxyz} 

Son durumda karakter kümemiz 10 rakam ve 26 harf olmak üzere toplamda 36 karakterden oluşuyor. 8 karakterli tüm parola olasılıklarını bir kez daha hesaplayalım. Sihirli formülümüz;

Olası Parola Sayısı = [Karakter Kümesindeki Elaman Sayısı] ^ [Parola Uzunluğu]
Olası Parola Sayısı = 36 ^ 8
Olası Parola Sayısı = 2.821.109.907.456


Fikir vermesi açısından şöyle bir örnek vereyim; wpa kırma işlemi sırasında bilgisayarımdaki Intel(R) Core(TM)2 Duo 2.20GHz CPU saniyede iyimser bir ortalamayla 1100 deneme yapıyor. Bu hız ile 2.821.109.907.456 ihtimali denersek 2.564.645.370 sn başka bir deyişle 712.401 saat, 29.683 gün, 81 yıl olarak hesaplayabiliriz. Bu değer saniyede 1100 deneme yapan diz üstü bilgisayarım ve ortalam ömrü 65 yıl olan biz faniler için oldukça uzun bir zaman olacaktır...

Saniyede 750.000 parola denediğimizi var sayarsak işlem 3.761.479 sn sürecektir. Bu ise 1044 saat yani yaklaşık 44 gün demektir. Muhtemelen bu yazıyı okuyan hiç kimsenin bu kadar güçlü bir bilgisayarı olduğunu veya yakın bir gelecekte olacağını pek sanmıyorum sanmıyorum...

Burdan çıkacak sonuç, eğer yeterince kaynağınız ( CPU gücü, Disk Alanı vs ) ve Zamanınız var ise her parolayı kırabilirisiniz demektir.

Hiç yorum yok:

Yorum Gönder