Взлом хэшей из potfile John the Ripper

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

Введение

John the Ripper (JtR) — популярный инструмент для взлома паролей. Когда ему удается успешно взломать пароль, он сохраняет результат в файле john.pot, который часто называют "potfile". Это предотвращает трату времени JtR на повторный взлом того же хэша в будущем.

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

Вы научитесь:

  • Находить и понимать файл john.pot от JtR.
  • Использовать инструменты командной строки для извлечения и сравнения списков хэшей.
  • Использовать Hashcat для выполнения словарной атаки на оставшиеся хэши.

Поиск существующего файла John the Ripper Potfile

На этом шаге вы найдете и изучите файл john.pot. Этот файл автоматически создается John the Ripper для хранения хэшей, которые он успешно взломал, вместе с их паролями в открытом виде. По умолчанию этот файл находится в скрытом каталоге .john в домашнем каталоге пользователя.

Наша лабораторная среда была предварительно настроена с файлом john.pot из симуляции предыдущей сессии взлома. Давайте посмотрим его содержимое.

Используйте команду cat для отображения содержимого potfile. Вся ваша работа будет проводиться в каталоге ~/project по умолчанию, но potfile находится в /home/labex/.john/.

cat ~/.john/john.pot

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

$1$abc$gqNud23o1vjR/pYd9gH7k/:password123
$1$def$H9g2s3kLd/fG1hJkLpQ9r/:labex
$1$ghi$aB4c5dE6fG7hI8jK9lM0n/:secret

Понимание формата файла JtR Potfile

На этом шаге мы проанализируем структуру файла john.pot. Понимание этого формата имеет решающее значение для обработки его данных.

Как вы видели на предыдущем шаге, каждая строка в potfile имеет определенный формат:

HASH:PLAINTEXT_PASSWORD

Давайте разберем первую строку из нашего файла:

$1$abc$gqNud23o1vjR/pYd9gH7k/:password123

  • $1$abc$gqNud23o1vjR/pYd9gH7k/: Это полная строка хэша, которая была взломана. Этот формат (начинающийся с $1$) указывает на то, что это хэш MD5-crypt, обычно используемый в старых системах Linux.
  • :: Двоеточие используется в качестве разделителя, отделяющего хэш от пароля.
  • password123: Это пароль в открытом виде, соответствующий хэшу.

Наша цель — выяснить, какие хэши из нашего исходного списка (all_hashes.txt) отсутствуют в этом potfile. Для этого нам сначала нужно выделить только часть хэша из каждой строки в john.pot. Мы сделаем это на следующем шаге. Этот текущий шаг предназначен для концептуального понимания, поэтому команд для выполнения нет.

Извлечение хэшей из файла JtR Potfile

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

Мы укажем cut использовать двоеточие (:) в качестве разделителя и извлечь первое поле (-f1). Мы перенаправим вывод в новый файл с именем cracked_hashes.txt в вашем текущем каталоге (~/project).

Выполните следующую команду в вашем терминале:

cut -d: -f1 ~/.john/john.pot > cracked_hashes.txt

Теперь проверьте, что файл был создан правильно, просмотрев его содержимое:

cat cracked_hashes.txt

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

$1$abc$gqNud23o1vjR/pYd9gH7k/
$1$def$H9g2s3kLd/fG1hJkLpQ9r/
$1$ghi$aB4c5dE6fG7hI8jK9lM0n/

Переформатирование хэшей для атаки Hashcat

На этом шаге вы определите хэши, которые JtR не смог взломать. У вас есть файл со всеми исходными хэшами (all_hashes.txt) и файл с уже взломанными хэшами (cracked_hashes.txt). Сравнивая эти два файла, вы можете создать новый список, содержащий только невзломанные хэши.

Для этого мы будем использовать команду grep. Флаги, которые мы будем использовать:

  • -v: Инвертировать совпадение, выбирая несовпадающие строки.
  • -F: Интерпретировать шаблоны как фиксированные строки, а не регулярные выражения.
  • -f file: Получить шаблоны из указанного файла.

Эта команда прочитает шаблоны из cracked_hashes.txt и удалит все совпадающие строки из all_hashes.txt, сохранив результат в uncracked_hashes.txt.

grep -v -F -f cracked_hashes.txt all_hashes.txt > uncracked_hashes.txt

Теперь проверьте содержимое вашего нового файла. Он должен содержать три хэша, которых не было в potfile.

cat uncracked_hashes.txt

Вы должны увидеть следующий вывод:

user4:$1$jkl$oP1qR2sT3uV4wX5yZ6a7b/
user5:$1$mno$c8d9e0f1g2h3i4j5k6l7m/
user6:$1$pqr$n9o8p7q6r5s4t3u2v1w0x/

Этот файл теперь готов к использованию с Hashcat.

Использование Hashcat для попытки взлома хэшей, пропущенных JtR

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

Базовый синтаксис для атаки по словарю с Hashcat: hashcat -m <режим> <файл_хэшей> <файл_словаря>.

  • -m 500: Указывает тип хэша. 500 соответствует MD5-crypt, что является типом хэша, с которым мы работаем.
  • --force: Эта опция часто требуется в виртуализированных или контейнеризированных средах, таких как эта лаборатория, чтобы обойти предупреждения и принудительно запустить Hashcat.

Теперь запустите Hashcat против файла uncracked_hashes.txt, используя предоставленный wordlist.txt.

hashcat -m 500 --force uncracked_hashes.txt wordlist.txt

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

...
Session..........: hashcat
Status...........: Running
Hash.Name........: md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5)
Hash.Target......: uncracked_hashes.txt
...
Approaching final keyspace - workload adjusted.

Session..........: hashcat
Status...........: Cracked
...

После завершения Hashcat сохраняет взломанные пароли в своем собственном potfile. Чтобы просмотреть недавно взломанные пароли, вы можете использовать опцию --show.

hashcat -m 500 --force --show uncracked_hashes.txt

Вывод отобразит хэши и их недавно обнаруженные пароли в открытом виде.

$1$jkl$oP1qR2sT3uV4wX5yZ6a7b/:dragon
$1$mno$c8d9e0f1g2h3i4j5k6l7m/:qwerty
$1$pqr$n9o8p7q6r5s4t3u2v1w0x/:sunshine

Поздравляем, вы успешно использовали вывод одного инструмента для взлома в качестве входных данных для другого!

Резюме

В этой лаборатории вы изучили практический рабочий процесс объединения сильных сторон различных инструментов для взлома паролей. Вы начали с существующего potfile John the Ripper, который представляет результаты предыдущей сессии взлома.

Вы успешно:

  • Нашли и интерпретировали содержимое файла john.pot.
  • Использовали команду cut для извлечения конкретных полей данных.
  • Использовали команду grep для сравнения двух списков и выделения невзломанных хэшей.
  • Запустили атаку по словарю Hashcat на оставшиеся хэши и успешно их взломали.

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