Подбор паролей в режиме одиночной атаки

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

Введение

В этой лабораторной работе вы изучите "режим одиночной атаки" (single crack mode) John the Ripper, мощного инструмента для подбора паролей. Режим одиночной атаки особенно полезен, когда у вас есть список имен пользователей, и вы хотите попытаться подобрать их пароли, используя информацию, полученную из самих имен пользователей, такую как перестановки или распространенные вариации. Вы научитесь подготавливать файл хешей, подходящий для этого режима, запускать John the Ripper, наблюдать за процессом подбора паролей и понимать конкретные сценарии, в которых режим одиночной атаки наиболее эффективен, а также его ограничения. Этот практический опыт предоставит вам практические навыки в области безопасности паролей и аудита.

Подготовка файла хешей с именами пользователей

На этом шаге вы подготовите файл хешей, который John the Ripper сможет использовать в режиме одиночной атаки (single crack mode). Режим одиночной атаки использует информацию из самого имени пользователя для генерации потенциальных паролей. Чтобы это работало эффективно, ваш файл хешей должен содержать имена пользователей.

Сначала убедитесь, что вы находитесь в каталоге вашего проекта.

cd ~/project

Далее, давайте создадим простой файл паролей с именем my_hashes.txt с несколькими записями. Для демонстрации мы будем использовать известный хеш MD5 для пароля "password" (5f4dcc3b5aa765d61d8327deb882cf99).

echo "user1:5f4dcc3b5aa765d61d8327deb882cf99" > my_hashes.txt
echo "john:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt
echo "mary:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt
echo "testuser:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt
echo "admin:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt

Вы можете проверить содержимое файла с помощью команды cat:

cat my_hashes.txt

Ожидаемый вывод:

user1:5f4dcc3b5aa765d61d8327deb882cf99
john:5f4dcc3b5aa765d61d8327deb882cf99
mary:5f4dcc3b5aa765d61d8327deb882cf99
testuser:5f4dcc3b5aa765d61d8327deb882cf99
admin:5f4dcc3b5aa765d61d8327deb882cf99

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

Запуск John the Ripper в режиме одиночной атаки

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

Чтобы запустить John the Ripper в режиме одиночной атаки, используйте опцию --single, за которой следует путь к вашему файлу хешей.

john --single my_hashes.txt

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

