John the Ripper и аппаратное ускорение (GPU)

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

Введение

В этой лабораторной работе вы изучите мощное сочетание John the Ripper (JtR) и графических процессоров (GPU) для ускоренного взлома паролей. Традиционный взлом на основе ЦП может быть медленным, особенно для сложных паролей. GPU, благодаря своим массивным возможностям параллельной обработки, могут значительно сократить время, необходимое для взлома паролей.

Вы начнете с понимания фундаментальных принципов GPU-взлома, затем перейдете к практическим шагам по настройке вашей среды. Это включает установку необходимых драйверов GPU и фреймворков, таких как CUDA или OpenCL. Далее вы настроите John the Ripper для использования вашего GPU, протестируете его производительность и изучите распространенные методы устранения неполадок. К концу этой лабораторной работы вы получите твердое понимание того, как эффективно использовать ускорение GPU с John the Ripper.

Понимание принципов GPU-взлома

На этом этапе вы изучите фундаментальные принципы, позволяющие GPU ускорять взлом паролей.

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

Ключевые концепции:

  • Параллелизм: В отличие от ЦП, которые преуспевают в последовательных задачах, GPU имеют тысячи более мелких ядер, которые могут одновременно работать над независимыми частями проблемы. При взломе паролей каждое ядро может тестировать различного кандидата пароля.
  • Алгоритмы хеширования: Взлом паролей включает в себя многократное хеширование кандидатов паролей и сравнение результата с известным хешем. Многие алгоритмы хеширования (такие как MD5, SHA-1, bcrypt, scrypt) являются вычислительно интенсивными, что делает их хорошими кандидатами для ускорения с помощью GPU.
  • CUDA/OpenCL: Это платформы параллельных вычислений и модели программирования, которые позволяют разработчикам программного обеспечения использовать GPU для обработки общего назначения.
    • CUDA (Compute Unified Device Architecture): Разработанная NVIDIA, это проприетарная платформа для GPU NVIDIA.
    • OpenCL (Open Computing Language): Открытый стандарт для параллельного программирования на гетерогенных платформах (ЦП, GPU, FPGA и т. д.) от различных производителей. John the Ripper поддерживает оба.

Как это работает:

  1. Загрузка хешей: John the Ripper загружает целевые хеши паролей в память GPU.
  2. Генерация кандидатов: GPU генерирует большое количество кандидатов паролей (например, из списка слов или методом полного перебора).
  3. Хеширование и сравнение: Каждое ядро GPU одновременно хеширует назначенных ему кандидатов и сравнивает полученный хеш с целевыми хешами.
  4. Отчет о взломах: Если найдено совпадение, сообщается взломанный пароль.

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

Установка драйверов GPU и CUDA/OpenCL

На этом этапе вы подготовите вашу среду LabEx для ускорения с помощью GPU, установив необходимые драйверы и фреймворк OpenCL. Поскольку среды LabEx виртуализированы и могут не иметь прямого доступа к физическим GPU, мы будем имитировать настройку, устанавливая библиотеки разработки OpenCL, которые необходимы для модулей GPU John the Ripper.

Сначала обновите список пакетов, чтобы убедиться, что вы получаете последние версии программного обеспечения.

sudo apt update

Далее установите пакет ocl-icd-opencl-dev. Этот пакет предоставляет загрузчик и файлы разработки OpenCL Installable Client Driver (ICD), которые крайне важны для взаимодействия приложений, таких как John the Ripper, с устройствами, совместимыми с OpenCL.

sudo apt install -y ocl-icd-opencl-dev

После установки вы можете проверить наличие библиотек OpenCL. Хотя у вас не будет физического GPU для запроса с помощью clinfo, наличие файлов разработки указывает на то, что система настроена для компиляции и запуска приложений OpenCL.

ls -l /usr/lib/x86_64-linux-gnu/libOpenCL.so

Вы должны увидеть вывод, похожий на этот, подтверждающий наличие библиотеки:

lrwxrwxrwx 1 root root 19 Mar 28  2023 /usr/lib/x86_64-linux-gnu/libOpenCL.so -> libOpenCL.so.1.0.0

Этот шаг гарантирует, что основные компоненты OpenCL доступны для обнаружения и использования John the Ripper.

Настройка John the Ripper для использования GPU

На этом этапе вы установите John the Ripper и проверите его способность обнаруживать OpenCL. Хотя среда LabEx может не иметь физического GPU, модули OpenCL John the Ripper все равно будут присутствовать и могут быть настроены.

Сначала установите John the Ripper.

sudo apt install -y john

После установки вы можете проверить возможности John the Ripper, в частности, наличие поддержки OpenCL. Команда john --list=opencl-devices в John the Ripper используется для перечисления обнаруженных устройств OpenCL. В виртуализированной среде без физического GPU она может не перечислять реальные устройства, но сама команда подтверждает, что модули OpenCL скомпилированы в John the Ripper.

john --list=opencl-devices

Вы можете увидеть вывод, указывающий на "No OpenCL devices found" (Устройства OpenCL не найдены) или подобное, что ожидаемо в этой виртуальной среде. Важно, что команда выполняется без ошибок, подтверждая наличие возможностей OpenCL в JtR.

No OpenCL devices found.

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

echo "testuser:5d41402abc4b2a76b9719d911017c592" > ~/project/hashes.txt

Это создаст файл hashes.txt в вашем каталоге ~/project с хешем для пароля "hello".

Теперь попытаемся взломать хеш с помощью John the Ripper. Даже без физического GPU John the Ripper попытается использовать свои модули с поддержкой OpenCL, если они доступны, и переключится на ЦП, если устройства не найдены.

john --format=raw-md5 ~/project/hashes.txt --wordlist=/usr/share/john/password.lst

Вы должны увидеть вывод, указывающий, что John the Ripper обрабатывает хеш. Если пароль "hello" присутствует в списке слов по умолчанию, он будет взломан.

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (iteration count) is 1 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
hello            (testuser)
1g 0:00:00:00 DONE (2024-01-01 12:00) 100.0% 1000000g/s 1000000p/s 1000000c/s 1000000C/s testuser
Session completed.

Этот шаг подтверждает, что John the Ripper установлен, его компоненты OpenCL распознаны, и он может обрабатывать хеши.

Тестирование производительности GPU для взлома

На этом этапе вы научитесь тестировать производительность John the Ripper. Хотя мы находимся в виртуализированной среде без физического GPU, понимание процесса тестирования имеет решающее значение для реальных сценариев. John the Ripper имеет встроенный инструмент тестирования, который может проверять различные типы хешей.

Для тестирования John the Ripper используйте опцию --test. Эта команда выполнит серию тестов против различных алгоритмов хеширования, показывая скорость взлома (догадок в секунду) для каждого.

john --test

Вывод будет обширным, показывая производительность для различных типов хешей. Ищите строки, содержащие "OpenCL" в своем описании, если были обнаружены какие-либо устройства OpenCL. Даже если физический GPU отсутствует, John the Ripper может сообщать о теоретической производительности OpenCL на основе своих скомпилированных модулей.

Пример вывода (сокращен для краткости):

Benchmarking: Raw-MD5 [MD5]... DONE
Many salts:     1000000 c/s real, 1000000 c/s virtual

Benchmarking: bcrypt ($2*$, $2a$, $2x$, $2y$, $2b$) [Blowfish OpenCL]... DONE
Many salts:     1000000 c/s real, 1000000 c/s virtual
Only one salt:  1000000 c/s real, 1000000 c/s virtual

Значения c/s (кандидатов в секунду) или p/s (паролей в секунду) указывают на скорость взлома. В реальной среде с мощным GPU эти цифры будут значительно выше для алгоритмов с ускорением GPU по сравнению с тестами только для ЦП.

Вы также можете протестировать конкретный тип хеша, например, raw-md5, чтобы получить более сфокусированные результаты:

john --test=0 --format=raw-md5

Эта команда специально тестирует формат raw-md5. Опция --test=0 запускает тест на короткое время, что полезно для быстрой проверки.

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

Устранение проблем с взломом с использованием GPU

На этом этапе вы научитесь распространенным методам устранения неполадок John the Ripper и ускорения с помощью GPU. Хотя среда LabEx не имеет физического GPU, понимание этих шагов имеет решающее значение для реальных приложений.

Распространенные проблемы и их решения:

  1. "No OpenCL devices found" (Устройства OpenCL не найдены) или "CUDA error" (Ошибка CUDA):

    • Причина: Неправильные или отсутствующие драйверы GPU, или неправильно установленный SDK OpenCL/CUDA.
    • Решение: Убедитесь, что драйверы вашего GPU обновлены и правильно установлены. Для GPU NVIDIA установите CUDA Toolkit. Для GPU AMD/Intel убедитесь, что установлены драйверы OpenCL. В виртуальной среде это сообщение ожидаемо, если не предоставлен виртуальный GPU.
    • Проверка: Выполните john --list=opencl-devices или nvidia-smi (для NVIDIA), чтобы проверить обнаружение устройств.
  2. Низкая производительность:

    • Причина: Устаревшие драйверы, недостаточная память GPU или использование типа хеша, оптимизированного для ЦП, на GPU.
    • Решение: Обновите драйверы. Убедитесь, что у вашего GPU достаточно памяти для выбранного типа хеша и списка слов. Некоторые типы хешей (например, bcrypt, scrypt) намеренно разработаны как медленные и требовательные к памяти, что делает их менее эффективными на GPU по сравнению с более простыми хешами, такими как MD5.
    • Проверка: Используйте john --test для тестирования производительности и сравнения ее с ожидаемыми значениями для вашего GPU.
  3. Сбои или зависания:

    • Причина: Перегрев, нестандартный разгон (overclocking) или конфликты драйверов.
    • Решение: Следите за температурой GPU. Уменьшите разгон, если он был применен. Выполните чистую переустановку драйверов.
    • Проверка: Используйте watch -n 1 nvidia-smi (для NVIDIA) для мониторинга использования и температуры GPU.
  4. John the Ripper не использует GPU:

    • Причина: JtR не скомпилирован с поддержкой GPU, или конкретный формат хеша не поддерживается модулем GPU.
    • Решение: Убедитесь, что вы установили правильную версию JtR (например, john-opencl или john-cuda, если доступны, или сборку из исходного кода с флагами GPU). Проверьте, имеет ли хеш-формат, который вы взламываете, реализацию OpenCL/CUDA в JtR.
    • Проверка: Выполните john --list=formats и найдите форматы с OpenCL или CUDA в их описании.

Имитация шага устранения неполадок:

Предположим, вы столкнулись с проблемой и вам нужно проверить версию John the Ripper, чтобы убедиться, что она поддерживает OpenCL.

john --version

Эта команда выведет версию установленного John the Ripper, что может помочь определить, есть ли у вас сборка, включающая поддержку GPU.

John the Ripper 1.9.0-jumbo-1 (linux-gnu)
Copyright (c) 1996-2023 by Solar Designer and others
...

Понимание этих распространенных проблем и их решений поможет вам эффективно устранять неполадки при использовании John the Ripper с ускорением GPU в реальных сценариях.

Резюме

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

Затем вы перешли к практическим шагам по настройке вашей среды, включая установку необходимых библиотек для разработки OpenCL. Вы узнали, как установить John the Ripper, проверить его возможности OpenCL и выполнить базовый взлом хешей. Кроме того, вы изучили встроенные инструменты тестирования John the Ripper для оценки производительности и обсудили распространенные методы устранения неполадок при взломе с использованием GPU.

Завершив эту лабораторную работу, вы теперь обладаете знаниями для эффективного использования ускорения GPU с John the Ripper, значительно повышая свои возможности по взлому паролей в реальных сценариях.