Настройка производительности GPU с помощью флагов OpenCL

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

Введение

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

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

Список доступных OpenCL-устройств с помощью --opencl-devices

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

Флаг --opencl-devices запрашивает у системы OpenCL (Open Computing Language) и перечисляет все совместимые устройства, такие как GPU и CPU. Каждому устройству присваивается уникальный идентификатор (ID), который вы будете использовать на последующих шагах для его конкретного выбора.

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

hashcat --opencl-devices

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

hashcat (v6.2.6) starting

OpenCL Info:

Platform ID #1
  Vendor  : The pocl project
  Name    : Portable Computing Language
  Version : OpenCL 3.0 PoCL 3.1+g3a94695b, LLVM 14.0.0, RELOC, SLEEF, DISTRO, POCL_DEBUG

  Device ID #1
    Type           : CPU
    Vendor ID      : 1024
    Vendor         : GenuineIntel
    Name           : 11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz
    Version        : OpenCL 3.0 PoCL 3.1+g3a94695b, LLVM 14.0.0, RELOC, SLEEF, DISTRO, POCL_DEBUG
    Processor(s)   : 8
    Clock          : 3000
    ...

Platform ID #2
  Vendor  : NVIDIA Corporation
  Name    : NVIDIA CUDA
  Version : OpenCL 3.0 CUDA 12.2.142

  Device ID #2
    Type           : GPU
    Vendor ID      : 4318
    Vendor         : NVIDIA Corporation
    Name           : NVIDIA T4
    Version        : OpenCL 3.0 CUDA
    Processor(s)   : 40
    Clock          : 1590
    ...

Обратите внимание на Device ID для каждой записи. В этом примере Device ID #2 соответствует GPU NVIDIA T4, который идеально подходит для взлома хэшей.

Выбор конкретного GPU для взлома с помощью -d

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

Флаг -d (или --devices) позволяет указать, какие идентификаторы устройств (ID) использовать. Правильный ID вы можете найти в выводе команды из предыдущего шага.

Теперь мы выполним простую задачу взлома, нацеленную на GPU. Мы будем использовать файлы hash.txt и wordlist.txt, подготовленные в вашем каталоге ~/project. Команда указывает тип хэша (-m 0 для MD5), режим атаки (-a 0 для словарной атаки) и целевое устройство. Предполагая, что GPU имеет ID #2 из нашего предыдущего примера, команда будет выглядеть так:

hashcat -m 0 -a 0 ~/project/hash.txt ~/project/wordlist.txt -d 2

Если ваш GPU имеет другой ID, пожалуйста, соответствующим образом измените число после -d.

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

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 5d41402abc4b2a76b9719d911017c592
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#2.........:  104.6 kH/s (0.00ms) @ Accel:128 Loops:128 Thr:1024 Vec:1
Recovered........: 1/1 (100.00%) Digests
Progress.........: 2/2 (100.00%)
Rejected.........: 0/2 (0.00%)
Restore.Point....: 1/2 (50.00%)
Restore.Sub.#2...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#2....: wrongpass -> password
Hardware.Mon.#2..: Temp: 40c Fan: 30% Util: 13% Core:1410MHz Mem:5000MHz Bus:16

5d41402abc4b2a76b9719d911017c592:password

Started: ...
Stopped: ...

Вывод подтверждает, что хэш был успешно взломан, и пароль — password.

Понимание флага --gpu-temp-retain

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

Флаг --gpu-temp-retain указывает Hashcat отслеживать температуру GPU и автоматически регулировать рабочую нагрузку, чтобы поддерживать ее на уровне или ниже указанного значения в градусах Цельсия. Это отличный способ обеспечить стабильность и долговечность вашего оборудования во время длительных сессий взлома.

Давайте выполним ту же атаку, что и раньше, но на этот раз добавим флаг для поддержания температуры GPU на уровне 85°C или ниже. Это, как правило, безопасная температура для большинства GPU под нагрузкой.

hashcat -m 0 -a 0 ~/project/hash.txt ~/project/wordlist.txt -d 2 --gpu-temp-retain=85

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

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

Session..........: hashcat
Status...........: Cracked
...
5d41402abc4b2a76b9719d911017c592:password
...

Экспериментирование с --opencl-vector-width для поиска оптимальной настройки

На этом шаге вы изучите опцию настройки производительности. Флаг --opencl-vector-width контролирует, сколько "потоков" или рабочих элементов объединяются для обработки в одной инструкции. Это также известно как ширина SIMD (Single Instruction, Multiple Data - одна инструкция, несколько данных).

Оптимальное значение для этой настройки сильно зависит от конкретной архитектуры GPU и типа взламываемого хэша. Единственный способ найти наилучшую настройку — это экспериментировать. Допустимые значения обычно являются степенями двойки, такими как 1, 2, 4, 8 или 16.

Чтобы протестировать эффект этого флага, мы можем использовать встроенный режим бенчмарка Hashcat (-b). Давайте запустим бенчмарк для MD5 (-m 0) и установим ширину вектора равной 4.

hashcat -m 0 -b --opencl-vector-width 4

Hashcat запустит бенчмарк и отобразит скорость для каждого устройства. Обратите внимание на строку Speed для вашего GPU.

...
Hashtype: MD5

Speed.#2.........:   480.3 MH/s (94.38ms) @ Accel:256 Loops:1024 Thr:256 Vec:4
...

Теперь попробуйте запустить бенчмарк снова с другой шириной вектора, например, 8:

hashcat -m 0 -b --opencl-vector-width 8

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

Мониторинг температуры и скорости вентилятора GPU во время атаки

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

Мы будем использовать утилиту nvidia-smi (NVIDIA System Management Interface) — мощный инструмент командной строки для управления и мониторинга GPU NVIDIA. Чтобы видеть статистику в реальном времени, мы запустим ее с командой watch.

Сначала вам нужно открыть второе окно терминала. Вы можете сделать это, нажав значок "+" на панели вкладок терминала в нижней части экрана.

В вашем новом (втором) терминале выполните следующую команду. Она будет выполнять nvidia-smi каждую секунду и обновлять экран последними данными.

watch -n 1 nvidia-smi

Вы увидите панель управления, показывающую имя GPU, температуру, скорость вентилятора, энергопотребление и использование памяти.

Теперь вернитесь в ваш оригинальный (первый) терминал. Запустите интенсивный бенчмарк, чтобы сильно нагрузить GPU. Мы будем использовать флаг -w 4 (профиль рабочей нагрузки 4, для "Insane" - безумный), чтобы максимизировать нагрузку.

hashcat -m 0 -b -w 4

Переключите вид обратно на второй терминал, где выполняется watch. Вы должны увидеть, как значения Temp (Температура), Pwr (Питание) и GPU-Util (Загрузка GPU) значительно увеличиваются, поскольку GPU интенсивно работает над бенчмарком. Это дает вам представление о состоянии вашего оборудования в реальном времени.

Когда вы закончите наблюдение, нажмите Ctrl+C в первом терминале, чтобы остановить бенчмарк Hashcat, а затем нажмите Ctrl+C во втором терминале, чтобы остановить команду watch.

Резюме

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

Вы узнали, как:

  • Перечислить все доступные устройства, совместимые с OpenCL, с помощью --opencl-devices.
  • Нацелиться на конкретный GPU для задачи с помощью флага -d.
  • Защитить ваше оборудование от перегрева, установив тепловой предел с помощью --gpu-temp-retain.
  • Экспериментировать с флагом --opencl-vector-width в режиме бенчмарка для поиска оптимальных настроек производительности.
  • Отслеживать статистику вашего GPU в реальном времени с помощью nvidia-smi и watch во время интенсивной рабочей нагрузки.

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