Введение
В этой лабораторной работе вы получите практический опыт в методах взлома паролей, специально нацеленных на ZIP-архивы. Вы будете использовать John the Ripper — мощный инструмент для взлома паролей с открытым исходным кодом — совместно с zip2john — утилитой для преобразования ZIP-файлов в формат хеша, который может быть понят John the Ripper. Эта лабораторная работа проведет вас через создание ZIP-файла, защищенного паролем, извлечение его хеша и последующую попытку его взлома. Кроме того, вы узнаете о присущих слабостях старых методов шифрования ZIP и откроете для себя более безопасные альтернативы для защиты ваших конфиденциальных данных.
Создание ZIP-архива, защищенного паролем
На этом этапе вы создадите простой текстовый файл, а затем сожмете его в ZIP-архив, защищенный паролем. Этот ZIP-архив послужит нашей целью для последующих попыток взлома. Для демонстрации мы будем использовать простой, легко угадываемый пароль.
Сначала убедитесь, что вы находитесь в папке project в вашей домашней директории.
cd ~/project
Теперь создайте файл с именем secret.txt и некоторым содержимым.
echo "This is a secret message." > secret.txt
Далее создайте ZIP-архив с именем archive.zip, содержащий secret.txt, с защитой паролем. При запросе введите password123 в качестве пароля.
zip -e archive.zip secret.txt
Вам будет предложено ввести пароль:
Enter password:
Verify password:
adding: secret.txt (deflated 29%)
Вы можете проверить создание ZIP-файла, перечислив содержимое текущей директории.
ls -l
Вы должны увидеть в списке archive.zip и secret.txt.
Извлечение хеша из ZIP-файла с помощью zip2john
На этом этапе вы будете использовать утилиту zip2john для извлечения хеша пароля из файла archive.zip. Этот хеш представляет собой представление пароля, которое John the Ripper может использовать для попытки взлома исходного пароля.
Сначала убедитесь, что вы находитесь в директории ~/project.
cd ~/project
Теперь запустите zip2john для archive.zip и перенаправьте его вывод в файл с именем zip_hash.txt.
zip2john archive.zip > zip_hash.txt
Эта команда извлечет хеш и сохранит его в zip_hash.txt. Вывод zip2john обычно выглядит следующим образом (фактический хеш будет отличаться):
archive.zip:$zip$*0*1*0*...*secret.txt*$/zip$
Вы можете просмотреть содержимое файла zip_hash.txt, чтобы убедиться, что хеш был извлечен.
cat zip_hash.txt
В выводе должна отображаться строка извлеченного хеша.
Взлом ZIP-хеша с помощью John the Ripper
Теперь, когда вы извлекли хеш, вы будете использовать John the Ripper для попытки взлома пароля. Для этой демонстрации мы будем использовать простой список слов (wordlist), который включает установленный нами ранее пароль.
Сначала убедитесь, что вы находитесь в директории ~/project.
cd ~/project
John the Ripper часто использует список слов для перебора распространенных паролей. Для этой лабораторной работы мы создадим небольшой пользовательский список слов, который будет включать наш целевой пароль.
echo -e "test\npassword\n123456\npassword123\nadmin" > wordlist.txt
Теперь запустите John the Ripper, используя файл zip_hash.txt и wordlist.txt.
john --wordlist=wordlist.txt zip_hash.txt
John the Ripper обработает хеш и список слов. В случае успеха он отобразит взломанный пароль. Вывод будет похож на следующий:
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123 (archive.zip)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Вы также можете проверить взломанные пароли, которые нашел John, выполнив:
john --show zip_hash.txt
Эта команда отобразит любые пароли, которые John the Ripper успешно взломал и сохранил в своем внутреннем файле pot.
archive.zip:password123
1 password hash cracked, 0 left
Понимание уязвимостей шифрования ZIP
На этом этапе вы узнаете о присущих слабостях стандартного метода шифрования ZIP 2.0, который использовался на предыдущих этапах. Понимание этих слабостей имеет решающее значение для осознания того, почему необходимы более надежные методы шифрования.
Шифрование по умолчанию, используемое командой zip (часто называемое "традиционным шифрованием PKZIP" или "шифрованием ZIP 2.0"), известно своей слабостью. Оно использует проприетарный алгоритм, который подвержен различным атакам, включая атаки на основе известного открытого текста (known-plaintext attacks) и атаки полным перебором (brute-force attacks), особенно с учетом современной вычислительной мощности.
Ключевые слабости:
- Проприетарный алгоритм: Алгоритм не проходит публичную проверку, как современные криптографические стандарты (например, AES).
- Слабая деривация ключа: Функция деривации ключа проста и облегчает злоумышленникам угадывание или перебор паролей.
- Атаки на основе известного открытого текста: Если злоумышленник имеет доступ как к зашифрованному ZIP-файлу, так и к незашифрованной версии хотя бы одного файла внутри него (даже небольшого), он часто может очень быстро восстановить ключ шифрования. Это значительная уязвимость.
- Ограниченное пространство ключей: Для более коротких паролей эффективное пространство ключей невелико, что делает атаки полным перебором осуществимыми.
Из-за этих слабостей использование стандартного шифрования ZIP 2.0 для конфиденциальных данных крайне не рекомендуется. Даже пароль средней сложности может быть взломан относительно быстро, если у злоумышленника достаточно ресурсов или есть известный открытый текст.
Этот этап не требует выполнения каких-либо команд, но важно усвоить эти концепции для безопасной работы с данными.
Эффективное обеспечение безопасности ZIP-архивов
Учитывая слабости традиционного шифрования ZIP, крайне важно использовать более надежные методы при защите конфиденциальных данных. На этом этапе вы узнаете о более надежном стандарте шифрования AES-256 и научитесь его использовать.
Многие современные реализации zip, включая ту, что установлена на вашей виртуальной машине LabEx, поддерживают шифрование AES. При создании ZIP-архива вы можете указать метод шифрования.
Для создания ZIP-архива с шифрованием AES-256 обычно используется флаг -P для пароля и флаг -m для метода, или же полагаются на стандартное сильное шифрование, если оно доступно. Однако флаг -e команды zip часто по умолчанию использует более слабое шифрование PKZIP 2.0. Для более сильного шифрования, такого как AES-256, часто лучше использовать 7z (7-Zip) или WinRAR, которые явно его поддерживают.
Поскольку 7z является широко используемым инструментом для надежного архивирования, давайте продемонстрируем, как создать архив с шифрованием AES-256 с помощью 7z. Сначала установите p7zip-full.
sudo apt-get install -y p7zip-full
Теперь создайте новый файл для этой демонстрации.
echo "This is a highly secret message." > super_secret.txt
Далее создайте архив 7z с именем secure_archive.7z с шифрованием AES-256. При запросе введите надежный пароль (например, StrongPassword!23).
7z a -p secure_archive.7z super_secret.txt
Вам будет предложено ввести пароль:
Enter password (will not be echoed):
Verify password (will not be echoed):
Эта команда создает архив 7z с шифрованием AES-256 по умолчанию, которое значительно безопаснее традиционного шифрования ZIP 2.0. Архивы 7z гораздо сложнее взломать благодаря их сильным алгоритмам шифрования и функциям деривации ключей.
Вы можете проверить создание архива 7z.
ls -l
Вы должны увидеть в списке secure_archive.7z.
Рекомендации по безопасному архивированию:
- Используйте сильное шифрование: Всегда предпочитайте шифрование AES-256 (например, с помощью
7zили современных инструментовzip, которые явно поддерживают AES). - Используйте надежные пароли: Комбинируйте буквы в верхнем и нижнем регистре, цифры и символы. Стремитесь к длине не менее 12-16 символов.
- Избегайте известного открытого текста: Не включайте в зашифрованные архивы легко угадываемые или общедоступные файлы.
- Регулярно обновляйте инструменты: Убедитесь, что ваше архивирующее программное обеспечение обновлено, чтобы воспользоваться последними исправлениями безопасности и улучшениями.
Следуя этим рекомендациям, вы можете значительно повысить безопасность ваших заархивированных данных.
Резюме
В этой лабораторной работе вы успешно научились создавать ZIP-архивы, защищенные паролем, извлекать их хэши с помощью zip2john, а затем взламывать эти хэши с помощью John the Ripper. Этот практический опыт продемонстрировал процесс взлома паролей и выявил уязвимости старых методов шифрования. Важно отметить, что вы также получили представление о слабостях, присущих традиционному шифрованию ZIP 2.0, и узнали о более безопасных альтернативах, таких как шифрование AES-256 с использованием таких инструментов, как 7z. Применяя обсуждаемые лучшие практики, вы можете гарантировать, что ваши конфиденциальные данные будут защищены надежными криптографическими стандартами.


