You are here: Home » Атаки на пароли » John the Ripper

John the Ripper

Описание John the Ripper

John the Ripper создан быть многофункциональным и быстрым. Он совмещает несколько режимов взлома в одной программе и полностью настраиваем под ваши конкретные нужды (вы даже можете определить пользовательские режимы взлома используя встроенную поддержку компилятора подмножества C). Также John доступен на нескольких разных платформах, что даёт вам возможность использовать одинаковый взломщик везде (вы даже можете продолжить сессию взлома, которую вы начали на другой платформе).

Из коробки John поддерживает (и автоматически определяет) следующие типы хешей Unix crypt(3): традиционные основанные на DES, "bigcrypt", BSDI расширенные основанные на DES, основанные на FreeBSD MD5 (также используются на Linux и в Cisco IOS) и OpenBSD основанные на Blowfish (теперь также используются на некоторых дистрибутивах Linux и поддерживаются последними версиями Solaris). Также из коробки поддерживаются хеши Kerberos/AFS и Windows LM (основаны на DES), а также основанные на DES трипкоды.

При запуске на дистрибутивах Linux с glibc 2.7+, John 1.7.6+ дополнительно поддерживает (и автоматически определяет) хеши SHA-crypt (которые действительно используются последними версиями Fedora и Ubuntu), с опциональной параллелизацией OpenMP (требует GCC 4.2+, который должен быть явно подключён во время компиляции путём раскомментирования строки со свойством OMPFLAGS ближе к началу файла Makefile).

По аналогии, когда запущен на последних версиях Solaris, John 1.7.6+ поддерживает и автоматически определяет хеши SHA-crypt и SunMD5 с опциональной параллелизацией OpenMP (требует GCC 4.2+ или последнюю Sun Studio, которые должны быть очевидно подключены во время компиляции путём раскомментирования строки со свойством OMPFLAGS в начале файла Makefile и во время выполнения настройках переменной окружения OMP_NUM_THREADS на требуемое количество потоков).

John the Ripper Pro добавляет поддержку для Windows NTLM (основаны на MD4) и хешей с солью Mac OS X 10.4+ SHA-1.

«Улучшенная сообществом» версия — jumbo добавляет поддержку намного большего типов хешей паролей, включая Windows NTLM (основан на MD4), Mac OS X 10.4-10.6 хеши с солью SHA-1, Mac OS X 10.7 хеши с солью SHA-512, сырые MD5 и SHA-1, произвольные основанные на MD5 типы хешей паролей от «веб приложений», хеши используемые базами данных SQL (MySQL, MS SQL, Oracle) и некоторыми серверами LDAP, несколько типов хешей используемых в OpenVMS, хеши паролей Eggdrop IRC bot, и множество других типов хешей, а также много файлов не-хешей, таких как приватные ключи OpenSSH, файлы S/Key skeykeys, Kerberos TGT, PDF файлы, ZIP (классический PKZIP и WinZip/AES) и архивы RAR.

В отличие от более старых взломщиков, John обычно не использует процедуры в стиле crypt(3). Вместо этого он имеет свои собственные высоко оптимизированные модули для различных типов хешей и процессорных архитектур. Некоторые из используемых алгоритмов, таких как bitslice DES, даже не могут имет реализацию внутри crypt(3) API; они требуют более мощных интерфейсов, таких какой используется в John. Кроме того, есть процедуры на языке Ассемблер для нескольких процессорных архитектур, наиболее важные для x86-64 и x86 с SSE2.

Домашняя страница: http://www.openwall.com/john/

Автор: Solar Designer

Лицензия: GPLv2

Пакеты, включённые в John the Ripper

  • mailer – Скрипт предупреждает по почте пользователей об их слабых паролях
  • john – взломщик паролей John the Ripper
  • unafs – Скрипт для предупреждения пользователей об их слабых паролях
  • unshadow – Комбинирует файлы passwd и shadow
  • unique – Удаляет дубликаты из словаря

Справка по John the Ripper

Использование:

john [ОПЦИИ] [ФАЙЛЫ-ПАРОЛЕЙ]
--single[=СЕКЦИЯ]        режим "одного взлома" 
--wordlist[=ФАЙЛ] --stdin режим словаря, читать слова из ФАЙЛА или стандартного ввода
                  --pipe  как --stdin, но объёмное чтение и позволяет правила
