Взлом пароля тома VeraCrypt

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

Введение

VeraCrypt — популярный инструмент с открытым исходным кодом для шифрования "на лету". Несмотря на то, что он обеспечивает высокий уровень безопасности, пароли иногда могут быть самым слабым звеном. Понимание того, как тестировать надежность этих паролей, является критически важным навыком при аудите безопасности и тестировании на проникновение.

В этой лабораторной работе вы выступите в роли аналитика безопасности. Сначала вы создадите зашифрованный том VeraCrypt с паролем, соответствующим известному шаблону. Затем вы узнаете, как извлечь необходимые хэш-данные из этого тома. Наконец, вы будете использовать Hashcat, мощный инструмент для восстановления паролей, для выполнения "атаки по маске" с целью взлома пароля. Этот процесс даст вам практический опыт применения фундаментальных методов, используемых в цифровой криминалистике и этичном хакинге.

Создание небольшого зашифрованного тома VeraCrypt

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

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

Сначала выполните команду для создания нового тома. Флаг -t включает текстовый режим, а -c означает "create" (создать).

veracrypt -t -c

Программа теперь задаст вам ряд вопросов. Отвечайте на них следующим образом:

  1. Тип тома (Volume Type): Нажмите Enter, чтобы выбрать значение по умолчанию Normal.
  2. Расположение тома (Volume Location): Введите myvolume.hc и нажмите Enter. Это создаст файл тома в вашем текущем каталоге (~/project).
  3. Размер тома (Volume Size): Введите 1M (для 1 Мегабайта) и нажмите Enter. Небольшой размер достаточен для этой лабораторной работы.
  4. Алгоритм шифрования (Encryption Algorithm): Нажмите Enter, чтобы выбрать значение по умолчанию AES.
  5. Алгоритм хэширования (Hash Algorithm): Нажмите Enter, чтобы выбрать значение по умолчанию SHA-512.
  6. Файловая система (Filesystem): Нажмите Enter, чтобы выбрать значение по умолчанию FAT.
  7. Пароль (Password): Это критически важный шаг. Для этой лабораторной работы введите пароль LabEx2024 и нажмите Enter.
  8. Повторите пароль (Re-enter Password): Введите LabEx2024 еще раз и нажмите Enter.
  9. PIM: Нажмите Enter, чтобы использовать значение по умолчанию (без PIM).
  10. Ключевые файлы (Keyfiles): Нажмите Enter, чтобы пропустить использование ключевых файлов.
  11. Сбор энтропии (Entropy Collection): Инструмент попросит вас ввести не менее 320 случайных символов для генерации криптографической энтропии. Просто вводите случайные символы на клавиатуре, пока индикатор выполнения не заполнится, а затем нажмите Enter.

После последнего шага VeraCrypt создаст файл. Вы можете проверить его создание с помощью команды ls.

ls -l myvolume.hc

Вы должны увидеть вывод, похожий на этот, подтверждающий существование файла и его размер примерно 1 МБ.

-rw-r--r-- 1 labex labex 1048576 Dec 01 12:34 myvolume.hc

Теперь вы успешно создали зашифрованный том VeraCrypt.

Извлечение первых 512 байт в качестве хэша

На этом этапе вы извлечете хэш пароля из только что созданного тома VeraCrypt. Для стандартных контейнеров VeraCrypt, использующих алгоритмы хэширования, такие как SHA-512 или RIPEMD-160, данные, необходимые для проверки пароля, хранятся в первых 512 байтах файла тома. Hashcat может использовать эти данные напрямую для выполнения атаки по взлому.

Мы будем использовать команду dd, мощную утилиту для копирования и преобразования данных.

Используйте следующую команду для чтения первых 512 байт из myvolume.hc и записи их в новый файл с именем veracrypt.hash.

  • if=myvolume.hc: Указывает input file (входной файл).
  • of=veracrypt.hash: Указывает output file (выходной файл).
  • bs=512: Устанавливает block size (размер блока) в 512 байт.
  • count=1: Указывает скопировать только 1 блок.
dd if=myvolume.hc of=veracrypt.hash bs=512 count=1

Команда выполнится и покажет сводку операции.

1+0 records in
1+0 records out
512 bytes copied, 0.00012345 s, 4.1 MB/s

Теперь проверьте, что новый файл хэша был создан и имеет размер ровно 512 байт.

ls -l veracrypt.hash

Вывод должен выглядеть следующим образом:

-rw-r--r-- 1 labex labex 512 Dec 01 12:35 veracrypt.hash

Вы успешно извлекли данные хэша, которые Hashcat будет использовать для атаки.

Определение правильного режима Hashcat для VeraCrypt

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

Поскольку мы создали наш том с шифрованием AES и алгоритмом хэширования SHA-512, нам нужно найти соответствующий режим в Hashcat. Вы можете сделать это, просмотрев справку Hashcat.

Используйте следующую команду, чтобы отобразить информацию справки Hashcat и отфильтровать ее по строкам, содержащим "VeraCrypt". Команда grep -i выполняет поиск без учета регистра.

hashcat --help | grep -i veracrypt

Вывод перечислит все режимы хэшей, связанные с VeraCrypt.

