Введение
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, позволяющего создавать высокоцелевые и эффективные стратегии подбора паролей.