--loopback[=ФАЙЛ]         как --wordlist, но получает слова из файла .pot 
--dupe-suppression        подавляет все дубли в словаре (и принудительно перезагружает)
--prince[=ФАЙЛ]           режим ПРИНЦ (PRINCE), читает слова из ФАЙЛА
--encoding=ИМЯ           входящая кодировка (например, UTF-8, ISO-8859-1). Смотрите также
                          doc/ENCODING и --list=скрытые опции.
--rules[=СЕКЦИЯ]         включить правила управления словами для словарного режима
--incremental[=РЕЖИМ]      режим "приращения" [использование секции РЕЖИМ]
--mask=МАСКА               режим маски с использованием МАСКИ
--markov[=ОПЦИИ]        режим "Маркова" (смотри doc/MARKOV)
--external=РЕЖИМ           внутренний режим или фильтр слов
--stdout[=ДЛИНА]         просто выводит кандидаты в пароли [обрезанные по ДЛИНЕ]
--restore[=ИМЯ]          восстановить прерванную сессию [с именем ИМЯ]
--session=ИМЯ            дать новой сессии ИМЯ
--status[=ИМЯ]           напечатать статус сессии [по имени ИМЯ]
--make-charset=ФАЙЛ       сделать файл с набором символов. Он будет переписан
--show[=LEFT]             показать взломанные пароли [если =LEFT, значить невзломанные]
--test[=ВРЕМЯ]             запустить тест и бенчмарк на ВРЕМЯ секунд каждый
--users=[-]LOGIN|UID[,..] только [не] загружать этого (этих) пользователя(ей)
--groups=[-]GID[,..]      только загружать пользователей (не) из этой (этих) группы(групп)
--shells=[-]SHELL[,..]    только загрузить пользователей с(без) этого (этих) шелла(ов)
--salts=[-]КОЛИЧЕСТВО[:МАКСИМУМ]    загрузить соли с(без) КОЛИЧЕСТВОМ [до МАКСИМУМА] хешей
--save-memory=УРОВЕНЬ       включить сохранение памяти на УРОВЕНЕ 1..3
--node=МИНИМУМ[-МАКСИМУМ]/ВСЕГО    номер диапазона этого узла из ВСЕГО числа
--fork=N                  форкнуть N процессов
--pot=ИМЯ                pot файл для использования
--list=ЧТО               список совместимостей, смотри --list=help или doc/OPTIONS
--format=ИМЯ             принудительно задать ИМЯ типа хеша. Поддерживаемые форматы
                          можно увидеть с --list=formats и --list=subformats

Руководство по John the Ripper

ИМЯ

john — это инструмент для поиска слабых паролей ваших пользователей

СИНОПСИС

john [опции] файлы-паролей

ОПИСАНИЕ

John, лучше известный как as John the Ripper, - это инструмент для поиска слабых паролей пользователей на сервере. John может использовать словарь или некоторые поисковые образцы, а также файл паролей для проверки паролей. John поддерживает разнообразные режимы взлома и понимает много форматов зашифрованного текста, вроде нескольких вариантов DES, MD5 и blowfish.Он также может быть использован для извлечения AFS и паролей Windows NT.

ИСПОЛЬЗОВАНИЕ

Для использования John вам нужно указать файл пароля и желаемые опции. Если режим не указан, john будет вначале пробовать «единичный», затем «по словарю» и наконец «приращение».

Как только John находит пароль, он может быть напечатан в терминале и сохранён в файл под названием ~/.john/john.pot. John при перезапуске будет считывать этот файл чтобы не взламывать уже готовые пароли.

Чтобы увидеть уже взломанные пароли используйте

john -show passwd

Важно: делайте это в той же директории, где пароль был взломан (когда используете cronjob, /var/lib/john), иначе это не сработает.

При взломе вы можете нажать любую кнопку для просмотра статуса или Ctrl+C для обрыва сессии, сохранения текущей информации в файл ( по умолчанию ~/.john/john.rec). Между прочим, если вы нажмёте дважды Ctrl+C, то John немедленно остановится без сохранения. На случай вылета, текущая информация также сохраняется каждые 10 минут (это настраивается в файле конфигурации ~/.john/john.ini или ~/.john/john.conf).

Для возобновления прерванной сессии запустите:

john -restore

Теперь вы можете заметить, что многие аккауты имеют отключённый шелл, вы можете сделать так, что John будет игнорировать их (предполагается, что этот шелл называется /etc/expired):

john -show -shells:-/etc/expired passwd

