Введение
В этой лабораторной работе вы погрузитесь в мир безопасности паролей, научившись использовать John the Ripper — популярный инструмент с открытым исходным кодом для взлома паролей. Понимание того, как пароли могут быть угаданы или взломаны, имеет решающее значение для разработки более надежных практик безопасности. Вы изучите различные стратегии угадывания паролей, от базового брутфорса до более продвинутых комбинаторных и гибридных атак. К концу этой лабораторной работы вы получите практическое понимание этих методов и того, как применять их с помощью John the Ripper.
Понимание распространенных методов подбора паролей
На этом этапе вы изучите основные концепции методов подбора паролей, уделяя особое внимание словарным атакам и простому брутфорсу. John the Ripper может использовать эти методы для попытки взлома паролей.
Сначала давайте используем John the Ripper для взлома простого MD5-хэша с помощью словарной атаки. Мы уже подготовили файл passwords.txt, содержащий хэшированный пароль, и файл wordlist.txt с распространенными паролями.
Откройте терминал и перейдите в каталог ~/project.
cd ~/project
Теперь запустите John the Ripper с файлом wordlist.txt:
john --format=raw-md5 --wordlist=wordlist.txt passwords.txt
Вы должны увидеть вывод, указывающий, что John пытается взломать пароль. В случае успеха будет показан взломанный пароль.
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
password (user1)
1g 0:00:00:00 DONE (2023-10-27 08:00) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password
Чтобы просмотреть взломанные пароли, вы можете использовать опцию --show:
john --show passwords.txt
user1:password
1 password hash cracked, 0 left
Это демонстрирует базовую словарную атаку. John the Ripper успешно нашел "password" в предоставленном списке слов.
Реализация брутфорса с использованием специфических шаблонов
На этом этапе вы изучите атаки методом перебора (брутфорс) с использованием инкрементального режима John the Ripper. Инкрементальный режим позволяет John генерировать пароли на основе наборов символов (например, строчные буквы, прописные буквы, цифры, символы) и длины, эффективно выполняя атаку методом перебора.
Сначала создадим новый хэш пароля, которого нет в нашем простом списке слов. Мы будем использовать testuser:testpass (MD5-хэш от testpass — 5d41402abc4b2a76b9719d911017c592).
echo "testuser:5d41402abc4b2a76b9719d911017c592" > /home/labex/project/brute_passwords.txt
Теперь мы будем использовать John the Ripper в инкрементальном режиме. Для простоты и скорости мы ограничим набор символов и длину пароля. Мы будем использовать режим digits для взлома пароля, состоящего только из цифр.
Предположим, у нас есть пароль длиной 4 цифры, например, 1234. MD5-хэш для 1234 — 81dc9bdb52d04dc20036dbd8313ed055.
echo "digituser:81dc9bdb52d04dc20036dbd8313ed055" > /home/labex/project/digit_passwords.txt
Теперь запустите John the Ripper в инкрементальном режиме, нацеливаясь на цифры:
john --format=raw-md5 --incremental=digits digit_passwords.txt
Эта команда будет перебирать все комбинации цифр, пока не найдет пароль. Это может занять некоторое время в зависимости от длины пароля.
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
1234 (digituser)
1g 0:00:00:00 DONE (2023-10-27 08:05) 100.0g/s 100.0p/s 100.0c/s 100.0C/s 1234
После взлома вы можете показать результат:
john --show digit_passwords.txt
digituser:1234
1 password hash cracked, 0 left
Это демонстрирует, как можно использовать брутфорс, когда структура пароля известна или ограничена.
Использование комбинаторных атак
На этом этапе вы узнаете о комбинаторных атаках, которые объединяют слова из двух разных списков слов. Это полезно, когда пароли формируются путем конкатенации двух распространенных слов.
Сначала создадим новый хэш пароля для комбинаторной атаки. Мы будем использовать john_doe в качестве пароля (MD5-хэш от john_doe — 112233445566778899aabbccddeeff00).
echo "combo_user:112233445566778899aabbccddeeff00" > /home/labex/project/combo_passwords.txt
Мы уже подготовили base_wordlist.txt со словами "john" и "doe". Теперь создадим второй список слов, second_wordlist.txt:
echo "doe" > /home/labex/project/second_wordlist.txt
echo "smith" >> /home/labex/project/second_wordlist.txt
Теперь используйте John the Ripper в режиме Combinator. Этот режим принимает два списка слов и объединяет каждое слово из первого списка с каждым словом из второго списка.
john --format=raw-md5 --rules=Combinator --wordlist=base_wordlist.txt --stdout > /home/labex/project/combined_words.txt
john --format=raw-md5 --wordlist=combined_words.txt combo_passwords.txt
Первая команда генерирует комбинации и сохраняет их в combined_words.txt. Вторая команда затем использует этот сгенерированный список слов для взлома пароля.
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
john_doe (combo_user)
1g 0:00:00:00 DONE (2023-10-27 08:10) 100.0g/s 100.0p/s 100.0c/s 100.0C/s john_doe
Чтобы проверить взломанный пароль:
john --show combo_passwords.txt
combo_user:john_doe
1 password hash cracked, 0 left
Это демонстрирует, насколько эффективными могут быть комбинаторные атаки, когда пароли представляют собой комбинацию известных слов.
Изучение гибридных атак с помощью John the Ripper
На этом этапе вы узнаете о гибридных атаках, которые сочетают словарные слова с элементами брутфорса (например, числами или специальными символами). Это очень распространенная и эффективная стратегия для взлома паролей, которые являются вариациями распространенных слов.
Создадим новый хэш пароля для гибридной атаки. Мы будем использовать password123 в качестве пароля (MD5-хэш от password123 — 28a112233445566778899aabbccddeeff).
echo "hybrid_user:28a112233445566778899aabbccddeeff" > /home/labex/project/hybrid_passwords.txt
Мы будем использовать наш существующий wordlist.txt и применим правило, которое добавляет четыре цифры к каждому слову. Мы уже создали простой файл правил rules.txt на этапе настройки.
Теперь запустите John the Ripper, используя wordlist.txt и пользовательский файл правил:
john --format=raw-md5 --wordlist=wordlist.txt --rules=rules.txt hybrid_passwords.txt
Эта команда возьмет каждое слово из wordlist.txt и применит правила, определенные в rules.txt (добавление четырех цифр).
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
password123 (hybrid_user)
1g 0:00:00:00 DONE (2023-10-27 08:15) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123
Чтобы проверить взломанный пароль:
john --show hybrid_passwords.txt
hybrid_user:password123
1 password hash cracked, 0 left
Это демонстрирует мощь гибридных атак при взломе паролей, которые сочетают словарные слова с предсказуемыми шаблонами.
Разработка пользовательских стратегий подбора паролей
На этом этапе вы узнаете, как разрабатывать пользовательские стратегии подбора паролей, создавая и используя собственные файлы правил с помощью John the Ripper. Это позволяет проводить высокотаргетированные атаки, основанные на известных шаблонах паролей или привычках пользователей.
Создадим новый хэш пароля для пользовательской стратегии. Мы будем использовать LabEx@2023 в качестве пароля (MD5-хэш от LabEx@2023 — e0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5).
echo "custom_user:e0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5" > /home/labex/project/custom_passwords.txt
Теперь создадим пользовательский файл правил с именем custom_rules.txt, который будет делать следующее: заглавными делать первую букву, добавлять @ и затем четыре цифры.
nano /home/labex/project/custom_rules.txt
Добавьте следующее содержимое в файл custom_rules.txt:
:
c
$@
$[0-9]$[0-9]$[0-9]$[0-9]
:(пустое правило) — это заполнитель, часто используемый для начала набора правил.c— делает первую букву слова заглавной.$@— добавляет символ@.$[0-9]$[0-9]$[0-9]$[0-9]— добавляет четыре цифры.
Сохраните и выйдите из nano (Ctrl+X, Y, Enter).
Теперь используем базовый список слов, содержащий "labex":
echo "labex" > /home/labex/project/base_custom_wordlist.txt
Запустите John the Ripper с вашим пользовательским файлом правил:
john --format=raw-md5 --wordlist=base_custom_wordlist.txt --rules=custom_rules.txt custom_passwords.txt
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
LabEx@2023 (custom_user)
1g 0:00:00:00 DONE (2023-10-27 08:20) 100.0g/s 100.0p/s 100.0c/s 100.0C/s LabEx@2023
Чтобы проверить взломанный пароль:
john --show custom_passwords.txt
custom_user:LabEx@2023
1 password hash cracked, 0 left
Это демонстрирует гибкость движка правил John the Ripper, позволяя вам создавать высокоспецифичные и эффективные стратегии подбора паролей.
Резюме
В этой лабораторной работе вы получили практический опыт работы с John the Ripper, мощным инструментом для взлома паролей. Вы изучили и реализовали различные стратегии подбора паролей, включая:
- Словарные атаки: Использование предварительно скомпилированных списков распространенных паролей.
- Атаки методом полного перебора (Brute-Force Attacks): Систематическая попытка всех возможных комбинаций символов в пределах определенного набора.
- Комбинаторные атаки (Combinator Attacks): Объединение слов из нескольких списков слов для формирования новых кандидатов в пароли.
- Гибридные атаки: Смешивание словарных слов с элементами брутфорса с использованием правил.
- Пользовательские стратегии подбора паролей: Разработка собственных правил для нацеливания на конкретные шаблоны паролей.
Понимание этих методов имеет решающее значение как для наступательной безопасности (тестирование на проникновение), так и для оборонительной безопасности (создание надежных политик паролей и обучение пользователей). Видя, насколько легко можно взломать распространенные шаблоны паролей, вы сможете лучше оценить важность сложных, уникальных паролей и многофакторной аутентификации.


