Перейти к содержимому

John the ripper как пользоваться

  • автор:

Обзор инструментов для вскрытия хэша: John the Ripper password cracker и MDCrack

На данный момент хэш можно вскрыть пятью способами: грубый перебор (брутфорс), подбор по словарю, по словарю с правилами (гибридная атака), rainbow таблицы (радужные таблицы) и криптоатака. Сами хэши можно разделить на обычные хэши, и хэши с солью (salt, «затравка»). Эта статья посвящена программам john и mdcrack. На их примере, также рассмотрим основные методы для реализации брутфорса.

john

John the Ripper password cracker предназначен для вскрытия различных типов хэшей, которые применяются во множестве ПО и ОС, от MySQL до OpenBSD. В программе реализованы возможности: брутфорс пароля, подбор пароля по словарю и гибридная атака. А также signle и external способы подбора пароля, специфичные для этой программы. О всех способах будет рассказано ниже.

В программе имеется возможность восстанавливать процесс подбора после его прерывания.

Одной из особенностей программы является тот факт, что при вскрытии большого количества паролей «за раз», велика возможность того, что они вскроются быстрее, чем бы вскрылись по отдельности. А также инкремент пароля производится «интеллектуально», о чём будет сказано ниже.

В программе имеются два ограничения: john может вскрывать хэши только с солью — для вскрытия обычных хэшей вам потребуется соответствующий патч или готовая спец. сборка программы; можно брутфорсить пароль длиной не более 8-ми символов (но при атаке по словарю такого лимита нет).

Salt (соль, «затравка») — это метод усложнения вычисления хэша. К примеру, во FreeBSD, при вычислении хэша от пароля, сначала генерируются два случайных символа, которые конкатенируются к паролю, от полученной строки вычисляется хэш, и к полученному хэшу прибавляются эти два символа, давая результирующий хэш.

Для тестирования скорости программы на вашем компьютере, запустите её с флагом ‘—test’. Результат будет выдан в c/s, т.е. в символах в секунду, а не в h/s (хэш в секунду), как это принято в других программах этого типа. Но каждый следующий символ образует новый пароль. А значит, перебирая, к примеру, 3500 символов в секунду, мы генерируем 3500 новых паролей в секунду. Следовательно, цифры, которые даёт команда john —test — это и есть хэши в секунду.

Для начала работы программы, запишите вскрываемый хэш в файл: user:hash, где user — это любая строка, и hash — вскрываемый вами хэш. Если вам требуется вскрыть сразу несколько хэшей, то нужно записать их всех в один файл. Как сказано выше, велика вероятность того, что так все хэши вскроются быстрее, чем если бы они были записаны в разные файлы по отдельности. Например, создадим файл bla.pass такого содержания:

user1:$1$yHJlM1Y9$lzO5yVj6Drepbz6xje0wq0
user2:$1$RDBUtZMr$z8acZKa5XzY0vQuUwG6Un1
user3:$1$EP5lm7ex$poOrQvYoH78Bc63nhXx1p1
user4:$1$ths1/RY5$CUR32fPoOr/UcjeBpD4fx0

Что бы начать перебор, дайте команду john bla.pass. Программа скажет о количестве загруженных хэшей, о количестве различных salt-ов (в старых unix-системах salt был фиксированным, т.е. одинаковым у всех паролей) и о типе хэшей. Тип хэша может определится не верно. Так, если попытаться вскрыть обычный md5_128bit (без salt), то рассматриваемая в этой статье версия john-а определит этот хэш как NT LM DES, и начнёт подбор пароля, заведомо безрезультатно.

После начала перебора, может пройти вечность до того, как пароль вскроется. Что бы попытаться вскрыть пароль в разумные сроки, у john-а есть целый арсенал различных типов подбора (режимов работы), правил, фильтров и гибкий файл конфигурации. Далее будут коротко рассмотрены режимы работы john-а. Дополнительную информацию читайте в документации к программе.

Итого, john имеет 4 режима работы, т.е. 4 способа вскрытия пароля: single crack, wordlist, incremental и external.

Single crack mode — поиск пароля по косвенным уликам. Первыми кандидатами в пароли становятся имя пользователя, «GECOS», «Full Name» — поля его учётной записи и название домашней директории пользователя. А также используются правила (гибридная атака) для полученных данных, и возможных паролей становиться больше. Но не так много как в прилагаемом к программе словаре. Поэтому это самый быстрый способ. Он завершает свою работу (перебирает все возможные этим способы варианты паролей) за несколько секунд.

