Введение
В этой лабораторной работе вы изучите конкретный метод взлома паролей, известный как комбинаторная атака, с использованием Hashcat — мощного и универсального инструмента для восстановления паролей. Комбинаторная атака — это метод, при котором два отдельных списка слов (wordlists) объединяются для генерации кандидатов в пароли. Например, если один список содержит "password", а другой — "123", атака проверит комбинацию "password123".
Этот подход особенно эффективен против паролей, которые формируются путем конкатенации двух слов, или слова и последовательности чисел или символов. В ходе этой лабораторной работы вы научитесь подготавливать списки слов, составлять соответствующую команду Hashcat, выполнять атаку на образце хэша и проверять результаты.
Понимание концепции комбинаторной атаки
На этом этапе вы узнаете о базовой концепции комбинаторной атаки в Hashcat. Эта атака обозначается режимом атаки -a 1. Она работает путем взятия основного слова из первого списка слов и добавления к нему слова из второго списка, создавая новый кандидат в пароль. Этот процесс повторяется для каждого слова в обоих списках.
Например, если у вас есть два списка:
wordlist1.txt:admin,userwordlist2.txt:123,!
Комбинаторная атака сгенерирует следующие кандидаты: admin123, admin!, user123, user!.
Этот метод значительно расширяет потенциальное пространство паролей без необходимости использования одного огромного файла словаря. Давайте начнем с подтверждения режима атаки в меню справки Hashcat.
Выполните следующую команду, чтобы отфильтровать вывод справки по информации о комбинаторной атаке:
hashcat --help | grep "Combinator"
В выводе вы должны увидеть строку, явно упоминающую режим комбинаторной атаки и соответствующий ему номер.
-a, --attack-mode | ## | Attack-mode
...
| 1 | Combinator
...
Это подтверждает, что -a 1 является правильным флагом для использования в комбинаторной атаке.
Создание двух отдельных списков слов для атаки
На этом этапе вы создадите два списка слов, которые будут использоваться в нашей комбинаторной атаке. Для этой лабораторной работы мы создадим два небольших пользовательских списка слов. В реальном сценарии эти списки были бы намного больше и содержали бы более распространенные слова, имена и шаблоны.
Наш целевой пароль представляет собой комбинацию распространенного слова и числовой последовательности. Мы поместим словесную часть в wordlist1.txt, а числовую часть — в wordlist2.txt.
Сначала создайте wordlist1.txt с несколькими потенциальными базовыми словами. Используйте команду echo с флагом -e для обработки переводов строк (\n):
echo -e "admin\nuser\npassword\nguest" > wordlist1.txt
Затем создайте wordlist2.txt с некоторыми распространенными числовыми суффиксами:
echo -e "2024\n!@#\n123\nxyz" > wordlist2.txt
Теперь проверьте содержимое обоих файлов с помощью команды cat, чтобы убедиться, что они были созданы правильно.
Проверьте первый список слов:
cat wordlist1.txt
Ожидаемый вывод:
admin
user
password
guest
Проверьте второй список слов:
cat wordlist2.txt
Ожидаемый вывод:
2024
!@#
123
xyz
С этими двумя списками слов Hashcat теперь сможет сформировать кандидат в пароль password123.
Формирование команды для комбинаторной атаки с двумя списками слов
На этом этапе вы сформируете полную команду Hashcat для комбинаторной атаки. Важно понимать, что делает каждая часть команды перед ее выполнением.
Общий синтаксис для комбинаторной атаки: hashcat [options] <hash-file> <wordlist1> <wordlist2>
Вот разбивка команды, которую мы будем использовать:
hashcat: Исполняемая программа.-m 0: Указывает тип хеша. Режим0соответствует MD5.-a 1: Устанавливает режим атаки1, который является комбинаторной атакой.hash.txt: Это файл, содержащий хеш, который мы хотим взломать. Он был создан для вас во время настройки лаборатории.wordlist1.txt: Первый список слов, содержащий левую часть кандидатных паролей.wordlist2.txt: Второй список слов, содержащий правую часть кандидатных паролей.
Перед запуском полной атаки хорошей практикой является использование флага --show. Этот флаг указывает Hashcat отобразить любые хеши, которые уже были взломаны и сохранены в potfile, без запуска новой сессии взлома.
Давайте запустим команду с --show, чтобы увидеть, что наш целевой хеш еще не был взломан:
hashcat -m 0 -a 1 hash.txt wordlist1.txt wordlist2.txt --show
Поскольку мы запускаем ее впервые, команда не выдаст никакого вывода, что является ожидаемым результатом. Это подтверждает, что мы готовы приступить к фактической атаке.
Выполнение атаки и наблюдение за комбинациями
Теперь пришло время выполнить комбинаторную атаку без флага --show. Это запустит процесс взлома. Hashcat прочитает два списка слов, объединит их, хеширует результаты и сравнит их с целевым хешем в hash.txt.
Выполните следующую команду в вашем терминале:
hashcat -m 0 -a 1 hash.txt wordlist1.txt wordlist2.txt
Hashcat инициализируется и отобразит экран состояния. Поскольку наши списки слов очень малы, процесс завершится почти мгновенно. Вывод покажет, что хеш был взломан.
Вы увидите вывод, похожий на следующий (некоторые детали, такие как скорость и время, могут отличаться):
hashcat (v6.2.6) starting
...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: e10adc3949ba59abbe56e057f20f883e
Time.Started.....: ...
Time.Estimated...: 0 secs (0.00ms)
Guess.Base.......: File (wordlist1.txt), File (wordlist2.txt)
Guess.Queue......: 2/2 (100.00%)
Speed.#*.........: ... H/s (...)
Recovered........: 1/1 (100.00%) Digests
Progress.........: 16/16 (100.00%)
Rejected.........: 0/16 (0.00%)
Restore.Point....: 4/4 (100.00%)
Restore.Sub.#*...: 4/4 (100.00%)
Candidates.#*....: 16
Cracked Hashes: 1/1
e10adc3949ba59abbe56e057f20f883e:password123
...
All hashes have been recovered
Started: ...
Stopped: ...
Строка e10adc3949ba59abbe56e057f20f883e:password123 четко показывает исходный хеш и его взломанный пароль в открытом виде. Это подтверждает успешность нашей атаки.
Просмотр файла potfile для результатов комбинированных паролей
На этом этапе вы просмотрите файл potfile Hashcat. Файл potfile (hashcat.potfile) представляет собой простой текстовый файл, в который Hashcat автоматически сохраняет успешно взломанные хеши и соответствующие им пароли. Это полезная функция, которая предотвращает трату времени на повторный взлом уже решенных хешей.
По умолчанию файл potfile находится в каталоге ~/.local/share/hashcat/.
Используйте команду cat, чтобы просмотреть содержимое файла potfile и убедиться, что наш результат был сохранен:
cat ~/.local/share/hashcat/hashcat.potfile
Вывод покажет хеш и его взломанный пароль, разделенные двоеточием:
e10adc3949ba59abbe56e057f20f883e:password123
Это подтверждает, что атака была успешной, и результат теперь постоянно сохранен в файле potfile. Если бы вы запустили ту же атаку снова, Hashcat использовал бы флаг --show для мгновенного получения результата из этого файла вместо повторного выполнения всего процесса взлома.
Резюме
В этой лабораторной работе вы успешно выполнили комбинаторную атаку с использованием Hashcat.
Вы узнали, как:
- Понять концепцию комбинаторной атаки (
-a 1) в Hashcat. - Создать два отдельных списка слов, которые послужат основой для кандидатов в пароли.
- Сформировать правильную команду Hashcat, указав режим атаки, тип хеша и входные файлы.
- Выполнить атаку и успешно взломать MD5-хеш, комбинируя слово и числовую последовательность.
- Найти и просмотреть файл
hashcat.potfile, чтобы увидеть сохраненные результаты успешного взлома.
Комбинаторная атака является фундаментальным методом взлома паролей, особенно полезным при работе с паролями, которые следуют предсказуемым шаблонам конкатенации.


