Введение
В этой лабораторной работе вы изучите фундаментальный процесс взлома ZIP-архива, защищенного паролем. Это распространенная задача в цифровой криминалистике и тестировании на проникновение. Для достижения этой цели вы будете использовать комбинацию инструментов командной строки, доступных в Linux. Процесс включает создание образца защищенного файла, извлечение его хэша пароля и затем использование мощного инструмента восстановления паролей, Hashcat, для взлома хэша и раскрытия исходного пароля.
К концу этой лабораторной работы вы будете знакомы со следующими аспектами:
- Создание зашифрованных ZIP-файлов.
- Использование
zip2johnдля извлечения хэшей паролей. - Подготовка хэшей для использования с Hashcat.
- Запуск атаки по словарю с помощью Hashcat для восстановления пароля.
Создание ZIP-файла, защищенного паролем
На этом этапе вы создадите ZIP-файл, защищенный паролем. Он послужит нашей целью для упражнения по взлому пароля. Мы будем использовать стандартную команду zip с опцией -e, которая означает "encrypt" (шифровать).
Сначала убедитесь, что вы находитесь в каталоге ~/project. Файл с именем secret.txt уже был создан для вас в процессе настройки.
Теперь выполните следующую команду, чтобы создать зашифрованный ZIP-архив с именем secret.zip из файла secret.txt.
zip -e secret.zip secret.txt
Система предложит вам ввести и подтвердить пароль. Для этой лабораторной работы используйте пароль labex. Введите labex, нажмите Enter, а затем введите его еще раз для подтверждения.
Enter password:
Verify password:
adding: secret.txt (stored 0%)
После завершения команды вы можете использовать команду ls для проверки того, что файл secret.zip был создан в вашем текущем каталоге.
ls -l
В выводе вы должны увидеть secret.zip.
-rw-r--r-- 1 labex labex 218 May 20 10:00 secret.zip
-rw-r--r-- 1 labex labex 23 May 20 10:00 secret.txt
-rw-r--r-- 1 labex labex 32 May 20 10:00 wordlist.txt
Использование zip2john для извлечения хэша из ZIP-файла
На этом этапе вы будете использовать утилиту zip2john для извлечения хэша пароля из файла secret.zip. Инструменты для взлома паролей, такие как Hashcat, не работают напрямую с зашифрованным файлом; они работают с его хэшем. zip2john — это инструмент из набора John the Ripper, разработанный специально для этой цели.
Выполните следующую команду, чтобы обработать secret.zip и сохранить полученный хэш в новый файл с именем zip_hash.txt.
zip2john secret.zip > zip_hash.txt
Эта команда не выводит ничего непосредственно в терминал, поскольку мы перенаправили вывод в файл zip_hash.txt. Чтобы увидеть извлеченный хэш, вы можете отобразить содержимое нового файла с помощью команды cat.
cat zip_hash.txt
Вывод будет выглядеть примерно следующим образом. Эта строка содержит всю информацию, необходимую для взлома пароля.
secret.zip:$pkzip2$1*1*2*0*8*24*7b4f4718*0*28*0*8*24*7b4f*53a9*$/pkzip2$
Форматирование хэша для совместимости с Hashcat
На этом этапе вы отформатируете извлеченный хэш, чтобы сделать его совместимым с Hashcat. Вывод из zip2john включает исходное имя файла (secret.zip:) в качестве префикса строки хэша. Hashcat требует только чистые данные хэша.
Давайте еще раз посмотрим на содержимое zip_hash.txt:
secret.zip:$pkzip2$1*1*2*0*8*24*...
Нам нужно удалить часть secret.zip:. Простой способ сделать это — использовать команду cut, которая может разделять текст на основе разделителя. Мы будем использовать двоеточие (:) в качестве разделителя и выберем второе поле.
Выполните следующую команду, чтобы извлечь хэш и сохранить его в новый файл с именем hashcat_ready.txt.
cut -d':' -f2 zip_hash.txt > hashcat_ready.txt
cut: Команда для вырезания частей строк.-d':': Указывает, что разделителем является двоеточие.-f2: Указывает, что нам нужно второе поле.
Теперь просмотрите содержимое нового файла, чтобы убедиться, что он содержит только хэш.
cat hashcat_ready.txt
Вывод должен представлять собой строку хэша без префикса имени файла.
$pkzip2$1*1*2*0*8*24*7b4f4718*0*28*0*8*24*7b4f*53a9*$/pkzip2$
Этот файл теперь готов к использованию с Hashcat.
Выбор правильного режима Hashcat для PKZIP
На этом этапе вы узнаете, как определить правильный режим хэша для Hashcat. Hashcat поддерживает взлом сотен различных типов хэшей, и вы должны указать, какой тип вы предоставляете, используя номер режима.
Хэш, который мы извлекли, начинается с $pkzip2$. Это указывает на тип используемого шифрования ZIP. Мы можем поискать в справочной документации Hashcat режимы, связанные с "PKZIP", чтобы найти правильный номер.
Используйте следующую команду для поиска "pkzip" в выводе справки Hashcat.
hashcat --help | grep -i "pkzip"
Вывод будет содержать список нескольких режимов хэшей, связанных с различными версиями шифрования PKZIP.
17200 | PKZIP (legacy) | Archives
17210 | PKZIP (legacy) (Compressed) | Archives
17220 | PKZIP (legacy) (Mixed) | Archives
17225 | PKZIP (legacy) (Mixed + Compressed) | Archives
20500 | PKZIP Master Key | Archives
20510 | PKZIP Master Key (Compressed) | Archives
Наш хэш, сгенерированный из простого ZIP-файла, защищенного паролем, соответствует типу "PKZIP (legacy)". Как видно из вывода, номер режима для этого — 17200. Мы будем использовать этот режим на следующем шаге для запуска нашей атаки.
Запуск атаки для восстановления пароля ZIP
На этом этапе вы запустите атаку на подбор пароля с помощью Hashcat. Мы выполним "прямую" атаку или атаку по словарю, при которой Hashcat перебирает каждый пароль из заданного списка. Мы уже подготовили простой список под названием wordlist.txt.
Структура команды для Hashcat следующая:
hashcat [options] <hash_file> <wordlist_file>
Исходя из предыдущих шагов, полная команда выглядит так:
hashcat -m 17200 -a 0 hashcat_ready.txt wordlist.txt
Разберем команду:
-m 17200: Указывает режим хэша для PKZIP (legacy), который мы определили на предыдущем шаге.-a 0: Указывает режим атаки.0означает прямую атаку (по словарю).hashcat_ready.txt: Файл, содержащий наш целевой хэш.wordlist.txt: Файл, содержащий список потенциальных паролей.
Выполните команду. Hashcat запустится, инициализирует свой бэкенд и начнет атаку.
hashcat (v6.2.6) starting
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: PKZIP (legacy)
Hash.Target......: $pkzip2$1*1*2*0*8*24*7b4f4718*0*28*0*8*24*7b4f*53a9*$/pkzip2$
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 248.2 kH/s (0.10ms) @ Accel:128 Loops:128 Thr:1
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 3/4 (75.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: labex -> zzzzzzz
Hardware.Mon.#1..: Temp: 48c
$pkzip2$1*1*2*0*8*24*7b4f4718*0*28*0*8*24*7b4f*53a9*$/pkzip2$:labex
Started: ...
Stopped: ...
Hashcat очень быстро нашел пароль, потому что наш список слов был небольшим. Последняя строка вывода показывает хэш, за которым следует восстановленный пароль: labex.
Поздравляем, вы успешно взломали пароль ZIP-архива!
Резюме
В этой лабораторной работе вы успешно завершили весь рабочий процесс взлома ZIP-архива, защищенного паролем, с использованием распространенных инструментов командной строки.
Вы научились:
- Создавать зашифрованный ZIP-файл с помощью команды
zip. - Извлекать хэш пароля из ZIP-файла с помощью
zip2john. - Форматировать извлеченный хэш для совместимости с
Hashcat. - Определять правильный режим типа хэша для вашей цели в
Hashcat. - Запускать атаку по словарю с помощью
Hashcatдля успешного восстановления пароля.
Эти навыки формируют базовое понимание методов восстановления паролей, которые имеют решающее значение в областях кибербезопасности, таких как цифровая криминалистика и этичный хакинг. Хотя мы использовали простой пароль и небольшой список слов в образовательных целях, те же принципы применимы и к более сложным реальным сценариям.


