John the Ripper - это кроссплатформенный пакет с открытым исходным кодом, который обычно используется для аудита безопасности паролей и их восстановления. В этом руководстве мы рассмотрим, как использовать John the Ripper в Kali Linux.
В Kali Linux John the Ripper уже предустановлен, поэтому устанавливать ничего не нужно! Просто возьмите пакет и отправляйтесь в путь.
Сценарий №1: Вы только что получили хэш-пароль
Итак, предположим, что вам только что передали хэш, точнее, MD5-хэш. В реальной ситуации такой хэш можно получить, обыскав компьютер. В моем случае я собираюсь использовать слово password123:
1 | echo 482c811da5d5b4bc6d497ffa98491e38 > hash.txt |
Для разгадывания пароля используется простейший вариант кода john the ripper:
1 | john hash.txt |
Как правило, John the Ripper автоматически определяет тип хэша. Но вы можете дополнить его по своему усмотрению! Допустим, вы хотите добавить свой собственный список слов и указать формат, тогда вы напишете:
1 | john --wordlist=~/Downloads/passwordlist --format=Raw-MD5 hash.txt |
Таким образом, при первом запуске программа выведет пароль на экран, после чего сохранит его в файл с именем john.pot. В моем случае папка john.pot находилась по адресу
1 | /home/kali/.john/john.pot |
Сценарий №2: Zip-файл, защищенный паролем
Теперь представим, что существует Zip-файл с парольным замком. Итак, в какой-то момент времени вы создали zip-файл, защищенный паролем. Для этого необходимо установить zip:
1 | sudo apt install zip |
Затем создать zip-файл:
1 | zip --password <пароль> <имя zip-файла> <директория для zip> |
Например:
1 | zip --password password123 linux.zip linux.txt |
Здесь слово password123 - это реальный пароль, защищающий zip-файл
Теперь, спустя 6 месяцев, вы забыли пароль. Что вы можете сделать? Ну, использовать John the Ripper, но прежде нам нужно преобразовать zip в john.
Для этого мы воспользуемся командой zip2john:
1 | zip2john linux.zip > linux_password.txt |
John the Ripper может получить пароль одним из двух методов: атакой по словарю или перебором. При атаке по словарю файл со списком возможных паролей сравнивается с имеющимся хэшем. Если совпадение найдено, то он выкидывается. С другой стороны, если пароль не найден, то можно использовать другой файл паролей или применить другой метод.
Далее мы напишем:
1 | john --wordlist=~/Downloads/passwordlist linux_password.txt |
Здесь мы взломали zip-файл, но это не обязательно должен быть zip-файл! Это может быть практически что угодно. Просто помните, что в таких случаях необходимо использовать {ваш_модуль}2john. Например, если вы взламываете Wifi, вы используете Aircrack-ng и получаете cap-файл. Получив cap-файл, необходимо преобразовать его в hccap-файл. После получения hccap-файла используйте программу hccap2john для преобразования его в формат john, что позволит получить результат на John the Ripper.
Дополнительные команды 2john можно найти с помощью:
1 | locate 2john |
Сценарий №3: стиль инкремента или грубая сила
Самым мощным из всех существующих методов является метод грубой силы, поскольку он проверяет все возможные комбинации! Но это также означает, что он вряд ли когда-нибудь закончится, если только пароли не являются достаточно простыми.
Например, я выберу трехсимвольный пароль в формате MD5: abc. Я делаю это для того, чтобы не тратить часы на ожидание, пока он его определит.
1 | echo 900150983cd24fb0d6963f7d28e17f72 > incremental.txt |
Самый простой способ сделать это - набрать:
1 | john --format=Raw-MD5 --incremental incremental.txt |
В качестве альтернативы можно было бы также написать:
1 | john --format=Raw-MD5 --i incremental.txt |
Как видите, я нашел его менее чем за секунду, и мне даже не пришлось снабжать его словарем.
Далее мы поработаем с конфигурационным файлом, расположенным по адресу /etc/john/john.conf.
В файле /etc/john/john.conf вы найдете раздел, посвященный инкрементным режимам. Здесь при желании можно добавить еще несколько, но сначала попробуем использовать один из них.
В файле /etc/john/john.conf есть один из них, который выглядит следующим образом:
1 2 3 4 5 6 | [Incremental:Digits] File = $JOHN/digits.chr MinLen = 1 MaxLen = 20 CharCount = 10 |
Здесь воссоздадим MD5-хэш для пароля 123456.
1 | echo e10adc3949ba59abbe56e057f20f883e > password_digits.txt |
Теперь воспользуемся инкрементным режимом:
1 | john --format=Raw-MD5 --incremental=digits password_digits.txt |
В последнем случае будут перебираться все возможные комбинации цифр. А поскольку пароль состоял всего из 6 цифр, он взломал его менее чем за секунду.
Однако вы можете добавлять туда свои собственные файлы, а также создавать свои собственные инкрементные файлы. Вы можете создавать правила и т.д... Это становится тяжелым!
Johnny: версия с графическим интерфейсом
Теперь для тех, кто предпочитает графический интерфейс, а не CLI, есть Johnny. Чтобы установить johnny:
1 | sudo apt get install johnny |
На вкладке "File" вы найдете две опции - открыть файл с паролем или открыть файл другого формата. В демонстрационных целях мы воспользуемся первым вариантом - открыть файл паролей. Я открою файл hash.txt, в котором хранится пароль в формате MD5.
В разделе опций можно выбрать нужный режим атаки. Я выберу список слов и тип хэша (вверху). Затем я задам ему файл с паролем.
Затем нажимаем кнопку "Start new attack".
Просто и легко! Таким же образом можно выбрать режим атаки. Так что если вам нужен инкрементный режим, то установите его и смотрите, как он работает.
Заключение
John the Ripper - очень мощный инструмент. Более того, он очень часто используется, настолько, что поставляется в предустановленном виде в Kali Linux! John the Ripper в основном используется для восстановления паролей, но всегда можно проверить надежность выбранных паролей, попробовав их взломать. В целом, это потрясающий инструмент, который требует некоторого времени для изучения и освоения, но он определенно стоит затраченных усилий.