Hashcat не видит видеокарту

Обновлено: 21.11.2024

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

Облако приходит на помощь

hashcat — это невероятно мощное программное обеспечение, если оно используется на правильном оборудовании. К сожалению, моя видеокарта слишком старая, чтобы ее поддерживал последний драйвер, поэтому я прибегаю к помощи Джона каждый раз, когда хочу взломать хэш. Недостатком этого является высокая нагрузка на мою систему, из-за которой я не могу работать параллельно. Что я могу сделать? Купить новую видеокарту для моей системы? Построить специальную систему взлома? Оба варианта невыгодны в текущей рыночной ситуации. Поэтому мне пришла в голову идея использовать облачные вычисления. 1

Хорошо, дайте угадаю, о чем вы думаете: этот парень просто добавляет слово "облако" к своей проблеме, и все готово? Ну, может быть, но это еще не все. Чем ближе я подходил к решению, тем больше преимуществ я открывал для себя в использовании облака:

  • Мне не нужно заботиться об обслуживании оборудования.
  • Бывают моменты, когда я занят и какое-то время не использую hashcat. Во время этих перерывов купленная карта обесценивалась, не принося никакой пользы.
  • Облако масштабируется лучше, чем локальное оборудование. Нужна более высокая производительность в этот раз? Просто создайте более мощную машину в облаке.

Вот план игры: облачные сервисы, такие как AWS, Azure и GCP, предлагают системы, оснащенные мощными видеокартами. У них предустановлены правильные драйверы, как если бы они были созданы для вычислений с большим количеством графических процессоров. Я хочу использовать это оборудование и максимально упростить доступ к высокопроизводительной установке hashcat. В этом посте я покажу вам свои результаты и то, как вы можете извлечь выгоду из проекта. Если вы хотите пропустить этот пост и начать взламывать, проверьте окончательный код в моем репозитории GitHub.

И, как всегда, это может выглядеть так, как будто я знаю, что делаю, но я сам новичок в этой теме. Всем веселее, верно?

Подготовка

Первое, что нужно сделать, это определить область действия:

  • Система должна быть доступна из Интернета, чтобы я мог использовать ее, даже когда путешествую со своим ноутбуком.
  • Я хочу раскрутить систему за минимальное время и тратить деньги только на взлом.
  • Поскольку у нас есть хорошее оборудование, давайте постараемся извлечь из него как можно больше пользы.
  • Небрежное отношение к ресурсам в облаке может привести к значительным расходам. Меры предосторожности необходимы.

В идеале конечный продукт должен соответствовать всем этим требованиям.

Прежде чем мы сможем сделать что-либо с технической стороны, мы должны выбрать поставщика облачных услуг. Я выберу здесь AWS, потому что краткий обзор показал, что это самый дешевый вариант. 2

Поэтому нам понадобится аккаунт AWS. Если у вас его еще нет, просто зайдите и создайте корневую учетную запись на AWS. Экземпляры, которые мы создаем, не бесплатны, поэтому обязательно укажите действительные платежные реквизиты. 3

Для наших целей рекомендуется создать отдельную роль IAM. Это позволяет нам ограничивать разрешения и доступ к нашим ресурсам. Я назову пользователя взломом и назначу ему следующие права: 4

  • AmazonEC2Полный доступ
  • AmazonVCFПолный доступ
  • AWSCloudFormationFullAccess

Затем загрузите инструмент командной строки AWS, который отлично помогает автоматизировать простые задачи. Я использую v1 здесь, потому что Fedora поставляет ее по умолчанию. После установки запустите aws configure и используйте роль IAM для входа в систему. Кроме того, укажите регион по умолчанию, в котором вы хотите создать экземпляр hashcat.

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

Не хватает одного шага: нашей квоты. По сути, когда мы запрашиваем машину на AWS, мы можем выбирать из ряда различных типов экземпляров, которые сгруппированы в зависимости от их назначения. Одна из групп — это группа «P Instances»; они предназначены для задач с интенсивным использованием графического процессора, поэтому мы используем здесь эту группу. К сожалению, на момент написания статьи AWS не позволяла нам создавать какие-либо экземпляры P по умолчанию. Поэтому нам необходимо запросить увеличение квоты для P экземпляров. Я запрошу квоту 4 в разделе «Все запросы спотовых инстансов P» и «Запуск инстансов P по требованию». 5