Возможно вам захочется отправить почту пользователям со слабым паролем для того, чтобы они поменяли свои пароли. Это всегда хорошая идея (хотя, к сожалению, большинство людей игнорируют такие письма, это может быть подсказкой для взломщиков), в любом случае, подразумевается, что вы понимаете что делаете. Скрипт 'mailer' поставляется с John, поэтому если вы ничего не меняли, то он в /usr/sbin; отредактируйте сообщение для отправки и, возможно, команду mail внутри него (особенно если файл пароля из другого места, отличного от того, где вы запустили John). Затем запустите:

./mailer passwd

В любом случае, возможно, вам следует взглянуть в /usr/share/doc/john/OPTIONS чтобы увидеть список всех опций командной строки и в /usr/share/doc/john/EXAMPLES для дополнительных примеров использования John с другими режимами взлома

ОПЦИИ

Все опции, которые понимает john, начинаются с единичной чёрточки ('-'). Далее краткая информация по опциям.

-external:РЕЖИМ

Включает внешний режим, использующий внешние функции определённые в секции [List.External:MODE] ~/john.ini.

-format:ИМЯ

Позволяет вам переопределять выявленный формат шифрованного текста. В настоящее время валидными именами форматов являются DES, BSDI, MD5, BF, AFS, LM. Вы можете использовать эти опции при взломе или с '-test'. Обратите внимание, что John не может в одно время взламывать файлы паролей с различными форматами шифрованного декста.

-groups:[-]GID[,..]

Говорит John'у загрузить пользователей только из специфичной группы(групп).

-incremental[:РЕЖИМ]

Включает режим приращения, использующий заданные в ~/john.ini определения (по умолчанию секция [Incremental:MODE] или [Incremental:All])

-makechars:ФАЙЛ

Генерирует файл наборов символов, основанный на частоте символов из ~/.john/john.pot, для использования в режиме приращения. Весь ~/.john/john.pot будет использовать для файла набора символов, если вы не задали несколько файлов паролей. Вы также можете использовать внешнюю процедуру filter() с этой опцией.

-restore[:ФАЙЛ]

Продолжает прерванную сессию взлома, читает информацию о точке остановки из указанного файла (по умолчанию ~/.john/john.rec).

-rules

Включают правила словаря, которые считываются из [List.Rules:Wordlist] в /etc/john/john.conf (или альтернативном конфигурационном файле, который вы могли указать в командной строке).

Также эта опция требует опции -wordlist.

-salts:[-]КОЛИЧЕСТВО

Эта функция иногда позволяет вам достичь улучшенной производительности. Например, вы можете взламывать быстрее только некоторые соли используя '-salts:2', а затем взламывать оставшиеся используя '-salts:-2'. Общее время взлома будет примерно одинаковым, но вы быстрее получите взломанными некоторые пароли.

-savemem:УРОВЕНЬ

Вам может пригодиться эта опция если у вас недостаточно памяти или вы не хотите, чтобы John слишком сильно влиял на другие процессы. Уровень 1 говорит John'у не тратить по напрасну память на имена логинов, поэтому вы не увидите их во время взлома. Более высокие уровни влияют на производительность: вам следует избегать их использование кроме случаев если John не работает или переноситься в swap (своп — файл подкачки).

-session:ФАЙЛ

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

-shells:[-]ШЕЛЛ[,..]

Эта опция полезна для загрузки аккаунтов с только валидными шеллами и незагрузки с плохими шеллами. Вы можете пропустить путь перед именем шелла, так '-shells:csh' будет соответствовать и '/bin/csh' и '/usr/bin/csh', при этом '-shells:/bin/csh' будет соответствовать только '/bin/csh'.

-show

Показывает взломанные пароли в удобной форме. Вам также следует указать файлы паролей. Вы можете использовать эту опцию когда другой John взламывает, чтобы увидеть что он уже сделал.

-single

Включает режим «одиночного взлома», использующий правила из [List.Rules:Single].

-status[:ФАЙЛ]

Печатает статус прерванной или запущенной сессии. Для получения актуальной информации о статуса отсоединённой запущенной сессии, отправьте этой копии John сигнал SIGHUP перед использованием этой опции.

-stdin

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

-stdout[:ДЛИНА]

При использовании с любым режимом взлома, кроме «единичный взлом» делает так, что John печатает слова, которые он генерирует, в стандартный вывод вместо взлома. При применении правил словаря, значительная длина пароля предполагается быть ДЛИННОЙ, или, по умолчанию, неограниченной.

-test

Делает бенчмарк всех включённых форматов шифров взломщика и в это же время тестирует их на корректность операции.

Это опция не требует аргументов. Её единственная функция — это провести бенчмарк системы, на которой работает john.

-users:[-]ЛОГИН|UID[,..]

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