В GECOS-поле пользователь может записать дополнительные данные о себе, такие как номер телефона, дату рождения и т.п.

Wordlist — подбор пароля по словарю. Основной словарь весит более чем 600 Mb, распространяется на двух дисках. В нём собраны наиболее употребляемые пароли более чем на 20 языках. Стоит этот сборник паролей 28.25$. Также доступен малый сборник паролей размером 11 Mb. Эффективность этого сборника сомнительна, поскольку он также содержит пароли на более чем 20 языках. У режима wordlist есть «подрежим»: wordlist с правилами (rulets). Это гибридный вид подбора пароля. Набор применяемых правил можно изменять и дополнять своими. Правила описаны в файле конфигурации спецсимволами и специальными флагами, которые читает и обрабатывает john-овский препроцессор правил.

Вы можете скачать некоторые очень полезные словари с сайта passwords.ru

Incremental — грубый перебор, т.е. брутфорс. Настройки перебора хранятся в файле конфигурации. При переборе, программа равномерно распределяет частоту инкремента по длине пароля и набору символов (That’s one reason why this mode deals with trigraph frequencies, separately for each character position and for each password length, to crack as many passwords as possible within a limited time). Есть пять подрежимов инкрементного режима: «All», «Alnum», «Alpha», «Digits» и «LanMan». К примеру «Digits» будет перебирать лишь цифры, «Alpha» — лишь строчные латинские буквы. Также есть возможность создания своего подрежима инкрементного режима. Подробнее — в документации.

External — этот режим даёт возможность применять «фильтры», описанные в файле конфигурации на языке Си с использованием четырёх callback-функций. С помощью этого можно написать свой алгоритм перебора. Но несколько основных уже написаны в файле конфигурации, и ими можно пользоваться.

Все режимы можно совмещать. По дефолту (если не указывать режим и ничего не менять в конфигах) программа сначала отработает single-режим, затем попытается подобрать пароль по словарю, прилагаемому к программе (всего лишь 3108 паролей), затем начнёт перебор паролей (перейдёт в инкрементный режим) длиной от 0 до 8 с азбукой в 96 символов (латинские строчные, латинские заглавные, цифры и символы).

Практический совет: пробуйте сначала те режимы и подрежимы, которые заканчивают свою работу (в случае неудачи) быстрее всех. После завершения работы в режимах single, wordlist и wordlist with rulets, вы, вероятно, начнёте брутфорсить пароль в подрежиме «All». Это может оказаться вашей большой ошибкой, которая отнимет у вас слишком много времени. Вместо этого, сначала попробуйте более быстрые подрежимы в порядке возрастания количества символов: «Digits» (10 цифр), «Alpha» (26 латинских строчных букв), «Alnum» (36 символов — буквы + цифры) и т.п. Поскольку пользователи часто используют простые пароли, сперва следует попробовать более быстрые подрежимы инкрементного перебора. Это может значительно сэкономить вам время.

mdcrack

Программа нацелена на достижение максимальной скорости перебора пароля. Версия программы 1.2 имеет открытый исходный код, но поддерживает всего лишь три вида хэшей: MD4, MD5 и NTLM1. Программа версии 1.5 и 1.7 поддерживает большее число хэшей, в том числе и md5_freebsd, но исходный код в открытом виде не предоставляется. Программу mdcrack удобно использовать для брутфорса, когда стандартная сборка программы john вам не подошла, т.е. когда вам необходимо вскрыть хэш без соли (без salt).

Пример вызова программы mdcrack:

mdcrack -s qwertyuiopasdfghjklzxcvbnm -S 7 c8e5b031cee3fe69955e63f8c5e11509.

После этой команды создастся «сессия», и если вы прервёте перебор, дайте команду mdcrack (без параметров) для возврата к прерванной сессии. Для удаления сессии, дайте команду mdcrack -d.

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

Флаг -W используется для создания файла предварительно рассчитанных пар pass:hash. Для чтения такого файла используется флаг -R. Для более быстрой работы чтения/записи используется флаг -F.