Ценность графических процессоров естественным образом стимулирует спрос на графические процессоры в облаке.Таким образом, если вы еще не увеличили свои квоты, AWS может отклонить ваш запрос. Вот ответ, который я получил относительно моего запроса на увеличение лимита «Все запросы на спотовые инстансы P» в Северной Вирджинии:

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

Экземпляр Hashcat как код

Теперь мы можем идти и запускать экземпляры. Но щелчок через веб-интерфейс мне не подходит. Гораздо лучше иметь чистый, воспроизводимый способ: CloudFormation. Используя CloudFormation, мы можем определить наш экземпляр в файле YAML, который называется «шаблон». Это позволяет нам создавать нашу машину hashcat с помощью одной команды.

Есть лучшие ресурсы, чтобы узнать, как создавать шаблоны. Но на самом базовом уровне формат знает несколько ключей YAML высокого уровня, таких как Parameters, Mappings, Resources и Outputs. Ядро файла находится в Resources: здесь мы определяем, что на самом деле создается с помощью нашего шаблона, остальные ключи дают дополнительную информацию и функциональность. Когда AWS считывает наш шаблон и создает экземпляры ресурсов, они группируются в так называемый «стек».

Параметры

Начнем с параметров. Это позволяет нам предоставлять информацию о пользователе во время создания и ссылаться на нее в других частях файла.

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

Один комментарий относительно paramInstanceType: он ограничен вариантами экземпляров P2 с использованием модификатора AllowedValues. Есть также экземпляры P3 (и P4), более новые, но более дорогие. Они также излишни в зависимости от вашего варианта использования.

Сопоставления

Чтобы убедиться, что на устройстве предустановлен правильный драйвер, мы указываем AWS использовать образ AMI AWS Deep Learning Base. Мы делаем это, предоставляя идентификатор для изображения, но оказывается, что идентификатор зависит от региона. Для поддержки нескольких регионов мы создаем карту, которая содержит правильный идентификатор изображения для многих регионов.

Таким образом, позже мы сможем найти идентификатор региона, в котором мы создаем экземпляр.

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

Файл Regions.txt содержит регионы, для которых необходимо искать идентификаторы, построчно. Не стесняйтесь перепрофилировать это для своего собственного шаблона. В качестве альтернативы вы можете проявить фантазию и использовать лямбда-функцию, но здесь мне это подходит.

Результаты

После создания экземпляра нам нужно будет подключиться к нему через SSH. Для этого потребуется знание IP-адреса, связанного с экземпляром. Для удобства поиска мы записываем IP-адрес как вывод шаблона CloudFormation:

Обратите внимание, что мы не указываем значение напрямую. Вместо этого мы используем функцию !GetAtt, чтобы указать AWS считать значение из ресурса hashcatInstance. Воспринимайте это как ссылку на свойство ресурса, которое мы укажем в следующем разделе.

Когда мы позже запросим информацию о нашем стеке, мы вернем IP-адрес в качестве вывода в формате JSON:

Ресурсы

Пришло время основной части. Давайте попробуем сделать это как можно более общим и совместимым с большинством сред. Вот что я предлагаю:

Да, я признаю, это немного сложно переварить. Позвольте мне разобрать его для вас снизу вверх.

HashcatInstance — это фактический экземпляр. В этом все дело в конце концов. В его конфигурации нет ничего особенного, за исключением того, что он использует наш шаблон hashcatLaunchTemplate .

HashcatLaunchTemplate — это рецепт для AWS по созданию нашего экземпляра. Здесь мы указываем тип из параметров вместе с парой ключей для SSH. Мы также указываем идентификатор изображения, который мы определили в RegionMap. Посмотрите, как !FindInMap используется для извлечения значения из карты.

Важным ключом является InstanceMarketOptions . Этот параметр говорит о том, что нам нужен точечный экземпляр, а не экземпляр по запросу. Я не говорил об этом в начале, но первое дешевле, хотя и не всегда доступно, а второе дороже, но обычно доступно. Кроме того, спотовый инстанс может внезапно прекратить работу, если другие пользователи готовы заплатить за него больше, чем вы, поэтому он более «ориентирован на рынок», чем инстансы по запросу с фиксированной ценой. Если бы мы не использовали этот ключ, мы бы запросили экземпляр по требованию, что может быть уместно в некоторых ситуациях.

