Введение
В этой лабораторной работе вы углубитесь в мощные возможности John the Ripper, популярного инструмента для взлома паролей с открытым исходным кодом, уделяя особое внимание его "инкрементальному режиму" (incremental mode). Инкрементальный режим — это высокоэффективный метод взлома паролей путем систематической переборки комбинаций символов на основе предопределенных наборов символов. Вы научитесь генерировать простой хэш пароля для целей тестирования, а затем применять инкрементальный режим с различными наборами символов (все символы, только цифры и только буквы), чтобы наблюдать его эффективность и производительность. Этот практический опыт даст вам практическое понимание того, как работает взлом паролей и какие факторы влияют на его скорость.
Генерация простого хэша для тестирования
На этом этапе вы сгенерируете простой хэш пароля, который John the Ripper сможет попытаться взломать. Мы будем использовать команду mkpasswd для создания хэша для известного пароля. Это позволит нам позже проверить успешность работы John the Ripper.
Сначала убедитесь, что установлен пакет whois, так как mkpasswd является его частью.
sudo apt update
sudo apt install -y whois
Далее сгенерируйте хэш для пароля 12345. Для простоты мы будем использовать алгоритм MD5.
mkpasswd -m md5 12345
Вы увидите вывод, похожий на '$1$xxxxxxx$yyyyyyyyyyyyyyy'. Скопируйте этот хэш.
Теперь сохраним этот хэш в файл с именем hash.txt в вашем каталоге ~/project. Замените YOUR_GENERATED_HASH на фактический скопированный вами хэш.
echo "YOUR_GENERATED_HASH" > ~/project/hash.txt
Например, если ваш хэш был $1$abcdefgh$ijklmnopqrstuvwxyz, команда будет выглядеть так:
echo "$1$abcdefgh$ijklmnopqrstuvwxyz" > ~/project/hash.txt
Наконец, проверьте содержимое файла hash.txt.
cat ~/project/hash.txt
Вы должны увидеть отображение сгенерированного вами хэша.
Запуск John the Ripper в инкрементальном режиме (все символы)
На этом этапе вы будете использовать John the Ripper в инкрементальном режиме для взлома сгенерированного вами хэша пароля. Инкрементальный режим систематически перебирает комбинации символов на основе определенного набора символов. По умолчанию инкрементальный режим John (--incremental) перебирает все печатаемые ASCII-символы.
Сначала убедитесь, что John the Ripper установлен.
sudo apt update
sudo apt install -y john
Теперь запустите John the Ripper против вашего файла hash.txt в инкрементальном режиме.
john --incremental ~/project/hash.txt
John начнет попытки взлома пароля. Поскольку мы использовали простой пароль, такой как 12345, он должен быть взломан относительно быстро. После взлома John отобразит взломанный пароль.
Вы увидите вывод, похожий на этот, указывающий, что пароль был взломан:
Using default input encoding: UTF-8
Loaded 1 password hash (MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
12345 (hash.txt)
1g 0:00:00:00 DONE (2023-10-26 10:30) 100.0g/s 100.0p/s 100.0c/s 100.0C/s 12345
Session completed.
Чтобы просмотреть взломанные пароли, найденные John, вы можете использовать опцию --show:
john --show ~/project/hash.txt
Эта команда отобразит взломанный пароль, связанный с хэшем.
12345 (hash.txt)
1 password hash cracked, 0 left
Запуск John the Ripper в инкрементальном режиме (только цифры)
На этом этапе вы настроите инкрементальный режим John the Ripper для использования только цифр (0-9) при взломе. Это полезно, когда вы подозреваете, что пароль состоит исключительно из цифр.
Сначала нам нужно сбросить сеанс John, чтобы гарантировать, что он снова попытается взломать пароль с нуля.
john --session=john --restore=none
Теперь запустим John the Ripper с пользовательским инкрементальным режимом, который включает только цифры. John использует "правила" или "наборы символов" для инкрементального режима. Мы можем указать пользовательский набор символов, используя опцию --incremental с определенным именем режима или определив пользовательский файл .chr. Для простоты мы будем использовать встроенный режим, если он доступен, или симулируем его.
Распространенный способ ограничения наборов символов — использование пользовательского файла .conf или указание предопределенного режима. Файл john.conf по умолчанию часто определяет различные инкрементальные режимы. Попробуем использовать режим, ориентированный на цифры. Если конкретный режим "цифры" напрямую недоступен, мы можем создать пользовательский.
Для этой лаборатории мы будем предполагать базовый инкрементальный режим, который отдает приоритет цифрам. Встроенный инкрементальный режим John довольно обширен. Чтобы специально нацелиться на цифры, мы обычно модифицируем конфигурацию John или используем пользовательский набор символов.
Чтобы симулировать эффект атаки "только цифры", мы сначала очистим файл pot John (где он хранит взломанные пароли), чтобы гарантировать, что пароль будет взломан заново.
rm -f ~/.john/john.pot
Теперь запустим John снова. Хотя --incremental не имеет прямого флага "только цифры", его внутренняя логика быстро найдет 12345. Ключевой момент здесь заключается в том, что если бы пароль действительно состоял только из цифр, специально настроенный инкрементальный режим "только цифры" был бы значительно быстрее общего.
john --incremental ~/project/hash.txt
Вы увидите, как John снова взломает пароль 12345. Разница в производительности была бы заметна, если бы пароль был намного длиннее и состоял только из цифр, а John был бы настроен с конкретным набором символов "только цифры".
Запуск John the Ripper в инкрементальном режиме (только буквы)
На этом этапе вы изучите, как работает John the Ripper при настройке на взлом паролей, используя только алфавитные символы (буквы). Этот сценарий актуален, когда вы подозреваете, что пароль состоит исключительно из букв.
Сначала снова очистим файл pot John, чтобы обеспечить новую попытку взлома.
rm -f ~/.john/john.pot
Теперь сгенерируем новый хэш для пароля, состоящего только из букв, например, hello.
mkpasswd -m md5 hello > ~/project/hash_letters.txt
Проверим содержимое нового файла хэша:
cat ~/project/hash_letters.txt
Теперь запустим John the Ripper против файла hash_letters.txt. Подобно сценарию "только цифры", инкрементальный режим John по умолчанию является широким. Чтобы действительно ограничить его только буквами, вам обычно потребуется использовать пользовательский файл .chr или специальный инкрементальный режим, определенный в john.conf. Для этой лаборатории мы запустим общий инкрементальный режим и концептуально поймем, что режим "только буквы" был бы быстрее для таких паролей.
john --incremental ~/project/hash_letters.txt
John начнет взлом пароля hello. Вы увидите, что он будет взломан.
Using default input encoding: UTF-8
Loaded 1 password hash (MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
hello (hash_letters.txt)
1g 0:00:00:00 DONE (2023-10-26 10:35) 100.0g/s 100.0p/s 100.0c/s 100.0C/s hello
Session completed.
Чтобы подтвердить взломанный пароль:
john --show ~/project/hash_letters.txt
Вы должны увидеть hello, отображенный как взломанный пароль.
Понимание производительности инкрементального режима
На этом этапе вы поразмышляете о влиянии использования различных наборов символов на производительность в инкрементальном режиме John the Ripper. Хотя в наших примерах использовались короткие, простые пароли, эти принципы масштабируются и для более сложных сценариев.
Основная идея инкрементального режима заключается в систематической проверке всех возможных комбинаций символов в пределах заданного набора и диапазона длин. Размер набора символов напрямую влияет на количество возможных комбинаций, а следовательно, и на время, необходимое для взлома пароля.
Рассмотрим следующее:
- Все символы (например, буквенно-цифровые, символы): Это самый большой набор символов. Хотя он может взломать любой пароль, он является самым медленным, поскольку John должен перебрать огромное количество комбинаций. Это то, с чем вы столкнулись на Шаге 2.
- Только цифры (0-9): Это гораздо меньший набор символов (10 символов). Если вы знаете, что пароль состоит только из цифр, использование режима инкрементального взлома только для цифр будет значительно быстрее, чем использование режима "все символы", особенно для более длинных паролей.
- Только буквы (a-z, A-Z): Этот набор символов (52 символа) больше, чем только цифры, но меньше, чем все символы. Если вы подозреваете, что пароль состоит только из букв, использование режима "только буквы" будет более эффективным, чем режим "все символы".
Ключевой вывод: Чем точнее вы сможете определить набор символов целевого пароля, тем быстрее John the Ripper (или любой другой инструмент для взлома) сможет его взломать с помощью инкрементального режима. Именно поэтому сбор информации о возможных характеристиках пароля (например, "это номер телефона", "это имя") имеет решающее значение в реальных сценариях взлома паролей.
В заключение, удалим сгенерированные файлы хэшей.
rm -f ~/project/hash.txt ~/project/hash_letters.txt
Эта команда удаляет временные файлы хэшей, созданные во время лаборатории.
Резюме
В этой лаборатории вы успешно научились использовать инкрементальный режим John the Ripper для взлома паролей. Вы начали с генерации простых хэшей паролей для тестирования. Затем вы использовали John the Ripper для взлома этих хэшей, сначала с использованием инкрементального режима по умолчанию "все символы", а затем концептуально исследовали, как ограничение набора символов до "только цифры" или "только буквы" может значительно повысить производительность взлома. Вы получили практическое понимание того, как работает инкрементальный режим и важность сужения пространства символов для эффективного взлома паролей. Эти знания являются основополагающими для понимания безопасности паролей и методов, используемых для ее тестирования.


