Как стать автором
Обновить

Руководство по программе восстановления паролей «John the Ripper»

Как-то у меня появилась необходимость подобрать пароль к пользовательской записи на linux системе, имя пользователя я знал, а вот пароль надо было восстановить старый. Хоть я и имел доступ с правами root'а и мог просто изменить пароль на данного пользователя, но мне стало интересно как можно этот пароль восстановить. После поисков и Интернете и на различных форумах я наткнулся на программку John the Ripper и решил воспользоваться ей.


Итак, согласно википедии:

John The Ripper (JTR)— свободная программа, предназначенная для восстановления паролей по их хешам. Основное назначение программы — аудит слабых паролей в UNIX системах. Программа также может выполнять аудит NTLM хешей, Kerberos, и др. Существуют реализации под различные ОС. Весьма популярна из-за поддержки большого количества хешей, автораспознавания хеша и настраиваемого взломщика. Также поддерживает модули, предоставляющие поддержку MD4 хешей, LDAP и MySQL паролей.


Однако, прежде чем начать разбираться с самим JTR, давайте остановимся на самих паролях в *nix системах.



Немного о паролях.



В Linux пароли шифруются в алгоритме «DES», также есть такая фишка как «salt», это 2е любые буквы, которые являются ключом к паролю, другими словами, с помощью «salt» и шифруется пароль. Подробнее об этом написано в статье «пароли в UNIXе».
Пароли в большинстве случаев хранятся в следующих файлах:



/etc/passwd
/etc/shadow


Хотя могут и лежать в каком-нибудь /etc/shadow.old или /etc/passwd.tmp. Сделав листинг директории /etc/, сразу можно все понять. Просто иногда хитрые админы меняют названия файлов :). passwd файл, это как раз то что нам надо, но в большинстве случаев пароли хранятся в shadow (в тени), в этом случае в passwd видим следующую ситуацию:



root:*:0:0:System Administrator:/root:/bin/csh
rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh


Внимание! Это на самом деле fake, и никаких паролей здесь нет! А вот если видим такую ситуацию:



root:9IDv/CqdFuqWo:0:0:System Administrator:/root:/bin/csh
john:653MWdpUGN3BM:66:1:John Nikolsen, 2-nd west:/home/john:/bin/sh


То можно заметить, что данный пример более похож на правду. Давайте разберемся на примере с пользователем «john»:



john:653MWdpUGN3BM:66:1:John Nikolsen, 2-nd west:/home/john:/bin/sh
  1. john — имя пользователя.
  2. 653MWdpUGN3BM — пароль зашифрованный в DES.
  3. 66:1 — номер пользователя в системе: номер рабочей группы (у root всегда 0:0).
  4. John Nikolsen, 2-nd west — информация о пользователе (обычно Имя, Фамилия…).
  5. /home/john — Домашний каталог.
  6. /bin/csh — shell.

Во Free BSD пароли хранятся в файле /etc/master.passwd, а в остальном технология такая же как и в LINUX, хотя используется более стойкий алгоритм шифрования MD5. В Open BSD, для шифрования используется алгоритм Blowfish.


Ну а теперь о самом JTR и как им пользоваться.



Режимы.



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

  1. Brute force
  2. Перебор по словарю (wordlist mode)
  3. Incremental mode
  4. Single mode (одиночный режим)


Рассмотрим каждый из режимов подробно.



Brute force:

john passwd

(Я в дальнейшем буду использовать passwd как имя файла с паролями, указанной выше структуры)
Данный способ является самым простым, и не очень эффективным, так как JTR начинает перебирать все символы от фонаря, что конечно очень долго… хотя многое зависит от мощности вашего компьютера и от сложности пароля.

Перебор по словарю (wordlist mode):

john -w:wordlist passwd

где wordfile — имя файла со словарем. Также можно и так:

john -w:wordlist -rules passwd

-rules, включает правила синтаксиса для словаря. С вариантом по словарю, пароли подбираются на много быстрее чем в варианте с «Brute force».

Incremental mode:

john -i passwd

Авторы JTR говорят, что это самый сильный способ перебора, 95 символов. А вот таким способом:

john -i:alpha passwd

JTR перепробует 26 символов, от «a», до «zzzzzzzz». Если с wordlist не получилось, советую запускать данный способ.

Single mode (одиночный режим):

john -single passwd

Рекомендуется начать перебирать пароль с данной опцией. Намного быстрее чем wordlist mode, но рассчитан на хиленькие пароли. При переборе нескольких файлов с данной опцией, возможно подобрать пароли быстрее чем просто 1 passwd файл

Опции.



Теперь давайте рассмотрим несколько полезных опции для JTR. Опции можно запускать в любых режимах:-w, -i, -single.

Перебор для конкретного пользователя:

john -w:wordlist -rules -users:0 passwd

Перебирает пароль к конкретному пользователю (в нашем случае root). Что бы указать пользователя, надо после ":" указать UID (номер пользователя в системе).

Смотрим подобранные пароли.

john -show passwd

Показывает уже подобранные пароли, в указанном файле.

Разбиваем файл на куски.

john -w:wordlist -salts:5 passwd
john -w:wordlist -salts:-5 passwd


Иногда бывает полезно (если есть 2 компьютера). Число «5» это количество «salts» (паролей). JTR будет отчитывать с самого верху. В первом примере (на 1ом компе), берется первые 5 пользователей, во втором примере "-5" (на 2ом компе), перебираются все, кроме 5и первых.

Люблю shells.

john -w:wordlist -rules -shells:sh,csh,tcsh,bash passwd

В данном случае, будут перебираться только те пользователи, которые имеют указанные в вышеприведенном примере shell'ы(оболочки).

Несколько passwd файлов.
Если у вас есть несколько файлов с паролями в DES, то их можно всех вместе поставить на расшифровку данным способом:

john -single passwd passwd1 passwd2

Количество файлов по-моему не ограничено :). Способ с несколькими файлами, работает на всех режимах и опциях, просто укажите имена файлов в конце (как в примере).
Unshadow files.

unshadow passwd shadow

Если у вас пароли в shadow, то данной командой, их можно восстановить (требует shadow файл).

Ну вот вроде и все. В данной статье были описаны практически все самые полезные примеры, которым можно найти применение. За более подробной информацией можно обратиться к документации прилагаемой к JTR.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.