Максимальная цена 0,4 казалась разумной, когда я в последний раз проверял все цены в разных регионах. Мы не хотим устанавливать слишком низкое значение, иначе наш экземпляр может быть слишком быстро съеден другими участниками торгов. Если для вас важна каждая копейка, скорректируйте это с учетом целевых регионов.

NetworkInterfaces относится к сети. Он помещает экземпляр в правильную подсеть и назначает ему правильную группу безопасности. Мы подойдем к этому через секунду.

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

В AWS мы можем сделать это с помощью cloud-init, который описывает себя как «стандарт настройки облачных экземпляров». Я бы сам описал его как Ansible для машин в облаке с более легкой конфигурацией.

Вот шаги высокого уровня, которые мы выполняем в приведенной выше конфигурации:

  • Перед запуском пользовательских команд мы перечисляем пакет build-essential, который необходимо установить. Он содержит общие инструменты для создания программного обеспечения, включая Make.
  • Затем мы загружаем список паролей rockyou, который я часто использую для выполнения заданий на Hack The Box, и извлекаем его в /opt .
  • В основе настройки лежит загрузка и установка hashcat. Это дает нам лучшую производительность, чем установка с помощью диспетчера пакетов, подробности следуют ниже.
  • Наконец, мы настроили машину на отключение через день (24 часа, 1440 минут). Это гарантия того, что мы не запустим экземпляр, пока не получим его в следующем счете.
  • Файлы .cloudinit_started и .cloudinit_completed создаются для того, чтобы мы могли быстро проверить, началась ли установка и была ли она завершена.

И при этом остается только hashcatSecurityGroup. Этот ресурс можно рассматривать как набор правил брандмауэра для нашего экземпляра. Мы разрешаем входящий трафик через порт 22, который обычно используется для SSH. Если у вас дома есть фиксированный IP-адрес вашего компьютера, не стесняйтесь расширять SecurityGroup, чтобы только ваш компьютер мог подключаться. Для меня было важно также указать правило IPv6, потому что на дворе 2022 год.

Наконец, обратите внимание, что я пропустил некоторые части файла [. ] маркер. Это сетевые вещи, которые я не буду подробно объяснять здесь. Таким образом, он создает VPC, для которого мы используем нашу SecurityGroup, а затем нам необходимо создать InternetGateway, Subnet и RouteTable.

Установить соединение

Сложная часть сделана. Использовать шаблон просто. Тем не менее, как насчет того, чтобы обернуть вокруг него Makefile? При условии, что у нас есть шаблон в ./hashcat.yaml , я использую ./Makefile со следующим содержимым:

Как видите, здесь используется инструмент командной строки AWS. Все делается подкомандой cloudformation в регионе, указанном при настройке.

С помощью make create мы запрашиваем у AWS чтение нашего шаблона и создание указанных ресурсов. Обратите внимание, как мы указываем paramKeyPair в командной строке. Объяснение синтаксиса можно найти в справке по созданию стека aws cloudformation .

Выполнение нашего запроса может занять некоторое время, до одной минуты. В это время вы можете наблюдать за статусом вашего запроса с помощью make get_status. Пока стек создается, возвращается CREATE_IN_PROGRESS. Когда операция завершена, статус меняется на CREATE_COMPLETE, и мы можем получить IP-адрес нового экземпляра с помощью make get_ip: 6

Теперь подключимся к машине по SSH:

Здесь мы видим, что файл .cloudinit_started уже создан:

Для завершения установки hashcat требуется совсем немного времени:

Вы также можете убедиться в этом, прочитав содержимое /var/log/cloud-init-output.log .

Это означает, что hashcat должен быть готов, и это действительно так!

Когда мы закончим использовать hashcat, мы закроем сеанс SSH и запустим make delete . Все опять чисто, все ресурсы удалены. И даже если мы забудем удалить стек, машина остановится через 24 часа.

Все дело в производительности

Готовы к этому? Я возьму пароль от rockyou, который появится чуть позже в списке, и хеширую его с помощью MD5:

Хорошо, теперь поместим это на облачную машину и взломаем:

Всего две секунды! Это всего лишь MD5, да, но это намного быстрее, чем моя установка с Джоном.

Мы можем запустить правильные тесты с помощью hashcat -b :

АлгоритмКомпилируется локальноИз репозитория
MD54594,1 MH/s4538,2 MH/s
SHA11734,2 МХ/с1687,4 МХ/с с
SHA2-256819,6 MH/s 815,7 МГц/с
SHA2-512256,2 МГц/с255,0 MH/s
WPA-PBKDF2-PMKID+EAPOL88754,0 H/s 87002,0 H/s
NTLM7438,2 MH/s7358,9 MH/s
LM4312,7 MH/s4338,6 MH/s
NetNTLMv1 / NetNTLMv1+ESS4413 .9 МГц/с4197,3 МГц/с

Здесь вы также видите сравнение нашей собственной сборки и сборки из репозитория. Почему сборка идет быстрее практически для всех алгоритмов? Я предполагаю, что сборка hashcat на нашем собственном оборудовании позволяет компилятору использовать его полный набор инструкций, в то время как версия репозитория должна быть более общей. Требуется подтверждение.

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

Заключение

Слово «облако» иногда может раздражать, но я чувствую, что этот проект помог мне лучше понять его сильные стороны. Я определенно буду продолжать использовать эту настройку и совершенствовать ее дальше. Конечно, это может измениться так же, как и рынок. Если вам интересно попробовать это, перейдите в мой репозиторий GitHub. Если я оставлю звездочку, это побудит меня улучшить инструмент.

Я не первый, кто использует hashcat в облаке. На самом деле, есть много сообщений, показывающих, как это делается. Разница в том, что я хочу правильно автоматизированное решение. ↩︎

Это может варьироваться в зависимости от конфигурируемого вами оборудования. ↩︎

А если вы, как и я, не знакомы со всеми ценами, создайте бюджет затрат и настройте для него уведомления. Я использую это, чтобы вызвать предупреждение, если мои расходы превышают разумный порог. ↩︎

Было бы еще лучше сделать разрешения как можно более узкими. Но мне не хватает времени разбираться с политиками вручную, а автоматизированного подхода, который не является хаком, я не нашел. Я оставлю это на данный момент, в конце концов, это может заблокировать любые будущие корректировки, которые мы будем вносить. ↩︎

Учтите, что квоты ограничивают количество виртуальных ЦП ваших экземпляров. Если вы выбираете другой тип инстанса, обязательно запросите достаточно большую квоту. ↩︎

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

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

  • Для видеокарт AMD в Windows требуется AMD Radeon Adrenalin 2020 Edition (20.2.2 или новее)
  • Для процессоров Intel требуется среда выполнения OpenCL для процессоров Intel Core и Intel Xeon (16.1.1 или более поздней версии)
  • Для видеокарт NVIDIA требуется драйвер NVIDIA (440.64 или более поздняя версия) и набор инструментов CUDA (9.0 или более поздняя версия)

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

Установите драйвер NVIDIA

Выберите версию вашей видеокарты и операционной системы, скачайте и установите драйвер.

Следующую команду можно использовать для проверки того, какие устройства CUDA и OpenCL могут видеть Hashcat:

На данном этапе (после установки видеодрайвера NVIDIA, до установки инструментария CUDA) бенчмарк не запускается, программа зависает на сообщении «CUDA SDK Toolkit не установлен или установлен неправильно. Набор инструментов CUDA SDK необходим для правильной поддержки и использования устройств. Возврат к среде выполнения OpenCL».

Установите набор инструментов CUDA

Укажите настройки вашей системы:

  • Операционная система
  • Архитектура
  • Версия
  • Тип установщика: exe (локальный) — файл для автономной установки; exe (network) — файл для установки по сети

Размер загруженного файла превышает 2 гигабайта. Запустите его и следуйте инструкциям установщика.

Вы можете не устанавливать GeForce Experience и другое программное обеспечение, которое вам не нужно. Если вы уже установили драйвер видеокарты, вы можете не устанавливать его на этом этапе.

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

После завершения установки CUDA Toolkit, чтобы увидеть, какие устройства распознает Hashcat, введите команду:

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

Установите видеодрайвер процессора Intel

Центральные процессы могут иметь видеоядра, которые также можно использовать для взлома паролей.

