Взлом паролей ZIP-архивов с помощью John the Ripper

HydraBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы научитесь взламывать защищенные паролем ZIP-файлы, используя John the Ripper — один из самых популярных и мощных инструментов для восстановления паролей. Данное упражнение проведет вас через основные этапы процесса взлома: от настройки необходимого ПО до проверки расшифрованного пароля. К концу занятия вы поймете, как извлекаются хеши паролей и как они используются в атаках по словарю и методом перебора (brute-force), что наглядно демонстрирует важность использования сложных паролей для защиты данных.

Установка необходимых инструментов

Прежде чем приступить к взлому, необходимо подготовить программное обеспечение. На этом этапе вы установите John the Ripper (JtR) — основной инструмент этой работы, а также утилиту zip для создания тестового архива. Мы воспользуемся менеджером пакетов apt, стандартным для систем на базе Debian, таких как Ubuntu.

Сначала обновите списки пакетов и установите необходимые зависимости и утилиту zip, выполнив следующие команды в терминале. Флаг -y автоматически подтверждает установку.

sudo apt update
sudo apt install -y git build-essential libssl-dev zlib1g-dev zip
sudo apt install -y yasm pkg-config libgmp-dev libpcap-dev libbz2-dev

Стандартный пакет john из репозиториев apt не содержит утилиту zip2john, которая нам понадобится. Поэтому мы клонируем и скомпилируем John the Ripper из официального репозитория, чтобы получить полный набор инструментов.

cd ~/project
git clone --depth 1 https://github.com/openwall/john -b bleeding-jumbo john
cd john/src
./configure && make -s clean && make -sj4

Внимание: Процесс компиляции может занять от 3 до 5 минут. Пожалуйста, подождите.

После завершения компиляции создайте псевдонимы (aliases) для инструментов John the Ripper, чтобы их можно было запускать из любого места:

echo 'alias john="$HOME/project/john/run/john"' >> ~/.zshrc
echo 'alias zip2john="$HOME/project/john/run/zip2john"' >> ~/.zshrc
source ~/.zshrc

Теперь проверьте работоспособность john и zip2john, запустив их в терминале:

john

Вы должны увидеть вывод, похожий на этот, что подтверждает успешную установку:

John the Ripper 1.9.0-jumbo-1+bleeding-7a8c81abd9 2025-08-23 23:43:48 +0200 OMP [linux-gnu 64-bit x86_64 AVX-512 AC]
Copyright (c) 1996-2025 by Solar Designer and others
Homepage: https://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]

Use --help to list all available options.

Также проверьте доступность zip2john:

zip2john

Должна отобразиться справочная информация по использованию утилиты zip2john.

Вернитесь в рабочую директорию проекта для продолжения:

cd ~/project

Теперь, когда инструменты установлены, мы готовы создать защищенный файл для тренировки.

Создание защищенного паролем ZIP-файла

Для практики взлома нам нужна цель. На этом этапе вы создадите простой текстовый файл и упакуете его в ZIP-архив с паролем. Это имитирует реальную ситуацию, когда конфиденциальные данные защищаются паролем.

Убедитесь, что вы находитесь в директории проекта:

cd ~/project

Создайте текстовый файл secret.txt. Этот файл мы поместим внутрь защищенного архива.

echo "my secret data" > secret.txt

Теперь используйте команду zip с флагом -e (шифрование), чтобы создать архив secret.zip, содержащий файл secret.txt.

zip -e secret.zip secret.txt

После запуска команды система попросит вас ввести и подтвердить пароль. Для этой лабораторной работы используйте простой пароль password123. Это позволит быстро завершить процесс взлома в демонстрационных целях.

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

Enter password:
Verify password:
  adding: secret.txt (stored 0%)

Наконец, проверьте содержимое директории, чтобы убедиться в создании файла secret.zip.

ls -l

В выводе должны присутствовать secret.txt и secret.zip.

total 8
-rw-rw-r-- 1 labex labex  15 Aug 29 09:57 secret.txt
-rw-rw-r-- 1 labex labex 213 Aug 29 09:57 secret.zip

Вы успешно создали защищенный ZIP-архив, который станет нашей целью на следующих этапах.

Извлечение хеша из ZIP-файла

John the Ripper не работает с ZIP-файлом напрямую. Вместо этого он анализирует хеш пароля файла. Хеш — это уникальная строка символов, представляющая пароль. На этом этапе вы воспользуетесь утилитой zip2john, входящей в состав John the Ripper, чтобы извлечь этот хеш.

Запустите zip2john для файла secret.zip. Мы перенаправим вывод с помощью оператора >, чтобы сохранить хеш в новый файл zip_hash.txt:

