Введение
В этой лабораторной работе вы изучите фундаментальный процесс взлома 7z архива, защищенного паролем. 7-Zip — это популярный архиватор файлов с высоким коэффициентом сжатия, который позволяет пользователям шифровать архивы паролем. Мы смоделируем сценарий, в котором вам нужно восстановить забытый пароль.
Вы будете использовать комбинацию мощных отраслевых инструментов: p7zip для создания архива, набор инструментов John the Ripper для извлечения хэша пароля и Hashcat для выполнения фактического взлома. Этот практический опыт поможет вам создать цель, извлечь ее криптографический хэш и использовать масочную атаку для эффективного поиска пароля.
Создание 7z архива, защищенного паролем
На этом этапе мы начнем с создания образца файла, а затем сожмем его в 7z архив, защищенный паролем. Этот архив станет нашей целью для процесса взлома пароля на последующих этапах.
Сначала создадим простой текстовый файл с именем secret.txt в вашей текущей директории, ~/project.
echo "This is a secret file." > secret.txt
Теперь мы используем команду 7z для создания архива с именем secret.7z из secret.txt. Мы защитим его паролем LabEx2024. Флаг -p используется для прямого указания пароля.
7z a -pLabEx2024 secret.7z secret.txt
Вы должны увидеть вывод, указывающий на то, что файл был успешно создан и сжат.
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs LE)
Scanning the drive:
1 file, 25 bytes (1 KiB)
Creating archive: secret.7z
Items to compress: 1
Files read from disk: 1
Archive size: 228 bytes (1 KiB)
Everything is Ok
Теперь вы успешно создали архив, защищенный паролем, с которым мы будем работать.
Использование 7z2john.pl для извлечения хэша
На этом этапе мы извлечем хэш пароля из архива secret.7z. Инструменты для взлома паролей, такие как Hashcat, не работают напрямую с файлом архива; им требуется специфическое строковое представление ключа шифрования пароля, известное как хэш.
Мы будем использовать 7z2john, утилиту из набора инструментов John the Ripper, которая специально разработана для извлечения этих хэшей из 7z архивов.
Выполните следующую команду, чтобы обработать secret.7z и сохранить его хэш в новый файл с именем hash.txt. Символ > перенаправляет вывод команды в указанный файл.
/usr/sbin/7z2john secret.7z > hash.txt
Команда не будет производить никакого видимого вывода в терминале, поскольку он был перенаправлен. Чтобы убедиться, что хэш был извлечен, просмотрите содержимое hash.txt:
cat hash.txt
Вывод будет представлять собой длинную строку, которая является хэшем, представляющим пароль. Ему будет предшествовать имя файла.
secret.7z:$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301
Теперь у вас есть хэш, готовый для следующего этапа подготовки.
Очистка извлеченного хэша для Hashcat
На этом этапе нам нужно подготовить извлеченный хэш для Hashcat. Вывод из 7z2john отформатирован для John the Ripper и включает имя файла в качестве префикса (например, secret.7z:). Однако Hashcat для корректной работы требует только чистую строку хэша.
Мы будем использовать команду cut для удаления префикса имени файла. Команда cut — это простая утилита для извлечения частей из строк файлов. Мы укажем ей использовать двоеточие (:) в качестве разделителя и выбрать второе поле.
Выполните следующую команду, чтобы очистить хэш и сохранить его в новый файл hashcat.txt:
cut -d':' -f2 hash.txt > hashcat.txt
-d':'устанавливает разделитель — двоеточие.-f2выбирает второе поле после разделения.
Давайте проверим содержимое нашего нового файла, чтобы убедиться, что префикс был удален.
cat hashcat.txt
Теперь вывод должен содержать только строку хэша, без части secret.7z:.
$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301
Теперь хэш находится в правильном формате для Hashcat.
Выбор режима хэширования для 7-Zip
На этом этапе мы определим правильный "режим хэширования" (hash mode), который необходим Hashcat для понимания и обработки нашего 7-Zip хэша. Hashcat поддерживает сотни различных типов хэшей, и каждый из них имеет уникальный числовой код. Вы должны указать правильный код, чтобы Hashcat работал.
Мы можем найти режим для 7-Zip, просмотрев меню справки Hashcat. Мы будем использовать grep для фильтрации вывода по термину "7-Zip".
hashcat --help | grep -i "7-Zip"
Флаг -i в grep делает поиск нечувствительным к регистру. Вывод покажет вам номер режима, связанный с архивами 7-Zip.
11600 | 7-Zip | Archives
Как видно из вывода, режим хэширования для 7-Zip — 11600. Мы будем использовать это число на следующем шаге, когда будем запускать атаку взлома.
Запуск атаки по маске для взлома пароля 7z
На этом заключительном этапе мы будем использовать Hashcat для взлома пароля. Мы выполним "атаку по маске" (mask attack), которая является типом атаки полным перебором (brute-force attack), очень эффективной, когда у вас есть некоторая информация о структуре пароля.
Наш пароль — LabEx2024. Мы можем описать его структуру с помощью маски:
- Он начинается с одной заглавной буквы (
?u). - Затем следуют две строчные буквы (
?l?l). - Затем следуют одна заглавная и одна строчная буква (
?u?l). - Он заканчивается четырьмя цифрами (
?d?d?d?d).
Полная маска: ?u?l?l?u?l?d?d?d?d.
Теперь давайте составим команду Hashcat:
-m 11600: Указывает режим хэширования 7-Zip, который мы нашли на предыдущем шаге.-a 3: Устанавливает режим атаки "Полный перебор / Маска" (Brute-force / Mask).hashcat.txt: Наш файл, содержащий очищенный хэш.?u?l?l?u?l?d?d?d?d: Маска пароля.
Запустите команду, чтобы начать атаку:
hashcat -m 11600 -a 3 hashcat.txt ?u?l?l?u?l?d?d?d?d
Hashcat запустится, и вы увидите его экран состояния. Поскольку пароль простой, а маска точная, он должен быть взломан очень быстро.
...
Session..........: hashcat
Status...........: Cracked
...
Как только статус покажет Cracked (Взломано), пароль будет найден. Чтобы просмотреть восстановленный пароль, вы можете использовать флаг --show с той же командой:
hashcat -m 11600 hashcat.txt --show
Это отобразит хэш, за которым следует взломанный пароль.
$7z$2$19$0$$8$d251a688873348860000000000000000$1813433382$112$96$f2172032148f1959a258c28b51933a3c8a00c1781343782d44114a2f311e1ca854028b8243b16a1f5e5811652c546412f213f7a361152b3811443a38c45a3301:LabEx2024
Поздравляем! Вы успешно взломали пароль архива 7z.
Резюме
В этой лабораторной работе вы успешно прошли полный процесс взлома архива 7z, защищенного паролем.
Вы узнали, как:
- Создать архив 7z, защищенный паролем, с помощью команды
7z. - Использовать утилиту
7z2johnдля извлечения хэша пароля из архива. - Очистить и отформатировать извлеченный хэш для использования с Hashcat.
- Определить правильный режим хэширования в Hashcat для конкретного типа хэша.
- Выполнить целенаправленную атаку по маске с помощью Hashcat для эффективного восстановления пароля.
Этот рабочий процесс обеспечивает прочную основу для понимания принципов взлома паролей и практического применения мощных инструментов, таких как John the Ripper и Hashcat.