Флаги -b и -e используются для указания challegne-значения. В некоторых протоколах передачи данных, передаваемый хэш пароля шифруется (вычисляется хэш от передаваемого хэша). Пароль, на который он шифруется в данном контексте называется challegne.

Стоит отметить, что программа mdcrack ищет в хэше коллизии. Дело в том, что одному хэшу может соответствовать несколько паролей (но вероятность этого очень мала), причём разной длины. Если пользователь задал пароль из 9 символов, при подборе такого пароля может выясниться, что другой, более короткий пароль, к примеру из двух символом, имеет точно такой же хэш. И если его ввести атакуемой системе — он будет воспринят как правильный.

Тематические ссылки
  • Статья «Заметки: какой брутер выбрать?»: forum.antichat.ru/showthread.php?t=37651
  • Словари для вскрытия хэша, и не только: www.passwords.ru

Брутфорс паролей с помощью John the Ripper (ч.1)

John the Ripper — одина из самых популярных программ для перебора паролей. Она способна выполнять брут-форс, как с использованием ЦП, так и видеокарты.

Для брут-форса на видеокарте вам понадобятся установленные драйвера. Если вы работаете на Windows, значит они скорее всего уже установлены, если на Linux, то далее будет инструкция как их установить.

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

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

В Kali Linux

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

sudo apt update && sudo apt full-upgrade -y

Установка видео драйверов для NVIDIA в Linux

sudo apt install -y ocl-icd-libopencl1 nvidia-driver nvidia-cuda-toolkit

Примечание: Одна слово внизу это не отдельная команда, это просто всё не поместилось в одну строку. nvidia-cuda-toolkit пишем слитно

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

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

sudo apt install firmware-misc-nonfree intel-opencl-icd

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

sudo apt install build-essential libssl-dev yasm libgmp-dev libpcap-dev libnss3-dev libkrb5-dev pkg-config

wget https://github.com/openwall/john/archive/bleeding-jumbo.zip

unzip bleeding-jumbo.zip

rm bleeding-jumbo.zip

cd john-bleeding-jumbo/src/

./configure && make

В последней команде вы можете использовать опцию -j после которых указать количество логических ядер вашего процессора. Например, если у вас 8, логических ядер, тогда:

./configure && make -j8

Переходим в папку run:

Вы можете переместить папку run в удобное вам место и запускайте John оттуда.

Как установить John the Ripper в Windows

1) Сначала установим Cygwin.

Заходим на https://www.cygwin.com/ и скачиваем файл setup-x86_64.exe, затем устанавливаем.

2) Затем переходим на

и скачиваем файл winX64_1_JtR.7z.

3) Распакуйте содержимое этого архива в папку C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ. Например, у меня пользователь user, поэтому я распаковываю в папку C:\cygwin64\home\user\.

4) В папке C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run найдите cygOpenCL-1.dll и переименуйте его в cygOpenCL-1.dll.bac.

5) Ищем в c:\Windows\System32 файл OpenCL.dll и копируем его в папку C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run\.

6) Затем в папке C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run\ переименуйте файл OpenCL.dll в cygOpenCL-1.dll.

Для чего это всё нужно. Сygwin64 позволяет задействовать видеокарту для перебора. Однако то, что мы сейчас проделали может сработать не у всех. Если у вас что-то не получилось или пошло не так, вы можете использовать для взлома центральный процессор или встроенную графику.

7) Открываем командную строку и пишем

C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run\john —test=0

Можете также запустить бенчмарк системы

C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run\john —test

Теперь проверим, какие устройства видит John the Ripper

На Kali Linux

Если вы всё также находитесь в папке run пропишите

./john —list=opencl-devices

Появится список устройств которые видит программа

На Windows

C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run\john — list=opencl-devices

Как использовать видеокарту для взлома в John the Ripper

Некоторые алгоритмы можно взламывать только при помощи ЦП, некоторые поддерживают и ЦП и видеокарту.

Чтобы посмотреть смотреть список алгоритмов для взлома на OpenCL:

./john —list=formats —format=opencl

Примечание

Далее буду писать команды только для linux. Для Windows всё тоже самое, только другое начало команды. Вам нужно писать

C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run\jonh .

Например, для предыдущей команды

C:\cygwin64\home\ИМЯ-ПОЛЬЗОВАТЕЛЯ\JtR\run\jonh —list=formats —format=opencl

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