-wordlist:ФАЙЛ

Это используется для включения словарного режима, т. е. чтения слов из ФАЙЛА.

РЕЖИМЫ

John может работать в следующих режимах:

  • Wordlist (словарь)

John просто использует файл со списком слов, которые будут проверяться в качестве кандидатов в пароли. О формате файлов словаря смотрите файл RULES в документации.

  • Single crack (одиночный взлом)

В этом режиме john будет пытаться взломать пароль используя информацию login/GECOS в качестве паролей.

  • Incremental (приращение)

Это самый мощный режим. John будет пробовать любые комбинации символов для восстановления пароля. Подробности об этом режиме, включая информацию об определении своих собственных методов взлома, можно найти в документации john в файле MODES.

ФАЙЛЫ

  • /etc/john/john.conf

здесь вы настраиваете, как john будет себя вести.

  • /etc/john/john-mail.msg

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

  • /etc/john/john-mail.conf

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

Примеры запуска Unshadow

Комбинирует файл passwd (/etc/passwd) и shadow (/etc/shadow) и перенаправляет их в файл (> unshadowed.txt):

root@HackWare:~# unshadow /etc/passwd /etc/shadow > unshadowed.txt

Примеры запуска John the Ripper

Используем словарь (–wordlist=/usr/share/john/password.lst), применяя правила коверкания (–rules), пытаемся взломать пароли хешей в данном файле (unshadowed.txt):

root@HackWare:~# john --wordlist=/usr/share/john/password.lst --rules unshadowed.txt 
Warning: detected hash type "sha512crypt", but the string is also recognized as "crypt"
Use the "--format=crypt" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 128/128 SSE2 2x])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
1                (root)
1g 0:00:00:07 DONE (2015-12-20 07:41) 0.1394g/s 428.4p/s 428.4c/s 428.4C/s ilovegod..mobydick
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Примеры запуска Unique

Использовать вербальный режим (-v), прочитать список паролей (-inp=allwords.txt) и сохранить уникальные пароли в файл (uniques.txt):

root@kali:~# unique -v -inp=allwords.txt uniques.txt
Total lines read 6089 Unique lines written 5083

Установка John the Ripper

Программа предустановлена в Kali Linux.

Установка в Debian, Mint, Ubuntu

Установка зависимостей

  • Требуемые
sudo apt-get install build-essential libssl-dev
  • Рекомендуемые (дополнительные форматы и производительность)
sudo apt-get install yasm libgmp-dev libpcap-dev libnss3-dev libkrb5-dev pkg-config
  • Если у вас NVIDIA GPU (поддержка CUDA и OpenCL)
sudo apt-get install nvidia-cuda-toolkit nvidia-opencl-dev
  • Если у вас AMD GPU (или хотите использовать CPU как OpenCL устройство)
sudo apt-get install fglrx-updates-dev

Опциональная поддержка MPI

sudo apt-get install libopenmpi-dev openmpi-bin

Опциональная поддержка REXGEN (дополнительные режимы взлома)

sudo apt-get install subversion cmake bison flex
mkdir ~/src && cd ~/src
svn checkout http://rexgen.googlecode.com/svn/trunk/ rexgen
cd rexgen/src
mkdir build && cd build
cmake ..
make && sudo make install

Клонируем самую свежую версию John (в варианте Jumbo — с дополнительным функционалом от сообщества) и собираем

  • Клонируем репозиторий GIT
cd ~/src
git clone git://github.com/magnumripper/JohnTheRipper -b bleeding-jumbo john
  • Собираем
cd ~/src/john/src
# Для MPI используйте ниже './configure --enable-mpi'
./configure && make -s clean && make -sj4
  • Протестируйте вашу сборку
../run/john --test=0 --format=cpu

Дополнительные подсказки для компиляции:

Эта версия Jumbo имеет autoconf, поэтому она поддерживает очень распространённые цепи:

./configure && make

Возможно при сборке вы захотите использовать опцию "-s", которая подавит нормальный вывод и напечатает только предупреждения и ошибки. Для многоядерных хостов вы также можете добавить при сборке, к примеру, "-j4" для использования 4 ядер параллельно. Это можно записать вместе:

./configure && make -sj4

Опция -j не работает нормально с "чистой" целью, поэтому если вы хотите использовать её, то делайте это раздельно:

./configure && make -s clean && make -sj4

./configure должна найти и включить все дополнительные вещи, которые у вас есть, включая OMP, OpenCL, CUDA и дополнительные вышеупомянутые библиотеки. Единственным исключением является MPI, для включения которого нужно указать опцию "--enable-mpi":

