Bu
yazıda online ve offline parola kırma saldırılarında başrolü oynayan
wordlist'lerin nasıl oluşturulabileceğine değinilecektir. Sızma
testleri esnasında sistemler üzerinde erişim kazanmak için başvurulan
yöntemlerin başında bruteforce(kaba kuvvet) ve dictionary(sözlük)
saldırıları gelmektedir. Bu saldırıları gerçekleştirmek için kaliteli
worldlistlerin üretilmesi ise
oldukça önemlidir, aksi halde mevcut worldlistler sizin saldırı
yapacağınız
sistemler ile ilgisiz olacaktır ve gereksiz bir çok kombinasyonu sistem
üzerinde denenmiş olacaktır. Buda kıymetli ve kısıtlı olan sızma testi
süresinin boşa gitmesi
demektir. Bunun için wordlistlerin istenilen biçimde üretilebilmesi
zaman kaybının önlenmesi ve başarılı testler için oldukça önemlidir.
Bu
yazıda özelleştirilmiş wordlist oluşturmak için crunch isimli açık
kaynak kodlu uygulamaya
değinilmiştir. Crunch performans açısından oldukça hızlı ve kullanıcıya
sağladığı detay özellikleri ile neredeyse istenilen her biçimde
wordlist oluşturmaya imkan sağlayan bir araçtır. Crunch uygulaması buradan temin edilebilir.
Backtrack linux işletim sistemi üzerinde kurulu gelen crunch'a şu şekilde erişilebilir.
root@bt:~/Desktop/sshuttle-master# cd /pentest/passwords/crunch/
root@bt:/pentest/passwords/crunch# ls
charset.lst crunch GPL.TXT
root@bt:~/Desktop/sshuttle-master# cd /pentest/passwords/crunch/
root@bt:/pentest/passwords/crunch# ls
charset.lst crunch GPL.TXT
Burada
charset.lst isimli dosya crunch ile birlikte kullanabileceğiniz
karakter gruplarının tanımlandığı dosyadır. Örneğin yalnızca rakamların
kullanılacaksa bu dosyada bu gruba verilen numerics charseti kullanılmalıdır. Charset.lst dosyasının içeriğinin bir kısmı aşağıdaki gibidir.
root@bt:/pentest/passwords/crunch# cat charset.lst
# charset configuration file for winrtgen v1.2 by Massimiliano Montoro (mao@oxid.it)
# compatible with rainbowcrack 1.1 and later by Zhu Shuanglei <shuanglei@hotmail.com>
hex-lower = [0123456789abcdef]
hex-upper = [0123456789ABCDEF]
numeric = [0123456789]
numeric-space = [0123456789 ]
symbols14 = [!@#$%^&*()-_+=]
symbols14-space = [!@#$%^&*()-_+= ]
symbols-all = [!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
symbols-all-space = [!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
ualpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
ualpha-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ ]
ualpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
ualpha-numeric-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ]
root@bt:/pentest/passwords/crunch# cat charset.lst
# charset configuration file for winrtgen v1.2 by Massimiliano Montoro (mao@oxid.it)
# compatible with rainbowcrack 1.1 and later by Zhu Shuanglei <shuanglei@hotmail.com>
hex-lower = [0123456789abcdef]
hex-upper = [0123456789ABCDEF]
numeric = [0123456789]
numeric-space = [0123456789 ]
symbols14 = [!@#$%^&*()-_+=]
symbols14-space = [!@#$%^&*()-_+= ]
symbols-all = [!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/]
symbols-all-space = [!@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ ]
ualpha = [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
ualpha-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ ]
ualpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]
ualpha-numeric-space = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ]
Bu
şekilde birçok tanımlı karakter grubu bulunmaktadır.Bu dosya içerisinde
istediğiniz herhangi bir karakter grubunuda tanımlayıp bir satır olarak
eklemeniz onu kullanmanız için yeterlidir. Örnek bir kullanım ile
açıklamaya çalışalım.
Yalnızca rakamlardan oluşan minimum 1, maksimum 8 karakterli rakamlar.txt isimli bir wordlist oluşturalım:
root@bt:/pentest/passwords/crunch# ./crunch 1 8 -f charset.lst numeric -o rakamlar.txt
root@bt:/pentest/passwords/crunch# ./crunch 1 8 -f charset.lst numeric -o rakamlar.txt
İlgili
worldlistimiz bulunduğumuz dizinde oluşmuştur. Burada -f parametresi
charset değerini vermek için, -o parametresi ise output(çıktı) dosyasını
belirtmek için kullanılmıştır. Aynı örneği şu şekilde de oluşturmamız
mümkündü:
root@bt:/pentest/passwords/crunch# ./crunch 1 5 1234567890 -o rakamlar.txt
root@bt:/pentest/passwords/crunch# ./crunch 1 5 1234567890 -o rakamlar.txt
Yalnız burada minumum 1 maksimum 5 karakter uzunluğunda olması istenmişitir.
Aşağıda, crunch uygulamasında özel bir parola oluşturmak için
kullanılan -t parametresi ile kullanılabilen bazı karakterler ve görevlerine değinilmiştir;
@ işareti küçük harfli karakterleri yazdırmak için
, işareti büyük harfli karakterleri yazdırmak için
% işareti rakam kullanmak için
^ işareti özel karakterler yazdırmak için kullanılır.
Şimdi verilecek örnekte ise şu seneryoya göre wordlist oluşturulacaktır:
- Şifrenin ilk 4 karakteri 1453
- Şifre 10 karakterli
- Şifrenin son iki karakteri ab
- Geri kalan kısımları ise büyük harflerden oluşmaktadır.(o halde ","(virgül) işareti kullanılacaktır)
- Çıktı ozel.txt dosyasına yazdırılacaktır.
İlgili crunch komutu şu şekilde olacaktır:
root@bt:/pentest/passwords/crunch# ./crunch 10 10 -t 1453,,,,ab -o ozel.txt
Crunch will now generate the following amount of data: 5026736 bytes
4 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 456976
100%
Crunch will now generate the following amount of data: 5026736 bytes
4 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 456976
100%
Oluşturduğumuz dosyanın çıktısının bir bölümü aşağıdaki gibidir:
root@bt:/pentest/passwords/crunch# head ozel.txt -n 20
1453AAAAab
1453AAABab
1453AAACab
1453AAADab
1453AAAEab
1453AAAFab
1453AAAGab
1453AAAHab
1453AAAIab
1453AAAJab
1453AAAKab
1453AAALab
1453AAAMab
1453AAANab
1453AAAOab
1453AAAPab
1453AAAQab
1453AAARab
1453AAASab
1453AAATab
root@bt:/pentest/passwords/crunch# head ozel.txt -n 20
1453AAAAab
1453AAABab
1453AAACab
1453AAADab
1453AAAEab
1453AAAFab
1453AAAGab
1453AAAHab
1453AAAIab
1453AAAJab
1453AAAKab
1453AAALab
1453AAAMab
1453AAANab
1453AAAOab
1453AAAPab
1453AAAQab
1453AAARab
1453AAASab
1453AAATab