John the Ripper
Что такое John the Ripper
John the Ripper — это популярный взломщик паролей, который умеет выполнять брут-форс как с использованием центрального процессора, так и видео карты, поддерживающий множество алгоритмов. Если быть более точным — это офлайн взломщик (онлайн взломщики брут-форсят службы подключаясь к ним, а офлайн взломщики работают с захваченными хешами (файлами) к которым подбирают пароль).
Даже если вы уже знакомы с Hashcat (а тем более, если НЕ знакомы с Hashcat), вам нужно изучить принципы работы John the Ripper, поскольку они отличаются.
Чем различаются John the Ripper и Hashcat
Hashcat для брут-форса может использовать видеокарту, центральный процессор (ЦП) или всё вместе.
John the Ripper может использовать что-то одно: или видеокарту, или видео ядро ЦП, или только ЦП.
Hashcat может использовать видеокарту для взлома любых поддерживаемых алгоритмов.
John the Ripper для взлома на видеокарте поддерживает только некоторые виды алгоритмов.
Если у вас несколько видеокарт, Hashcat «из коробки» поддерживает работу сразу с несколькими устройствами и по умолчанию разбивает задачу на нужное количество потоков и размер каждой этой задачи привязан к мощности видеокарты.
John the Ripper может работать с несколькими видеокартами, но по умолчанию разбивка задачи на несколько видеокарт поддерживается только для одного алгоритма.
Для Hashcat не имеет значение, как вы её установили: собрали из исходного кода или скачали бинарный файл.
Для John the Ripper очень важно самому собрать бинарный файл, поскольку в этом случае учитывается специфика вашей системы. В результате при компиляции будут указаны поддерживаемые процессором наборы команд, например, AVX2 вместо дефолтного AVX, что в конечном счёте очень значительно скажется на производительности — для некоторых алгоритмов благодаря этому достигается ускорение взлома в 2 раза! Либо напротив, скомпилированные на более новом железе исполнимые файлы John могут не работать на некоторых компьютерах
Для Hashcat обязательно нужно указать тип хеша.
John the Ripper определяет хеш самостоятельно, либо можно явно указать формат хеша.
Синтаксис команд и опций сильно различается.
О взломе пароля в John the Ripper на видеокарте нужно знать, что брут-форс на графической карте требует много времени для запуска — это заметно даже для бенчмарка. Поэтому если вам нужно выполнить множество коротких сессий, то иногда рациональнее использовать центральный процессор, взлом на котором запускается немедленно.
- Более гибкая работа с хешами — даже если в файле с хешами имеются хеши других типов, то John не завершает работу с ошибкой, а просто используют хеши того типа, который указан в команде запуска. К тому же, утилиты для вычисления хешей зачастую добавляют строки, которые в Hashcat могут вызвать ошибку «неправильный хеш». John the Ripper нормально работает с такой формой записи.
- Более гибка Атака на основе правил. В John the Ripper и Hashcat имеется реализация Атаки на основе правил и синтаксис записи правил имеет много общего. Но в John the Ripper эта атака более мощная, поскольку имеет больше правил, а также позволяет использовать наборы символов в записи правил.
- Поддержка нестандартных хешей. Hashcat может работать только с хешами, которые предусмотрели разработчики этой программы. А в John the Ripper имеется режим Dynamic, который позволяет указать формулу, по которой был вычислен хеш. То есть можно взламывать произвольные типы хешей.
Установка драйверов видеокарт для John the Ripper
Если вы хотите использовать GPU для взлома паролей (а это в десятки раз быстрее, чем на центральном процессоре), то нужно установить видео драйвера.
Для взлома могут использоваться:
Нужно выбрать что-то одно из этого — самым быстрым вариантом является видео карта.
Конечно, конкретные конфигурации компьютеров могут различаться: у кого-то нет дискретной видеокарты, у кого-то нет видео ядра у ЦП — надеюсь, вы в состоянии это проверить самостоятельно.
Установка видео драйверов в Windows
В этой ОС всё просто — скорее всего, видео драйверы для вашей графической карты уже установлены. Если нет — перейдите на сайт производителя, скачайте и установите драйвер.
Для того, чтобы использовать центральный процессор как OpenCL устройство, вам нужно установить «OpenCL Runtime for Intel Core and Intel Xeon Processors».
Установка видео драйверов в Linux
Предварительное полное обновление системы и перезагрузка:
sudo apt update && sudo apt full-upgrade -y
Установка видео драйверов для NVIDIA в Linux
sudo apt install -y ocl-icd-libopencl1 nvidia-driver nvidia-cuda-toolkit
Если ваш центральный процессор поддерживает OpenCL, то установите следующие пакеты:
sudo apt install firmware-misc-nonfree intel-opencl-icd
Удалите xf86-video-nouveau есть он есть:
sudo pacman -R xf86-video-nouveau
Установите проприетарный драйвер NVIDIA, CUDA и другие необходимые пакеты:
sudo pacman -S nvidia nvidia-utils opencl-nvidia opencl-headers cuda
sudo pacman -S linux-firmware intel-compute-runtime pocl
Установка John the Ripper в Linux из исходного кода
Как уже было сказано, важно самому собрать John the Ripper чтобы он использовал все возможности вашего процессора. Ещё один плюс такого подхода — мы получим самую свежую версию John the Ripper.
Установка необходимых зависимостей в Kali Linux:
sudo apt install build-essential libssl-dev yasm libgmp-dev libpcap-dev libnss3-dev libkrb5-dev pkg-config
Установка необходимых зависимостей в Arch Linux, BlackArch:
sudo pacman -S openssl yasm gmp libpcap nss krb5 pkg-config
Далее одинаково в любом дистрибутиве:
wget https://github.com/openwall/john/archive/bleeding-jumbo.zipunzip bleeding-jumbo.ziprmbleeding-jumbo.zipcdjohn-bleeding-jumbo/src/./configure&& make
Обратите внимание, в последней команде вы можете использовать опцию -j после которых указать количество (логических) ядер вашего процессора, например, у меня 12 логических ядер, тогда я использую:
Вам необязательно выполнять установку John the Ripper на уровне системы — переместите папку run в удобное вам место и запускайте John оттуда. Кроме исполнимого файла John the Ripper, в папке run собрано много скриптов для извлечения хешей — о них мы поговорим позже.
Помните, что если в терминале набрать
то запустится предустановленная в системе версия, а не та, которую вы скомпилировали.
Установка John the Ripper в Debian, Linux Mint, Ubuntu
Установка должна выполняться точно так же, как и в Kali Linux. Поэтому обратитесь к разделу «Установка John the Ripper в Kali Linux». Если у вас что-то не получилось, то напишите здесь в комментариях с указанием вашего дистрибутива и ошибки.
Как установить John the Ripper в Windows
Компиляцию John the Ripper из исходного кода в Windows мы рассмотрим как-нибудь потом. Воспользуемся официальным бинарным файлом.
Сначала установите Cygwin — простой зайдите на официальный сайт https://www.cygwin.com/, скачайте файл setup-x86_64.exe и установите.
В Cygwin необходимо установить пакет libOpenCL1, который по умолчанию отсутствует. Установку можно выполнить запустив ещё раз файл setup-x86_64.exe (которым устанавливался Cygwin), на этапе выбора пакетов в поле Search («Поиск») введите libOpenCL1, в выпадающем списке View («Вид») переключитесь на Not Installed («Не установлены), дважды кликните на слово Skip.
В результате будет показана версия пакета для установки, нажмите кнопку «Далее» и завершите установку пакета.
Возможно, вам больше понравится другой способ: переместите установочный файл setup-x86_64.exe в папку C:\cygwin64\ и затем откройте командную строку Windows (PowerShell) и просто выполните команду:
C:\cygwin64\setup-x86_64.exe -q -P libOpenCL1
Со страницы https://github.com/openwall/john-packages/releases/tag/jumbo-dev скачайте файл winX64_1_JtR.7z.
Распакуйте содержимое этого архива в папку C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ, например, у меня пользователь MiAl, поэтому я распаковываю в папку C:\cygwin64\home\MiAl\. Обратите внимание, что создавать папку и копировать в неё файлы нужно от имени обычного пользователя, поскольку во время своей работы John the Ripper будет пытаться записать данные в .pot файл в той же папке, где запущена программа. Если вы скопировали папку JtR в файловом менеджере с повышенными правами, то эта папка будет принадлежать Администратору и записать в неё что-либо или поменять права на неё невозможно.
На самом деле в Windows можно запустить John the Ripper даже без Cygwin, но в этом случае он не сможет использовать OpenCL (видео ядра) для брут-форса.
Теперь в папке C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run\ найдите cygOpenCL-1.dll и переименуйте его в cygOpenCL-1.dll.bac.
Затем в папке c:\Windows\System32 найдите файл OpenCL.dll и скопируйте его в папку C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run\.
Затем в папке C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run\ переименуйте файл OpenCL.dll в cygOpenCL-1.dll.
Далее эту же самую процедуру нужно повторить для файла в папке C:\cygwin64\bin\. То есть в папке C:\cygwin64\bin\ найдите cygOpenCL-1.dll и переименуйте его в cygOpenCL-1.dll.bac. Затем в папке c:\Windows\System32 вновь найдите файл OpenCL.dll и скопируйте его в папку C:\cygwin64\bin\. Наконец в папке C:\cygwin64\bin\ переименуйте файл OpenCL.dll в cygOpenCL-1.dll.
Трюк с подменой файла может сработать не для всех систем — но в любом случае вы можете использовать для взлома центральный процессор или встроенную графику.
Чтобы вы понимали, для чего мы всё это делаем, посмотрите на скорость взлома на центральном процессоре:
И на скорость взлома на видеокарте, которая стала доступна благодаря показанным выше действиям с подменой файлов:
Откройте консоль Cygwin для выполнения команд.
Запустите бенчмарк вашей системы:
Но всё-таки JtR это одна из тех программ, которая в первую очередь предназначена для Linux. Дальше вы увидите, что мы будем запускать скрипты для генерации (извлечения) хешей из файлов и, например, для некоторых из вспомогательных программ/скриптов нужно, например, установленное окружение Python, которое в Linux присутствует по умолчанию.
Проверка John the Ripper
В этом разделе мы проверим, какие устройства видит John the Ripper для использования во время брут-форса.
Опции на любой системе одинаковые, но помните, что в Windows для запуска John the Ripper нужно открыть Cygwin и в качестве исполнимого файла указывать ~/JtR/run/john.
Если вы запускаете в Linux установленный из стандартных репозиториев файл, то достаточно писать просто
Если вы запускаете скомпилированный из исходного кода файл, то перейдите в каталог с исполнимым файлом (в папке программы это директория run) и в качестве исполнимого файла указывайте
Для просмотра устройств OpenCL используйте опцию --list=opencl-devices:
Как вы можете увидеть, у меня три устройства:
1 — видео ядро центрального процессора:
Platform #0 name: Intel(R) OpenCL HD Graphics, version: OpenCL 2.1Device #0 (1) name: Intel(R) Gen9 HD Graphics NEODevice vendor: Intel(R) CorporationDevice type: GPU (LE)Device version: OpenCL 2.1 NEO
Platform #1 name: NVIDIA CUDA, version: OpenCL 1.2 CUDA 11.0.228Device #0 (2) name: GeForce GT 730Device vendor: NVIDIA CorporationDevice type: GPU (LE)Device version: OpenCL 1.2 CUDADriver version: 450.66 [recommended]
Platform #2 name: Portable Computing Language, version: OpenCL 1.2 pocl 1.5, Release, LLVM 10.0.0, RELOC, SPIR, SLEEF, POCL_DEBUGDevice #0 (3) name: pthread-Intel(R) Core(TM) i7-8750H CPU @ 2.20GHzDevice vendor: GenuineIntelDevice type: CPU (LE)Device version: OpenCL 1.2 pocl HSTR: pthread-x86_64-pc-linux-gnu-znver1Driver version: 1.5
~/JtR/run/john --list=opencl-devices
Как уже было сказано, John the Ripper не может просто работать с любыми поддерживаемыми алгоритмами на OpenCL — необходимо, чтобы для них был создан модуль. Поэтому некоторые алгоритмы можно взламывать только на центральном процессоре, а некоторые алгоритмы можно взламывать на видео карте или на центральном процессоре.
Список алгоритмов может различаться от ОС и от установленных зависимостей.
Чтобы посмотреть список поддерживаемых алгоритмов:
Чтобы посмотреть смотреть список алгоритмов для взлома на OpenCL:
./john --list=formats --format=opencl
Намного меньше, но Wi-Fi там есть.
Как использовать видеокарту для взлома в John the Ripper
По умолчанию JtR использует центральный процессор, даже если все необходимые драйвера для OpenCL установлены.
Чтобы включить видеокарту, нужно использовать опцию --format и явно указать алгоритм, который поддерживает OpenCL.
Например, для бенчмарка алгоритма wpapsk на видеокарте:
./john --test --format=wpapsk-opencl
Чтобы взламывать wpapsk на центральном процессоре, нужно запускать примерно так:
Как использовать видео ядро центрального процессора в JtR
В этом разделе остановимся более подробно на том, какие устройства для выполнения вычислений может использовать JtR и как именно программа выбирает между ними, когда имеется альтернатива.
JtR может выполнять вычисления на:
Список OpenCL устройств может включать:
Как вы можете увидеть, даже без установки исполнимой среды OpenCL и видео драйверов, JtR способен взламывать пароли.
Алгоритмы, в названии которых отсутствует строке «-opencl», например wpapsk, могут брут-форситься только на обычных ядрах центрального процессора.
Алгоритмы, в названии которых присутствует строка «-opencl», например wpapsk-opencl, могут брут-форситься на:
Чтобы посмотреть список доступных устройств OpenCL выполните команду:
По умолчанию (без опции -dev), JtR использует одно из устройств OpenCL, которое как думает программа является самым быстрым.
С помощью опции -dev можно выбрать определённое устройство OpenCL, номер устройство находится в скобках, в строках, начинающихся с «Device #0», например:
Device #0 (1) name: Intel(R) UHD Graphics 630 [0x3e9b]Device #0 (2) name: NVIDIA GeForce GTX 1050 TiDevice #0 (3) name: pthread-Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
Итак, чтобы запустить JtR на обычных ядрах ЦП, используйте название алгоритма без строки «-opencl»:
Чтобы запустить взлом пароля на первом устройстве OpenCL (у меня это встроенная графика ЦП, запуск завершился неудачей):
./john --test --format=wpapsk-opencl -dev=1
Чтобы запустить взлом пароля на втором устройстве OpenCL (у меня это дискретная видеокарта):
./john --test --format=wpapsk-opencl -dev=2
Чтобы запустить взлом пароля на тертьем устройстве OpenCL (у меня это обычные ядра центрального процессора):
./john --test --format=wpapsk-opencl -dev=3
Также опцию -dev можно использовать так:
При использовании OpenCL, эти опции говорят JtR использовать только GPU устройство(а) или только CPU устройство(а).
Как запустить бенчмарк John the Ripper
Чтобы проверить скорость перебора паролей в JtR используется опция --test.
Эту опцию можно использовать с числом — количество секунд, которое будет выполняться тест.
Если вы хотите проверить скорость только определённого алгоритма, то используйте опцию --format.
Пример теста скорости взлома пароля Wi-Fi центральным процессором:
./john --test=10 --format=wpapsk
Пример теста скорости взлома пароля Wi-Fi дискретной видеокартой:
./john --test=10 --format=wpapsk-opencl
Если нужно только проверить работу расшифровки различных алгоритмов без запуска бенчмарка, то укажите 0 в качестве значения опции --test:
Как настроить John the Ripper
У John the Ripper есть файл настроек с большим количеством опцией. Этот файл называется john.conf и находится в той же папке, что и исполнимый файл john.
Обеспечьте хорошее охлаждение; следите за температурой. Если среда выполнения OpenCL поддерживает это, температура графического процессора будет отслеживаться и отображаться в строках состояния, а в john.conf есть изменяемый пользователем предел, который завершит работу при 95 °C.
Эта настройка устанавливается директивой:
Температура указывается в градусах Цельсия - °C.
Вместо прерывания, можно остановить программу на это количество секунд, чтобы охладить GPU, когда температура достигнет значения AbortTemperature, затем программа повторно проверит температуру и либо продолжит работу, либо останется на паузе. Установите значение 0 чтобы просто завершить работу.
Если указано SleepOnTemperature = 1 (одна секунда), то не будут выводиться сообщения о паузе/возобновлении работы, поскольку такое короткое значение интерпретируется как желание держать температуру видеокарты около крайнего значения. Значение директивы по умолчанию:
Различие компиляции с AVX2 и AVX для John the Ripper
Чтобы посмотреть параметры сборки используйте опцию --list=build-info:
Бенчмарк двух версий программ:
1. На этой половине скриншота бенчмарк последней версии JtR, которую я скомпилировал из исходного кода. Поскольку мой ЦП поддерживает AVX2, то John the Ripper также это поддерживает.
2. А эту я установил из стандартного репозитория своего дистрибутива — она скомпилирована с AVX.
Итог по первой части
Итак, это первая часть по John the Ripper — популярному офлайн брут-форсеру. В ней мы узнали хитрости по установке JtR, а также научились тестировать скорость перебора паролей, включать для использования видео карту и контролировать действия при перегреве.
При запуске подобных программ (John the Ripper и Hashcat) нужно заботиться о должном охлаждении. Если ваш компьютер/ноутбук перегревается, то скорость взлома будет очень значительно падать.
Есть несколько способов взлома пароля:
1. Самый простой способ, это запустить JTR в режиме "Brute force":
john passwd
(Я в дальнейшем буду использовать passwd как имя файла с паролями, но как я уже и сказал, имя и формат файла может быть практически любым)
Данный способ является самым простым, и не очень эффективным, так как JTR начинает перебирать все символы от фонаря, что конечно очень долго… хотя многое зависит от мощности вашего компьютера и от сложности пароля. Пароль типа "dk9LDs)p1" бужет ломаться очень долго, счет идет не на дни, а на года.
2. Перебор по словарю:
john -w:wordlist passwd
где wordfile — имя файла со словарем. Также можно и так:
john -w:wordlist -rules passwd
-rules, включает правила синтаксиса для словаря. С вариантом по словарю, пароли подбираются на много быстрее чем в варианте с "Brute force". По-моему, самый лучший и эффективный способ.
3. incremental mode
john -i passwd
Авторы JTR говорят, что это самый сильный способ перебора, 95 символов. А вот таким способом:
john -i:alpha passwd
JTR перепробует 26 символов, от "a", до "zzzzzzzz". Если с wordlist не получилось, советую запускать данный способ.
4. single mode (одиночный режим).
john -single passwd
Рекомендуется начать перебирать пароль с данной опцией. Намного быстрее чем wordlist mode, но рассчитан на хиленькие пароли. При переборе нескольких файлов с данной опцией, возможно подобрать пароли быстрее чем просто 1 passwd файл.
Теперь я перечислю пару полезных опции для JTR. Опции можно запускать в любых режимах:-w, -i, -single.
1. Перебор для конкретного пользователя:
john -w:wordlist -rules -users:0 passwd
Перебирает пароль к конкретному пользователю (в нашем случае root). Что бы указать пользователя, надо после ":" указать UID (номер пользователя в системе).
2. Смотрим подобранные пароли.
john -show passwd
Показывает уже подобранные пароли, в указанном файле.
3. Разбиваем файл на куски.
john -w:wordlist -salts:5 passwd
john -w:wordlist -salts:-5 passwd
Иногда бывает полезно (если есть 2 компьютера). Число "5" это количество "salts" (паролей). JTR будет отчитывать с самого верху. В первом примере (на 1ом компе), берется первые 5 пользователей, во втором примере "-5" (на 2ом компе), перебираются все, кроме 5и первых.
4. Люблю shells :).
john -w:wordlist -rules -shells:sh,csh,tcsh,bash passwd
В данном случае, будут перебираться только те пользователи, которые имеют указанные в вышеприведенном примере shell’ы.
5. Несколько passwd файлов.
Если у вас есть несколько файлов с паролями в DES, то их можно всех вместе поставить на расшифровку данным способом:
john -single passwd passwd1 passwd2
Количество файлов по-моему не ограничено :). Способ с несколькими файлами, работает на всех режимах и опциях, просто укажите имена файлов в конце (как в примере).
6. Unshadow files.
unshadow passwd shadow
Если у вас пароли в shadow, то данной командой, их можно восстановить (требует shadow файл).
Ну вот ты и научился юзать JTR.
В дистрибутиве к нему идет файл с паролями (их там около 2 тысяч). Т.е если использовать этот файл, то скорость проверки значительно вырастет.
john – wordlist=passwords.txt – format=crypt passfile.txt
Ниже я прикреплю ссылку на архив с 14 миллионами паролей для брута:
https://drive.google.com/file/d/1JjZyCEf0ibtxf9A5lnxEk0g7UwdMzW1X/view?usp=sharing
Ccылка на доп. статью которая поможет в бруте паролей: