Выполнение комбинаторной атаки в Hashcat

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

Введение

В этой лабораторной работе вы изучите конкретный метод взлома паролей, известный как комбинаторная атака, с использованием Hashcat — мощного и универсального инструмента для восстановления паролей. Комбинаторная атака — это метод, при котором два отдельных списка слов (wordlists) объединяются для генерации кандидатов в пароли. Например, если один список содержит "password", а другой — "123", атака проверит комбинацию "password123".

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

Понимание концепции комбинаторной атаки

На этом этапе вы узнаете о базовой концепции комбинаторной атаки в Hashcat. Эта атака обозначается режимом атаки -a 1. Она работает путем взятия основного слова из первого списка слов и добавления к нему слова из второго списка, создавая новый кандидат в пароль. Этот процесс повторяется для каждого слова в обоих списках.

Например, если у вас есть два списка:

  • wordlist1.txt: admin, user
  • wordlist2.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, чтобы увидеть сохраненные результаты успешного взлома.

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