Повний посібник з John the Ripper. Ч.1: знайомство та встановлення John the Ripper

7 квітня 2023 2 хвилин Автор: Endpool

Знайомство та призначення John the Ripper

Давним-давно шестизначний пароль вважався безпечним, тим більше, якщо він містив великі та малі літери, знаки пунктуації і не ґрунтувався на слові зі словника. Ці правила не зовсім застаріли (вісім символів майже прийнятні, якщо там є спецсимволи), і багато хто досі використовує безнадійно слабкі паролі для захисту своїх даних. John the Ripper – інструмент для злому паролів, який робить цей факт кришталево ясним. Було б безглуздо зберігати паролі у відкритому доступі, тому зазвичай відбувається таке: пароль проходить через відповідну функцію хеша (наприклад, SHA256), і зберігається саме результат цієї дії. Хеш-функції потрібно мати певні математичні властивості (хеш не повинен бути легко реконструйованим), і коли пароль вводиться, обчислюється його хеш і результат порівнюється з тим, що вже зберігається. Малоймовірно, щоб у двох паролів був однаковий хеш, так що якщо хеші збігаються, доступ дозволяється.

Деякі системи блокують вас після певної кількості невдалих спроб введення пароля, але ці правила не застосовуються, якщо у вас є вкрадена база даних (щоб дізнатися про «онлайн-злом» паролів, шукайте Hydra). John the Ripper також здатний задіяти можливості GPU для перевірки кількох тисяч паролів на секунду. Крім випадкових комбінацій символів, John the Ripper може використовувати словники, що дуже допомагає у процесі злому паролів. Мало того, John the Ripper може використовувати правила поєднання словникових слів один з одним та з випадковими символами, імітуючи процес створення паролів особливо обдарованими. Сучасний підхід до створення паролів включає комбінування словникових слів для створення довгого пароля, а не спроби розуміти, випадково поєднуючи великі літери та символи.

Чим відрізняються John the Ripper та Hashcat

1. Hashcat для брут-форсу може використовувати відеокарту, центральний процесор (ЦП) чи все разом. John the Ripper може використовувати щось одне: чи відеокарту, чи відео ядро ​​ЦП, чи лише ЦП.

2. Hashcat може використовувати відеокарту для злому будь-яких підтримуваних алгоритмів. John the Ripper для злому на відеокарті підтримує лише деякі види алгоритмів.

3. Якщо у вас кілька відеокарт, Hashcat «з коробки» підтримує роботу відразу з кількома пристроями і за умовчанням розбиває завдання на потрібну кількість потоків і розмір кожного завдання прив’язаний до потужності відеокарти. John the Ripper може працювати з кількома відеокартами, але за умовчанням розбивка завдання на кілька відеокарт підтримується лише одного алгоритму.

4. Для Hashcat не має значення, як ви її встановили: зібрали з вихідного коду або завантажили бінарний файл. Для John the Ripper дуже важливо зібрати бінарний файл, оскільки в цьому випадку враховується специфіка вашої системи. В результаті при компіляції будуть вказані підтримувані процесором набори команд, наприклад, AVX2 замість дефолтного AVX, що в кінцевому рахунку дуже позначиться на продуктивності – для деяких алгоритмів завдяки цьому досягається прискорення злому в 2 рази! Або навпаки, скомпіловані на новішому залозі здійсненні файли John можуть не працювати на деяких комп’ютерах

5. Для Hashcat обов’язково необхідно вказати тип хеша. John the Ripper визначає хеш самостійно, або можна вказати формат хешу.

6. Синтаксис команд та опцій сильно різниться.

7. Про злом пароля в John the Ripper на відеокарті потрібно знати, що брут-форс на графічній карті вимагає багато часу для запуску – це помітно навіть для бенчмарку. Тому якщо вам потрібно виконати безліч коротких сесій, то іноді краще використовувати центральний процесор, злом на якому запускається негайно.

Переваги John the Ripper:

1. Гнучкіша робота з хешами – навіть якщо у файлі з хешами є хеші інших типів, то John не завершує роботу з помилкою, а просто використовують хеші того типу, який вказаний у команді запуску. До того ж, утиліти для обчислення хешей часто додають рядки, які в Hashcat можуть спричинити помилку «неправильний хеш». John the Ripper працює з такою формою запису.

2. Гнучкіша Атака на основі правил. John the Ripper і Hashcat є реалізація Атаки на основі правил і синтаксис запису правил має багато спільного. Але в John the Ripper ця атака потужніша, оскільки має більше правил, а також дозволяє використовувати набори символів у записі правил.

3. Підтримка нестандартних хешів. Hashcat може працювати лише з хешами, які передбачили розробники цієї програми. А John the Ripper має режим Dynamic, який дозволяє вказати формулу, за якою був обчислений хеш. Тобто можна зламувати довільні типи хешів.

Встановлення драйверів відеокарт для John the Ripper

