13 Haziran 2011 Pazartesi

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.

9 yorum:

  1. cpu degilde gpu kullanılırsa daha erken kırılabilir..

    YanıtlaSil
  2. Ever, ekran kartlarını da bu iş için kullanmak ciddi oranda performans artışı sağlayabilir. Bunun için Pyrit kullanılabilir. Pyrit hakkında yazdığım bir şeylere aşağıdaki linkten ulaşılabilir.

    http://www.harunseker.org/2011/06/pyrit-ile-wpawpa2-krmak-icin-ekran.html

    Eğer yerterince zaman ve kaynak varsa her parola kırılabilir. Sorun o zaman ve kaynağa sahip olmaktır. :)

    YanıtlaSil
  3. Yazı için teşekkürler harun hocam, iyi çalışmalar dilerim.

    YanıtlaSil
  4. selam
    hazırladığınız çalışma için teşekkürler.sizden bir ricam var.
    10 basamaklı bir sayı wordlisti hazırlamak istiyorum.fakat sayıların başlangıç ve bitişleri belli olmalı.örnegin 1923****** dan başlayacak ve 2013000000 de bitecek.
    şimdiden teşekkür eder
    saygılarımla

    YanıtlaSil
  5. Selam Adsız,
    Crunch muhtelif parametrelerle çeşitli varyasyonlar üretebiliyor ama tam olarak istediğin şeyi yapıyor mu emin değilim... Senin sorunun için aklıma şöyle bir çözüm geldi...

    for ((i=1923;$i<2014;i=$i+1)); do ./crunch 10 10 -f charset.lst numeric -t $i@@@@@@ -o $i.wtxt; done;

    Bu komut 1923 değerinden başlayıp 2013 değerine kadar istediğin formatta 1923.wtxt, 1924.wtxt gibi isimleri olan wordlistler oluşturacaktır. Bunları tek bir wordlist olarak toplamak istersen şöyle bir komut verebilirsin...

    for i in $(ls *.wtxt ); do cat $i >> buyuk_wordlist.txt; done;

    YanıtlaSil
  6. biraz sacma bi yorum olacak ama o kadar filmlerde izliyoruz adam takiyor cihazi birak 128 256 bit i 2gbit olsa bile 20 sn de kiriyor boyle seyler warda bizden uzak mi tutuyorlar biraz daha sacmalarsak bu adi cikmis rus hackerlar o kadar sifreleme sistemlerini alt ust ediyorlar e peki bunlar ne yapio neyse ben gideyim uyuyaym vizeler basima wurdu kolay gelsin

    YanıtlaSil
  7. @Adsız, filmler adı üstünde film. Devasa uzay gemileri, korkunç canavarlar, insan üstü kahramanlar ne kadar gerçek ise filmlerdeki şifre kırma olaylarıda o kadar gerçek... :)

    Gerçekçi hacking vakalarının olduğu filmlerin bazılarına http://nmap.org/movies/ adresinden ulaşabilirsiniz... Mesela Matrix Reloaded filminde Trinity bilgisayar sistemine sızmak için Nmap aracını ve SSH CRC32 exploitini (http://packetstormsecurity.org/advisories/bindview/adv_ssh1crc.txt ) kullanmıştı... Yine benzer şekilde Ejderha Dövmeli Kız filminde benzer bir hacking vakası vardı. Tabii bu sahneler "Kod Adı Kılıçbalığı" filmindeki alengirli hacking sahneleri kadar dikkat çekici ve cezbedici olmadılar :)

    Gizli servisler henüz bizlerin bilmediği teknoloji ve yöntemlere sahip olabilirler. Nelere sahip olduklarını bilmiyorum ancak yinede bir yerlerde limitlere takılacaklardır...

    Rus hackerlar olayına gelince, "Bilgisayar yeraltı dünyası bir aynalı salondur. Gerçekler bükülür, doğrular küçülür." Bu yüzden gerçek olduğuna inandığımız efsaneler ve efsane olduğuna inandığımız gerçeklerle doludur... :)

    YanıtlaSil
  8. Harun hocam diyelim şifre "Ahmet123****" yıldız olan yerleri bilmiyoruz ve bunun için bir worldlist oluşturmak istiyoruz. yada "*hmet**3as*e" yıldız olan yerleri bilmiyoruz o zaman nasıl bir komut kullanabiliriz.

    YanıtlaSil
  9. Harun hocam iyi günler dünkü sorduğum sorunun cevabını buldum faydalı olması açısından root@kali:~crunch 9 9 0123456789 -t BGA123@@@ -o deneme.txt
    bu sayfaya koyarmısınız.

    YanıtlaSil