Словарные атаки Hashcat

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

Введение

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

В этой лабораторной работе вы сосредоточитесь на одной из самых фундаментальных техник взлома паролей: словарной атаке. Вы узнаете, как использовать режим атаки Hashcat "Straight" (-a 0) для взлома простого MD5-хеша с использованием пользовательского списка слов (wordlist). Этот практический опыт заложит прочную основу для понимания принципов работы взлома паролей.

Понимание концепции словарной атаки (-a 0)

На этом шаге вы узнаете о словарной атаке и о том, как она реализуется в Hashcat.

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

Hashcat называет этот метод атакой "Straight" (Прямая), которой присвоен номер режима атаки 0. Вы указываете режим атаки с помощью опции -a.

Давайте используем команду hashcat --help, чтобы увидеть примеры режима атаки 0. Мы можем направить вывод в grep, чтобы найти нужные строки.

hashcat --help | grep -- "-a 0"

Вы увидите следующий вывод, демонстрирующий примеры словарных атак с использованием -a 0:

  Wordlist         | $P$   | hashcat -a 0 -m 400 example400.hash example.dict
  Wordlist + Rules | MD5   | hashcat -a 0 -m 0 example0.hash example.dict -r rules/best64.rule

Это подтверждает, что для выполнения словарной атаки вы будете использовать опцию -a 0 в вашей команде Hashcat, где -a 0 обозначает режим атаки Straight (словарная атака).

Подготовка файла целевого хеша и простого списка слов

На этом шаге вы подготовите два основных файла, необходимых для словарной атаки: файл, содержащий целевой хеш, и файл со списком слов (wordlist). Все операции будут выполняться в каталоге ~/project.

Сначала создадим файл для хранения нашего целевого хеша. Мы будем использовать MD5-хеш строки "password123", который равен 482c811da5d5b4bc6d497ffa98491e38.

Используйте команду echo для создания файла с именем my_hash.txt, содержащего этот хеш.

echo "482c811da5d5b4bc6d497ffa98491e38" > my_hash.txt

Далее создайте простой файл списка слов с именем my_wordlist.txt. Реальный список слов может содержать миллионы слов, но для этой лабораторной работы мы создадим небольшой, который включает правильный пароль.

echo "password" > my_wordlist.txt
echo "123456" >> my_wordlist.txt
echo "password123" >> my_wordlist.txt
echo "qwerty" >> my_wordlist.txt

Теперь проверьте содержимое обоих файлов с помощью команды cat.

Сначала проверьте файл хеша:

cat my_hash.txt

Ожидаемый вывод:

482c811da5d5b4bc6d497ffa98491e38

Затем проверьте файл списка слов:

cat my_wordlist.txt

Ожидаемый вывод:

password
123456
password123
qwerty

Теперь у вас есть целевой хеш и список слов, готовые к атаке.

Запуск словарной атаки на хеш MD5

На этом шаге вы запустите словарную атаку на подготовленный вами MD5-хеш.

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

Структура команды следующая:
hashcat [опции] [файл_хеша] [файл_списка_слов]

Вот опции, которые мы будем использовать:

  • -a 0: Указывает режим атаки Straight (Словарная атака).
  • -m 0: Указывает тип хеша. 0 соответствует MD5. Крайне важно правильно указать тип хеша.
  • --force: Эта опция часто требуется в виртуализированных средах или при работе на CPU, чтобы обойти определенные предупреждения и заставить Hashcat запуститься.

Теперь выполните команду для начала атаки:

hashcat -a 0 -m 0 my_hash.txt my_wordlist.txt --force

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

hashcat (v6.2.6) starting

... (some initial warnings and info) ...

Session..........: hashcat
Status...........: Cracked
Hash.Type........: MD5
Hash.Target......: 482c811da5d5b4bc6d497ffa98491e38
Time.Started.....: Sun Nov 19 10:30:00 2023 (0 secs)
Time.Estimated...: Sun Nov 19 10:30:00 2023 (0 secs)
Guess.Base.......: File (my_wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#*.........:   133.7 kH/s (0.02ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 3/4 (75.00%)
Restore.Sub.#*...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#*....: password123 -> qwerty
Hardware.Mon.#*..: Temp: 45c

Started: ...
Stopped: ...

Строка Status...........: Cracked указывает на то, что пароль был успешно найден в вашем списке слов.

Анализ статуса вывода и ключевых слов

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

Разберем ключевые строки из вывода состояния:

  • Status...........: Cracked: Это самый важный индикатор. Он подтверждает, что хотя бы один хеш был успешно взломан. Если бы здесь было написано Exhausted, это означало бы, что Hashcat перебрал все слова в списке слов без успеха.
  • Hash.Type........: MD5: Подтверждает используемый алгоритм хеширования.
  • Hash.Target......: 482c811da5d5b4bc6d497ffa98491e38: Показывает хеш, который подвергался атаке.
  • Guess.Base.......: File (my_wordlist.txt): Указывает, что источником кандидатов в пароли является наш файл со списком слов.
  • Recovered........: 1/1 (100.00%) Digests: Показывает, что из 1 предоставленного хеша 1 был восстановлен.
  • Progress.........: 4/4 (100.00%): Указывает, что все 4 слова из нашего списка слов были проверены.

После успешного взлома Hashcat автоматически сохраняет взломанный хеш и соответствующий ему пароль в виде открытого текста в свой potfile. Расположение этого файла по умолчанию: ~/.local/share/hashcat/hashcat.potfile. Это избавляет вас от траты времени на повторный взлом того же хеша в будущем.

Вы можете убедиться, что potfile был создан, просмотрев его содержимое, но на следующем шаге мы воспользуемся более прямым способом, предоставляемым Hashcat.

Просмотр взломанного пароля с помощью опции '--show'

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

Хотя вы могли бы просмотреть potfile напрямую, Hashcat предоставляет опцию --show для отображения взломанных паролей для хешей, содержащихся в указанном файле. Она сверяет ваш файл с хешами с potfile и выводит любые найденные совпадения.

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

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

hashcat -m 0 my_hash.txt --show

Hashcat немедленно выведет результат в формате hash:password.

482c811da5d5b4bc6d497ffa98491e38:password123

Этот вывод четко показывает исходный MD5-хеш и соответствующий ему пароль в открытом виде: "password123".

Для сравнения вы также можете просмотреть необработанное содержимое potfile. Оно покажет ту же информацию, но --show часто является более чистым способом, когда вы хотите проверить конкретные хеши.

cat ~/.local/share/hashcat/hashcat.potfile

Ожидаемый вывод:

482c811da5d5b4bc6d497ffa98491e38:password123

Использование --show является стандартным способом проверки уже взломанных паролей в базе данных Hashcat.

Резюме

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

Вы получили практический опыт в следующих ключевых навыках:

  • Понимание концепции словарной атаки и режима прямого перебора (Straight attack) Hashcat (-a 0).
  • Подготовка целевого файла с хешами и файла со списком слов (wordlist).
  • Запуск атаки на MD5-хеш путем указания правильного режима атаки (-a 0) и типа хеша (-m 0).
  • Анализ экрана состояния для подтверждения успешного взлома.
  • Просмотр взломанного пароля с помощью опции --show.

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