./configure LDFLAGS=-L/opt/lib CFLAGS="-O2 -I/opt/include" && make

ВНИМАНИЕ! Если вы передаёте CFLAGS как выше, то, возможно, вы также заходите добавить "-O2", поскольку она (и "-g") будут только добавлены автоматически с указанным при старте не пустым CFLAGS. Это функция макросов autoconf, а не конкретно JtR.

Если у вас сломанный pkg-config (например, жалуется на отсутствие OpenSSL даже если он есть) вы можете отключить его использование в конфигурации:

./configure --disable-pkg-config

Вы также можете отключить определённые функции, которые вы не хотите, к примеру:

./configure --disable-openmp && make

Если у вас проблемы с функциями autoconf, вы можете вернуться к устаревшему Makefile таким образом:

make -f Makefile.legacy

Вы получите список операционных систем для которых существует специфичная поддержка. Укажите цель для make вашей системы и напечатайте:

make -f Makefile.legacy clean SYSTEM

где SYSTEM — это подходящая цель для make. Если ваша система отсутствует в списке используйте:

make -f Makefile.legacy clean generic

Если всё прошло хорошо, то будут созданы исполнимые файлы для John и сопутствующих утилит в "../run/". Вы можете поменять директорию и запустить John примерно так:

cd ../run
./john --test

В качестве варианта, вы можете скопировать всю директорию "run" в любое место по вашему выбору и использовать John там.

Установка в Windows

Для Windows имеются скомпилированные исполнимые файлы. Перейдите на официальный сайт http://openwall.com/john/ и скачайте архив в котором упоминается слово «Windows».

Распакуйте архив.

Это утилита командной строки, поэтому запускать её нужно из консоли. Откройте окном командной строки нажатием Win+x, выберите там «Командная строка». Перетащите в открытое окно желаемый для запуска файл и нажмите ENTER:

01

02

Примечание по переносу бинарников между системами

При указании цели make как "generic", конкретные параметры производительности машины определяются во время компиляции. Дополнительно некоторые ОС-специфичные цели make говорят компилятору C сгененировать и оптимизировать код под специфичный для этой машины тип CPU (в настоящее время это применимо из C компиляторов только к gcc). Если вы переместите затем исполнимые бинарники на другую машину, то вы можете получить не самую лучшую производительность, или программа вообще не запустится из-за отсутствия функций CPU, которые предполагались C компилятором. Таким образом, рекомендуется перекомпилировать John на каждой системе если вы используете одну из этих целей make.

Поскольку распространяемые пакеты Linux и *BSD John'а обычно используют цели make за исключением "generic" и поскольку обычно используется gcc, они обычно не подвержены этой потенциальной проблеме.

Оптимальная сборка на OS X (для Jumbo)

Используя OS X, вы можете установить Xcode (бесплатно) и за тем её "инструменты командной строки" и затем нормальная сборка должна прекрасно работать. Тем не менее, используя родной gcc (который на самом деле clang) приводит к неоптимальной производительности и некоторые форматы недоступны из-за древней OpenSSL.

Здесь описано как сделать наилучшее из возможного под ваше железо. Есть альтернативные варианты которые, возможно, работают хорошо, но эта инструкция для «Homebrew»:

1. Установите Homebrew: http://mxcl.github.io/homebrew/

2. Установите gcc и openssl от Homebrew :

brew install gcc openssl
brew link --force openssl

3. Из директории John "src":

cp -avi osx_as_wrapper.sh /usr/local/bin/as

4. Привяжите полученную gcc версию, которую вы получили от Homebrew к просто "gcc" в директории /usr/local/bin. Этот пример для gcc-4.7:

ln -s gcc-4.7 /usr/local/bin/gcc

5. Убедитесь, что /usr/local/bin preceeds /usr/bin в вашем $PATH

После проделанного вы должны быть способны получить оптимальную сборку с AVX и/или любыми дополнительными функциями, которые имеет ваш CPU.

CUDA на OS X

Загрузите CUDA с Nvidia и установите её. Если кроме жалоб по поводу llvm-gcc других ошибок не найдено, то попробуйте это (пример Homebrew):

brew install llvm-gcc-28
sudo ln -s /usr/local/Cellar/llvm-gcc28/2.8/bin/llvm-gcc /usr/bin/llvm-gcc-4.2

После этого у вас должно получиться собрать с дефолтным Makefile.

Скриншоты John the Ripper

Это утилита командной строки.

Инструкции по John the Ripper

Близкие программы:

Рекомендуемые статьи: