Изучение основных режимов John the Ripper

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

Введение

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

В этой лабораторной работе вы получите практический опыт работы с основными режимами взлома John the Ripper. Вы научитесь использовать его опции справки и изучите его поведение по умолчанию. Затем вы погрузитесь в его четыре основных режима: Single Crack, Wordlist, Incremental и External, изучив назначение и базовое использование каждого из них.

Изучение опций справки John the Ripper

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

Чтобы просмотреть основную страницу справки, просто выполните команду john с флагом --help. Это отобразит сводку наиболее распространенных опций и их описаний.

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

john --help

Вы увидите подробный вывод со списком различных опций. Обратите внимание на флаги, которые указывают на различные режимы взлома, такие как --single, --wordlist и --incremental.

John the Ripper 1.9.0-jumbo-1 [linux-gnu 64-bit x86_64 AVX2 AC]
Copyright (c) 1996-2019 by Solar Designer and others
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]

--single                   "single crack" mode
--wordlist=FILE --stdin    wordlist mode, read words from FILE or stdin
--rules                    enable word mangling rules for wordlist mode
--incremental[=MODE]       "incremental" mode [using section MODE]
--external=MODE            external mode or word filter
--stdout[=LENGTH]          just output candidate passwords [cut at LENGTH]
--restore[=NAME]           restore an interrupted session [called NAME]
--session=NAME             new session [called NAME]
--status[=NAME]            print status of a session [called NAME]
--show[=LEFT]              show cracked passwords [if =LEFT, then uncracked]
--test[=TIME]              run tests and benchmarks for TIME seconds each
--users=[-]LOGIN|UID[,..]  [don't] load this (these) user(s) only
--groups=[-]GID[,..]       load users of this (these) group(s) only
... (output truncated) ...

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

Определение режимов взлома John the Ripper по умолчанию

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

Наш установочный скрипт уже создал файл с именем mypasswd.txt в вашем текущем каталоге (~/project). Этот файл содержит запись пользователя с простым хешированным паролем.

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

john mypasswd.txt

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

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:30) 100.0g/s 12000p/s 12000c/s 12000C/s rolez..pimpin
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Как вы видите, John успешно взломал пароль (password) для пользователя testuser. Он также предлагает использовать опцию --show для последующего просмотра взломанных паролей.

Чтобы подтвердить взломанный пароль, вы можете использовать опцию --show:

john --show mypasswd.txt

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

testuser:password:1001:1001::/home/testuser:/bin/sh

1 password hash cracked, 0 left

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

Различие между режимами Single Crack и Wordlist

На этом шаге вы узнаете о двух наиболее фундаментальных режимах взлома: "single crack" (одиночный взлом) и "wordlist" (список слов).

Во-первых, важно знать, что John the Ripper сохраняет взломанные пароли в файле john.pot, расположенном в каталоге ~/.john/. Чтобы повторно запустить сеанс взлома для уже взломанного пароля, мы должны сначала удалить этот файл. Давайте сделаем это сейчас.

rm ~/.john/john.pot

Режим Single Crack

Режим "single crack" — это быстрый и эффективный режим, который генерирует кандидаты в пароли на основе информации о самой учетной записи пользователя, такой как имя пользователя или данные поля GECOS. Он применяет к этим кандидатам распространенные мутации (например, добавление чисел или символов).

Давайте запустим John в режиме "single crack" явно, используя флаг --single.

john --single mypasswd.txt

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

Режим Wordlist

Режим "wordlist" является одной из самых популярных техник взлома паролей. Он использует предварительно скомпилированный список слов (словарь или wordlist) и пробует каждое слово в качестве пароля. John поставляется с собственным словарем по умолчанию, обычно расположенным по адресу /usr/share/john/password.lst.

Сначала снова удалим файл pot, чтобы сбросить сеанс.

rm ~/.john/john.pot

Теперь запустим John в режиме "wordlist", явно указав его словарь по умолчанию с помощью флага --wordlist.