Операционные системы Windows 11 и Windows 10 могут самостоятельно, без вмешательства пользователя, устанавливать драйвер для использования графического ядра процессора Intel. Мой предыдущий тест показал, что ЦП уже используется.

Проверьте версию драйвера для процессора Intel в диспетчере устройств:

Автоматически установленная версия: 27.20.100.8681.

Программа Intel Graphics Command Center, которая также была установлена ​​автоматически, показывает ту же версию драйвера и сообщает, что это последняя версия.

Я обновил этот драйвер в своей системе, как видите, версия драйвера 30.0.101.1191:

Проверьте, что изменилось в списке распознанных устройств:

Обратите внимание, что установка обновленного драйвера повысила версию ЦП OpenCL с 2.1 до OpenCL 3.0.

Установка среды выполнения OpenCL для Intel

Проверьте, что изменилось в списке распознанных устройств:

Добавлено новое устройство, к сожалению, Hashcat не смог использовать его в моих тестах, возможно, потому, что на устройстве установлен OpenCL 2.1, а драйвер дисплея Intel предназначен для работы с OpenCL 3.0.

Ошибка «CUDA SDK Toolkit не установлен или установлен неправильно. Набор инструментов CUDA SDK необходим для правильной поддержки и использования устройств. Возврат к среде выполнения OpenCL»

При запуске эталонного теста вы можете увидеть сообщение:

После этого сообщения ничего не происходит, и Hashcat зависает.

Причина проблемы в том, что NVIDIA CUDA и/или видеодрайвер NVIDIA не установлены. Установите их, как показано выше, и проблема будет решена.

Драйвера для видеокарты и процессора для подбора пароля

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

Hashcat использует OpenCL. Согласно Википедии, OpenCL (Open Computing Language) — это платформа для написания программ, которые выполняются на разнородных платформах, состоящих из центральных процессоров (CPU), графических процессоров (GPU), процессоров цифровых сигналов (DSP), программируемых пользователем вентильных матриц ( FPGA) и другие процессоры или аппаратные ускорители. OpenCL определяет языки программирования (на основе C99 и C++11) для программирования этих устройств и интерфейсов прикладного программирования (API) для управления платформой и выполнения программ на вычислительных устройствах. OpenCL предоставляет стандартный интерфейс для параллельных вычислений с использованием параллелизма на основе задач и данных.

OpenCL – это открытый стандарт, поддерживаемый некоммерческим технологическим консорциумом Khronos Group. Соответствующие реализации доступны от Altera, AMD, Apple (OpenCL вместе с OpenGL устарел для оборудования Apple в пользу Metal 2), ARM, Creative, IBM, Imagination, Intel, Nvidia, Qualcomm, Samsung, Vivante, Xilinx и ZiiLABS. .

То есть, благодаря такой универсальности OpenCL, программы для восстановления паролей, в том числе и hashcat, могут работать с любым оборудованием, поддерживающим OpenCL.

Графические процессоры AMD, NVIDIA и Intel поддерживают OpenCL.

Видеокарты AMD, NVIDIA также в основном поддерживают OpenCL, за исключением очень старых.

OpenCL требует установки драйвера и инструментов для взаимодействия с OpenCL. Эта статья поможет вам установить OpenCL в Linux. Аналогичные инструкции для Windows приведены в статье «Руководство по Hashcat: как пользоваться программой для взлома паролей» (см. раздел «Драйвера для hashcat»).

Итак, требования к hashcat для работы с OpenCL следующие:

Для более старых процессоров (до Broadwell) используется «Пакет драйверов графического процессора OpenCL 2.0 для Linux» (Iris, Iris Pro).

В этой статье показано, как установить все необходимое для использования OpenCL на видеокартах NVIDIA и современных процессорах Intel. Инструкции будут даны на примере Kali Linux (также должны подойти для Debian, Linux Mint, Ubuntu и их производных) и Arch Linux (BlackArch).

Как включить OpenCL в Kali Linux (Debian, Linux Mint, Ubuntu) для hashcat

Включение OpenCL для NVIDIA

Начните с полного обновления системы, а затем перезагрузите компьютер:

После того, как мы обновили систему, нам нужно проверить модули ядра nouveau (драйверы Nvidia с открытым исходным кодом, они будут конфликтовать с проприетарными)

Если предыдущая команда что-то вывела, например:

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

После изменения параметров ядра нам нужно обновить наши initramfs и перезагрузиться.

После перезагрузки и проверки того, что модули nouveau не загружены, мы переходим к установке загрузчика OpenCL ICD, драйверов и инструментария CUDA.

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

Проверка установленных драйверов

Теперь наша система должна быть готова, нам нужно проверить правильность загрузки драйверов. Мы можем быстро проверить это, запустив инструмент nvidia-smi.

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

Если вы получаете ошибку clGetDeviceIDs(): CL_DEVICE_NOT_FOUND с пометкой Platform ID Vendor: Mesa, запустите:

Включение OpenCL для Intel

Если ваш процессор поддерживает OpenCL, установите следующие пакеты:

Давайте еще раз посмотрим на список устройств (должно быть добавлено новое устройство):

И снова запустите тест:

Как включить OpenCL в Arch Linux (BlackArch) для hashcat

Включение OpenCL для NVIDIA

Удалите xf86-video-nouveau, если он установлен:

Установите собственный драйвер NVIDIA:

Установите драйвер CUDA и другие необходимые пакеты, а также hashcat:

Включение OpenCL для Intel

Теперь проверьте список устройств:

Запустите тест:

пакет beignet

beignet — это реализация OpenCL для iGPU Intel IvyBridge и Haswell. Этот пакет в настоящее время устарел и должен быть заменен на intel-compute-runtime. У меня в системе установлен beignet, затем появляется дополнительное устройство OpenCL — как в Kali Linux, где также видны 3 устройства OpenCL. Но это устройство работает нестабильно с Hashcat.

Вы можете проверить, как beignet ведет себя в вашей системе. Возможно, для старых процессоров это единственный вариант.

OpenCL для AMD

Если у вас есть карта AMD, поделитесь с другими читателями своим опытом установки драйвера AMD с поддержкой OpenCL. Пишите свои команды для установки в комментариях и я добавлю новый раздел в статью. Если возможно, сделайте снимки экрана и/или результаты тестов.

Как сотрудник Red Team и исследователь безопасности, я иногда сталкиваюсь с необходимостью взломать некоторые хешированные пароли. Раньше считалось, что Джон Потрошитель был подходящим инструментом для работы. С появлением технологий GPGPU, таких как CUDA и OpenCL, hashcat быстро затмил Джона по чистой скорости. К сожалению, в 2021 году трудно найти видеокарты. Я решил взглянуть на варианты запуска hashcat в Google Cloud.

Чтобы запустить hashcat с помощью CUDA, нужно выполнить несколько шагов, и, поскольку мне часто нужно запускать экземпляр только на короткий период времени, я создал сценарий для запуска hashcat на виртуальной машине Google Cloud. Он может либо запустить тест, либо запустить экземпляр с произвольными флагами. Он запускает экземпляр, но не останавливает его после завершения, поэтому, если вы хотите попробовать, обязательно выключите экземпляр, когда закончите с ним работать. (Задание hashcat остается запущенным в сеансе tmux, чтобы вы могли его проверить.)

На данный момент в Google Cloud доступно 6 ускорителей GPU, охватывающих диапазон архитектур от Kepler до Ampere (см. цены здесь):

  • NVIDIA A100 (Ампер)
  • NVIDIA T4 (Тьюринг)
  • NVIDIA V100 (Вольта)
  • NVIDIA P4 (Паскаль)
  • NVIDIA P100 (Паскаль)
  • NVIDIA K80 (Кеплер)

Результаты эффективности

Я выбрал несколько распространенных хэшей в качестве репрезентативных образцов для разных архитектур. К ним относятся MD5, SHA1, NTLM, sha512crypt и WPA-PBKDF2. Они представляют собой некоторые из наиболее распространенных ситуаций взлома паролей, с которыми сталкиваются тестеры на проникновение. Неудивительно, что общая производительность самым непосредственным образом связана с количеством ядер CUDA, за которыми следуют скорость и архитектура.

Скорости на графике нормированы для самой медленной модели в каждом тесте (K80 во всех случаях).

