Генерация пользовательских списков слов с помощью Crunch

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

Введение

Crunch — это мощный и гибкий инструмент командной строки, используемый для генерации пользовательских списков слов (wordlists). Эти списки слов имеют решающее значение в области кибербезопасности, особенно для пентестеров и специалистов по безопасности, которые проводят аудит стойкости паролей и атаки методом перебора (brute-force attacks). В отличие от статических, готовых списков слов, Crunch позволяет создавать высокоспецифичные списки на основе известных шаблонов, наборов символов и требований к длине, что значительно повышает эффективность атаки.

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

Понимание синтаксиса инструмента Crunch

На этом шаге вы изучите базовый синтаксис команды crunch и как получить доступ к ее меню справки. Понимание фундаментальной структуры команды — первый шаг к освоению ее возможностей.

Базовый синтаксис для crunch выглядит следующим образом: crunch <min-len> <max-len> [characterset] [options]

  • <min-len>: Минимальная длина генерируемых слов.
  • <max-len>: Максимальная длина генерируемых слов.
  • [characterset]: (Необязательно) Набор символов, используемых для генерации слов. Если не указан, crunch по умолчанию использует строчные буквы.
  • [options]: (Необязательно) Различные флаги для управления выводом, такие как сохранение в файл или использование шаблонов.

Чтобы увидеть все доступные опции и получить полное представление об инструменте, вы можете использовать флаг --help. Давайте посмотрим меню справки. Все операции в этой лабораторной работе будут выполняться в каталоге по умолчанию ~/project.

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

crunch --help

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

crunch version 3.6

Crunch can create a wordlist based on criteria you specify.  The output from
crunch can be sent to the screen, a file, or to another program.

Usage: crunch <min-len> <max-len> [options]
where min-len and max-len are numbers

... (output truncated) ...

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

Генерация простого списка слов фиксированной длины

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

По умолчанию crunch выводит список слов в стандартный вывод (на экран вашего терминала). Для больших списков это может быть избыточно и не очень полезно. Лучшей практикой является сохранение вывода в файл с использованием опции -o.

Давайте сгенерируем все возможные 3-символьные слова, используя алфавит строчных букв по умолчанию, и сохраним их в файл с именем 3char.txt.

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

crunch 3 3 -o 3char.txt

Эта команда указывает crunch генерировать слова с минимальной длиной 3 и максимальной длиной 3, а также выводить результат в файл 3char.txt. Вы увидите некоторую статистику о сгенерированном списке в вашем терминале.

Crunch will now generate the following amount of data: 20280 bytes, 19 KB, 0 MB, 0 GB
Crunch will now generate the following number of lines: 17576

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

head -n 5 3char.txt

Вы должны увидеть начало алфавитного списка.

aaa
aab
aac
aad
aae

Вы успешно сгенерировали и сохранили свой первый список слов.

Генерация списка слов с использованием определенного набора символов

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

Чтобы указать набор символов, просто добавьте строку символов, которые вы хотите использовать, в конец команды, после аргументов длины.

Давайте сгенерируем список 4-значных PIN-кодов, используя только цифры 0, 1, 2 и 3. Мы сохраним этот список в файл с именем 4digit.txt.

Выполните эту команду:

crunch 4 4 0123 -o 4digit.txt

Здесь 4 4 устанавливает длину ровно в четыре символа, 0123 предоставляет пользовательский набор символов, а -o 4digit.txt сохраняет вывод.

Давайте проверим начало сгенерированного файла, чтобы подтвердить вывод.

head -n 5 4digit.txt

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

0000
0001
0002
0003
0010

Как вы видите, crunch теперь использует только предоставленные вами символы, что дает вам гораздо больший контроль над сгенерированным списком слов.

Использование флага -t для генерации слов на основе шаблона

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

Флаг -t использует специальные заполнители для представления различных типов символов:

  • @ будет заменен строчными буквами.
  • , будет заменен прописными буквами.
  • % будет заменен цифрами.
  • ^ будет заменен символами.

Представим, что вы знаете, что пароль начинается со слова "user", за ним следуют две цифры, а заканчивается одной прописной буквой. Шаблон будет выглядеть так: user%%,. Общая длина составляет 7 символов (4 для "user", 2 для %%, 1 для ,).

Давайте сгенерируем список слов на основе этого шаблона и сохраним его в файл pattern.txt.

crunch 7 7 -t user%%, -o pattern.txt

Эта команда указывает crunch генерировать слова длиной ровно 7 символов, следуя шаблону user%%,.

Теперь давайте посмотрим на первые несколько строк выходного файла.

head -n 5 pattern.txt

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

user00A
user00B
user00C
user00D
user00E

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

Передача вывода Crunch напрямую в Hashcat

На этом шаге вы изучите мощный метод: передачу вывода crunch напрямую в другой инструмент. Это очень эффективно, поскольку позволяет избежать записи потенциально огромного списка слов на диск, экономя место и время. Слова генерируются и "передаются" (отправляются) следующей программе в режиме реального времени.

Хотя crunch часто используется с инструментами для взлома паролей, такими как Hashcat или John the Ripper, мы смоделируем этот процесс с помощью простой команды grep. grep — это инструмент для поиска текста, и он послужит для демонстрации концепции передачи данных.

Представим, что мы пытаемся найти пароль labex23. Мы подозреваем, что пароль начинается с "labex", за которым следуют две цифры.

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

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

crunch 7 7 -t labex%% | grep "labex23"

Эта команда выполняет два действия:

  1. crunch 7 7 -t labex%% генерирует все 7-символьные слова, начинающиеся с "labex", за которыми следуют две цифры (например, labex00, labex01, ...).
  2. Конвейер | отправляет каждое сгенерированное слово команде grep "labex23", которая проверяет, соответствует ли слово "labex23".

Если совпадение найдено, grep выведет его в терминал.

labex23

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

Итоги

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

В этой лабораторной работе вы научились:

  • Понимать базовый синтаксис команды crunch.
  • Генерировать простые списки слов фиксированной длины и сохранять их в файл.
  • Указывать пользовательский набор символов для создания более целевых списков слов.
  • Использовать флаг -t для генерации слов на основе известного шаблона.
  • Передавать вывод crunch напрямую другим инструментам командной строки, таким как grep, для выполнения обработки в реальном времени без сохранения в файл.

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