Pull to refresh

Руководство по программе восстановления паролей «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.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.