Чтобы включить видеокарту, нужно использовать опцию —format и явно указать алгоритм, который поддерживает OpenCL.

Например, для алгоритма md5crypt:

./john —test —format=md5crypt-opencl

Чтобы взламывать md5crypt на ЦП, пишем:

./john —test —format=md5crypt

Как использовать видеоядро ЦП

Делается это при помощи опции -dev. Вы сможете указать устройство для выполнения вычислений: gpu (дискретная графика) или cpu (интегрированная графика).

Запуск проверки скорости на видео ядре процессора:

./john —test —format=md5crypt-opencl -dev=cpu

Запуск проверки скорости на видео ядре выделенной видеокарты (по умолчанию):

./john —test —format=md5crypt-opencl -dev=gpu

Настраиваем параметры

Перед тем как приступать к работе, нужно обязательно настроить программу под себя. В той же папке run находится файл john.conf , который содержит множество опций.

Открыть его можно при помощи обычного текстового редактора.

Да инфы там много, но всё же советую пройтись и ознакомиться.

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

Настраивается параметром AbortTemperature. По умолчанию стоит:

AbortTemperature = 95

Параметр SleepOnTemperature отвечает за то, на какое время (в секундах) программа остановится для охлаждения железа. По умолчанию

SleepOnTemperature = 1

Т.е. температура будет поддерживаться на уровне 95 ℃

John the ripper как пользоваться

Программа «John the ripper» служит для восстановления забытых паролей. Официальный сайт программы — http://www.openwall.com/john/

Устанавливать надо из исходников. Можно взять исходники версии 1.7.3.1 (или более старую 1.7.2, которая считается стабильной). Распаковать архив в отдельный каталог. Зайти в подкаталог src , запустить make . В ответ сборка не пойдет, а будет выдан список целевых систем, под которую возможна компиляция. Надо найти в списке нужный тип, и дать соответсвующую команду, например:

# make clean linux-x86-mmx

В результате запустится компиляция. Результирующий бинарник будет лежать в каталоге run .

По непонятной причине, John не работает с MD5, хотя в документации написано, что программа знает MD5. Чтобы поддержка MD5 заработала, надо наложить патч.

Для версии 1.7.2 патч раньше можно было взять по ссылке:

но теперь такого файла нет.

Для версии 1.7.3.1 патч находится по ссылке:

Из этих двух ссылок примерно понятно, как может называться файл патча для других версий.

Установить патч можно следующим образом. Заходим в каталог с сырцами (он может называться, например, john-1.7.3.1). Кладем тутда файл патча. Потом там же даем команды вида:

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

Как пользоваться John the ripper

Чтобы начать подбор пароля, надо сделать файл, который будем скармливать в программу. Формат файла такой:

Логины можно указывать произвольные, они нужны только для того, чтобы запросить у John результат подбора конкретного пароля, так как John может перебирать одновременно несколько паролей. Если надо подобрать один пароль, то файл просто будет содержать одну строку, например:

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

Чтобы запустить перебор паролей, от которых известны MD5, надо дать команду вида:

# ./john —format=raw-MD5 —incremental:alnum password_skype.txt

Надо обратить внимание, что в качестве формата нужно указывать «raw-MD5» а не «MD5». Кроме того, код хеша должен быть записан с использованием строчных (т.е. маленьких) букв a, b, c, d, e, f. Если эти буквы будут большие, хеш не прочитается.

Когда перебор закончится, можно и посмотреть что там удалось найти:

# ./john -show password_skype.txt

Вот какие возможны варианты перебора:

1. Brute force

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

2. Перебор по словарю

# john -w:wordlist passwd.txt

где wordlist — имя файла словаря со словами для перебора

3. Incremental mode

# john -i passwd.txt

— это самый сильный способ перебора, 95 символов.

# john -i:alpha passwd.txt

— это перебор с использованием 26 символов от ‘a’ до ‘z’.

4. Single mode

# john -single passwd.txt

Слабенький способ перебора. Быстро подберёт пароли похожие либо совпадающие с логином пользователя. Рекомендуется сначала всегда использовать данный способ т.к. он быстрее чем перебор по словарю.

John The Ripper — полное руководство

Я уже не раз в своих статьях, посвященных безопасности сетей, говорил о том, что администратору необходимо выявлять наличие нестойких паролей в своей системе. Именно из-за того, что пользователи выбирают слабые пароли, и производится много незаконных вторжений в, кажется, сильно защищенную систему. В данной статье речь пойдет о программе John The Ripper, позволяющей расшифровывать пароли пользователей в системах Unix.

Я не хочу утверждать, что эта статья целиком посвящена администраторам. Наоборот, я адресую эту статью в первую очередь обычным пользователям. Именно их часто одолевает лень разобраться в какой-либо программе полностью. Порой они даже не догадываются о том, сколько полезных функций заложено программистами. Используя все настройки, принятые по умолчанию, они запускают программу без каких-либо аргументов, пытаясь добиться от нее максимального результата в кратчайшие сроки. В сложных программах такого практически не бывает, поэтому зачастую программа «забрасывается» до лучших времен либо используется не на полную катушку. В администрировании такая халатность может привести к серьезным последствиям. Поэтому я и решил сделать подробное руководство по программе John The Ripper, как одной из лучших расшифровщиков паролей для Unix систем.

Для того чтобы использовать программу John The Ripper, вам понадобится копия файла с паролями. Очень часто у пользователей, заглянувших впервые в файл etc/passwd либо же etc/shadow, появляется слишком много вопросов. Сейчас я постараюсь кратко объяснить, как же устроен файл etc/passwd . В этом файле находится список всех пользователей. Для каждого пользователя отведена отдельная строка, которая описывает его учетную информацию. Рассмотрим на примере формат одной из таких строк:

root:qVbsxDKZ7lKxA:0:0:root:/root:/bin/bash .

В этой строке поля разделены двоеточиями. Эта строка разбивается на следующие части. root, в нашем случае, — это имя пользователя, т.е. его логин в системе; qVbsxDKZ7lKxA — это закодированный пароль пользователя root. Всего различных способов кодирования пароля 4096, так что очень маловероятно, что если у двух разных пользователей одни и те же пароли, то и в зашифрованном виде они будут выглядеть одинаково. 0, который следует сразу же за зашифрованным паролем, — это входной идентификационный номер пользователя. Обычно первые 100 идентификационных номеров зарезервированы для административных целей, так что желательно, чтобы идентификационные номера пользователей были больше 100, да и к тому же для каждого пользователя уникальными. Следующим за идентификационным номером пользователя идет идентификационный номер группы пользователя. Это создано из-за того, что большинство групп состоят более чем из одного пользователя, поэтому пользователи, принадлежащие к одной группе (идентификационные номера группы у пользователей равны), могут иметь общие файлы. Таким образом, доступ к таким файлам будет разрешен только членам этой группы и никому другому (кроме пользователя root, конечно:). Имена и номера групп должны быть определены в файле etc/group . За идентификационным номером группы следует место для комментария, обычно там указывается полное имя пользователя, однако здесь может располагаться любая другая информация. /root — это начальный каталог пользователя. /bin/bash — оболочка пользователя, принимаемая по умолчанию. Вот и весь формат файла. Таким образом, для каждого отдельного пользователя отведена одна строка, что, на мой взгляд, очень удобно для системного администратора.

Теперь приступлю к описанию самой программы. Сначала, вы должны получить копию файла паролей. Если вы, воспользовавшись правами root’a, получили файл, содержащий так называемые теневые (shadow) пароли, то вам понадобится преобразовать этот файл в нормальный вид, выполнив следующую команду: unshadow /etc/passwd /etc/shadow > passwd.1 . Таким образом, получится файл ‘ passwd.1′, содержащий зашифрованные пароли пользователей, который нам в дальнейшем и понадобится для расшифровки. Если вы собираетесь расшифровывать AFS или NT пароли, то вам необходимо для этого использовать программу ‘unafs’, входящую в поставку John The Ripper, или cкачать утилиту PWDUMP (ftp://samba.anu.edu.au/pub/samba/pwdump/), соответственно. Предположим, что вы получили файл паролей, ‘passwd.1’, и хотите начать его расшифровку. Самый легкий способ состоит в том, чтобы использовать заданный по умолчанию порядок режимов расшифровки. Для этого необходимо выполнить следующую команду: john passwd.1 . В результате John The Ripper начнет расшифровку с режима ‘single crack’, затем будет использован режим ‘wordlist’, и, наконец, вы дойдете до последнего режима работы программы под названием ‘incremental mode’. Для увеличения скорости расшифровки при помощи подбора паролей по словарю рекомендуется воспользоваться большим словарем паролей, т.к. словарь, поставляющийся с самой программой, невелик. Если у вас есть такой словарь, то вам необходимо в файле john.ini отредактировать строку, указывающую на применение другого словаря. Например, если словарь с паролями носит название ‘passwordlist’, то в файле john.ini вам необходимо найти строку ‘Wordfile =’ и написать следующее: Wordfile = ~/passwordlist .

Теперь, когда вы получили некоторое количество расшифрованных паролей, они будут сохранены в файле john.pot . Для того чтобы их просмотреть, выполним следующую команду: john -show passwd .1. Если список учетных записей становится все больше и больше, не помещаясь на экране, то вы можете использовать переадресацию вывода. Для тех, кто не знает, что это такое, поясню. Используя символ ‘>’, вы можете перенаправить результаты выполнения команды сразу в файл. Далее, вы можете обратить внимание на то, что если в файле учетных записей находятся записи о блокировании доступа к шеллу, то у вас есть возможность заставить John’a игнорировать эти учетные записи. Если предположить, что блокированный доступ к шеллу носит название ‘/etc/expired’, то запустим программу со следующими опциями: john -show -shells:-/etc/expired passwd.1 . Для краткости можно также использовать сокращенный путь, который будет соответствовать любому пути, например, ‘/any/path/expired’: john -show -shells:-expired passwd.1 . Если у вас появилось желание проигнорировать какую-либо другую оболочку, например, ‘/etc/newuser’, то внесем в нашу команду небольшие изменения: john -show -shells:-expired, newuser passwd.1 . Тут следует заметить, что, начиная с версии 1.4, синтаксис программы немного изменился в лучшую сторону. Теперь вы можете сокращать команды.

Как и в любой другой системе, взломщик пытается получить наивысшие привилегии в системе. В ОС Unix такой учетной записью является root или же любая другая учетная запись, имеющая идентификатор 0. Для того чтобы проверить, расшифровался ли такой пароль, выполняем команду: john -show -users:0 passwd.1 . Если таких файлов с паролями у вас не один, а несколько, то для того, чтобы просмотреть все файлы, вы можете обойтись одной лишь командой: john -show -users:0 passwd.* . Если вам понадобилось узнать расшифрованный пароль какого-либо пользователя, например root’a, выполним следующее: john -show -users:root passwd.1 . И, наконец, для просмотра всех расшифрованных паролей пользователей, принадлежащих к привилегированным группам, нам поможет команда: john -show -groups:0,1 passwd.1 .

Однако же, если вы хотите использовать какой-нибудь из режимов расшифровки в отдельности, например ‘single crack’, авторы этой программы также предусмотрели это и включили в свой продукт выбор различных режимов. В нашем случае команда будет выглядеть следующим образом: john -single passwd.1 . Я уже говорил о том, что синтаксис программы изменился, поэтому результат выполнения команды: john -si passwd.1 будет таким же, как и результат выполнения предыдущей команды. Если у вас имеется сразу несколько файлов с зашифрованными паролями, то вам поможет следующая команда: john -single passwd.1 passwd.2 или даже john -single passwd.*, что во многих случаях сокращает запись исполняющихся команд.

Допустим, что после использования режима ‘single crack’ у вас расшифровались не все пароли. Следующим шагом к раскрытию всех зашифрованных паролей вы можете применить более мощный режим расшифровки — подбор паролей по словарю. Однако этот метод будет хорош для угадывания паролей лишь тех пользователей, которые не позаботились как следует о своей безопасности и выбрали в качестве своего пароля легко подбираемое слово. Поэтому мы будем использовать опцию wordlist: john -w:words.lst passwd.1 . Для любителей наглядности предлагается использовать длинный синтаксис параметров: john — wordfile=words.lst passwd.1 . Однако то же самое можно записать и кратко: john -w=words.lst passwd.1 . Для атаки перебора паролей по словарю, используя специальные правила, нужно в командной строке написать следующее: john -w:words.lst -rules passwd.1 . Но данный метод работает медленнее, чем атака по словарю без использования опции ‘rules’, однако это повышает ваши шансы расшифровать большинство слабых паролей, чтобы не тратить время на их расшифровку впоследствии. Поэтому я рекомендую не пренебрегать данной опцией.

Теперь рассмотрим следующий пример. Допустим, у вас набралось много паролей пользователей, которые не имеют доступ к шеллам, и вы не желаете тратить время на подбор паролей к их учетным записям. Вы можете указать john’y, чтобы тот не подбирал пароли для таких пользователей: john -w:words.lst -rules -shells:sh, csh, tcsh, bash passwd.1 . Этот вариант перебора работает во всех режимах. Хочу заметить, что для взломщика, атакующего систему, пароли пользователей, не имеющие доступа к шеллам, представляют наименьшее значение, поэтому основной упор он будет делать именно на пользователей с доступом к шеллам, ну и, конечно же, на суперпользователя — root’a. Подобно всем другим режимам взлома паролей, для того, чтобы как можно быстрее расшифровать все файлы, вам необходимо при расшифровке использовать сразу все файлы с паролями: john -w:words.lst -rules passwd.* . При этом вы сэкономите уйму времени, потому как если в одном файле на взлом пароля root’a у вас может уйти много времени, то при использовании сразу несколько файлов шансы на быструю расшифровку увеличиваются за счет одновременного подбора паролей сразу ко всем пользователям. Ну, а далее все зависит только от скорости вашего процессора.

Так же как и в предыдущих режимах взлома, у вас присутствует возможность расшифровки каких-то отдельных паролей. Следующая команда производит расшифровку всех root’ов (универсальный идентификатор 0) во всех файлах паролей: john -w:words.lst -rules -users:0 passwd.* . Для альтернативы, если вы не желаете тратить впустую время на расшифровку ваших собственных паролей, будучи уверенным в том, что они не взламываемые: john -w:words.lst -rules -users:-root, solar passwd.* . Иногда полезно разбить ваши файлы паролей на две части, которые впоследствии можно будет расшифровывать в отдельности: john -w:words.lst -rules -salts:2 passwd.* и john -w:words.lst -rules -salts:-2 passwd.* .

В результате это приведет к попыткам John’a взломать два или более паролей как можно быстрее, а затем уже после этого программа будет пробовать расшифровать все остальные пароли. Общее количество времени, потраченное на взлом, будет относительно тем же, но у вас появляется возможность получить некоторые пароли раньше, поэтому в результате расшифровки вы уже можете не нуждаться в подборе остальных. Например, John подобрал пароль для суперпользователя root. При этом вы достигли максимальных привилегий, потому как все, что могут делать обычные пользователи, может делать root. Однако ни у кого, кроме него, не существует таких высоких полномочий (если в системе только один суперпользователь с уникальным идентификатором 0). Пароли других пользователей могут понадобиться только лишь в том случае, если вход в систему под именем root запрещен. Тогда вам нужно будет добыть пароль какого-нибудь пользователя. Под ним зайти в систему, а уже после этого, зная пароль пользователя root, попытаться поднять свои привилегии до рутовских.

Наиболее мощный режим расшифровки в программе John The Ripper называется «incremental». Для того чтобы начать перебор зашифрованных паролей в таком режиме, вы можете просто выполнить следующую команду: john -i passwd.1 . В результате выполнения этой команды John будет использовать заданные по умолчанию возрастающие параметры режима, которые определены в файле john.ini в разделе [Incremental:All] . В файле конфигурации, снабженном John’ом, эти параметры должны использовать все 95 символов и пробовать все возможные длины пароля, от 0 до 8. (Нулевой длиной пароля автор программы считает хэш, представляющий собой пустую строку, поскольку такие пароли тоже иногда могут попадаться). Не следует ждать того, что перебор всех возможных паролей закончится в разумное время, так как если пароль действительно стойкий, то подобрать его на обычном компьютере не реально.

В некоторых случаях, для повышения быстродействия, необходимо использовать некоторые другие предопределенные возрастающие параметры режима и только расшифровывать более простые пароли, с ограниченным количеством набором символов. Следующая команда будет пробовать подбирать пароль, используя только 26 различных символов, т.е. мы будем использовать все маленькие латинские буквы от ‘a’ до ‘z’. Возможные комбинации паролей будут варьироваться от от ‘а’ до ‘zzzzzzzz’: john -i:alpha passwd.1 . Опять же, вы можете расшифровывать только учетную запись root’a и использовать некоторые другие возможности John’a с использованием режима ‘incremental’. Эта команда попробует расшифровать все учетные записи с универсальным идентификатором 0 во всех файлах паролей, имеющих расширение ‘pwd’: john -i -users:0 -salts:2 *.pwd . Если вы получили файл паролей, в котором много паролей уже расшифрованы, при этом большинство из подобранных паролей являются уникальными, то вы могли бы сгенерировать новый файл символов, основанный на символах только из этого файла паролей: john -makechars:custom.chr passwd.1 . Тогда вы сможете использовать полученный файл для режима ‘incremental’. Кроме этого, вы можете использовать некоторые предопределенные фильтры слов при создании файла символов, в результате этой команды программа будет пробовать подобрать более простые слова для расшифровки паролей: john -makechars:my_alpha.chr -external:filter_alpha passwd.1 .

Если ваш файл john.pot стал достаточно большим, то вы могли бы использовать этот файл для создания нового файла символов:

john -makechars:all.chr

john -makechars:alpha.chr -external:filter_alpha

john -makechars:digits.chr -external:filter_digits

john -makechars:lanman.chr -external:filter_lanman

В примере, показанном выше, John запишет поверх старых файлов с символами новые файлы, которые сгенерируются и будут основаны только на файле john.pot (John The Ripper использует именно этот файл для генерации всех возможных символов, если вы не укажете для этого какой-нибудь другой файл с паролями). Обратите внимание, что фильтры слов, используемые в этом примере, предопределены в конфигурационном файле john.ini и поставляются для вашего же удобства вместе с программой.

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

Теперь рассмотрим файл конфигурации программы John The Ripper. Предположим, что вы обратили внимание на то, что в некоторых файлах паролей большинство пользователей в качестве паролей используют имена для входа в систему с некоторыми изменениями, а именно, они прибавляют к концу логина символы ‘?!’. Тогда вы можете сделать новое правило для режима ‘single crack’ и разместить его в самом начале конфигурационного файла:

Если вы генерируете новый файл символов (его генерацию я описал выше), вы должны будете также это указать в файле john.ini в разделе, относящемуся к режиму ‘incremental’. В самом простом случае это может выглядеть следующим образом:

где ‘Custom’ может быть заменено любым именем. Это заставит John’a использовать только те символы, которые были в подобранных паролях. Для того чтобы указать John The Ripper’y на то, чтобы он при расшифровке использовал и другие символы, вам необходимо в конфигурационном файле записать следующую строку: Extra =! @#$% . В результате записанные после знака ‘=’ символы будут добавляться при расшифровке паролей, но программа будет считать возможность их появления наименее вероятной. Если же вы хотите удостовериться в том, что вместе с вашими дополнительными символами John будет использовать все 95 символов, то вам необходимо записать следующее: CharCount = 95 . Записанная строка подскажет программе выдать предупреждение, если не все из 95 символов будут находиться в полученном файле возможных символов. Тем не менее, вы можете ограничить число различных символов, участвующих в расшифровке паролей, записав вместо 95 другое число, даже если оно превосходит количество символов в сивольной таблице. Вы можете также использовать CharCount, чтобы ограничить число различных символов, которые будут использованы John’ом, даже если charset файл содержит большее количество символов: CharCount = 25 . Если Вы не использовали какие-нибудь фильтры при генерации файлов символов, то установка маленького значения CharCount просто не будет использовать редкие символы при переборе. Для того чтобы установить рамки возможной минимальной и максимальной длин, вам необходимо воспользоваться нижеприведенными строками : MinLen = 6, MaxLen = 8 . Установка значений ‘MinLen’ и ‘MaxLen’ вам может пригодиться в том случае, если в системе используются ограничения на длину возможного пароля, т.е. системный администратор запретил использовать короткие пароли для входа в систему. Однако возможна такая ситуация, когда сам администратор (root) выбрал для конкретного пользователя пароль на свое усмотрение. Причем если вы считаете, что в исследуемой вами системе имеется много коротких паролей, то вы можете установить значение ‘MinLen’ как можно ниже. Это позволит вам сэкономить много времени.

Программу можно найти по адресу: http://www.openwall.com/john/.

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

Компьютерная газета. Статья была опубликована в номере 19 за 2001 год в рубрике soft :: безопасность

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *