Fcrackzip ile Zip Parolası Kırma (fcrackzip, Brute Force, Kaba Kuvvet)

Elimizde parola korumalı bir zip dosyası olsun ve parolayı brute force(kaba kuvvet) ile bulmaya çalışalım.

$ ls
secret.txt

$ zip guvenli secret.txt -e -m
Enter password:
Verify password:
  adding: secret.txt (stored 0%)

$ ls
guvenli.zip

Yukarıdaki örnekte secret.txt adındaki metin belgesini parola korumalı bir zip dosyasına çevirdik. secret.txt adlı dosyaya ulaşmak için parolanın bilinmesi gerekir.


Parolanın girilmediği durumlarda zip dosyası açılmayacaktır.

$ unzip guvenli.zip
Archive:  guvenli.zip
[guvenli.zip] secret.txt password:
password incorrect--reenter:
password incorrect--reenter:
   skipping: secret.txt              incorrect password

Fcrackzip Nedir?

Fcrackzip ücretsiz/hızlı bir zip parola kırma programıdır.

Zip dosyası içerisindeki şifrelenmiş dosyalara erişmek için gerekli parolayı kaba kuvvet yöntemi ile deneme yanılma yoluyla tespit etmeye çalışır.

Fcrackzip Kullanımı

Öncelikle fcrackzip ile parola kırma işlemine başlamadan fcrackzip'in seçeneklerine bakalım.

$ fcrackzip -h

fcrackzip version 1.0, a fast/free zip password cracker
written by Marc Lehmann  You can find more info on
http://www.goof.com/pcg/marc/

USAGE: fcrackzip
          [-b|--brute-force]            use brute force algorithm
          [-D|--dictionary]             use a dictionary
          [-B|--benchmark]              execute a small benchmark
          [-c|--charset characterset]   use characters from charset
          [-h|--help]                   show this message
          [--version]                   show the version of this program
          [-V|--validate]               sanity-check the algortihm
          [-v|--verbose]                be more verbose
          [-p|--init-password string]   use string as initial password/file
          [-l|--length min-max]         check password with length min to max
          [-u|--use-unzip]              use unzip to weed out wrong passwords
          [-m|--method num]             use method number "num" (see below)
          [-2|--modulo r/m]             only calculcate 1/m of the password
          file...                    the zipfiles to crack

methods compiled in (* = default):

 0: cpmask
 1: zip1
*2: zip2, USE_MULT_TAB

Bu listede bizim için önemli olanları açıklarsak.

-b brute force(kaba kuvvet) saldırı seçeneği

-D dictionary(sözlük, wordlist) kullanarak brute force

-B benchmark testi için (performans testi)

-c charset(karakter seti) brute force için kullanılacak karakterler. -c seçeneğinden sonra aşağıdakilerden birisi belirtilmelidir.

  1. a tüm küçük harfleri dahil et [a-z]
  2. A tüm büyük harfleri dahil et [A-Z]
  3. 1 tüm sayıları dahil et [0-9]
  4. ! şunları içerir [!:$%&/()=?{[]}+*~#]

-v verbose, ekrana bilgi yazdır

-p Dictionary(wordlist) için kullanılacak wordlist yolu(path)

-l <min>-<max> kullanılacak minimum ve maximum parola uzunluğu

-u arşivi çıkartmak için unzip kullan


Şimdi nasıl kullanılır ona bakalım. Brute force saldırısı yapacağımız için -b seçeneğini eklememiz gerekiyor. Ayrıca unzip(-u) ile çıkartma işlemi yapılacağını belirtmemiz gerekiyor.

$ frackzip guvenli.zip -b -u

Yukarıdaki örnek default olması gereken seçenekleri ve parola tahmininin yapılacağı zip dosyasını içeriyor.

Taslak şu şekilde:

$ frackzip <zipdosyası> -b -u

Şimdi brute force yapılacağını ve unzip ile çıkartma işlemi yapılacağını belirttiğimize göre kullanılacak karakter setini ve parolaların minimum ve maksimum uzunluğunu belirlelim.

$ fcrackzip guvenli.zip -b -u -c 1 -l 4-8 -v
found file 'secret.txt', (size cp/uc     29/    17, flags 9, chk 7279)


PASSWORD FOUND!!!!: pw == 123456

Yukarıdaki örnekte karakter seti olarak(-c 1) 1 yani sadece sayılardan oluşan bir parola denemesi olacağını belirttik.

(-l 4-8) seçeneği ile kullanılacak minimum parola uzunluğunu 4, maksimum parola uzunluğunu ise 8 karakter olarak belirttik.

Parolamızı 123456 olarak bulduğunu son satırda ekrana yazdırarak bize bildiriyor.

Fcrackzip ile Birden Fazla Karakter Setini Birleştirmek

Şimdi daha zor bir parolamız olsun içerisnde harfler ve sayılar olsun. Yine -c seçeneği kullanarak gerekli karakter setlerini belirtmemiz yeterli.

fcrackzip guvenli.zip -b -u -c 1a -l 4-8 -v

Yukarıdaki örnekte (-c 1a) ile 1 ve a karakter setlerini birleştirdik. Yani denenecek parolalarda küçük harfler ve sayıların kombinasyonu olacak.

$ time fcrackzip guvenli.zip -b -u -c 1a -l 6-6 -v
found file 'secret.txt', (size cp/uc     29/    17, flags 9, chk 7279)
checking pw 1aft6n

PASSWORD FOUND!!!!: pw == 1asd23

real	6m38,660s
user	0m12,736s
sys	0m13,720s

6 dakika içerisinde 6 karakterlik içerisinde küçük harf ve sayılardan oluşan parolamızı buldu. Tabiki bu süre parola uzunluğuna ve sisteminizin hızına göre saatler, günler alabilir.

Burda örnek olarak fcrazkzip kullanımının anlatımı için basit parolalar tercih edilmiştir.

Wordlist Belirterek Fcrackzip Kullanımı

Fcrackzip gerekli seçenekler belirtildiğinde kendisi denenecek paroları oluşturup, zip dosyasını açıp açamyacağını test ettiğini yukarıda gördük.

Şimdi hazır bir wordlist kullanarak fcrackzip'in bu wordlistteki parolaları denemesini istiyoruz.

Taslak şu şekilde:

$ fcrackzip <zipdosyası> -u -D -p <wordlist>

-D seçeneği sözlük,wordlist kullanılacağını belirtmek için.

-p seçeneği ilede kullanılacak wordlistin yolunu(path) belirtiyoruz.

Kullanacağımız wordlisti kendimiz oluşturabileceğimiz gibi, internet üzerinden hazır wordlistler bulunabilir.

BKZ: Crunch ile Wordlist Oluşturma ve Crunch Kullanımı


Şimdi küçük harfler ve sayılardan oluşan 6 karakterlik bir wordlist oluşturup fcrackzip ile parola kırma denemesi yapalım.

$ crunch 6 6 -f /usr/share/crunch/charset.lst lalpha-numeric -o wordlist.txt
Crunch will now generate the following amount of data: 15237476352 bytes
14531 MB
14 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 2176782336
crunch: 100% completed generating output

$ ls
guvenli.zip  wordlist.txt

14GB lık wordlistimiz hazır. Şimdi bu wordlisti fcrackzip'e vererek zip parolasını bulmaya çalışalım.

$ time fcrackzip guvenli.zip -u -D -p wordlist.txt


PASSWORD FOUND!!!!: pw == 1asd23

real	142m8,326s
user	6m23,512s
sys	5m3,672s

Görüldüğü üzere 142dk içerisinde fcrackzip zip dosyamızın şifresini kırdı.

Neden Wordlist Kullanımı Daha Uzun Sürdü?

Wordlistimizi incelersek wordlistimiz önce harflerden başlıyor. Yani önce harfle başlayan tüm kombinasyonları deniyor. Sonra sayılarla başlıyor.

$ head wordlist.txt -5
aaaaaa
aaaaab
aaaaac
aaaaad
aaaaae

$ tail wordlist.txt -n 5
999995
999996
999997
999998
999999

Ancak şifremiz 1asd23 yani parola denemesi wordlistin sonuna gelene kadar devam edecektir. Bu sebeble wordlist daha yavaş buldu. Ancak eğerki parolamız harf ile başlasaydı çok daha hızlı bir şekilde parolayı bulabilirdik. Çünkü harf ile başlayan parolalar wordlistin başında başlıyor.