John the ripper для linux

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

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» — лишь строчные латинские буквы. Также есть возможность создания своего подрежима инкрементного режима. Подробнее — в документации.

Читайте также:  Asus atk0110 acpi utility windows 10

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 (без параметров) для возврата к прерванной сессии. Для удаления сессии, дайте команду mdcrack -d.

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

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

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

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

Источник

Взлом паролей с помощью John the Ripper на Linux

Для тех из вас, кто еще не слышал о John the Ripper (здесь для краткости его называют John), это бесплатный инструмент для взлома паролей, написанный в основном на языке C.

Читайте также:  Cubase windows или mac

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

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

Взлом паролей с помощью John the Ripper на Linux

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

Установка Джона

Хотя, по крайней мере, в тех дистрибутивах, которые мы пробовали, пакет в названии просто “john” с Gentoo, делающим исключение и называющим его “johntheripper”, мы упростим его для вас и покажем, как установить его на несколько известных дистрибутивов.

Дистрибутив Debian

Debian отличается от других дистрибутивов, которые предлагают John в своих репозиториях, тем, что он предлагает хорошую страницу руководства, хотя у upstream ее нет. Для установки просто введите

# aptitude install john

Fedora

На Fedora, тоже легко установить.

Arch Linux

OpenSuse Linux

# zypper install john

Gentoo

Как мы уже говорили, пакет Gentoo назван иначе, чем другие предложения.

# emerge Johntheripper

Slackware

Хотя в официальных репозиториях, похоже, нет пакета john, есть slackbuild, который устанавливает John в вашу систему (это было протестировано на Slackware 13.37).

Хотя мы дали вам всего несколько примеров того, как Вы можете получить John в своей системе Linux, многие из представленных примеров будут работать, если у вас установлена другая ОС: помимо исходного кода, проект предлагает программу для BeOS, Microsoft Windows, Solaris или MacOS X. Но для нашей статьи, как говорится в названии, мы протестировали примеры на Linux.

Использование Джона Потрошителя

Вам не нужно беспокоиться о зашифрованных конфигурационных файлах, так как Джон готов к использованию с соответствующими флагами командной строки без каких-либо других усилий с вашей стороны. Однако одно предупреждение: как Вы уже заметили, мы сообщаем нашим читателям, когда они должны использовать привилегии root, а когда нет. За исключением отмеченных случаев, вам настоятельно рекомендуется использовать вашего обычного повседневного пользователя (или другого, если Вы предпочитаете, но он не должен иметь прав суперпользователя). В моей системе Debian John доступен как /usr/sbin/john, поэтому, если Вы его не нашли, мы рекомендуем вам использовать whereis и ввести весь путь при запуске john unprivileged (или Вы можете просто создать псевдоним).

Теперь давайте создадим текстовый файл в формате пароля ( : ) с допустимым хэшем, конечно, и заставим Джона работать. Вы можете просто скопировать пользователя из /etc/shadow, но мы рекомендуем что-то более простое, потому что мы предполагаем, что Вы хотите увидеть результаты как можно быстрее. Итак, создайте файл с именем password.txt где-нибудь внутри вашего /home и положите это в него:

Сохраните файл, а затем просто скормите его Джону без каких-либо аргументов (на данный момент):

$ /usr/sbin/john password.txt

Мы должны повторить наше предупреждение: взлом паролей-это трудоемкий и длительный процесс, поэтому в зависимости от вашей системы это может занять довольно много времени. Однако это также зависит от того, чего Вы хотите достичь, потому что если ваш мощный процессор не может подобрать пароль(и) в течение нескольких дней без результата, можно только с уверенностью сказать, что это хороший пароль. Но если пароль действительно критичен, оставьте систему до тех пор, пока Джон не закончит свою работу, чтобы убедиться, что все в порядке. Как мы уже говорили, это может занять много дней.

Читайте также:  Openvpn dns leak windows

Один из способов-использовать /etc/shadow напрямую, но мы рекомендуем вам выбрать несколько иной курс. Обратите внимание, что это относится к системам, использующим теневые пароли, и все современные дистрибутивы Linux делают это. Джон предлагает отличную утилиту под названием unshadow, которую мы будем использовать для создания файла из наших файлов passwd и shadow:

# unshadow /etc/passwd /etc/shadow > mypasswd.txt

Теперь убедитесь, что mypasswd.txt доступен для вашего обычного пользователя и делать

$ /usr/sbin/john mypasswd.txt

Джон сначала попробует режим одиночного взлома, затем режим списка слов, а затем инкрементный. С точки зрения Джона, режим-это метод, который он использует для взлома паролей. Как Вы знаете, существует много видов атак: словарные атаки, атаки грубой силы и так далее. Как некоторые из вас, возможно, поняли, режим списка слов-это в основном атака словаря. Помимо этих трех режимов, перечисленных выше, Джон также поддерживает еще один, называемый внешним режимом. Вы можете выбрать, какой режим использовать, например, –single, –external и так далее. Мы рекомендуем вам ознакомиться с документацией по адресу openwall.com для хорошего, но краткого описания каждого режима. Но, конечно, мы расскажем вам, вкратце, что делает каждый режим.

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

Если Джон будет успешной в крекинг-один из паролей, он будет писать в

/.john/john.pot. Однако этот файл не читается человеком, поэтому Вы можете читать взломанные пароли с помощью

$ /usr/sbin/john —show mypasswd.txt

Чтобы проверить, не взломан ли пароль root, отфильтруйте его по UID:

$ /usr/sbin/john —show —users=0 mypasswd.txt

Конечно, Джон знает о подстановочных знаках и нескольких файлах:

$ /usr/sbin/john —show —users=0 *passwd*

Точно так же, как Вы можете фильтровать по пользователю, Вы также можете фильтровать по группе, используя флаг –groups, и эта фильтрация доступна также при взломе. Переходя далее к режиму списка слов, вот как Вы можете использовать его с включенными встроенными правилами искажения:

$ /usr/sbin/john —wordlist=passwd.lst —rules passwd.txt

Джон также позволяет создавать несколько именованных сеансов, что практично, потому что, поскольку Джон может занять много времени для выполнения задачи, Вы можете позже просмотреть все запущенные сеансы, чтобы решить, какой из них убить. Вариант для именованных сеансов –сессии=имя задачи, и Вы можете использовать –статус или … статус=название задачи, чтобы увидеть всех или отдельных сессий. Но есть и еще кое-что: Вы можете восстановить сеансы или определенные из них по имени, используя –restore или –restore=task name. Несколько примеров:

$ /usr/sbin/john —session=allrules —wordlist=all.lst —rules mypasswd.txt

$ /usr/sbin/john —status=allrules

$ ps aux | grep john #get the PID of the john session you want to kill

$ kill HUP $PID_of_john_session_to_kill $ /usr/sbin/john —restore=allrules

Вот несколько примеров использования инкрементного режима с Джоном:

$ /usr/sbin/john —incremental mypasswd.txt

$ /usr/sbin/john —incremental=alpha mypasswd.txt

Конечно, это не замена документации Джона. Хотя, как мы уже говорили, он не предлагает страницы руководства, Вы найдете много документации на его странице, а также полезную вики-страницу. Например, Вы заметите, что даже если Вы используете John на многопроцессорной машине, она будет использовать только одно ядро, обычно первое. Вы можете решить эту проблему, прочитав документацию и следуя приведенным там инструкциям.

Источник

Оцените статью