Устранение распространенных ошибок Hashcat

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

Введение

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

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

Исследование ошибки 'Token length exception'

На этом шаге мы рассмотрим ошибку Token length exception. Эта ошибка возникает, когда хеш в вашем входном файле имеет неправильную длину для указанного режима хеширования (-m). Например, стандартный хеш MD5 должен состоять ровно из 32 шестнадцатеричных символов. Если Hashcat обнаружит строку короче или длиннее, он сообщит об этой ошибке и остановится.

Сначала давайте попытаемся запустить Hashcat на файле, содержащем некорректный хеш. Для этой цели мы подготовили файл с именем hashes_token_length.txt. Мы будем использовать режим хеширования 0, который соответствует MD5.

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

hashcat -m 0 -a 0 hashes_token_length.txt wordlist.txt

Вы увидите сообщение об ошибке, похожее на это:

hashcat (v6.2.x) starting

...

* Token length exception: 1/2 hashes
  This error happens if the hashes you are trying to crack do not meet the length requirements of the selected hash-mode.
  Please make sure you have specified the correct hash-mode and that all of your hashes are valid.
  ...
* Startup failed: Invalid hash-length

Сообщение явно указывает на "Token length exception". Чтобы исправить это, вам нужно найти и либо исправить, либо удалить недопустимый хеш из вашего файла. Простой способ найти строки с неправильной длиной — использовать такие инструменты, как awk. Для хеша MD5 (32 символа) мы можем проверить любую строку, длина которой не равна 32.

Выполните эту команду для проверки файла:

awk 'length != 32' hashes_token_length.txt

Вывод покажет проблемную строку:

5d41402abc4b2a76b9719d911017c59

Теперь, когда вы нашли недопустимый хеш, вы можете создать исправленный файл. Давайте создадим новый файл с именем hashes_corrected.txt, содержащий только допустимые хеши.

awk 'length == 32' hashes_token_length.txt > hashes_corrected.txt

Теперь вы можете успешно запустить Hashcat с исправленным файлом:

hashcat -m 0 -a 0 hashes_corrected.txt wordlist.txt

На этот раз Hashcat запустится без ошибки.

Устранение ошибки 'No hashes loaded'

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

У нас есть файл с именем hashes_no_load.txt. Давайте попробуем взломать его, используя режим хеширования 10 (md5($pass.$salt)). Этот режим ожидает, что хеш и соль будут разделены двоеточием (:), но наш файл содержит только необработанные хеши MD5.

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

hashcat -m 10 -a 0 hashes_no_load.txt wordlist.txt

Hashcat запустится, но немедленно завершится с сообщением о статусе, указывающим, что хеши не были загружены:

...
Hashes: 2 digests; 2 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Applicable optimizers:
* Zero-Byte
* Precompute-Init
* Precompute-Merkle-Demgard
* Meet-In-The-Middle
* Early-Skip
* Not-Iterated
* Not-Salted
* Raw-Hash

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256

Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature monitoring is disabled.

No hashes loaded.

Started: ...
Stopped: ...

Ключевая строка — No hashes loaded. Это означает, что существует несоответствие между содержимым вашего файла хешей и указанным вами режимом хеширования. Файл hashes_no_load.txt содержит необработанный хеш MD5, что соответствует режиму 0.

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

hashcat -m 0 -a 0 hashes_no_load.txt wordlist.txt

На этот раз Hashcat правильно загрузит допустимый хеш из файла и начнет сеанс взлома. Он проигнорирует строку "not_a_hash", потому что она не похожа на допустимый хеш для режима 0.

...
Hashes: 1 digests; 1 unique digests, 1 unique salts
...
Session..........: hashcat
Status...........: Running
...

Обработка предупреждений 'Device temperature abort'

На этом шаге мы обсудим, как справляться с проблемами, связанными с температурой. При работе на мощном оборудовании, таком как GPU, Hashcat может выделять много тепла. Чтобы защитить ваше оборудование от повреждений, Hashcat отслеживает температуру устройств и автоматически приостанавливает или прерывает сеанс, если она становится слишком высокой.

В виртуальной среде LabEx у нас нет доступа к физическому GPU, поэтому мы не можем напрямую вызвать эту ошибку. Однако это критически важная функция для понимания при реальном использовании. Сообщение об ошибке будет выглядеть примерно так: Device #1 temperature abort trigger reached.

Hashcat предоставляет параметры командной строки для управления этим поведением:

  • --gpu-temp-abort=X: Прервать сеанс, когда любой GPU достигнет температуры X в градусах Цельсия.
  • --gpu-temp-retain=Y: Приостановить сеанс, когда любой GPU достигнет температуры Y в градусах Цельсия, и возобновить, когда он остынет.

Вы можете использовать эти флаги для установки пользовательских температурных пределов, которые соответствуют вашему оборудованию и системе охлаждения. Например, чтобы указать Hashcat остановиться, если температура превысит 90°C, вы добавите --gpu-temp-abort=90 к вашей команде.