Якщо ви хочете використовувати GPU для зламування паролів (а це в десятки разів швидше, ніж на центральному процесорі), потрібно встановити відео драйвера. Для злому можуть використовуватись:

  • центральний процесор

  • відео ядро центрального процесора

  • відеокарта

Потрібно вибрати щось одне з цього – найшвидшим варіантом є відеокарта. Звичайно, конкретні конфігурації комп’ютерів можуть відрізнятися: у когось немає дискретної відеокарти, у когось немає відео ядра у ЦП – сподіваюся, ви можете це перевірити самостійно.

Встановлення відео драйверів у Windows

У цій ОС все просто — швидше за все відео драйвери для вашої графічної карти вже встановлені. Якщо ні – перейдіть на сайт виробника, скачайте та встановіть драйвер. Для того, щоб використовувати центральний процесор як OpenCL пристрій, вам потрібно встановити OpenCL Runtime for Intel Core and Intel Xeon Processors. Потрібні посилання ви знайдете в цій статті з Hashcat, яка також використовує це програмне забезпечення.

Встановлення відео драйверів у Linux

У Kali Linux

Попереднє повне оновлення системи та перезавантаження:

Встановлення відео драйверів для NVIDIA в Linux

Увімкнення OpenCL для Intel

Якщо ваш центральний процесор підтримує OpenCL, то встановіть такі пакети:

В Arch Linux, BlackArch

Увімкнення OpenCL для NVIDIA. Видалити xf86-video-nouveau є він є:

Встановіть пропрієтарний драйвер NVIDIA, CUDA та інші пакети:

Увімкнення OpenCL для Intel

Установка John the Ripper на Linux з вихідного коду

Як вже було сказано, важливо самому зібрати John the Ripper, щоб він використав усі можливості вашого процесора. Ще один плюс такого підходу ми отримаємо найсвіжішу версію John the Ripper.

Встановлення необхідних залежностей у Kali Linux:

Далі однаково у будь-якому дистрибутиві:

Зверніть увагу, в останній команді ви можете використовувати опцію -j, після яких вказати кількість (логічних) ядер вашого процесора, наприклад, у мене 12 логічних ядер, тоді я використовую:

Тепер перейдіть до папки run:

І запустіть тест:

Вам необов’язково виконувати установку John the Ripper на рівні системи – перемістіть папку run у зручне місце і запускайте John звідти. Крім файлу John the Ripper, в папці run зібрано багато скриптів для вилучення хешей – про них ми поговоримо пізніше. Пам’ятайте, якщо в терміналі набрати:  Jonh. то запуститься встановлена в системі версія, а не та, яку ви скомпілювали.

Установка 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:cygwin64homeІМ’Я-КОРИСТУВАЧА, наприклад, у мене користувач MiAl, тому я розпаковую в папку C:cygwin64homeMiAl. Зверніть увагу, що створювати папку та копіювати в неї файли потрібно від імені звичайного користувача, оскільки під час своєї роботи John the Ripper намагатиметься записати дані в .pot файл у тій же папці, де запущено програму. Якщо ви скопіювали папку JtR у файловому менеджері з підвищеними правами, то ця папка належатиме Адміністратору і записати в неї будь-що або змінити права на неї неможливо.

Насправді Windows можна запустити John the Ripper навіть без Cygwin, але в цьому випадку він не зможе використовувати OpenCL (відео ядра) для брут-форсу.

Тепер в папці C:cygwin64homeІМ’Я-КОРИСТУВАЧАJtRrun знайдіть cygOpenCL-1.dll і перейменуйте його в cygOpenCL-1.dll.bac.

Потім в папці c:WindowsSystem32 знайдіть файл OpenCL.dll і скопіюйте його в папку C:cygwin64homeІМ’Я-КОРИСТУВАЧАJtRrun.

Потім у папці C:cygwin64homeІМ’Я-КОРИСТУВАЧАJtRrun перейменуйте файл OpenCL.dll в cygOpenCL-1.dll.

Далі цю ж процедуру потрібно повторити для файлу в папці C: cygwin64 bin. Тобто в папці C:cygwin64bin знайдіть cygOpenCL-1.dll і перейменуйте його в cygOpenCL-1.dll.bac. Потім у папці c:WindowsSystem32 знову знайдіть файл OpenCL.dll і скопіюйте його в папку C:cygwin64bin. Нарешті в папці C:cygwin64binперейменуйте файл 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 встановлений зі стандартних репозиторіїв файл, достатньо писати просто: john. Якщо ви запускаєте скомпільований з вихідного коду файл, то перейдіть в каталог з файлом, що здійснюється (у папці програми це директорія run) і в якості здійснюваного файлу вказуйте: ./john.

Для перегляду пристроїв OpenCL використовуйте опцію –list=opencl-devices:


Як ви можете побачити, у мене три пристрої:

1 – відео ядро центрального процесора:

2 – дискретна відеокарта

3 – центральний процесор

Аналогічно у Windows:

