Создание пользовательского правила в Hashcat

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

Введение

Hashcat — это мощный и универсальный инструмент для восстановления паролей. Одной из его наиболее эффективных функций является атака на основе правил (rule-based attack), которая позволяет выполнять манипуляции со списком слов для создания огромного количества кандидатских паролей. Вместо использования готовых файлов правил вы можете создавать свои собственные, адаптированные под конкретную цель.

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

Изучение базового синтаксиса правил: добавление '$' и префикс '^'

На этом шаге вы познакомитесь с базовым синтаксисом правил Hashcat. Правила представляют собой простые односимвольные команды, которые указывают Hashcat, как манипулировать словом из вашего списка слов. Два наиболее фундаментальных правила — это добавление префикса и суффикса.

  • ^x: Добавить символ x в начало слова.
  • $x: Добавить символ x в конец слова.

Чтобы увидеть, как работают эти правила, не запуская полную атаку, мы можем использовать опцию --stdout. Эта опция выведет результат манипуляций с правилами непосредственно в терминал.

Сначала протестируем правило добавления суффикса. Мы создадим временный файл правил, который будет добавлять цифру 1 к каждому слову.

echo '$1' > temp_rule.txt

Теперь запустим Hashcat с этим правилом против нашего файла wordlist.txt. Флаг --force используется, чтобы Hashcat работал, даже если он обнаруживает неподдерживаемую среду, например виртуальную машину.

hashcat --force --stdout wordlist.txt -r temp_rule.txt

Вы должны увидеть слово из вашего списка с добавленной к нему цифрой 1:

password1

Далее протестируем правило добавления префикса. Мы создадим правило для добавления префикса в виде символа A.

echo '^A' > temp_rule.txt

Снова запустим Hashcat с этим новым правилом:

hashcat --force --stdout wordlist.txt -r temp_rule.txt

Вывод теперь покажет символ A в начале слова:

Apassword

Не стесняйтесь экспериментировать с другими символами, чтобы закрепить свое понимание. Когда закончите, вы можете удалить временный файл.

rm temp_rule.txt

Создание нового файла пользовательских правил

На этом шаге вы создадите новый пустой файл, который будет содержать все пользовательские правила для нашей атаки. Стандартной практикой является присвоение файлам правил расширения .rule для ясности.

Мы создадим файл с именем labex.rule в вашем текущем рабочем каталоге, ~/project. Вы можете легко создать пустой файл с помощью команды touch.

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

touch labex.rule

Чтобы убедиться, что файл успешно создан, вы можете вывести содержимое каталога с помощью команды ls.

ls

В выводе вы должны увидеть labex.rule вместе с файлами hashes.txt и wordlist.txt.

hashes.txt  labex.rule  wordlist.txt

Теперь у вас есть выделенный файл, готовый для ваших пользовательских правил.

Добавление правила для заглавной первой буквы 'c'

На этом шаге вы добавите свое первое правило в файл labex.rule. Очень распространенным шаблоном пароля является написание первой буквы слова с заглавной. Hashcat имеет специальное правило для этого:

  • c: Сделать первую букву слова заглавной, а все остальные буквы строчными.

Мы добавим это правило в наш файл labex.rule. Команда echo в сочетании с одинарным перенаправлением > — это быстрый способ записать содержимое в файл, перезаписав все, что было там ранее.

echo 'c' > labex.rule

Теперь давайте протестируем наш новый файл правил, чтобы увидеть его эффект. Мы снова используем опцию --stdout для предварительного просмотра вывода.

hashcat --force --stdout wordlist.txt -r labex.rule

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

Password

Вы успешно создали и протестировали свое первое пользовательское правило.

Добавление правила для добавления года ' $2 $0 $2 $4'

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

Чтобы добавить определенный символ, вы используете команду $ с последующим символом. Например, $2 добавляет цифру 2. Чтобы построить строку 2024, нам нужно добавить 2, затем 0, затем 2, затем 4.

Объединенное правило будет выглядеть так: c $2 $0 $2 $4. Это говорит Hashcat сначала выполнить капитализацию (c), а затем добавить указанные символы по порядку.

Давайте обновим файл labex.rule этим новым, более мощным правилом.

echo 'c $2 $0 $2 $4' > labex.rule

Теперь протестируйте обновленный файл правил, чтобы увидеть результат объединенных команд.

hashcat --force --stdout wordlist.txt -r labex.rule

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

Password2024

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

Тестирование файла пользовательских правил на примере атаки

На этом шаге вы будете использовать ваш готовый файл пользовательских правил, labex.rule, для выполнения реальной атаки по подбору паролей. Мы нацелимся на предоставленный в файле hashes.txt образец хэша MD5.

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

  • -m 0: Указывает, что тип хэша — MD5.
  • -a 0: Указывает, что режим атаки — "Straight" (прямая атака) или словарная атака.
  • hashes.txt: Файл, содержащий хэш(и) для подбора.
  • wordlist.txt: Файл словаря, который будет использоваться в качестве основы.
  • -r labex.rule: Указывает файл пользовательских правил, который будет применен к списку слов.

Запустите следующую команду, чтобы начать атаку:

hashcat --force -m 0 -a 0 hashes.txt wordlist.txt -r labex.rule

Hashcat запустится, применит правило c $2 $0 $2 $4 к слову password, сгенерирует Password2024, хэширует его и сравнит с хэшем в hashes.txt. Он найдет совпадение и сообщит подобранный пароль.

После завершения атаки (она должна быть очень быстрой), вы можете просмотреть подобранные пароли, используя опцию --show.

hashcat --force -m 0 --show hashes.txt

Вывод отобразит хэш, за которым следует подобранный пароль в открытом виде.

a915550249347678553a332349443648:Password2024

Поздравляем, вы успешно создали пользовательское правило и использовали его для подбора пароля!

Резюме

В этой лабораторной работе вы освоили основные навыки создания пользовательских правил в Hashcat. Вы начали с понимания базового синтаксиса для добавления символов в начало (^) и в конец ($). Затем вы создали свой собственный файл правил, labex.rule, и наполнили его постепенно усложняющимися правилами.

Вы успешно написали правило для капитализации первой буквы слова (c), а затем улучшили его, объединив команды для добавления года ($2 $0 $2 $4). Наконец, вы применили это пользовательское правило в практическом сценарии атаки, успешно подобрав хэш MD5.

Эти знания являются ступенькой к освоению мощного механизма правил Hashcat, позволяющего создавать высокоцелевые и эффективные стратегии подбора паролей.