Введение
Атака по словарю — это метод взлома системы, защищенной паролем, путем систематического ввода каждого слова из списка (словаря) в качестве пароля. Однако этот базовый подход часто терпит неудачу, поскольку пользователи редко используют простые словарные слова в качестве паролей. Они часто добавляют цифры, символы или изменяют регистр букв, чтобы соответствовать требованиям к сложности.
Именно здесь "правила преобразования" (mangling rules) становятся невероятно мощными. Правила преобразования — это набор инструкций, которые трансформируют слова из вашего словаря перед их тестированием. Например, правило может добавить цифру, заглавить первую букву или заменить буквы символами (например, 'a' на '@').
В этой лабораторной работе вы будете использовать популярный инструмент для взлома паролей, John the Ripper (JtR), чтобы увидеть это в действии. Сначала вы попытаетесь провести стандартную атаку по словарю и увидите, что она не удалась. Затем вы примените набор правил преобразования, чтобы усилить атаку и успешно взломать более сложный пароль.
Понимание силы правил преобразования
На этом шаге вы сначала выполните стандартную атаку по словарю, чтобы увидеть ее ограничения. Мы подготовили файл с именем shadow.txt, который содержит хешированный пароль пользователя, и файл wordlist.txt с потенциальным базовым словом для пароля.
Запустим John the Ripper с нашим списком слов против файла хешей. Эта команда указывает john попробовать каждое слово из wordlist.txt в качестве пароля.
john --wordlist=wordlist.txt shadow.txt
Вы увидите вывод, похожий на этот, указывающий, что атака выполняется.
Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
0g 0:00:00:00 DONE (2023-10-27 10:30) 0g/s 1845Kp/s 1845Kc/s 1845KC/s secdec..secret
Session completed
Обратите внимание на финальное сообщение: "Session completed". John the Ripper попробовал слово "secret" и его распространенные вариации, но не смог взломать пароль. Это связано с тем, что фактический пароль сложнее, чем простое словарное слово. Это демонстрирует необходимость более продвинутой техники.
Поиск встроенных файлов правил в каталоге /rules/
На этом шаге мы изучим, где John the Ripper хранит свои мощные правила преобразования. В большинстве систем Linux, включая эту, правила находятся не в отдельном каталоге /rules/, а определены в основном конфигурационном файле john.conf.
Перечислим содержимое каталога /etc/john/, чтобы найти этот конфигурационный файл.
ls -l /etc/john/
В выводе вы должны увидеть файл john.conf.
total 148
-rw-r--r-- 1 root root 148233 Jan 20 2022 john.conf
Этот файл john.conf содержит множество предопределенных наборов правил, таких как KoreLogic, best64 и all. Эти наборы правил представляют собой коллекции отдельных инструкций по преобразованию, которые могут быть применены к атаке по словарю. На следующем шаге мы более подробно рассмотрим один из этих наборов правил.
Выбор файла с распространенными правилами, например best64.rule
На этом шаге вы изучите конкретный набор правил. Для вашего удобства мы уже извлекли популярный и эффективный набор правил best64 из john.conf и сохранили его как best64.rule в вашем текущем каталоге проекта (~/project).
Давайте посмотрим на первые 10 строк этого файла, чтобы получить представление о том, как выглядят правила. Используйте команду head:
head -n 10 best64.rule
Вы увидите вывод, похожий на этот:
#
## best64.rule, a selection of the best 64 rules from the over 14,000
## rules in all.rule.
#
## Rule syntax:
## http://www.openwall.com/john/doc/RULES.shtml
#
## The following rules are commented out because they are slow.
#
:
l
u
Строки, начинающиеся с #, являются комментариями. Строки из одного символа, такие как :, l и u, являются фактическими правилами.
:— это правило "без операции" (no-op), что означает "попробовать слово как есть".lпреобразует слово в нижний регистр.uпреобразует слово в верхний регистр.
Далее в файле вы найдете более сложные правила, такие как c (сделать первую букву заглавной) и $1 (добавить цифру '1'). Эти простые преобразования значительно увеличивают количество кандидатов в пароли.
Применение файла правил к атаке по словарю с флагом -r
Теперь пришло время раскрыть мощь правил преобразования. На этом шаге вы снова запустите атаку по словарю, но на этот раз вы укажете John the Ripper использовать файл best64.rule.
Это можно сделать, добавив флаг -r (сокращение от --rules) к команде. Это говорит john применить каждое правило из указанного файла к каждому слову в wordlist.txt.
Выполните следующую команду в терминале:
john --wordlist=wordlist.txt -r=./best64.rule shadow.txt
На этот раз атака должна быть успешной очень быстро. Вывод будет выглядеть иначе.
Using default input encoding: UTF-8
Loaded 1 password hash (descrypt, traditional crypt(3) [DES 128/128 SSE2])
Cost 1 (algorithm [1:descrypt]...[3:DES]) is 50400 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Secret123 (testuser)
1g 0:00:00:00 DONE (2023-10-27 10:35) 10.00g/s 61538p/s 61538c/s 61538C/s Secret12..Secret123
Use the "--show" option to display all of the cracked passwords reliably
Session completed
Успех! Строка Secret123 (testuser) указывает на то, что пароль был взломан. John the Ripper нашел правильный пароль, применив правила из best64.rule к слову "secret".
Сравнение результатов атаки с правилами и без них
На этом заключительном шаге вы официально просмотрите взломанный пароль и оцените, какую разницу внесли правила.
Хотя пароль был отображен в выводе предыдущего шага, стандартный способ просмотра всех взломанных паролей для данного файла хешей — это использование флага --show.
Выполните следующую команду:
john --show shadow.txt
Эта команда отобразит все пароли, которые John успешно взломал для файла shadow.txt.
testuser:Secret123:17119:0:99999:7:::
1 password hash cracked, 0 left
Вывод четко показывает testuser:Secret123. Это подтверждает взломанный пароль.
Сравнивая результаты, вывод очевиден:
- Без правил (Шаг 1): Атака не удалась, потому что "secret" не был паролем.
- С правилами (Шаг 4): Атака увенчалась успехом. John взял слово "secret", применил правило капитализации, чтобы получить "Secret", а затем правило добавления числа, чтобы получить "Secret123", что оказалось совпадением.
Это демонстрирует, что правила преобразования — это не просто полезная функция; они необходимы для того, чтобы атаки по словарю были эффективными против реальных привычек паролей.
Резюме
В этой лабораторной работе вы на практике ощутили разницу между простой атакой по словарю и атакой с использованием правил.
Вы узнали, как:
- Запустить базовую атаку по словарю с помощью John the Ripper и увидеть ее ограничения.
- Понять концепцию правил преобразования (mangling rules) и определить место их хранения.
- Изучить структуру файла правил.
- Применить набор правил к атаке по словарю, используя флаг
-r, чтобы значительно повысить ее эффективность. - Просмотреть взломанные пароли и подтвердить успех атаки на основе правил.
Преобразуя простые словарные слова в тысячи потенциальных вариаций, правила преобразования являются фундаментальным инструментом в арсенале любого аудитора паролей или специалиста по безопасности.