Як уже було сказано, John the Ripper не може просто працювати з будь-якими алгоритмами, що підтримуються на OpenCL — необхідно, щоб для них був створений модуль. Тому деякі алгоритми можна зламувати лише на центральному процесорі, а деякі алгоритми можна зламувати на відеокарті або центральному процесорі.

Як уже було сказано, John the Ripper не може просто працювати з будь-якими алгоритмами, що підтримуються на OpenCL — необхідно, щоб для них був створений модуль. Тому деякі алгоритми можна зламувати лише на центральному процесорі, а деякі алгоритми можна зламувати на відеокарті або центральному процесорі.

Список алгоритмів може відрізнятися від ОС та від встановлених залежностей

Щоб переглянути список підтримуваних алгоритмів:

Список вмістився не весь:

Щоб переглянути список алгоритмів для злому на OpenCL:

Набагато менше, але Wi-Fi там є.

Як використовувати відеокарту для злому в John the Ripper

За замовчуванням JtR використовує центральний процесор, навіть якщо всі потрібні драйвера для OpenCL встановлені. Щоб увімкнути відеокарту, потрібно використовувати опцію –format і явно вказати алгоритм, який підтримує OpenCL. Наприклад, для бенчмарку алгоритму wpapsk на відеокарті:

Щоб зламувати wpapsk на центральному процесорі, потрібно запускати приблизно так:

Як можна побачити на скріншотах: 114975/17385 = 6,61, тобто швидкість перебору паролів збільшилася більш ніж 6 разів.

Як використовувати відео ядро центрального процесора в JtR

У цьому розділі зупинимося докладніше на тому, які пристрої для виконання обчислень може використовувати JtR і як саме програма вибирає між ними, коли є альтернатива. JtR може виконувати обчислення на:

  • звичайних ядрах ЦПУ

  • використовуючи OpenCL пристрої

Список пристроїв OpenCL може включати:

  • відеокарту

  • інтегровану графіку ЦПУ

  • звичайні ядра ЦПУ

Як ви можете побачити, навіть без встановлення можливого середовища OpenCL і відео драйверів, JtR здатний зламувати паролі. Алгоритми, в назві яких немає рядка «-opencl», наприклад wpapsk, можуть брут-форситися лише з звичайних ядрах центрального процесора. Алгоритми, в назві яких є рядок «-opencl», наприклад wpapsk-opencl, можуть брут-форситися на:

  • відеокарті

  • інтегрованої графіки ЦПУ

  • звичайних ядрах ЦПУ

Щоб переглянути список доступних пристроїв OpenCL, виконайте команду:


Під номером один – вбудована графіка ЦПУ.

Під номером три — звичайні ядра ЦПУ, з якими JtR працюватиме як із пристроєм OpenCL.

За замовчуванням (без опції -dev), JtR використовує один з пристроїв OpenCL, який як думає програма є найшвидшим.

За допомогою опції -dev можна вибрати певний пристрій OpenCL, номер пристрій знаходиться в дужках, у рядках, що починаються з Device #0, наприклад:

Отже, щоб запустити JtR на звичайних ядрах ЦП, використовуйте назву алгоритму без рядка “-opencl“:

Щоб запустити зламування пароля на першому пристрої OpenCL (у мене це вбудована графіка ЦП, запуск завершився невдачею):

Щоб запустити зламування пароля на другому пристрої OpenCL (у мене це дискретна відеокарта):

Щоб запустити зламування пароля на тертьому пристрої OpenCL (у мене це звичайні ядра центрального процесора):

Також опцію -dev можна використовувати так:

  • -dev=gpu

  • -dev=cpu

При використанні OpenCL ці опції говорять JtR використовувати тільки GPU пристрій(а) або тільки CPU пристрій(а).

Як запустити бенчмарк John the Ripper

Щоб перевірити швидкість перебору паролів у JtR, використовується опція –test.

Цю опцію можна використовувати з числом – кількість секунд, яка виконуватиметься тест.

Якщо ви хочете перевірити швидкість лише певного алгоритму, використовуйте опцію –format. Приклад тесту швидкості злому пароля Wi-Fi центральним процесором:

Приклад тесту швидкості злому пароля Wi-Fi дискретною відеокартою:

Якщо потрібно лише перевірити роботу розшифрування різних алгоритмів без запуску бенчмарку, то вкажіть 0 як значення опції –test:

Як налаштувати John the Ripper

John the Ripper має файл налаштувань з великою кількістю опцією. Цей файл називається john.conf і знаходиться в тій же папці, що і файл john. Забезпечте гарне охолодження; стежте за температурою. Якщо середовище виконання OpenCL підтримує це, температура графічного процесора відстежуватиметься і відображатиметься в рядках стану, а john.conf є межа, що змінюється користувачем, який завершить роботу при 95 °C. Забезпечте гарне охолодження; стежте за температурою. Якщо середовище виконання 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. Різниця дуже значна.

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.