Взлом файлов защищенных паролем

Взлом файлов защищенных паролем

Все знают, что нельзя хранить конфиденциальную информацию в незашифрованных файлах, верно? Файлы PDF и ZIP часто могут содержать кладезь информации, такой как сетевые схемы, IP-адреса и учетные данные для входа. Иногда даже определенные зашифрованные файлы не защищены от злоумышленников. Вот тут-то и появляется Zydra — инструмент для взлома файлов RAR, ZIP-файлов, PDF-файлов и теневых файлов Linux. В этой статье мы рассмотрим взлом файлов защищенных паролем.

Как эти файлы зашифрованы?

В зависимости от используемой программы и ее версии такие файлы могут быть защищены паролем с использованием различных алгоритмов шифрования.

Например, утилита zip командной строки Linux использует старый алгоритм PKZIP, который небезопасен и легко взломан. Другие программы, такие как WinZip и 7-Zip, используют надежное шифрование AES-256. Более ранние версии протокола RAR используют проприетарный алгоритм шифрования, а более новые версии используют AES. WinRAR и PeaZip, популярные варианты, которые могут работать с файлами RAR, также используют стандарт AES.

Если вы используете Linux, в LibreOffice легко создавать PDF-файлы, экспортируя обычные текстовые документы, и есть даже возможность защитить паролем вновь созданный файл. Старые версии LibreOffice используют алгоритм Blowfish для шифрования файлов, но версии 3.5 и выше используют AES. Другие способы создания файлов PDF включают Microsoft Office и Adobe Acrobat — версии Office 2007+ и версии Acrobat 7+ поддерживают шифрование AES.

Сами теневые файлы Linux не зашифрованы, но содержащиеся в них пароли зашифрованы. Используемые для них алгоритмы шифрования могут различаться в зависимости от системы, но обычно используются MD5, SHA-512, SHA-256, Blowfish и DES.

Загрузка и настройка Zydra

Для начала нам нужно скачать Zydra с GitHub — используйте утилиту wget, чтобы получить файл Python прямо из командной строки:

~$ wget https://raw.githubusercontent.com/hamedA2/Zydra/master/Zydra.py

--2020-07-15 18:41:25--  https://raw.githubusercontent.com/hamedA2/Zydra/master/Zydra.py
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 30544 (30K) [text/plain]
Saving to: ‘Zydra.py’

Zydra.py             100%[======================>]  29.83K  --.-KB/s    in 0.04s

2020-07-15 18:41:26 (764 KB/s) - ‘Zydra.py’ saved [30544/30544]

Далее, и этот шаг совершенно необязателен, давайте переименуем скрипт, сделав его полностью строчным. Если вы ленивы, как и я, вам нужно нажать всего на одну клавишу меньше:

~$ mv Zydra.py zydra.py

Нам также нужно установить некоторые зависимости для правильной работы Zydra — она использует Python 3, поэтому мы можем использовать pip3 для установки дополнительных модулей:

~$ pip3 install rarfile pyfiglet py-term

Collecting rarfile
  Downloading rarfile-3.1.tar.gz (121 kB)
     |████████████████████████████████| 121 kB 1.0 MB/s
Requirement already satisfied: pyfiglet in /usr/lib/python3/dist-packages (0.8.post0)
Collecting py-term
  Downloading py-term-0.6.tar.gz (5.4 kB)
Building wheels for collected packages: rarfile, py-term
  Building wheel for rarfile (setup.py) ... done
  Created wheel for rarfile: filename=rarfile-3.1-py3-none-any.whl size=24908 sha256=6f16c1h4b06a3f7a7d8v4baa34e9a6d58a949b5a78c2b23bb60c0d62791372e3
  Stored in directory: /home/kali/.cache/pip/wheels/21/50/d0/8da8b10f46113f46c6f0247c5f59401293fb5b15aa7888a4ce
  Building wheel for py-term (setup.py) ... done
  Created wheel for py-term: filename=py_term-0.6-py3-none-any.whl size=6268 sha256=ab75424c7aa6ef71001a24c3e3a558ad3748ee0d6a3c0153c3a0cf955f814a13
  Stored in directory: /home/kali/.cache/pip/wheels/76/cc/73/8ac13320a2a98600008575b936742bbb6025d21d674ca6e2fd
Successfully built rarfile py-term
Installing collected packages: rarfile, py-term
Successfully installed py-term-0.6 rarfile-3.1

Теперь мы должны быть готовы запустить Zydra с помощью команды python3:

~$ python3 zydra.py

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         _______           ______   _______  _______
        / ___   )|\     /|(  __  \ (  ____ )(  ___  )
        \/   )  |( \   / )| (  \  )| (    )|| (   ) |
            /   ) \ (_) / | |   ) || (____)|| (___) |
           /   /   \   /  | |   | ||     __)|  ___  |
          /   /     ) (   | |   ) || (\ (   | (   ) |
         /   (_/\   | |   | (__/  )| ) \ \__| )   ( |
        (_______/   \_/   (______/ |/   \__/|/     \|

        Author : Hamed Hosseini
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Usage: zydra.py [options] [args]

Dictionary Mode:
   zydra.py -f <file> -d <wordlist>

Brute force Mode:
   zydra.py -f <file> -b <char_type> -m <min_length> -x <max_length>

   Available char_type:
    <lowercase>  The lowercase letters abcdefghijklmnopqrstuvwxyz
    <uppercase>  The uppercase letters ABCDEFGHIJKLMNOPQRSTUVWXYZ
    <letters>    The concatenation of the lowercase and uppercase
    <digits>     numbers 0123456789
    <symbols>    punctuation characters !#$%&'()*+,-./:;<=>?@[\]^_`{|}~'"
    <space>      space character
   You can select multiple character types.
    Example: zydra.py -f <file> -b <space,digits> -m 1 -x 8

zydra.py: error:  Choose a file, Use --help for more info

Это дает нам красивый маленький баннер, пример использования и некоторую информацию о некоторых доступных параметрах. Это также дает нам сообщение об ошибке о том, что ему нужен файл, и говорит нам использовать —help для получения дополнительной информации; это даст нам больше деталей и вариантов:

~$ python3 zydra.py --help

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         _______           ______   _______  _______
        / ___   )|\     /|(  __  \ (  ____ )(  ___  )
        \/   )  |( \   / )| (  \  )| (    )|| (   ) |
            /   ) \ (_) / | |   ) || (____)|| (___) |
           /   /   \   /  | |   | ||     __)|  ___  |
          /   /     ) (   | |   ) || (\ (   | (   ) |
         /   (_/\   | |   | (__/  )| ) \ \__| )   ( |
        (_______/   \_/   (______/ |/   \__/|/     \|

        Author : Hamed Hosseini
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Usage: zydra.py [options] [args]

Dictionary Mode:
   zydra.py -f <file> -d <wordlist>

Brute force Mode:
   zydra.py -f <file> -b <char_type> -m <min_length> -x <max_length>

   Available char_type:
    <lowercase>  The lowercase letters abcdefghijklmnopqrstuvwxyz
    <uppercase>  The uppercase letters ABCDEFGHIJKLMNOPQRSTUVWXYZ
    <letters>    The concatenation of the lowercase and uppercase
    <digits>     numbers 0123456789
    <symbols>    punctuation characters !#$%&'()*+,-./:;<=>?@[\]^_`{|}~'"
    <space>      space character
   You can select multiple character types.
    Example: zydra.py -f <file> -b <space,digits> -m 1 -x 8

Options:
  -h, --help    show this help message and exit
  -d DICTFILE   Specifies dictionary file
  -f FILE       Specifies the file
  -b CHARTYPE   Specifies the character type
  -m MINLENGTH  Specifies minimum length of password
  -x MAXLENGTH  Specifies maximum length of password

Прежде чем мы сможем запустить Zydra, нам понадобятся некоторые файлы для тестирования. Я создал файл RAR, файл ZIP и файл PDF, которые вы можете загрузить и использовать для дальнейшего изучения. Пароль для всех трех из них — «password1», как вы скоро узнаете. Вы также можете скачать теневой файл, который я получил с виртуальной машины Metasploitable.

Нам также понадобится подходящий список слов. Поскольку наш пароль для этих файлов довольно прост, мы будем использовать минимальный список для демонстрационных целей — этот из репозитория SecLists GitHub будет работать:

~$ wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/darkweb2017-top10.txt

--2020-07-15 19:08:05--  https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/darkweb2017-top10.txt
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 81 [text/plain]
Saving to: ‘darkweb2017-top10.txt’

darkweb2017-top10.tx 100%[======================>]      81  --.-KB/s    in 0s

2020-07-15 19:08:05 (3.10 MB/s) - ‘darkweb2017-top10.txt’ saved [81/81]

На данный момент мы готовы к взлому.

Взлом RAR-файлов

Zydra может работать в двух режимах: словарь и брутфорс. В режиме словаря нам просто нужно предоставить список слов с флагом -d. Нам также нужно указать файл, который мы пытаемся взломать, используя флаг -f:

~$ python3 zydra.py -f nb-rar.rar -d darkweb2017-top10.txt

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         _______           ______   _______  _______
        / ___   )|\     /|(  __  \ (  ____ )(  ___  )
        \/   )  |( \   / )| (  \  )| (    )|| (   ) |
            /   ) \ (_) / | |   ) || (____)|| (___) |
          ok   /   /   \   /  | |   | ||     __)|  ___  |
          /   /     ) (   | |   ) || (\ (   | (   ) |
         /   (_/\   | |   | (__/  )| ) \ \__| )   ( |
        (_______/   \_/   (______/ |/   \__/|/     \|

        Author : Hamed Hosseini
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Start time ==> Wed Jul 15 19:08:15 2020

Starting password cracking for /root/nb/nb-rar.rar /

 [*] Count of possible passwords: 10
    Progress : [#####################################     ] 80.000 %
    [+] Password Found: password1

End time ==> Wed Jul 15 19:08:41 2020
Execution time ==> 0:00:25.876620

Как только он запускается, он дает нам возможное количество паролей (в основном, сколько строк в списке слов) и индикатор выполнения. Это не займет много времени, прежде чем он найдет пароль и сообщит нам, что это такое.

Для режима грубой силы нам нужно установить еще несколько параметров. Мы по-прежнему указываем файл для взлома, но теперь мы можем использовать флаг -b, чтобы установить типы символов, которые будут использоваться для перебора. Минимальную и максимальную длину пароля теперь также можно установить, используя флаги -m и -x соответственно:

~$ python3 zydra.py -f nb-rar.rar -b letters,digits -m 1 -x 10

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         _______           ______   _______  _______
        / ___   )|\     /|(  __  \ (  ____ )(  ___  )
        \/   )  |( \   / )| (  \  )| (    )|| (   ) |
            /   ) \ (_) / | |   ) || (____)|| (___) |
           /   /   \   /  | |   | ||     __)|  ___  |
          /   /     ) (   | |   ) || (\ (   | (   ) |
         /   (_/\   | |   | (__/  )| ) \ \__| )   ( |
        (_______/   \_/   (______/ |/   \__/|/     \|

        Author : Hamed Hosseini
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Start time ==> Wed Jul 15 19:09:01 2020

Starting password cracking for /root/nb/nb-rar.rar /

 [*] Count of possible passwords: 853058371866181866
    Progress : [                                          ] 0.000 %

Как видите, количество потенциальных паролей довольно велико, поэтому, хотя эта функция может быть полезна в определенных случаях, в большинстве случаев целесообразно использовать режим словаря.

Теперь, когда у нас есть пароль, мы можем извлечь содержимое файла RAR с помощью следующей команды:

~$ unrar x nb-rar.rar

UNRAR 5.61 beta 1 freeware      Copyright (c) 1993-2018 Alexander Roshal

Extracting from nb-rar.rar

Enter password (will not be echoed) for test.txt:

Взлом ZIP-файлов

Взлом ZIP-файлов работает почти так же — с этого момента мы будем использовать только режим словаря, так как он намного эффективнее. Просто укажите файл для взлома и список слов для использования:

~$ python3 zydra.py -f nb-zip.zip -d darkweb2017-top10.txt

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         _______           ______   _______  _______
        / ___   )|\     /|(  __  \ (  ____ )(  ___  )
        \/   )  |( \   / )| (  \  )| (    )|| (   ) |
            /   ) \ (_) / | |   ) || (____)|| (___) |
          ok   /   /   \   /  | |   | ||     __)|  ___  |
          /   /     ) (   | |   ) || (\ (   | (   ) |
         /   (_/\   | |   | (__/  )| ) \ \__| )   ( |
        (_______/   \_/   (______/ |/   \__/|/     \|

        Author : Hamed Hosseini
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Start time ==> Wed Jul 15 19:09:45 2020

Starting password cracking for /root/nb/nb-zip.zip /

 [*] Count of possible passwords: 10
    Progress : [#####################################     ] 80.000 %
    [+] Password Found: password1

End time ==> Wed Jul 15 19:10:10 2020
Execution time ==> 0:00:25.062398

Мы видим, что он снова нашел пароль без проблем.

Чтобы извлечь содержимое ZIP-архива, используйте команду unzip:

~$ unzip nb-zip.zip

Archive:  nb-zip.zip
[nb-zip.zip] example.txt password:

Взлом PDF-файлов

Чтобы Zydra работала с PDF-файлами, нам нужно сначала установить программу под названием qpdf:

~$ sudo apt install qpdf

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  libqpdf28
The following NEW packages will be installed:
  libqpdf28 qpdf
0 upgraded, 2 newly installed, 0 to remove and 568 not upgraded.
Need to get 1,015 kB of archives.
After this operation, 2,690 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://kali.download/kali kali-rolling/main amd64 libqpdf28 amd64 10.0.1-2 [479 kB]
Get:2 http://kali.download/kali kali-rolling/main amd64 qpdf amd64 10.0.1-2 [537 kB]
Fetched 1,015 kB in 1s (830 kB/s)
Selecting previously unselected package libqpdf28:amd64.
(Reading database ... 377060 files and directories currently installed.)
Preparing to unpack .../libqpdf28_10.0.1-2_amd64.deb ...
Unpacking libqpdf28:amd64 (10.0.1-2) ...
Selecting previously unselected package qpdf.
Preparing to unpack .../qpdf_10.0.1-2_amd64.deb ...
Unpacking qpdf (10.0.1-2) ...
Setting up libqpdf28:amd64 (10.0.1-2) ...
Setting up qpdf (10.0.1-2) ...
Processing triggers for libc-bin (2.30-4) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for kali-menu (2020.2.2) ...

Теперь мы можем взломать PDF-файл, предоставив файл и список слов для использования, как и раньше:

~$ python3 zydra.py -f nb-sample.pdf -d darkweb2017-top10.txt

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         _______           ______   _______  _______
        / ___   )|\     /|(  __  \ (  ____ )(  ___  )
        \/   )  |( \   / )| (  \  )| (    )|| (   ) |
            /   ) \ (_) / | |   ) || (____)|| (___) |
          ok   /   /   \   /  | |   | ||     __)|  ___  |
          /   /     ) (   | |   ) || (\ (   | (   ) |
         /   (_/\   | |   | (__/  )| ) \ \__| )   ( |
        (_______/   \_/   (______/ |/   \__/|/     \|

        Author : Hamed Hosseini
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Start time ==> Wed Jul 15 19:10:30 2020

Starting password cracking for /root/nb/nb-sample.pdf /

 [*] Count of possible passwords: 10
    Progress : [#####################################     ] 80.000 %
    [+] Password Found: password1
    [*] Your decrypted file is decrypted_nb-sample.pdf

End time ==> Wed Jul 15 19:10:55 2020
Execution time ==> 0:00:25.118694

Опять же, мы видим, что он нашел пароль, но на этот раз есть дополнительный диалог. Это просто говорит нам, что файл является расшифрованной версией оригинала, что мы можем проверить с помощью команды файла:

~$ file decrypted_nb-sample.pdf

decrypted_nb-sample.pdf: PDF document, version 1.4

Взлом теневых файлов

Zydra автоматически попытается взломать хэши паролей для любых пользователей, найденных в теневых файлах Linux. Хотя это не всегда успешно, это может быть хорошим методом, чтобы опробовать его в первую очередь, поскольку он быстрый и простой.

Все, что нам нужно сделать, это указать файл с флагом -f и список слов с флагом -d:

~$ python3 zydra.py -f nb-shadow -d darkweb2017-top10.txt

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         _______           ______   _______  _______
        / ___   )|\     /|(  __  \ (  ____ )(  ___  )
        \/   )  |( \   / )| (  \  )| (    )|| (   ) |
            /   ) \ (_) / | |   ) || (____)|| (___) |
          ok   /   /   \   /  | |   | ||     __)|  ___  |
          /   /     ) (   | |   ) || (\ (   | (   ) |
         /   (_/\   | |   | (__/  )| ) \ \__| )   ( |
        (_______/   \_/   (______/ |/   \__/|/     \|

        Author : Hamed Hosseini
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Start time ==> Wed Jul 15 19:11:03 2020

Starting password cracking for /root/nb/nb-shadow /

 [*] Count of possible passwords: 10
  [**] cracking Password for: root
    Progress : [##############################################] 100.000 %
    [-] password not found

  [**] cracking Password for: sys
  [**] cracking Password for: klog
  [**] cracking Password for: msfadmin
  [**] cracking Password for: postgres
  [**] cracking Password for: user
  [**] cracking Password for: service
End time ==> Wed Jul 15 19:11:26 2020
Execution time ==> 0:00:22.062705

Мы видим, что он находит нескольких пользователей, но, поскольку мы используем только простой список слов, он не может найти пароль ни для одного из них. Как и любой другой инструмент для взлома, использование более обширного списка слов увеличит ваши шансы на успешное восстановление пароля, но это также займет больше времени.

Итоги

В этом руководстве мы рассмотрели инструмент под названием Zydra и то, как его можно использовать для взлома защищенных паролем файлов RAR, ZIP-файлов, PDF-файлов и теневых файлов Linux. Хотя мы взломали их практически без труда, использование надежных паролей значительно увеличит время и усилия, необходимые для этого.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click to rate this post!
[Total: 0 Average: 0]

Leave a reply:

Your email address will not be published.