Пример вывода:

Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (Raw-MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
password         (john)
password         (mary)
password         (testuser)
password         (admin)
5g 0:00:00:00 DONE (2023-10-27 08:30) 100% ...
Session completed.

После завершения работы John вы можете просмотреть подобранные пароли, которые были сохранены в файле pot John.

john --show my_hashes.txt

Ожидаемый вывод:

user1:password

john:password

mary:password

testuser:password

admin:password

5 password hashes cracked, 0 left

Эта команда отображает все пароли, которые John успешно подобрал из файла my_hashes.txt.

Наблюдение за поведением режима одиночной атаки

На этом шаге вы понаблюдаете за тем, как работает режим одиночной атаки John the Ripper и какие кандидаты в пароли он генерирует. Режим одиночной атаки уникален тем, что он не использует напрямую списки слов или брутфорс-атаки. Вместо этого он использует имя пользователя (или поле GECOS, если оно доступно) в качестве основы для генерации предположений о паролях.

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

john --session=clear --format=Raw-MD5 --pot=/home/labex/.john/john.pot

Теперь снова запустим John в режиме одиночной атаки, но на этот раз давайте уделим больше внимания выводу и тому, как он обрабатывает каждую запись.

john --single my_hashes.txt

По мере выполнения John вы заметите, что он пробует различные вариации имени пользователя. Например, для john он может попробовать john, John, JOHN, john1, john123, johnny, j0hn и т. д. Точные вариации зависят от внутренних правил John и файла конфигурации john.conf.

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

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

ls -l /etc/john/john.conf

Ожидаемый вывод:

-rw-r--r-- 1 root root 12345 Oct 27 08:00 /etc/john/john.conf

(Размер файла и дата могут отличаться)

Этот файл содержит наборы правил для режима одиночной атаки, среди прочих.

Понимание ограничений режима одиночной атаки

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

Режим одиночной атаки в основном полагается на перестановки и вариации имени пользователя (а иногда и поля GECOS из /etc/passwd). Это означает:

  1. Ограниченная область применения: Он будет пробовать только те пароли, которые напрямую выводятся из имени пользователя. Если пароль — "apple", а имя пользователя — "user1", режим одиночной атаки, скорее всего, не справится, поскольку "apple" не имеет прямой связи с "user1".
  2. Отсутствие внешних списков слов: В отличие от режима словарной атаки, режим одиночной атаки не использует внешний список слов. Это делает его быстрым, но также ограничивает его способность подбирать пароли, которые являются распространенными словами, не связанными с именем пользователя.
  3. Отсутствие брутфорса: Он не выполняет полный брутфорс-атаку, которая перебирала бы все возможные комбинации символов. Это означает, что сложные, случайные пароли очень вряд ли будут подобраны этим режимом.
  4. Зависимость от имен пользователей: Его эффективность напрямую связана с качеством и релевантностью имен пользователей. Если имена пользователей являются общими (например, user, admin), сгенерированные кандидаты в пароли могут быть менее эффективными.

Чтобы продемонстрировать это ограничение, давайте добавим хеш для пароля, не связанного с именем пользователя. Мы добавим randomuser:e10adc3949ba59abbe56e057f20f883e, где e10adc3949ba59abbe56e057f20f883e — это MD5-хеш для 123456.

echo "randomuser:e10adc3949ba59abbe56e057f20f883e" >> my_hashes.txt
cat my_hashes.txt

Теперь снова запустим John в режиме одиночной атаки:

john --single my_hashes.txt

Вы заметите, что пароль randomuser (123456) не будет подобран, поскольку 123456 не является производным от randomuser.

Ожидаемый вывод (обратите внимание, что randomuser не подобран):

Using default input encoding: UTF-8
Loaded 6 password hashes with no different salts (Raw-MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
password         (john)
password         (mary)
password         (testuser)
password         (admin)
5g 0:00:00:00 DONE (2023-10-27 08:35) 100% ...
Session completed.

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

Сравнение режима одиночной атаки с другими режимами

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

  1. Режим одиночной атаки (--single):

    • Метод: Генерирует кандидаты в пароли на основе имени пользователя (и поля GECOS).
    • Сценарий использования: Идеально подходит для быстрой проверки паролей, которые являются простыми вариациями имен пользователей. Очень быстрый.
    • Ограничения: Ограниченная область применения; не подберет пароли, не связанные с именем пользователя.
  2. Режим списков слов (--wordlist=FILE):

    • Метод: Пробует пароли из предоставленного словаря или файла списков слов. Может быть объединен с правилами (--rules) для генерации перестановок.
    • Сценарий использования: Наиболее распространенный и эффективный для подбора паролей, которые являются распространенными словами, фразами или комбинациями, найденными в словарях.
    • Ограничения: Эффективность зависит от качества списка слов; не подберет пароли, отсутствующие в списке или его перестановках.
  3. Режим инкрементальной (брутфорс) атаки (--incremental):

    • Метод: Систематически перебирает все возможные комбинации символов в пределах определенного набора символов и длины.
    • Сценарий использования: Крайняя мера для подбора сложных паролей, не найденных другими методами. Гарантирует нахождение пароля при наличии достаточного времени.
    • Ограничения: Чрезвычайно трудоемкий, особенно для длинных паролей или больших наборов символов. Может занять дни, месяцы или даже годы.

Давайте продемонстрируем подбор пароля randomuser (123456) с использованием режима списков слов. Сначала создадим простой список слов, содержащий "123456".

echo "123456" > my_wordlist.txt

Теперь запустим John в режиме списков слов:

john --wordlist=my_wordlist.txt my_hashes.txt

Ожидаемый вывод:

Using default input encoding: UTF-8
Loaded 6 password hashes with no different salts (Raw-MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456           (randomuser)
1g 0:00:00:00 DONE (2023-10-27 08:40) 100% ...
Session completed.

Как вы видите, пароль randomuser был подобран с использованием списка слов. Это подчеркивает, что разные режимы подбора паролей подходят для разных типов паролей. Режим одиночной атаки — это хороший первый шаг, но часто за ним должны следовать режимы списков слов или инкрементальный режим для более полного подбора.

Наконец, удалим созданные файлы:

rm my_hashes.txt my_wordlist.txt

Итоги

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