zip2john secret.zip > zip_hash.txt

При выполнении этой команды в терминале появится подробная информация о структуре ZIP-файла:

ver 1.0 efh 5455 efh 7875 secret.zip/secret.txt PKZIP Encr: 2b chk, TS_chk, cmplen=27, decmplen=15, crc=AF1563E8 ts=4F26 cs=4f26 type=0

Эти данные содержат технические подробности о зашифрованном файле, включая параметры сжатия и шифрования.

Чтобы посмотреть, как выглядит извлеченный хеш, используйте команду cat:

cat zip_hash.txt

Вывод будет представлять собой строку текста, похожую на эту:

secret.zip/secret.txt:$pkzip$1*2*2*0*1b*f*af1563e8*0*44*0*1b*4f26*50dbe9bcf15eafdb00ef774e1eaffef116bf5e0597fa55bb8b364c*$/pkzip$:secret.txt:secret.zip::secret.zip

Строка хеша включает имя исходного файла, тип шифрования ($pkzip$) и зашифрованные данные. Теперь, когда файл с хешем готов, можно приступать к взлому пароля с помощью John the Ripper.

Взлом пароля

Теперь, когда у вас есть хеш пароля, вы можете запустить процесс взлома. По умолчанию John the Ripper использует встроенный словарь популярных паролей и набор правил для поиска совпадения с хешем.

Чтобы начать, просто запустите команду john, указав файл с хешем zip_hash.txt в качестве аргумента:

john zip_hash.txt

Поскольку мы использовали очень простой пароль, John the Ripper должен подобрать его мгновенно. В выводе будет отображаться прогресс и результат. Программа перебирает различные режимы атаки — сначала режим "single", затем атаку по словарю:

Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Note: Passwords longer than 21 [worst case UTF-8] to 63 [ASCII] rejected
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, 'h' for help, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
0g 0:00:00:00 DONE 1/3 (2025-08-29 10:24) 0g/s 2619Kp/s 2619Kc/s 2619KC/s Txtsecret1900..Tzip1900
Proceeding with wordlist:/home/labex/project/john/run/password.lst
Enabling duplicate candidate password suppressor using 256 MiB
password123      (secret.zip/secret.txt)
1g 0:00:00:00 DONE 2/3 (2025-08-29 10:24) 8.333g/s 286541p/s 286541c/s 286541C/s 123456..nelly1
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Строка password123 (secret.zip/secret.txt) подтверждает, что пароль успешно взломан. Обратите внимание, что John сначала попробовал режим "single" (который не дал результата), а затем перешел к списку слов (wordlist), где и нашел верный пароль.

После успешного взлома John сохраняет результат в своей базе. Чтобы просмотреть найденные пароли для конкретного файла хешей, используйте опцию --show.

john --show zip_hash.txt

Эта команда выведет пароль в удобном виде, привязав его к исходному файлу.

secret.zip/secret.txt:password123:secret.txt:secret.zip::secret.zip

1 password hash cracked, 0 left

Вы успешно использовали John the Ripper для восстановления пароля из хеша ZIP-файла. Последний шаг — убедиться, что этот пароль действительно работает.

Проверка доступа с помощью полученного пароля

Заключительный этап — подтверждение правильности взломанного пароля. Вы попробуете извлечь содержимое архива secret.zip, используя найденный пароль. Это подтвердит успех ваших усилий.

Используйте команду unzip для распаковки архива.

unzip secret.zip

Программа запросит пароль. Введите password123 — тот самый пароль, который восстановил John the Ripper.

Archive:  secret.zip
[secret.zip] secret.txt password:
replace secret.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: yes
 extracting: secret.txt

Если файл secret.txt уже существует (созданный на шаге 2), система спросит, нужно ли его заменить. Введите yes. Если пароль верный, команда unzip извлечет файл в текущую директорию без ошибок.

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

cat secret.txt

Текст должен совпадать с тем, что мы написали в начале.

my secret data

Успешно распаковав файл и прочитав его содержимое, вы подтвердили, что пароль, найденный John the Ripper, абсолютно верен. На этом цикл создания защищенного файла, взлома его пароля и проверки результата завершен.

Резюме

В ходе этой лабораторной работы вы получили практический опыт взлома паролей с помощью John the Ripper. Вы научились устанавливать необходимые инструменты, создавать защищенные ZIP-архивы и извлекать хеши паролей с помощью zip2john. Затем вы успешно применили John the Ripper для подбора пароля по хешу и проверили результат, получив доступ к защищенному файлу. Это упражнение демонстрирует базовые техники тестирования безопасности и подчеркивает уязвимость простых паролей перед современными инструментами перебора.