Давайте выполним команду с этим флагом, чтобы увидеть, как он используется. Мы будем использовать файл valid_hash.txt, созданный во время настройки.

hashcat -m 0 -a 0 valid_hash.txt wordlist.txt --gpu-temp-abort=90

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

В некоторых случаях мониторинг оборудования может работать некорректно или не поддерживаться, что приводит к неправильным показаниям температуры и ненужным отключениям. Если вы уверены, что ваше охлаждение адекватно, а показания температуры неверны, вы можете полностью отключить функцию мониторинга оборудования с помощью флага --hwmon-disable.

hashcat -m 0 -a 0 valid_hash.txt wordlist.txt --hwmon-disable

Используйте эту опцию с осторожностью, так как она отключает важную функцию безопасности.

Исправление ошибки 'Line-length exception' в списках слов или правилах

На этом шаге мы разберем ошибку Line-length exception. Эта ошибка похожа на исключение длины токена из Шага 1, но она применяется к вашим входным файлам, таким как списки слов или файлы правил, а не к файлу хешей. Hashcat имеет внутренний буфер для строк, которые он читает из этих файлов, и если строка превышает этот предел (обычно 256 байт), возникает эта ошибка.

Это может произойти с поврежденными списками слов или файлами правил, сгенерированными некорректно. У нас есть файл с именем wordlist_long_line.txt, который содержит одну чрезвычайно длинную строку.

Давайте попробуем использовать его в сеансе взлома против нашего valid_hash.txt:

hashcat -m 0 -a 0 valid_hash.txt wordlist_long_line.txt

Вы получите сообщение об ошибке, указывающее на файл списка слов:

...
ATTENTION!
The wordlist 'wordlist_long_line.txt' contains a line that is larger than 256 bytes.
The line is ignored.
To fix this, remove the line from the wordlist.
...

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

awk 'length > 256' wordlist_long_line.txt

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

awk 'length <= 256' wordlist_long_line.txt > wordlist_corrected.txt

Теперь вы можете использовать ваш файл wordlist_corrected.txt без возникновения ошибки.

hashcat -m 0 -a 0 valid_hash.txt wordlist_corrected.txt

Сеанс теперь начнется корректно без каких-либо предупреждений о длине строки.

Понимание и устранение ошибок 'Separator not found'

На этом заключительном шаге мы рассмотрим ошибку Separator not found. Эта ошибка возникает, когда вы используете режим хеширования, который ожидает определенный формат с разделительным символом (обычно двоеточие :) , но строки в вашем файле хешей его не содержат. Многие форматы хешей, такие как user:password или hash:salt, полагаются на эту структуру.

Для этого примера мы будем использовать режим хеширования 5500, который предназначен для NetNTLMv1. Этот формат обычно выглядит как USER::DOMAIN:LM_HASH:NT_HASH:CHALLENGE. Двоеточия являются важными разделителями. У нас есть файл с именем hashes_no_separator.txt, который содержит строку хеша, но в нем отсутствуют необходимые разделители.

Давайте попробуем запустить Hashcat с этим файлом:

hashcat -m 5500 -a 0 hashes_no_separator.txt wordlist.txt

Hashcat завершится с ошибкой Separator not found. Он также покажет вам пример правильного формата.

...
* Separator unmatched: 1/1 hashes
  This error happens if the hashes you are trying to crack are not in the correct format.
  Please read https://hashcat.net/wiki/doku.php?id=example_hashes to learn more about the correct format.
  ...
* Startup failed: Invalid hash-format

Сообщение об ошибке указывает на то, что в хеше отсутствует необходимый разделитель. Чтобы исправить это, вы должны отредактировать файл хешей, чтобы он соответствовал ожидаемому формату. Предположим, имя пользователя — labex, домен — corp, а вызов — 1122334455667788. Правильный формат будет labex::corp:<the_hash>:1122334455667788.

Давайте откроем файл в редакторе nano и исправим его.

nano hashes_no_separator.txt

Измените содержимое файла с: U4BE_AC149FD0318023832132BFB833521AAF8A631114317A4935

На следующее, убедившись, что вы заменили <the_hash> на исходную строку хеша: labex::corp:U4BE_AC149FD0318023832132BFB833521AAF8A631114317A4935:1122334455667788

Нажмите Ctrl+X, затем Y и Enter, чтобы сохранить файл и выйти из nano.

Теперь снова запустите команду Hashcat:

hashcat -m 5500 -a 0 hashes_no_separator.txt wordlist.txt

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

Резюме

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

Мы рассмотрели:

  • Token length exception: Вызывается хешами неправильной длины для указанного режима.
  • No hashes loaded: Результат несоответствия формата файла хешей и выбранного режима хеширования.
  • Device temperature abort: Функция безопасности оборудования, которой можно управлять с помощью флагов контроля температуры.
  • Line-length exception: Вызывается строками, превышающими допустимый размер, в списках слов или файлах правил.
  • Separator not found: Возникает, когда формат хеша требует разделитель, который отсутствует в файле хешей.

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