Обратите внимание, что A100 на базе Ampere в 11–15 раз быстрее самого медленного K80. (В некоторых тестах скорость может достигать 55 раз быстрее, но это встречается реже.) Здесь представлен широкий спектр аппаратного обеспечения, и в зависимости от доступности и типа графического процессора вы можете подключить от 1 до 16 графических процессоров в одном экземпляре, а hashcat может распределить нагрузку между всеми подключенными графическими процессорами.

Полные результаты всех тестов с использованием самого медленного оборудования в качестве основы для процентного соотношения:

< td>2,8 GH/s< td>100,0%< td>1353,0%5,0 ГГц/с< td>504,6%< td>348,8 МГц/с <тд >3123,0%< td>15900 – файл главного ключа DPAPI v2 (итераций: 12 899)< td>425,2%< td>266,6 кГн/с
Алгоритмnvidia-tesla-k80nvidia-tesla-p100nvidia-tesla-p4nvidia-tesla-v100nvidia-tesla-t4nvidia-tesla-a100
0 – MD54,3 ГХ/с 100,0%27,1 ГГц/с622,2%16,6 ГГц/с382,4%< /td>55,8 ГГц/с1283,7%18,8 ГГц/с432,9%67,8 ГГц/с 1559,2%
100 – SHA11,9 ГХ/с100,0 % 9,7 ГГц/с497,9%5,6 ГГц/с286,6%17,5 ГГц/с905,4%6,6 ГГц/с342,8%21,7 ГГц/с1119,1%
1400 – SHA2-256845,7 МГХ/с100,0 %3,3 ГХ/с 389,5%2,0 GH/s238,6%7,7 GH/s904,8%334,8%9,4 GH/s1116,7%
1700 - SHA2-512230,3 МГц/с1,1 GH/s463,0%672,5 MH/s292,0%2,4 GH/s1039,9%789,9 MH/s343,0%3,1 GH/s
22000 – WPA-PBKDF2-PMKID+EAPOL (Итерации: 4095)80,7 кГн/с 100,0%471,4 кГц/с584,2%292,9 кГц/с363,0%883,5 кГн/с1094,9%318,3 кГн/с394,5%1,1 МГн/с 1354,3%
1000 - NTLM7,8 GH/s100,0%49,9 GH/s 643,7%29,9 ГГц/с385,2%101,6 ГГц/с1310,6%< /td>33,3 GH/s429,7%115,3 GH/s1487,3%
3000 - LM3,8 GH/s100,0%25,0 GH/s661,9% 13,1 ГГц/с347,8%41,5 ГГц/с1098,4%19,4 ГГц/с514,2%65,1 GH/s1722,0%
5500 — NetNTLMv1 / NetNTLMv1+ESS100,0%26,6 GH/s533,0%16,1 GH/s322,6%54,9 GH/s 1100,9%19,7 ГГц/с395,6%70,6 ГГц/с1415,7%
5600 – NetNTLMv2322,1 МГХ/с100,0 %1,8 ГХ/с567,5 %< /td>1,1 ГГц/с349,9%3,8 ГГц/с1179,7%1,4 ГГц/с 439,4%5,0 GH/s1538,1%
1500 — расшифровать, DES (Unix ), традиционный DES161,7 MH/s100,0%1,1 GH/s681,5%515,3 МГц/с318,7%1,7 ГГц/с1033,9%815,9 МГц/с2,6 GH/s1606,8%
500 — md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) (Итерации: 1000)2,5 MH/с100,0%10,4 MH/с416,4% 6,3 МГц/с251,1%24,7 МГц/с989,4%8,7 МГц/ с347,6%31,5 МГц/с1260.6%
3200 – bcrypt $2\*$, Blowfish (Unix) (итерации: 32)2,5 кГн/с100,0%22,9 кГн/с922,9 %13,4 кГн/с540,7 % 78,4 кГц/с3155,9%26,7 кГц/с1073,8%135,4 кГц/с5450,9%
1800 - sha512crypt $6$, SHA512 (Unix) (Итерации: 5000)37,9 кГц/с 100,0%174,6 кГц/с460,6%91,6 кГц/с241,8%369,6 кГн/с975,0%103,5 кГн/с273,0%535,4 кГн/с 1412,4%
7500 — Kerberos 5, etype 23, AS-REQ Pre-Auth43,1 MH/s100,0% 383,9 МГц/с889,8%186,7 МГц/с432,7%1,0 ГГц/ s2427,2%295,0 MH/s683,8%1,8 GH/s4281,9%
13100 — Kerberos 5, etype 23, TGS-REP32,3 MH/s100,0%1080,2%185,3 МГц/с573,9%1,0 ГГц/с291,7 MH/s903,4%1,8 GH/s5563,8%
15300 – файл главного ключа DPAPI v1 (Итерации: 23 999)15,6 кГн/с100,0%80,8 кГн/с< /td>519,0%50,2 кГц/с322,3%150,9 кГц/с968,9%55,6 кГн/с356,7 %187,2 кГн/с1202,0 %
8,1 кГн/с100,0 %36,7 кГн/с451,0%22,1 кГц/с271,9%79,9 кГц/с981,4% 31,3 кГц/с385,0%109,2 кГц/с1341,5%
7100 — macOS v10.8+ (PBKDF2-SHA512) (Итерации: 1023)104,1 кГн/с100,0 %442,6 кГн/с272,5 кГн/с261,8%994,6 кГн/с955,4 %392,5 кГн/с377,0%1,4 МГн/с1304,0%
11600 - 7-Zip (Итерации: 16 384)91,9 кГн/с100,0 %380,5 кГн/с 413,8%217,0 кГн/с236,0 %757,8 кГн/с824,2 %290,0 %1,1 МГн/с1218,6 %
12500 - RAR3-hp (Итерации: 262 144)12,1 кГн/с100,0%64,2 кГн/с528,8%< /td>20,3 кГн/с167,6%102,2 кГн/с842,3%28,1 кГн/с 231,7%155,4 кГц/с1280,8%
13000 - RAR5 (Итерации: 32799 )10,2 кГн/с100,0 %39,6 кГн/с389,3 %24,5 кГн /с240,6%93,2 кГн/с916,6%30,2 кГн/с297,0 %118,7 кГн/с1167,8%
6211 — TrueCrypt RIPEMD160 + XTS 512 бит (итерации: 1999 г.)66,8 кГн/с100,0 %292,4 кГн/с437,6 %177,3 кГн/с< /td>265,3%669,9 кГн/с1002,5 %232,1 кГн/с347,3 %822,4 кГц/с1230,8%
13400 — KeePass 1 (AES/Twofish) и KeePass 2 (AES) (Итерации: 24569)10,9 кГн/с100,0 %67,0 кГн/с617,1 %19,0 кГн/с174,8%111,2 кГн/с1024,8%27,3 кГн/с< /td>251,2%139,0 kH/s1281,0%
6800 — LastPass + LastPass прослушивается (итерации : 499)651,9 кГн/с100,0 %2,5 МГн/с390,4 % 1,5 МГц/с232,2%6,0 МГц/с914,8%2,0 МГц/с304,7%7,6 MH/s1160,0%
11300 - Bitcoin/Litecoin wallet.dat (Итерации: 200459) 1,3 кГн/с100,0%5,0 кГн/с389,9%3,1 кГн/ с241,5%11,4 кГц/с892,3%4,1 кГц/с325,3% 14,4 кГн/с1129,2%

Ценность результатов

Хотите верьте, хотите нет, но скорость не раскрывает всей истории, если только вы не можете выставить счет непосредственно вашему клиенту — в этом случае сразу переходите к экземпляру 16-A100. . :)

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

Относительное значение — это средняя скорость на единицу стоимости в единицах K80.

< tbody>< /таблица>

Хотя NVIDIA T4 далеко не самая быстрая, она наиболее эффективна с точки зрения затрат, в первую очередь из-за очень низкой цены 0,35 доллара США в час. (На момент написания.) Если у вас есть конкретный хэш, на котором нужно сосредоточиться, вы можете рассмотреть возможность выполнения математических расчетов для этого типа хэша, но относительная производительность, похоже, имеет ту же тенденцию. На самом деле это очень ценно.

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

Читайте также:

КарточкаПроизводительностьЦенаЦенность
nvidia-tesla-k80100,00,45$1,00
nvidia-tesla-p100519,01,46$1,60
nvidia-tesla-p4< /td>286,60,60 долл. США2,15
nvidia-tesla-v1001002,5 2,48 доллара1.82
nvidia-tesla-t4356,70,35$4,59
nvidia-tesla-a1001341,52,93$2,06