john --wordlist=/usr/share/john/password.lst mypasswd.txt

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

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:35) 100.0g/s 12000p/s 12000c/s 12000C/s passwo..pascal
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Это демонстрирует, как направить John на использование конкретного файла словаря для атаки.

Основы режима Incremental

На этом шаге вы изучите режим "incremental" (инкрементный). Этот режим, по сути, является атакой методом полного перебора (brute-force). Он систематически перебирает все возможные комбинации символов до определенной длины. Хотя это самый полный режим, он также может быть чрезвычайно трудоемким для паролей даже средней сложности.

Поведение инкрементного режима определяется в файле john.conf, который указывает наборы символов (например, Alnum для буквенно-цифровых символов, All для всех символов) и ограничения по длине.

Сначала давайте сбросим сеанс взлома, снова удалив файл john.pot.

rm ~/.john/john.pot

Теперь давайте запустим John в инкрементном режиме. Мы укажем набор символов Digits (цифры), который предписывает John перебирать все возможные числовые комбинации. Для этого мы используем флаг --incremental.

john --incremental=Digits mypasswd.txt

Вы увидите, как John начнет перебирать комбинации типа "0", "1", "2", "00", "01" и так далее. Поскольку наш пароль — "password" (все буквы), эта атака не увенчается успехом. Вы можете нажать Ctrl+C, чтобы остановить ее через несколько секунд.

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

Сбросим сеанс еще раз:

rm ~/.john/john.pot

Выполним команду без указания набора символов:

john --incremental mypasswd.txt

На этот раз John будет использовать свою предопределенную последовательность наборов символов. Поскольку "password" состоит из строчных букв, набор символов Lower или Alpha в конечном итоге найдет его.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:40) 100.0g/s 12000p/s 12000c/s 12000C/s passwo..pascal
Session completed

Инкрементный режим — это ваша последняя надежда, когда другие, более быстрые режимы потерпели неудачу.

Изучение функциональности режима External

На этом шаге вы познакомитесь с режимом "external" (внешний). Это самый продвинутый и гибкий из режимов John. Он позволяет определять пользовательскую логику генерации паролей с использованием языка сценариев, похожего на C, непосредственно в конфигурационном файле john.conf. Это мощный инструмент для создания высокотаргетированных атак, которые не могут быть выполнены другими режимами.

Хотя написание внешних сценариев является продвинутой темой, вы можете легко использовать предопределенные внешние режимы, поставляемые с John. Давайте сначала перечислим доступные внешние режимы, определенные в /etc/john/john.conf.

grep '^\[' /etc/john/john.conf | grep 'External:'

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

[External:Compiler]
[External:Double]
[External:Hybrid]
[External:Keyboard]
[External:LanManager]
[External:Shift]
[External:Status]
[External:Wordlist]

Вы видите несколько встроенных внешних функций. Давайте попробуем использовать внешний режим Wordlist. Этот режим по сути имитирует стандартный режим wordlist, но реализован как внешний сценарий, что делает его хорошим примером.

Сначала, как всегда, сбросим сеанс.

rm ~/.john/john.pot

Теперь запустим John, используя флаг --external, указав режим Wordlist.

john --external=Wordlist mypasswd.txt

Вывод будет очень похож на тот, который вы видели при запуске стандартного режима wordlist, поскольку лежащая в основе логика та же: он использует словарь по умолчанию для поиска пароля.

Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2-16])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:45) 100.0g/s 12000p/s 12000c/s 12000C/s passwo..pascal
Session completed

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

Итоги

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

Вы получили практический опыт работы с:

  • Режим Single Crack Mode: Быстрый режим, использующий информацию, специфичную для пользователя, для угадывания паролей.
  • Режим Wordlist Mode: Распространенный метод, использующий словарь слов.
  • Режим Incremental Mode: Комплексный режим полного перебора, который перебирает все комбинации символов.
  • Режим External Mode: Продвинутый, настраиваемый режим для создания пользовательских правил генерации паролей.

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