Введение
В этой лабораторной работе вы изучите фундаментальный метод в кибербезопасности: взлом паролей. Вы будете использовать John the Ripper (JtR) — популярный и мощный инструмент с открытым исходным кодом для аудита безопасности паролей. В частности, вы научитесь выполнять атаку по "словарю" (wordlist attack), которая заключается в использовании заранее определенного списка потенциальных паролей для угадывания правильного пароля по хэшу сохраненного пароля.
Это практическое упражнение проведет вас через процесс создания образца хэша пароля, получения словаря, запуска John the Ripper для взлома пароля и, наконец, просмотра и сохранения результатов. Понимание этого процесса имеет решающее значение как для системных администраторов, которые хотят проверить надежность паролей своих пользователей, так и для начинающих специалистов по безопасности.
К концу этой лабораторной работы вы сможете:
- Создать файл, содержащий хэши паролей.
- Использовать словарь с John the Ripper.
- Взломать простой пароль и просмотреть результат.
Создание файла с образцом хэша пароля
На этом шаге вы создадите образцового пользователя и извлечете хэш его пароля в файл. Инструменты для взлома паролей работают не с паролями в открытом тексте, а с их хэшированными представлениями, которые обычно хранятся в системных файлах, таких как /etc/shadow в Linux.
Сначала создадим нового пользователя с именем testuser и простым паролем password123. Мы будем использовать openssl для генерации хэша пароля и useradd для создания пользователя.
Выполните следующую команду в вашем терминале:
sudo useradd -m -p $(openssl passwd -1 password123) testuser
Далее нам нужно извлечь строку, содержащую хэш пароля для testuser, из файла /etc/shadow. Мы будем использовать команду grep для поиска строки и перенаправим вывод в новый файл с именем hashes.txt в вашей текущей директории (~/project).
sudo grep testuser /etc/shadow > ~/project/hashes.txt
Теперь давайте посмотрим содержимое файла hashes.txt, чтобы убедиться, что он содержит хэш пользователя.
cat hashes.txt
Вы должны увидеть вывод, похожий на этот. Длинная строка символов между первыми и вторыми двоеточиями — это хэшированный пароль.
testuser:$1$jE/Ipl8J$z4JgUjZfH.yN.CgCjWn.H.:19782:0:99999:7:::
Теперь вы успешно создали целевой файл для нашего упражнения по взлому паролей.
Загрузка распространенного словаря
На этом шаге вы создадите словарь. Словарь — это просто текстовый файл, где каждая строка содержит потенциальный пароль. John the Ripper будет читать этот файл и пробовать каждый пароль против целевого хэша. Для этой лабораторной работы, вместо загрузки большого, уже существующего словаря, мы создадим свой собственный небольшой, пользовательский. Это позволит нам контролировать содержимое и гарантировать, что правильный пароль включен для успешного взлома.
Создадим файл с именем wordlist.txt и добавим в него несколько распространенных паролей, включая тот, который мы установили для testuser.
Сначала создайте файл и добавьте в него password123:
echo "password123" > ~/project/wordlist.txt
Теперь добавим еще несколько распространенных паролей в тот же файл. Мы используем >> для добавления, что добавляет в файл, не перезаписывая его.
echo "123456" >> ~/project/wordlist.txt
echo "qwerty" >> ~/project/wordlist.txt
echo "admin" >> ~/project/wordlist.txt
Проверим содержимое нашего нового словаря.
cat wordlist.txt
Ваш терминал должен отобразить следующее содержимое:
password123
123456
qwerty
admin
Теперь у вас есть словарь, готовый к использованию с John the Ripper.
Запуск John the Ripper в режиме словаря
На этом шаге вы используете John the Ripper для взлома хэша пароля с помощью созданного вами словаря. Синтаксис запуска JtR в режиме словаря прост. Вам нужно указать файл словаря и файл, содержащий хэши.
Формат команды: john --wordlist=<путь_к_словарю> <путь_к_файлу_с_хэшами>.
Теперь выполните команду в вашем терминале, указав JtR на ваши файлы wordlist.txt и hashes.txt.
john --wordlist=wordlist.txt hashes.txt
John the Ripper начнет обработку. Он загрузит хэш, а затем попробует каждый пароль из вашего словаря. Поскольку наш пароль находится в списке, процесс будет очень быстрым. Вы увидите вывод, похожий на следующий:
Using default input encoding: UTF-8
Loaded 1 password hash (MD5-based crypt [MD5_body])
Cost 1 (algorithm [1:MD5 2:SHA256 3:SHA512] of 3) is 1 (MD5)
Press 'q' or Ctrl-C to abort, almost any other key for status
password123 (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s admin..password123
Session completed
Строка password123 (testuser) указывает, что JtR успешно взломал пароль. Он также сохраняет этот результат в файле, называемом "pot file" (plain old text), обычно расположенном по адресу ~/.john/john.pot, чтобы ему не приходилось повторно взламывать известные пароли.
Просмотр взломанных паролей
На этом шаге вы узнаете, как просматривать пароли, которые John the Ripper уже взломал. Как только пароль взломан, JtR сохраняет его в своем pot-файле. Если вы попытаетесь снова выполнить ту же команду взлома, JtR сообщит "No password hashes left to crack" (Нет оставшихся хэшей паролей для взлома), потому что он уже решил эту задачу.
Чтобы отобразить взломанные пароли для данного файла хэшей, используйте опцию --show.
Выполните следующую команду, чтобы увидеть взломанный пароль для hashes.txt:
john --show hashes.txt
Команда проверит pot-файл и отобразит все взломанные пароли, связанные с хэшами в hashes.txt. Вывод будет выглядеть следующим образом:
testuser:password123:19782:0:99999:7:::
1 password hash cracked, 0 left
Формат вывода: имя_пользователя:пароль:другие_поля_файла_shadow. Это подтверждает, что пароль для testuser — password123. Эта команда очень полезна для быстрого получения результатов сеанса взлома без необходимости вручную парсить pot-файл.
Сохранение взломанных паролей в файл
На этом шаге вы сохраните взломанный пароль в отдельный файл. Это распространенная практика в тестировании на проникновение и аудите безопасности для целей отчетности. Вы можете легко добиться этого, перенаправив вывод команды john --show в файл.
Давайте сохраним результаты в файл с именем cracked.txt.
john --show hashes.txt > cracked.txt
Эта команда выполняет john --show hashes.txt, как и раньше, но вместо вывода результата в терминал, оператор > перенаправляет вывод и сохраняет его в файл cracked.txt. Если файл не существует, он будет создан. Если он существует, он будет перезаписан.
Чтобы убедиться, что вывод был сохранен правильно, вы можете отобразить содержимое нового файла с помощью команды cat.
cat cracked.txt
Терминал отобразит содержимое файла, которое должно быть идентично выводу, который вы видели на предыдущем шаге:
testuser:password123:19782:0:99999:7:::
1 password hash cracked, 0 left
Теперь вы успешно взломали пароль и сохранили результат в файл для документирования.
Итоги
Поздравляем с завершением этой лабораторной работы! Вы успешно выполнили базовую атаку на взлом паролей с использованием словарной атаки (wordlist-based) с помощью John the Ripper.
В этой лабораторной работе вы научились:
- Создавать пример файла хэшей паролей из системы.
- Создавать пользовательский словарь (wordlist), содержащий потенциальные пароли.
- Запускать John the Ripper в режиме словарной атаки для взлома хэша пароля.
- Использовать опцию
--showдля просмотра уже взломанных паролей. - Перенаправлять вывод команды для сохранения ваших результатов в файл.
Это упражнение демонстрирует, насколько легко могут быть скомпрометированы простые и распространенные пароли. Оно подчеркивает критическую важность использования надежных, сложных и уникальных паролей для защиты систем и данных. Навыки, которые вы приобрели, являются фундаментальной частью аудита безопасности и тестирования на проникновение.


