- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Полное руководство по John the Ripper. Ч.3: как запустить взлом паролей в John the Ripper (как указать маски, словари, хеши, форматы, режимы)
- Оглавление
- Быстрый старт с John the Ripper
- Как посмотреть взломанные пароли
- Атака по маске в John the Ripper
- Гибридная Stacked маска
- Маски переменной длины
- Специальные символы в масках
- Как посмотреть генерируемые пароли. Как создать словарь
- Форматы и субформаты хешей
- Как использовать все ядра ЦП для взлома. Многопоточный запуск John the Ripper
- Просмотр статуса работы John the Ripper
- Как восстановить работу прерванной сессии John the Ripper
- Как запустить взлом пароля в John the Ripper на видеокарте
- Как пользоваться John the Ripper в Windows
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Полное руководство по John the Ripper. Ч.3: как запустить взлом паролей в John the Ripper (как указать маски, словари, хеши, форматы, режимы)
Оглавление
Быстрый старт с John the Ripper
Общий вид команды взлома паролей в John the Ripper:
Среди самых часто используемых опций, без которых не обходится практически ни один запуск, нужно отметить —mask (маска по которой генерируются пароли) и —wordlist (путь до словаря с паролями).
Если вы знакомы с синтаксисом масок в программе Hashcat, то смело используйте его, поскольку John the Ripper полностью поддерживает этот синтаксис, но также имеет дополнительные возможности, о которых будет рассказано далее в этом разделе.
ФАЙЛ-ХЕШЕЙ — это тот файл, в который сохранён хеш, добытый с помощью одной из утилит из «ч.2: утилиты для извлечения хешей».
Для запуска атаки по словарю, нужен словарь. Если у вас нет, то скачайте rockyou:
Затем сгенерируйте хеш файла, чей пароль вы хотите взломать. Для примера я получу хеш VNC:
Посмотрим содержимое файла vnc.hash:
Там у меня (для тестов можете создать свой файл с именем vnc.hash и скопировать в него следующее):
Для запуска атаки по словарю запустите команду вида:
У меня СЛОВАРЬ и ФАЙЛ-ХЕШЕЙ находятся в той же папке, что и исполнимый файл john, тогда моя команда следующая:
Очень быстро пароль взломан:
Обратите внимание на строку, в ней взломанным паролем является «222222»:
Для запуска атаки по маске используйте команду вида:
Пароль вновь взломан весьма быстро:
Как посмотреть взломанные пароли
Все взломанные хеши и подобранные пароли к ним сохраняются в файл john.pot — поищите этот файл в папке с исполнимым файлом john (если компилировали из исходного кода) или в папке
Также можно использовать опцию —show, но нужно помнить, что она требует указать ФАЙЛ-ХЕШЕЙ из которого брались хеши для взлома паролей:
Атака по маске в John the Ripper
Авторы Hashcat считают атаку по маске самой основной, способной заменить полный брут-форс. Действительно, этот режим атаки и атака по словарю применяются чаще всего.
John the Ripper поддерживает ещё множество полезных режимов, но даже краткое их рассмотрение займёт много времени — поэтому режимам взлома паролей будет посвящён отдельный раздел. Большинству на первых порах будет предостаточно атаки по словарю — который совсем простой, достаточно указать файл до словаря, и атака по маске, которой мы займёмся прямо сейчас.
Атака по маске позволяет создать маску классов символов, которые могут занимать определённые позиции при создании кандидата в пароли.
Режим маски — это быстрый способ создания кандидатов на пароли по «маске», описывающей, как должны выглядеть слова.
Маска может включать:
- Статические символы.
- Диапазоны в синтаксисе [aouei] или [a-z]. Или оба, [0-9abcdef] совпадает с [0-9a-f].
- Заполнители, которые являются лишь сокращённой формой для диапазонов, например ?l, что на 100% эквивалентно [a-z].
- ?l — это строчные буквы ASCII
- ?u — это заглавные буквы ASCII
- ?d — это цифры
- ?s — это специальные (все печатаемые символы ASCII кроме включённых в ?l, ?u или ?d)
- ?a — это полный «печатный» ASCII. Обратите внимание, что для форматов, которые не распознают регистр (например, LM), это обозначение включает только символы нижнего регистра, что значительно сокращает пространство ключей (количество возможных кандидатов в пароли), но при этом охватывает все возможные варианты, доступные для данного вида хеша.
- ?B — это все 8-битные (0x80-0xff)
- ?b — это все (0x01-0xff) (символ NULL в настоящее время не поддерживается ядром).
- ?h — это строчные шестнадцатеричные цифры (0-9, a-f)
- ?H — это цифры верхнего регистра HEX (0-9, A-F)
- ?L — это строчные буквы, не-ASCII
- ?U — это заглавные буквы, не-ASCII
- ?D — это «цифры», не-ASCII
- ?S — это не-ASCII «специальные символы»
- ?A — это все допустимые символы в текущей кодовой странице (включая ASCII). Обратите внимание, что для форматов, которые не распознают регистр (например, LM), это включает только символы нижнего регистра, что значительно сокращает количество кандидатов в пароли без ущерба для взлома.
- Заполнители, которые определяются пользователем, поэтому мы можем, например, установить значение ?1 и присвоить ему значение, например, [?u?l]. В Hashcat это называется «пользовательские наборы символов».
- ?1 .. ?9 — это определяемый пользователем заполнитель 1 .. 9
- Заполнители для режима гибридной маски:
- ?w — это в Режиме гибридной маски обозначает исходное слово, созданное родительским режимом.
- ?W это как ?w, за исключением того, что в исходном слове учитывается регистр (поэтому PassWord становится PASSWORD).
Обычный режим маски создаёт слова из маски, например ?u?l?l будет генерировать все возможные трёхбуквенные слова, причём первый символ будет в верхнем регистре, а остальные — в нижнем.
Гибридная Stacked маска
Гибридная (также известная как Stacked) маска означает, что мы используем, например, список слов с правилами или без них (или любой другой режим взлома), а затем применяется маска к каждому слову. Таким образом, с маской ?w?d?d и входным словом (из родительского режима взлома) «pass», этот режим будет производить «pass00», «pass01» и так далее до «pass99». Гибридная маска может накладываться на любой другой режим, кроме single. Гибридная маска может применяться даже после гибридного регулярного выражения, например, допустима цепочка «prince → regex → mask».
Для большинства быстрых форматов графического процессора режим маски (включая гибридный) на несколько порядков быстрее, чем любой другой режим взлома, поскольку маска (или её часть) применяется на стороне графического процессора. Таким образом, гибридная маска может использоваться в качестве ускорителя графического процессора для любого режима, кроме single. Чтобы измерить скорость такого формата с помощью маски, используйте «—test —mask» (используя какую-нибудь маску по умолчанию) или, необязательно, с определённой маской, например, «—test —mask=?a?a«. Вы можете перечислить все форматы с внутренней маской, используя «—list=formats -format=mask«.
Также могут применяться внешние фильтры, и они будут применяться в последнюю очередь. Таким образом, «самая длинная» возможная цепочка преобразований (генерации кандидатов в пароли) «словарь → правила → регулярное выражение → маска → фильтер». Использование внешних фильтров с «маской на стороне GPU» вызовет несколько неопределённое поведение: фильтр будет применён до того, как маска на стороне графического процессора завершит слово!
Вы можете определить собственные заполнители для ?1 .. ?9, используя командную строку, например, -1=?l?u или в разделе john.conf [Mask] (подробно о файле настроек будет в одной из следующих частей).
Маски переменной длины
В john.conf также есть маска по умолчанию (по умолчанию такая же, как у hashcat). Её следует использовать с -max-len (и, возможно, -min-len), чтобы получилось что-то полезное.
Параметр -max-len=N усекает маску, поэтому слова длиннее N не выводятся.
Параметр -min-len=N пропустит создание слов короче N.
Если не в режиме «гибридной маски» и использовалась опция -min-len или -max-len, мы будем перебирать пароли с длиной (как в «инкрементной маске») от -min-len до -max-len (или пароли с минимальной и максимальной длинной для данного формата, если эти опции были указаны). Итак, чтобы создать все возможные слова от 3 до 5 букв, используйте -mask=?l -min-len=3 -max-len=5. В случае, если указанная маска короче, последняя её часть будет расширена, например, «-mask=?u?l -max-len=5» будет использовать эффективную маску ?u?l?l?l?l. Всякий раз, когда используется инкрементная маска, ETA (время до завершения перебора всех кандидатов в пароли) в любой момент времени показывает расчётное время для завершения проверки паролей по маске текущей длины, а не всего прогона со всеми масками разной длины.
Специальные символы в масках
Вы можете экранировать специальные символы с помощью \. Итак, чтобы создать буквальное «?l», вы можете сказать \?l или ?\l, и это не будет анализироваться как заполнитель. Точно так же вы можете экранировать дефисы или скобки, чтобы они не анализировались как специальные символы. Чтобы создать буквальную обратную косую черту, используйте \\.
Существует также специальная шестнадцатеричная запись \xHH для указания любого кода символа. Например, \x41 — это «A», а \x09 — это код для TAB.
Маска | Пользовательская маска / гибридный ввод | Пример вывода | Количество кандидатов |
---|---|---|---|
pass | pass | 1 | |
pw?d | pw3 | 10 | |
?w?d?d?d | password | password123 | 1000x |
?w?s?w | Bozo | Bozo#Bozo | 33x |
?w?s?W | Bozo | Bozo#bOZO | 33x |
0x?1?1:?1?1:?1?1 | -1=[0-9a-f] | 0xde:ad:ca | 16777216 |
?3?l?l?l | -3=?l?u | Bozo, hobo | 913952 |
[Pp][Aa@][Ss5][Ss5][Ww][Oo0][Rr][Dd] | P@55w0rD | 1296 |
У нас есть поддержка режима маски на устройстве для большинства быстрых типов хешей, для которых у нас вообще есть поддержка OpenCL. Кроме того, такая поддержка масок на устройстве может использоваться вместе с предоставленным хостом потоком частичных возможных паролей для формирования множества гибридных режимов. Например, все следующие примеры являются правильными:
- Протестировать любые 7-символьные печатаемые строки ASCII с разумным количеством позиций маски, обрабатываемых на устройстве (JtR решает как оптимально разделить маску между хостом и устройством):
То же, но для диапазона длин от 1 до 8:
- Также можно использовать диапазоны длин с более сложными масками, где последний компонент маски будет расширен до большей длины:
Другие, более сложные примеры использования маски, будут рассмотрены в отдельной части, полностью посвящённой режимам генерации, изменения и обработки паролей.
Как посмотреть генерируемые пароли. Как создать словарь
С помощью опции —stdout вы можете вместо запуска взлома показать создаваемые кандидаты в пароли. Это может быть полезно при проверке написанных масок и при генерации словарей.
Например, чтобы показать все кандидаты в пароли для маски ‘?d?d?d?d‘:
Чтобы сохранить все пароли для маски ‘?d?d?d?d‘ (четыре любые цифры) в файл:
Чтобы создать словарь, содержащий все цифры от 1 до 9999 и сохранить его в файл 1-4d.txt:
Чтобы создать файл с паролями телефонов, начинающихся на «8905143»:
Вы можете вывести кандидаты в пароли с обрезкой по ДЛИНЕ, для этого используйте опцию вида —stdout=ДЛИНА.
Форматы и субформаты хешей
Следующая команды вычисляет MD5 хеш для слова «mial» и сохраняет его в файл hash.txt:
Содержимое файла hash.txt:
Как взломать этот MD5 хеш?
Если запустить примерно такую команду:
То будет получена ошибка:
В ней говориться, что невозможно установить максимальную длину больше чем 7 для формата LM. Но у нас то формат MD5 — очевидно, что John the Ripper ошибся с определением формата хеша.
Некоторые хеши JtR может определить самостоятельно, без указания типа, но при необходимости вы можете явно указать тип хеша, который нужно взломать.
Из предыдущих частей мы помним, что все возможные форматы можно посмотреть командой:
Чтобы было проще ориентироваться в полученном выводе, мы можем использовать команду вида:
К примеру, я хочу найти точное название формата MD5, тогда запускаю такую команду:
Интересны сразу два найденных формата:
- Raw-MD5
- raw-MD5-opencl
Слово «Raw» означает «не обработанный, сырой». Многие хеши, например, для шифрования паролей различных систем управления контентами (CMS), обеспечивающие работу веб-сайтов и пр., за основу берут различные функции вычисления контрольных сумм (MD5, SHA1 и прочее) и используют их в комбинации с солью и многократным повторением (итерациями). По отношению к этим типам хеширования, MD5, SHA1 и другие являются «элементарными», то есть более базовыми, ну или «сырыми».
То есть «raw» в названии двух этих форматов означает, что это обычный MD5. А «opencl» означает, что для взлома хеша может использоваться видеокарта.
Когда нашли нужный формат, то посмотрите на его название — в данном случае нужны нам формат называется «Raw-MD5». Это название нужно указать с уже знакомой нам опцией —format=ФОРМАТ. Итак, формат называется Raw-MD5, поэтому я добавляю в строку команды —format=Raw-MD5 и теперь моя команда выглядит так:
Хеш успешно взломан:
Ещё нам нужно знать о том, что JtR поддерживает субформаты (или подформаты). На самом деле, субформаты это замечательнейшая функция, которая позволяет вычислять итерированные и различные комбинированные алгоритмы, которые не предусмотрены оригинальным набором алгоритмов.
Субформатам будет посвящён отдельный раздел. Сейчас же мы только научимся смотреть имя нужного нам формата. Для этого используйте команду вида:
Меня по-прежнему интересует MD5, поэтому я запускаю такую команду:
Много всего найдено, прежде всего, меня интересует строка:
raw-md5 — означает «сырой md5» — именно то, что мне нужно. Чтобы я наверняка не ошибся, приводится функция (формула) его вычисления: md5($p). Здесь $p означает пароль, а md5() — вычисление MD5 хеша переданной строки.
Когда нашли нужный формат, то посмотрите на его название — в данном случае формат называется «dynamic_0».
Это название нужно указать с уже знакомой нам опцией —format=ФОРМАТ. Новым для нас является то, что эту опцию можно использовать не только с именами форматов, но и с именами субформатов.
Итак, формат называется dynamic_0, поэтому я добавляю в строку команды —format=dynamic_0 и теперь моя команда выглядит так:
Хеш вновь успешно взломан:
Как использовать все ядра ЦП для взлома. Многопоточный запуск John the Ripper
Возьмём чуть более сложный для взлома хеш:
Посмотрим содержимое файла hash.txt:
В этом файле MD5 хеш строки «hackware».
Запустим команду для взлома:
- Центральный процессор используется не на полную
- Скорость перебора 52034Kp/s
Чтобы значительно ускорить скорость взлома, используйте опцию —fork=ЧИСЛО, в качестве числа установите количество логических ядер ЦП на вашем компьютере. Например, если 12 логических ядер, то нужно использовать опцию —fork=12:
- ЦП используется полностью
- Скорость перебора стала 24338Kp/s на один поток, но при этом запущено 12 потоков. То есть возросла в 24338/52034*12 = 5,6 раз.
Можно попробовать в качестве значения опции —fork указывать количество не логических, а физических ядер — возможно, на вашей системе это будет более эффективно.
Не нужно беспокоится, что система станет неотзывчивой — по умолчанию John the Ripper использует только свободные ресурсы процессора — можно продолжить работать на компьютере как обычно, «тормозов» и «зависаний» не появится.
Просмотр статуса работы John the Ripper
Статус прогресса JtR включает в себя процент завершённой работы, ETA (время завершения работы), скорость перебора кандидатов в пароли, текущий кандидат. Если программа запущена в несколько потоков, то эта информация выводится для каждого из них — это видно на предыдущих скриншотах. Статус работы John the Ripper выводится при переходе к маске большей длины, а также через определённый интервалы времени. Если вы хотите вывести количество проделанной работы, то в любой момент нажмите Enter и немедленно будет выведен статус работы.
Как восстановить работу прерванной сессии John the Ripper
По умолчанию John the Ripper сохраняет прогресс взлома для последней сессии. То есть если работа JtR завершилась внезапно, например, из-за непредвиденной перезагрузки компьютера, то для продолжения последней сессии используйте опцию —restore:
Не нужно указывать опции или файл с хешами — все настройки сохранены в файле сессии.
Если вы хотите, то вы можете использовать именные сессии, благодаря чему вы сможете возобновлять любую из них, а не только самую последнюю, для этого добавьте опцию —session=ИМЯ.
Чтобы восстановить прерванную именную сессию, используйте опцию —restore=ИМЯ. То есть нужно указать имя сессии, которое вы использовали с опцией —session.
Как запустить взлом пароля в John the Ripper на видеокарте
Взлом на видеокарте очень похож на взлом на ЦП. Главное отличие — нужно указать другой формат с опцией —format. Не для всех алгоритмов поддерживается взлом на GPU (OpenCL). Необходимо, чтобы в названии нужного алгоритма присутствовала строка «-opencl». Для поиска подойдёт приведённая выше команда:
Запускаем уже знакомую команду:
Нужный алгоритм называется raw-MD5-opencl, используем его с опцией —format:
Скорость взлома достигла 1670Mp/s! На центральном процессоре, при запуске на всех 12 ядрах, скорость была 292Mp/s.
Конечно же, на такой скорости хеш очень быстро взломан:
Как пользоваться John the Ripper в Windows
Словарь для взлома, который использовался в этой статье, вы можете скачать по ссылке: https://kali.tools/files/passwords/leaked_passwords/rockyou.txt.bz2
Большинство из скриптов, которые используются для извлечения хешей из файлов с паролями, можно запустить и в Windows. Но для этого нужно установить Python, Ruby и Perl. Подробные инструкции вы найдёте в соответствующих статьях:
Кроме скриптов, с John the Ripper поставляются скомпилированные (бинарные) файлы для извлечения хешей. Они должны без проблем запускаться в Cygwin. Основы работы в Cygwin смотрите здесь:
В командах запуска John the Ripper в Windows вам, возможно, понадобится заменить одинарные кавычки на двойные (или сделайте наоборот, если возникает синтаксическая ошибка).
Возможно, в Windows можно не использовать кавычки в некоторых случаях (для масок, например). Но это только если вы запускаете JtR не в Cygwin, а в командной строке (или PowerShell) Windows.
Если у вас возникают какие-либо ошибки при работе с JtR и сопутствующими инструментами в Windows, то пишите эти ошибки в комментариях. Примером ошибок может быть: отсутствие зависимости для скрипта Python или «не найден файл» из-за особенностей файловой системы Cygwin или ошибки синтаксиса. Всё это, скорее всего, можно решить, поэтому спрашивайте.
Хотя теперь вы можете полноценно использовать John the Ripper и взламывать пароли, это далеко не окончание руководство по JtR. Подготавливается ещё больше материала, раскрывающего все возможности этого мощного брут-форсера. Поэтому делитесь ссылкой на данное руководство, чтобы ускорить появление новых частей.