Введение
В этой лабораторной работе вы изучите расширенные возможности John the Ripper, уделяя особое внимание использованию пользовательских наборов символов. John the Ripper — это мощный инструмент с открытым исходным кодом для взлома паролей. Хотя он поставляется с предопределенными наборами символов, определение собственных может значительно повысить эффективность взлома, особенно при работе с определенными политиками паролей или нестандартными символами. Вы научитесь создавать, применять и оптимизировать эти пользовательские наборы для различных сценариев, глубже понимая, как они влияют на процесс взлома.
Определение пользовательского набора символов для инкрементного режима
На этом шаге вы научитесь определять пользовательский набор символов для инкрементного режима John the Ripper. Инкрементный режим — это мощный метод взлома, который перебирает все возможные комбинации символов до определенной длины. По умолчанию John использует большой набор символов, что может быть неэффективно, если вы знаете, что пароль использует ограниченный набор символов (например, только строчные буквы и цифры).
Сначала создадим простой хэш пароля, который мы попытаемся взломать с использованием пользовательского набора символов. Мы создадим хэш для пароля abc и сохраним его в файл с именем hash_to_crack.txt.
echo "user1:\$6\$salt1\$y.g.a.hash.for.abc" > ~/project/hash_to_crack.txt
Теперь определим пользовательский набор символов, включающий только строчные буквы. Мы сохраним это определение в файле с именем custom.chr в каталоге ~/project. Этот файл сообщит John the Ripper, какие символы использовать при взломе.
nano ~/project/custom.chr
Добавьте следующее содержимое в файл custom.chr:
[CharSet]
charset = abcdefghijklmnopqrstuvwxyz
Сохраните файл, нажав Ctrl+X, затем Y и Enter.
Теперь используем John the Ripper с этим пользовательским набором символов в инкрементном режиме для взлома файла hash_to_crack.txt. Опция --incremental указывает John использовать инкрементный режим, а --external=custom.chr указывает наш пользовательский набор символов.
john --format=sha512crypt --incremental=custom --external=~/project/custom.chr ~/project/hash_to_crack.txt
Вы увидите, как John пытается взломать хэш. Как только он найдет пароль, он отобразит его.
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2])
Will run till completion
Press 'q' or Ctrl-C to abort, almost any other key for status
abc (user1)
1g 0:00:00:00 DONE (2023-10-27 10:00) 100.0g/s 100p/s 100c/s 100C/s abc
Use the "--show" option to display all of the cracked passwords reliably
Session completed
Чтобы показать взломанный пароль, используйте опцию --show:
john --show ~/project/hash_to_crack.txt
user1:abc
1 password hash cracked, 0 left
Это демонстрирует, как пользовательский набор символов может быть использован для сужения пространства поиска, делая процесс взлома более эффективным, когда у вас есть некоторая информация о составе пароля.
Применение пользовательских наборов символов к конкретным сценариям
На этом шаге вы примените пользовательские наборы символов к более конкретным сценариям, демонстрируя их гибкость. Мы создадим новый хэш и более точный пользовательский набор символов.
Предположим, у нас есть пароль, состоящий только из цифр, например, 1234. Сначала мы создадим хэш для этого пароля.
echo "user2:\$6\$salt2\$y.g.a.hash.for.1234" > ~/project/numeric_hash.txt
Теперь определим пользовательский набор символов, включающий только цифры (0-9). Мы назовем этот файл digits.chr.
nano ~/project/digits.chr
Добавьте следующее содержимое в digits.chr:
[CharSet]
charset = 0123456789
Сохраните файл (Ctrl+X, Y, Enter).
Далее мы будем использовать John the Ripper с этим новым набором символов для взлома файла numeric_hash.txt.
john --format=sha512crypt --incremental=digits --external=~/project/digits.chr ~/project/numeric_hash.txt
Вы должны увидеть, как John быстро взломает пароль 1234.
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2])
Will run till completion
Press 'q' or Ctrl-C to abort, almost any other key for status
1234 (user2)
1g 0:00:00:00 DONE (2023-10-27 10:05) 100.0g/s 100p/s 100c/s 100C/s 1234
Use the "--show" option to display all of the cracked passwords reliably
Session completed
Чтобы подтвердить взломанный пароль:
john --show ~/project/numeric_hash.txt
user2:1234
1 password hash cracked, 0 left
Этот сценарий подчеркивает, насколько эффективными могут быть пользовательские наборы символов, когда у вас есть точная информация о составе пароля, что значительно сокращает время взлома по сравнению с использованием общего набора символов.
Понимание влияния размера набора символов
На этом шаге вы увидите влияние размера набора символов на процесс взлома. Больший набор символов означает больше возможных комбинаций, что приводит к увеличению времени взлома.
Создадим новый хэш для пароля, который использует как строчные буквы, так и цифры, например, a1b2.
echo "user3:\$6\$salt3\$y.g.a.hash.for.a1b2" > ~/project/alphanum_hash.txt
Теперь определим пользовательский набор символов, включающий как строчные буквы, так и цифры. Мы назовем этот файл alphanum.chr.
nano ~/project/alphanum.chr
Добавьте следующее содержимое в alphanum.chr:
[CharSet]
charset = abcdefghijklmnopqrstuvwxyz0123456789
Сохраните файл (Ctrl+X, Y, Enter).
Теперь используем John the Ripper с этим объединенным набором символов.
john --format=sha512crypt --incremental=alphanum --external=~/project/alphanum.chr ~/project/alphanum_hash.txt
Вы заметите, что взлом a1b2 с этим большим набором символов может занять немного больше времени, чем взлом abc или 1234 с их соответствующими меньшими наборами, даже если длина пароля схожа. Это связано с тем, что пространство поиска (количество возможных комбинаций) значительно больше.
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2])
Will run till completion
Press 'q' or Ctrl-C to abort, almost any other key for status
a1b2 (user3)
1g 0:00:00:00 DONE (2023-10-27 10:10) 100.0g/s 100p/s 100c/s 100C/s a1b2
Use the "--show" option to display all of the cracked passwords reliably
Session completed
Чтобы подтвердить взломанный пароль:
john --show ~/project/alphanum_hash.txt
user3:a1b2
1 password hash cracked, 0 left
Этот шаг иллюстрирует прямую зависимость между размером вашего набора символов и временем, необходимым для взлома. Оптимизация вашего набора символов путем его максимального сужения и конкретизации, основываясь на доступной информации, имеет решающее значение для эффективного взлома паролей.
Оптимизация определений пользовательских наборов символов
На этом шаге вы узнаете, как дополнительно оптимизировать определения пользовательских наборов символов, комбинируя различные типы символов и используя встроенные классы символов John. John the Ripper позволяет определять наборы символов с использованием предопределенных классов, таких как ?l для строчных букв, ?u для прописных, ?d для цифр и ?s для символов.
Создадим хэш для пароля, такого как Pass123!.
echo "user4:\$6\$salt4\$y.g.a.hash.for.Pass123!" > ~/project/complex_hash.txt
Вместо перечисления всех символов мы можем использовать классы символов John. Создадим файл с именем complex.chr, который объединяет эти классы.
nano ~/project/complex.chr
Добавьте следующее содержимое в complex.chr:
[CharSet]
charset = ?l?u?d?s
Сохраните файл (Ctrl+X, Y, Enter).
Здесь ?l обозначает строчные буквы, ?u — прописные, ?d — цифры, а ?s — символы. Это более лаконичный способ определения широкого набора символов.
Теперь используем John the Ripper с этим оптимизированным набором символов.
john --format=sha512crypt --incremental=complex --external=~/project/complex.chr ~/project/complex_hash.txt
John теперь попытается взломать пароль, используя все комбинации строчных, прописных букв, цифр и символов.
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2])
Will run till completion
Press 'q' or Ctrl-C to abort, almost any other key for status
Pass123! (user4)
1g 0:00:00:00 DONE (2023-10-27 10:15) 100.0g/s 100p/s 100c/s 100C/s Pass123!
Use the "--show" option to display all of the cracked passwords reliably
Session completed
Чтобы подтвердить взломанный пароль:
john --show ~/project/complex_hash.txt
user4:Pass123!
1 password hash cracked, 0 left
Этот метод эффективен для определения распространенных наборов символов без ручного перечисления каждого символа. Это хороший баланс между специфичностью и простотой определения для типичных композиций паролей.
Создание наборов символов для неанглийских паролей
На этом шаге вы узнаете, как создавать пользовательские наборы символов для неанглийских паролей, которые часто содержат специальные символы, отсутствующие в стандартных английских наборах. Это крайне важно для взлома паролей на разных языках.
Предположим, у нас есть пароль, включающий распространенный немецкий умлаут, например, schön. Сначала создадим хэш для этого пароля.
echo "user5:\$6\$salt5\$y.g.a.hash.for.schön" > ~/project/german_hash.txt
Теперь нам нужно определить пользовательский набор символов, который включает специфические неанглийские символы. Для schön нам нужен ö.
nano ~/project/german.chr
Добавьте следующее содержимое в german.chr. Убедитесь, что вы включили символ ö.
[CharSet]
charset = abcdefghijklmnopqrstuvwxyzäöüß
Сохраните файл (Ctrl+X, Y, Enter).
Теперь используем John the Ripper с этим пользовательским набором символов. Важно указать кодировку, если символы не являются стандартными ASCII. John обычно хорошо работает с UTF-8, но явное указание кодировки иногда может быть необходимо.
john --format=sha512crypt --incremental=german --external=~/project/german.chr --input-encoding=UTF-8 ~/project/german_hash.txt
John теперь попытается взломать пароль, включая специальные немецкие символы.
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 256/256 AVX2])
Will run till completion
Press 'q' or Ctrl-C to abort, almost any other key for status
schön (user5)
1g 0:00:00:00 DONE (2023-10-27 10:20) 100.0g/s 100p/s 100c/s 100C/s schön
Use the "--show" option to display all of the cracked passwords reliably
Session completed
Чтобы подтвердить взломанный пароль:
john --show ~/project/german_hash.txt
user5:schön
1 password hash cracked, 0 left
Этот шаг демонстрирует важность включения специфических неанглийских символов в ваши пользовательские наборы символов при работе с международными паролями. Без этих символов John the Ripper не смог бы взломать такие пароли в режиме инкрементального перебора.
Резюме
В этой лабораторной работе вы получили практический опыт определения и использования пользовательских наборов символов с помощью John the Ripper. Вы научились создавать файлы пользовательских наборов символов (.chr), применять их в режиме инкрементального перебора и понимать значительное влияние размера набора символов на эффективность взлома. Кроме того, вы узнали, как оптимизировать определения наборов символов, используя встроенные классы символов John, и как обрабатывать неанглийские пароли, включая специальные символы. Освоение пользовательских наборов символов является ключевым навыком для эффективного и целенаправленного взлома паролей, позволяя сузить пространство поиска и ускорить процесс на основе известных характеристик пароля.