...
13711 | VeraCrypt RIPEMD160 + XTS 512 bit                           | Operating System
13712 | VeraCrypt RIPEMD160 + XTS 1024 bit                          | Operating System
13713 | VeraCrypt RIPEMD160 + XTS 1536 bit                          | Operating System
13721 | VeraCrypt SHA512 + XTS 512 bit                              | Operating System
13722 | VeraCrypt SHA512 + XTS 1024 bit                             | Operating System
13723 | VeraCrypt SHA512 + XTS 1536 bit                             | Operating System
13731 | VeraCrypt SHA256 + XTS 512 bit                              | Operating System
13732 | VeraCrypt SHA256 + XTS 1024 bit                             | Operating System
13733 | VeraCrypt SHA256 + XTS 1536 bit                             | Operating System
13751 | VeraCrypt Whirlpool + XTS 512 bit                           | Operating System
13752 | VeraCrypt Whirlpool + XTS 1024 bit                          | Operating System
13753 | VeraCrypt Whirlpool + XTS 1536 bit                          | Operating System
...

Просмотрите список. Исходя из нашего выбора в Шаге 1 (SHA512), правильным режимом для нашего тома является 13721. Вы будете использовать этот номер режима на последнем шаге, чтобы указать Hashcat, как интерпретировать файл veracrypt.hash.

Построение атаки по маске для известной структуры пароля

На этом этапе вы построите "маску" для атаки Hashcat. Атака по маске невероятно эффективна, когда у вас есть некоторая информация о структуре пароля. Для нашей лаборатории мы знаем, что пароль — LabEx2024. Давайте сделаем вид, что мы знаем только структуру: слово "LabEx", за которым следуют четыре цифры (например, год).

Hashcat использует специальные заполнители, или "наборы символов" (charsets), для определения маски:

  • ?l = строчная буква (a...z)
  • ?u = заглавная буква (A...Z)
  • ?d = цифра (0...9)
  • ?s = специальный символ (!, @, # и т. д.)

Исходя из нашей предполагаемой структуры ("LabEx" + четыре цифры), маска будет выглядеть так: LabEx?d?d?d?d. Это говорит Hashcat попробовать все комбинации, начинающиеся с литеральной строки "LabEx" и заканчивающиеся любой четырехзначной последовательностью от 0000 до 9999.

Давайте проведем пробный запуск, чтобы увидеть, какие пароли сгенерирует эта маска. Флаг -a 3 указывает на атаку по маске, а --stdout говорит Hashcat выводить сгенерированные кандидаты на экран вместо выполнения реальной атаки.

hashcat --stdout -a 3 LabEx?d?d?d?d

Эта команда быстро выведет тысячи потенциальных паролей в ваш терминал, начиная с LabEx0000, LabEx0001 и так далее, пока не достигнет LabEx9999. Вы можете нажать Ctrl+C, чтобы остановить вывод в любое время.

Это подтверждает, что наша маска правильно сконструирована и включает целевой пароль LabEx2024.

Выполнение атаки для восстановления пароля тома

На этом заключительном этапе вы объедините все части для запуска атаки и восстановления пароля тома VeraCrypt. У вас есть файл хэша (veracrypt.hash), режим хэша (13721) и маска атаки (LabEx?d?d?d?d).

Соберем финальную команду Hashcat:

  • -m 13721: Устанавливает режим хэша для VeraCrypt (SHA512).
  • -a 3: Устанавливает режим атаки как атаку по маске.
  • veracrypt.hash: Целевой файл хэша.
  • LabEx?d?d?d?d: Используемая маска пароля.

Теперь выполните команду в вашем терминале:

hashcat -m 13721 -a 3 veracrypt.hash LabEx?d?d?d?d

Hashcat начнет работу. Поскольку пространство паролей невелико, атака должна завершиться очень быстро. Вы увидите обновления статуса, а затем окончательный результат.

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: VeraCrypt SHA512 + XTS 512 bit
Hash.Target......: veracrypt.hash
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Mask.......: LabEx?d?d?d?d [9]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:  XXXXXX H/s (0.01ms) @ Accel:X Loops:X
Recovered........: 1/1 (100.00%) Digests
Progress.........: 10000/10000 (100.00%)
Rejected.........: 0/10000 (0.00%)
Restore.Point....: 10000/10000 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1
Candidates.#1....: LabEx0000 -> LabEx9999
Hardware.Mon.#1..: Util: 99%

veracrypt.hash:LabEx2024

All hashes have been recovered.
...

Успех! Строка veracrypt.hash:LabEx2024 показывает, что Hashcat успешно восстановил пароль.

Hashcat автоматически сохраняет взломанные пароли в файл с именем hashcat.potfile. Вы можете просмотреть восстановленный пароль в любое время, используя опцию --show:

hashcat -m 13721 --show veracrypt.hash

Это просто снова выведет взломанный хэш и пароль.

veracrypt.hash:LabEx2024

Поздравляем, вы успешно взломали пароль тома VeraCrypt с помощью Hashcat!

Резюме

В этой лаборатории вы получили практический опыт анализа безопасности паролей, нацелившись на зашифрованный том VeraCrypt.

Вы успешно выполнили ключевые шаги процесса восстановления пароля:

  1. Создали зашифрованный контейнер с использованием инструментов командной строки VeraCrypt.
  2. Извлекли 512-байтные данные хэша, необходимые для офлайн-атаки.
  3. Использовали справочную систему Hashcat для определения правильного режима хэша для вашей цели.
  4. Сконструировали и протестировали целенаправленную атаку по маске на основе известной структуры пароля.
  5. Выполнили атаку для успешного восстановления пароля тома.

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