Введение
В этой лабораторной работе вы изучите возможности John the Ripper, широко используемого инструмента для взлома паролей с открытым исходным кодом. Вы сосредоточитесь на взломе хэшей MD5, которые часто используются для хранения представлений паролей. Понимание того, как взламывать хэши, имеет решающее значение для специалистов по безопасности при оценке стойкости паролей и выявлении уязвимостей. Вы научитесь генерировать хэши MD5, подготавливать их для John the Ripper, а затем использовать различные методы взлома, включая атаки по словарю и инкрементный режим.
Генерация MD5-хэшей из паролей
На этом этапе вы сгенерируете MD5-хэши для нескольких образцов паролей. Это имитирует сценарий, когда у вас есть доступ к хэшированным паролям, и вам нужно их взломать. Для создания этих хэшей вы будете использовать команду echo, перенаправляя вывод в md5sum.
Сначала сгенерируем MD5-хэш для пароля password123:
echo -n "password123" | md5sum
Вы должны увидеть вывод, похожий на этот:
202cb962ac59075b964b07152d234b70 -
Далее сгенерируйте MD5-хэши для нескольких других паролей: labex и secret.
echo -n "labex" | md5sum
echo -n "secret" | md5sum
Результаты будут следующими:
202cb962ac59075b964b07152d234b70 -
a0b923820dcc509a86619210ed1572e4 -
5ebe2294ecd0e0f08eab7690d2a6ee69 -
Эти сгенерированные хэши будут использоваться на последующих этапах для взлома.
Создание файла с хэшами для MD5
На этом этапе вы создадите файл, содержащий сгенерированные вами MD5-хэши. John the Ripper обычно принимает файл в качестве входных данных, где каждая строка содержит хэш для взлома. Вы создадите файл с именем hashes.txt в вашем каталоге ~/project и заполните его MD5-хэшами.
Сначала создадим файл hashes.txt и добавим в него MD5-хэши. Мы добавим только часть хэша, без - или имени файла.
echo "202cb962ac59075b964b07152d234b70" > ~/project/hashes.txt
echo "a0b923820dcc509a86619210ed1572e4" >> ~/project/hashes.txt
echo "5ebe2294ecd0e0f08eab7690d2a6ee69" >> ~/project/hashes.txt
Теперь проверьте содержимое файла hashes.txt с помощью команды cat:
cat ~/project/hashes.txt
Вывод должен выглядеть следующим образом:
202cb962ac59075b964b07152d234b70
a0b923820dcc509a86619210ed1572e4
5ebe2294ecd0e0f08eab7690d2a6ee69
Этот файл будет служить входными данными для John the Ripper.
Указание типа хэша для John the Ripper
На этом этапе вы узнаете, как сообщить John the Ripper, с каким типом хэша он работает. John the Ripper поддерживает широкий спектр типов хэшей, и указание правильного типа имеет решающее значение для успешного взлома. Для MD5-хэшей вы будете использовать формат raw-md5.
Чтобы проверить, распознает ли John the Ripper формат raw-md5, и увидеть другие поддерживаемые форматы, вы можете использовать опцию --list=formats. Однако для этой лаборатории мы будем напрямую использовать формат raw-md5.
Вы можете протестировать John the Ripper с одним хэшем и указать формат с помощью опции --format. Это еще не взломает пароль, но подтвердит, что John может обрабатывать этот формат.
john --format=raw-md5 ~/project/hashes.txt --stdout
Эта команда попытается обработать хэши в файле hashes.txt как raw-md5 и выведет их на стандартный вывод. Вы еще не увидите взломанные пароли, но это подтвердит, что формат распознан. Вывод будет содержать сами хэши, поскольку John просто обрабатывает их без взлома.
202cb962ac59075b964b07152d234b70
a0b923820dcc509a86619210ed1572e4
5ebe2294ecd0e0f08eab7690d2a6ee69
Этот шаг гарантирует, что John the Ripper правильно настроен для работы с MD5-хэшами.
Взлом MD5-хэшей с использованием словаря
На этом этапе вы будете использовать словарь для взлома MD5-хэшей. Атака по словарю пытается взломать пароли, перебирая каждое слово из предопределенного списка. Это распространенный и часто эффективный метод взлома слабых паролей.
Сначала вам понадобится словарь. Для этой лаборатории вы создадите простой файл словаря с именем wordlist.txt в вашем каталоге ~/project, содержащий распространенные пароли, включая те, которые вы хэшировали ранее.
echo "password123" > ~/project/wordlist.txt
echo "labex" >> ~/project/wordlist.txt
echo "secret" >> ~/project/wordlist.txt
echo "test" >> ~/project/wordlist.txt
echo "admin" >> ~/project/wordlist.txt
Теперь используйте John the Ripper с опцией wordlist для взлома хэшей:
john --format=raw-md5 --wordlist=~/project/wordlist.txt ~/project/hashes.txt
John the Ripper обработает файл hashes.txt, пробуя каждое слово из wordlist.txt против MD5-хэшей. Если будет найдено совпадение, он отобразит взломанный пароль.
Вывод должен показать взломанные пароли:
Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts (raw-md5 [MD5])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123 (202cb962ac59075b964b07152d234b70)
labex (a0b923820dcc509a86619210ed1572e4)
secret (5ebe2294ecd0e0f08eab7690d2a6ee69)
3g 0:00:00:00 DONE (2023-10-27 10:30) 100.0% (ETA: 00:00:00) 3.000g/s 15.00p/s 15.00c/s 15.00C/s password123 labex secret
Session completed.
Вы также можете использовать john --show, чтобы отобразить взломанные пароли из файла "pot" John the Ripper:
john --show ~/project/hashes.txt
Вывод:
202cb962ac59075b964b07152d234b70:password123
a0b923820dcc509a86619210ed1572e4:labex
5ebe2294ecd0e0f08eab7690d2a6ee69:secret
3 password hashes cracked, 0 left
Это демонстрирует эффективность атак по словарю против распространенных или легко угадываемых паролей.
Взлом MD5-хэшей в инкрементальном режиме
На этом этапе вы будете использовать инкрементальный режим John the Ripper для взлома MD5-хэшей. Инкрементальный режим — это мощная атака методом полного перебора (brute-force), которая пробует комбинации символов на основе набора символов (например, строчные буквы, цифры, символы). Он полезен, когда атака по словарю не удается, поскольку не полагается на существующие слова.
Сначала очистим файл "pot" John, чтобы убедиться, что мы начинаем с чистого листа для этой попытки взлома. Это важно, потому что John сохраняет взломанные пароли, и мы хотим снова увидеть процесс взлома.
john --session=my_session --restore=NONE
Теперь давайте попробуем взломать хэши, используя инкрементальный режим. В демонстрационных целях мы будем использовать очень маленький набор символов и короткую максимальную длину, чтобы время взлома было управляемым. В реальном сценарии инкрементальный режим может занять очень много времени в зависимости от сложности и длины пароля.
john --format=raw-md5 --incremental=alnum --max-len=8 ~/project/hashes.txt
Здесь:
--incremental=alnum: Указывает John использовать буквенно-цифровые символы (a-z, A-Z, 0-9). John имеет предопределенные инкрементальные режимы, такие какalnum,alpha,digitsи т. д.--max-len=8: Ограничивает максимальную длину пароля до 8 символов. Это крайне важно для сокращения времени взлома в рамках этой лаборатории.
John the Ripper начнет генерировать и тестировать комбинации. Поскольку наши пароли (password123, labex, secret) находятся в наборе символов alnum и имеют длину, соответствующую max-len=8 (для labex и secret), John в конечном итоге должен их взломать. password123 имеет длину 11 символов, поэтому он не будет взломан с max-len=8.
Вывод покажет взломанные пароли по мере их обнаружения John:
Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts (raw-md5 [MD5])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
labex (a0b923820dcc509a86619210ed1572e4)
secret (5ebe2294ecd0e0f08eab7690d2a6ee69)
2g 0:00:00:00 DONE (2023-10-27 10:35) 100.0% (ETA: 00:00:00) 2.000g/s 10.00p/s 10.00c/s 10.00C/s labex secret
Session completed.
Вы снова можете использовать john --show, чтобы отобразить взломанные пароли:
john --show ~/project/hashes.txt
Вывод:
a0b923820dcc509a86619210ed1572e4:labex
5ebe2294ecd0e0f08eab7690d2a6ee69:secret
2 password hashes cracked, 1 left
Обратите внимание, что password123 на этот раз не был взломан, поскольку его длина (11 символов) превысила лимит --max-len=8. Это подчеркивает важность установки соответствующих параметров для инкрементальных атак.
Итоги
В этой лаборатории вы успешно использовали John the Ripper для взлома MD5-хэшей. Вы начали с генерации MD5-хэшей из образцов паролей, а затем создали файл хэшей для обработки John the Ripper. Вы узнали, как указать тип хэша (raw-md5), а затем применили два различных метода взлома: атаку по словарю и инкрементальный режим.
Вы наблюдали, что атаки по словарю эффективны против распространенных паролей, найденных в словарях, в то время как инкрементальный режим предоставляет метод полного перебора для более сложных или неизвестных паролей, хотя и с потенциально гораздо большим временем взлома. Эта лаборатория дает фундаментальное понимание методов взлома паролей с использованием John the Ripper, что является ценным навыком для специалистов по кибербезопасности.


