Раньше большинство паролей хранилось в открытом виде, но очень быстро разработчики поняли, что так делать небезопасно. Лучше хранить не сам пароль, а его хэш, набор цифр определенного размера, который генерируется на основе пароля. В таком случае, даже если злоумышленник получит хэш, то он не сможет узнать пароль. Существуют различные способы хэширования, например, md5, sha1, sha2 и многие другие. Но существует способ восстановления пароля из хэша. Для этого можно использовать перебор, нам достаточно создавать хэш для каждого возможного пароля и сравнивать его с тем хэшем, который нужно расшифровать.
Для перебора хешей существуют различные программы, одна из них — это Hashcat. С помощью этой утилиты можно перебирать значение хэша по словарю или полным перебором по всем значениям. В этой статье мы рассмотрим как пользоваться Hashcat.
Содержание
Какие хэши можно перебрать?
Как я уже говорил, существует несколько алгоритмов хэширования, но сложность перебора каждого из них отличается. Каждый из алгоритмов может иметь коллизии. Это когда для одного хэша можно подобрать несколько различных исходных наборов данных. Самым небезопасным из популярных алгоритмов на данный момент считается md5. Было доказано, что в этом алгоритме можно найти множество коллизий, а это значит, что перебрать значение такого хэша будет намного проще. Алгоритм sha1 тоже имеет коллизии, но их намного сложнее найти, а значит перебор будет ненамного проще. Существования коллизий для Sha2 пока не доказано, но не исключено.
Программа hashcat поддерживает работу с такими алгоритмами хэширования: md5, md5crypt, sha1, sha2, sha256, md4, mysql, sha512, wpa, wpa2, grub2, android, sha256crypt, drupal7, scrypt, django и другими.
Установка hashcat
Если вы используете Windows, то вам достаточно загрузить установщик из официального сайта.

Вам нужно выбрать hashcat binaries нужной версии внизу страницы. В архиве находятся исполняемые файлы для Windows, Linux и MacOS, так что у вас не возникнет проблем. В Linux вы также можете установить утилиту из официальных репозиториев. Например, в Ubuntu команда будет выглядеть вот так:
sudo apt install hashcat

Но это еще не все. Если в вашей системе есть видеокарта, то программа будет использовать ее. И на нее должен быть установлен драйвер, желательно проприетарный. Я не буду на этом останавливаться. Но если видеокарта слабая, то можно использовать процессор. Для этого нужно установить несколько пакетов для работы OpenCL на процессоре. Вот так выглядят команды установки в Ubuntu:
sudo apt install libhwloc-dev ocl-icd-dev ocl-icd-opencl-dev
$ sudo apt install pocl-opencl-icd
Теперь мы можем выполнить тестирование производительности:

Утилита hashcat
Сначала давайте рассмотрим синтаксис и возможные опции утилиты, а потом уже перейдем к ее использованию. Это консольная утилита, поэтому придется использовать ее через терминал. Давайте сначала рассмотрим синтаксис:
$ hashcat опции файл_хэшей словари_и_настройки
Как видите, все довольно просто. Начнем с основных опций, которые настраивают как будет вести себя утилита:
- -h — вывести доступные команды и опции;
- -V — версия программы;
- -m — тип хэша, который нужно перебрать, например, md5 или sha;
- -a — вид атаки;
- -b — запустить тестирование производительности;
- —hex-salt — указать соль, которая использовалась при хэшировании;
- —hex-charset — набор символов, для исходных данных;
- —status — автоматически обновлять состояние подбора;
- -o — файл для записи результата;
- -p — символ, которым разделены хэши для перебора;
- -c — размер кэша для словаря;
- -n — количество потоков;
- -l — ограничить количество слов для перебора;
- -r — файл с правилами генерации вариантов;
- -D — устройство для перебора, CPU или GPU;
- —pw-min — минимальная длина варианта, символов;
- —pw-max — максимальная длина варианта, символов;
- —table-min — длина пароля для табличной атаки;
- —table-max — максимальная длина пароля для табличной атаки;
- —table-file — файл таблицы, для атаки по таблице.
Мы рассмотрели все основные опции, которые сегодня будем использовать. Многие из параметров, например, тип хэша и атаки, задаются в виде цифр. Я не буду рассматривать цифровые коды для типа хэша подробно. Вы можете найти эту информацию, выполнив man hashcat. Рассмотрим типы атак:
- Straight — обычная атака, берет слова из словаря и проверяет их;
- Combination — комбинирует слова из словаря в разные комбинации;
- Toggle-Case — по очереди пробует разный регистр букв для каждого символа слова;
- Brute-force — атака простым перебором на основе маски или символов;
- Permutation — при этом типе атаки программа берет слова из словаря и меняет в них буквы местами для получения разных комбинаций;
- Table-Lookup — Табличная атака, берется одно слово и словаря, а затем на его основе создаются варианты из таблицы. Каждый символ из таблицы будет заменен на набор прописанных вариантов;
- Prince — новый вид атаки перебора, которая работает быстрее, обычной.
Кроме того, при переборе на основе брутфорса нам понадобится выбрать набор символов, которые будет использовать программа для генерации возможных вариантов. Вот возможные значения:
- ?l = abcdefghijklmnopqrstuvwxyz;
- ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ;
- ?d = 0123456789;
- ?s = !"#$%&'()*+,-./:; ?@[]^_`
;
Теперь мы разобрали все необходимое и можно переходить к практике.
Как пользоваться Hashcat?
Как я уже сказал, утилита позволяет расшифровывать хэши, созданные с помощью различных алгоритмов с помощью перебора. Мы будем перебирать хэш md5 и рассмотрим два типа атаки — на основе словаря и полным перебором.
1. Перебор по словарю в Hashcat
Расшифровка md5 проще всего выполняется по словарю. Поскольку полный перебор занимает очень много времени, то перебрать наиболее часто употребляемые варианты может быть намного быстрее. Для перебора нам понадобится словарь, обычно используется rockyou. Словарь можно скачать командой:

Теперь нам еще осталось подготовить хэши, которые будем перебирать. Проще всего это сделать с помощью команды Linux md5sum:
echo -n "password" | md5sum

Например, создадим три хэша. Затем сложим их в файл
2ac9cb7dc02b3c0083eb70898e549b63
5f4dcc3b5aa765d61d8327deb882cf99
b59c67bf196a4758191e42f76670ceba
Теперь, когда все собрано, мы готовы к перебору. Команда перебора по словарю будет выглядеть вот так:
hashcat -m 0 -D 1 -a 0 -t 20
/rockyou.txt -o data.txt

Здесь -m 0 указывает на то, что нужно перебирать хэш md5, а -a 0 указывает на использование обычной атаки по словарю. С помощью опции -n мы задаем количество потоков. Опция -D 1 говорит программе, что нужно использовать процессор. Если вам нужна видеокарта hashcat, используйте -D 0.
Затем, мы указываем файл с хэшами, которые будем перебирать — hashes и словарь. Перебор может занять долгое время, но когда комбинация будет найдена, программа запишет ее в файл data.txt.
Что касается других алгоритмов, то для них нужно будет указать только другой номер типа хєша. Например, для SHA это будет 100. Чтобы узнать нужный номер вы можете использовать такую команду:
hashcat —help | grep SHA1

2. Расшифровка md5 полным перебором
Анализ по словарю выполняется достаточно быстро. На моем железе, такой небольшой словарь анализировался меньше минуты. Программа выдала скорость около 1300 kHash в секунду, а это очень много. Но в словаре есть далеко не все комбинации. Поэтому вы можете попытаться выполнить полный перебор нужной последовательности символов. Например:
hashcat -m 300 -a 3 -n 32 —custom-charset=?l?d

Здесь мы просто указали набор символов, буквы в нижнем регистре и цифры, а затем запустили перебор. Также можно указать ограничения на минимальное и максимальное количество символов:
hashcat -m 0 -a 3 —force -D 1 —potfile-disable —increment-min 5 —increment —increment-max 6 —custom-charset1=?l?d

Здесь мы говорим программе, что нужно начинать с размера слова 5 символов и завершить размером 6. Также можно использовать маски. Маска позволяет точно указать какой набор символов использовать, в какой последовательности и сколько. Указывать маску нужно на месте словаря. Например, маска слова из четырех цифр будет ?d?d?d?d, а маска из четырех любых цифр, букв разного регистра и специальных символов будет выглядеть ?a?a?a?a. Также можно комбинировать маску с известной частью: abc?a?a. Рассмотрим пример команды:
hashcat -m 0 -a 3 —force -D 1 —potfile-disable

Маска уменьшает в разы количество вариантов, тем самым увеличивая скорость. Таким образом, расшифровка хеша md5 длиной 4 символа была выполнена меньше чем за секунду. С помощью следующей команды вы можете проверить не перебирали ли вы раньше эти хэши:
hashcat -m 0 —show

Выводы
В этой статье мы рассмотрели как пользоваться Hashcat, с помощью которой может быть выполнена расшифровка md5 и других хэш-функций. Как видите, расшифровать хэш, можно достаточно быстро, зная параметры исходного пароля, поэтому не используйте простые пароли в своих системах и вообще не используйте md5 если вы разработчик. Надеюсь, эта инструкция hashcat была полезной для вас.
![]()
The Codeby
ООО Кодебай
Если у вас какие-либо проблемы с беспроводными устройствами, то следует ознакомиться со статьёй «Лучшие совместимые с Kali Linux USB Wi-Fi адаптеры».
Недавно просматривал темы на форуме Античат. При беглом осмотре самой живой мне показалась одна тема — тема о взломе Wi-Fi сетей. Причём довольно часто там попадаются сообщения с просьбами сгенерировать пароли по маске. Кто-то это делает, потом запрашивающий выкачивает эту базу. Базы могут быть и в 20 Гб… Впоследствии эта сгенерированная база паролей используется для перебора (взлома).
По моему мнению, это очень точный пример мартышкиного труда, вызванного незнанием довольно простых вещей, давным-давно реализованных (и не только в Hashcat). Для ликвидации этого пробела в знаниях и предназначена эта статья. За основу взята статья с сайта Блэкмора. Но она: 1) дополнена; 2) исправлена (судя по всему, Блэкмор не смог осилить пользовательские наборы символов — я в своей статье этот пробел устраняю). Лучше него никто не может растянуть на семь листов то, что можно описать в нескольких строчках команд. ))
Ах да, если вам всё-таки нужно сгененировать пароли по маске, то это может сделать команда maskprocessor.
Hashcat (cudaHashcat или oclHashcat) на Kali Linux дают возможность расшифровать (взломать) пароль WPA2 WPA. Hashcat атакует файлы рукопожатий — .cap файлы. Есть только одно ограничение — нужно конвертировать файл .cap в файл формата .hccap. Но это не трудно.
Hashcat, как скромно замечают сами авторы, это самый быстрый инструмент по восстановлению паролей, использующий графический процессор. Программа бесплатна, хотя она содержит проприетарную кодовую базу. Доступны версии для Linux, OSX и Windows, есть варианты для использования центрального вычислительного процессора и для использования графического процессора. Hashcat в настоящее время поддерживает огромное количество алгоритмов хеширования, включая Microsoft LM Hashes, MD4, MD5, семейство SHA, форматы Unix Crypt, MySQL, Cisco PIX и многие другие (их там сотни).
Hashcat популярна, т. к. много раз попадала с сводки новостей благодаря оптимизации и недостаткам в алгоритмах, которые были открыты её создателем, а затем эксплуатировались в дальнейших выпусках hashcat (например, недостаток в схеме хеширования 1Password).
Типы атак Hashcat
Hashcat предлагает множество моделей атак для получения эффективного и комплексного покрытия пространства хешей. Есть следующий режимы:
- Атака брут-форсом (перебором)
- Комбинаторная атака
- Атака по словарю
- Атака по отпечаткам
- Гибридная атака
- Атака по маске
- Перестановочная атака
- Атака основанная на правиле
- Табличная атака
- Атака с переключением раскладки
Традиционную атаку перебором можно считать устаревшей, и команда разработчиков Hashcat рекомендует атаку по маске в качестве полного заменителя.
Hashcat поставляется в двух вариантах:
- Hashcat – Инструмент по восстановлению использующий центральный процессор
- oclHashcat – Инструмент использующий графический процессор
Многие алгоритмы, поддерживаемые Hashcat, могут быть взломаны в более короткое время, при использовании хорошо документированных возможностей GPU. Для этого и предназначена программа oclHashcat, при её использовании достигается значительный прирост в таких алгоритмах как MD5, SHA1 и других. Тем не менее, не все алгоритмы могут быть ускорены использованием GPU. Bcrypt — хороший этому пример. Из-за таких факторов как ветвление зависимостей данных, сериализация и память (упомянуты только некоторые), oclHashcat не является всеобъемлющей заменой для Hashcat.
Hashcat доступна для Linux, OSX и Windows. oclHashcat доступна для Linux и Windows из-за неправильной реализации OpenCL на OSX.
На машине с Kali Linux 1.1.0a у меня графическая карта Radeon HD 7870M Series, и я буду использовать словарь rockyou в большинстве упражнений. В этой заметке я покажу пошаговый взлом паролей WPA2 WPA с Hashcat (файлов рукопожатий — .cap-файлов) с помощью cudaHashcat или oclHashcat или Hashcat на Kali Linux.
Я буду использовать команду oclHashcat, т. к. я использую AMD GPU. Если вы используете NVIDIA GPU, то для вас cudahashcat.
Для включения взлома видеокартой, вам нужно установить или CUDA для видеокарты NVIDIA или fglrx для AMD. Как это сделать было рассказано в предыдущих постах.
Pyrit самый быстрый, когда нам нужно взломать файлы рукопожатий WPA2 WPA. Так почему мы используем Hashcat для взлома файлов рукопожатий WPA2 WPA?
Потому что мы можем?
Потому что Hashcat позволяет нам настроить атаку с заданными правилами и масками. Чтобы было понятнее, что имеется ввиду, рассмотрим конкретные примеры.
Hashcat позволяет нам использовать следующие встроенные наборы символов для атаки на файл рукопожатия WPA2 WPA.
Встроенные наборы символов
Допустим, ваш пароль 12345678 . Вы можете использовать пользовательскую МАСКУ вроде такой ?d?d?d?d?d?d?d?d
Это означает, что мы пробуем сломать пароль из восьми цифр вроде 12345678 или 23456789 или 01567891. Уверен, вы уловили смысл.
Буквенный пароль — все заглавные буквы
Если ваш пароль набран капсом, вроде ABCFEFGH или LKHJHIOP или ZBTGYHQS и т. д., тогда вы можете использовать следующую МАСКУ:
Она будет взламывать все пароли из восьми заглавных букв.
Буквенный пароль — все строчные буквы
Если ваш пароль набран строчными буквами, вроде: abcdefgh или dfghpoiu или bnmiopty и т. д., тогда вы можете использовать следующую МАСКУ:
Она будет взламывать все пароли из восьми строчных букв. Думаю, и это тоже понятно.
Пароль — буквы нижнего регистра и цифры
Если вы знаете, что пароль наподобие a1b2c3d4 или p9o8i7u6 или n4j2k5l6 и т. д. (буквы и цифры чередуются), тогда вы можете использовать следующую МАСКУ:
Пароль — заглавные буквы и цифры
Если вы знаете, что пароль вроде такого A1B2C3D4 или P9O8I7U6 или N4J2K5L6 и т. д. (буквы и цифры чередуются), тогда вы можете использовать следующую МАСКУ:
Пароли — смесь из заглавных, строчных букв, цифр и специальных символов.
Если ваш пароль исключительно случайный, тогда вы можете просто использовать МАСКУ вроде этой:
Обратите внимание: ?a символизирует что угодно… Надеюсь, идея понятна.
Чем меньше известно о пароле, тем дольше срок его подбора. Использование атаки по словарю может значительно увеличить шанс успеха.
Пароль — когда вы знаете некоторые символы
Если вы каким-то образом знаете несколько символов в пароле, то дела будут двигаться намного быстрее. Каждая известная буква сохранит огромное количество компьютерного времени. МАСКИ можно использовать совместно. Давайте предположим, что нам нужно подобрать пароль из восьми символов, который начинается с abc, не содержит каких-либо специальных символов. Тогда вы можете создать МАСКИ вроде таких:
Кто-то посчитал, что получится 125 комбинаций для такого случая. Их использование значительно сократит время на подбор пароля. В этом и есть настоящая сила cudaHashcat или oclHashcat или Hashcat на Kali Linux для взлома WPA2 WPA паролей.
Но не нужно бояться запутаться в этих масках, в нашем распоряжении такой мощный инструмент как пользовательские наборы символов. О них чуть ниже.
Вы можете ещё более ускорить процесс, если вы знаете, что лицо, чей пароль вы разгадываете, использует только ЗАГЛАВНЫЕ буквы в начале пароля, несколько строчных букв и заканчивает цифрами.
Например так: Abcde123
Ваша маска будет:
Взлом произойдёт значительно быстрее.
Пользовательские наборы символов
Все версии Hashcat имеют четыре параметра командной строки для настройки пользовательских наборов символов.
Синтаксис этих параметров следующий:
Где CS — это и есть пользовательский набор символов. CS можно задавать как перебором символов, встроенными наборами символов и т. д. Чуть ниже будут примеры, которые помогут разобраться, если не совсем понятно.
У этих параметров командной строки есть и короткие аналоги: -1, -2, -3 и -4. Их можно использовать прямо в командной строке и в так называемых файлах пользовательских наборов символов hashcat (обычный текстовый файл с расширением .hcchr, который содержит символы/цифры, которые будут использоваться в первой строке файла). Посмотрите эти примеры:
Каждая следующая команда определяет одинаковый пользовательский набор символов, который состоит из следующих символов “abcdefghijklmnopqrstuvwxyz0123456789” (aka “lalpha-numeric”):
На Kali Linux посмотреть все доступные файлы пользовательских наборов символов .hcchr для разных языков можно командами:
tree /usr/share/maskprocessor/charsets/
или
tree /usr/share/hashcat/charsets/
Помните нашу задачу: пароль начинается на abc, в общей сложности имеет 8 символов, причём в нём точно нет специальных символов. Теперь вместо составления большого количества масок, можно использовать следующий пользовательский набор:
Задаём пользовательский набор, который включает все большие и маленькие буквы, а также цифры:
Не знаю, хорошо ли вам видно, но там используются цифра 1. Буква l не используется.
Ну хватит про МАСКи. Захватывать файлы рукопожатий (хэндшейки) можно разными программами. Об одном из методов было, например, рассказано в предыдущей инструкции о взломе Wifi WPA2 WPA паролей с использованием pyrit и cowpatty в Kali Linux. Будем считать, что файлы рукопожатий у вас уже есть или вы знаете как их раздобыть.
Очистка ваших файлов .cap программой wpaclean
Следующим шагом мы конвертируем файл .cap в формат, который будет понятен Hashcat (cudaHashcat или oclHashcat).
Для ручной конвертации .cap используйте следующую команду в Kali Linux.
Конвертация файлов .cap в формат .hccap
Нам нужно конвертировать этот файл в формат, понятный Hashcat (cudaHashcat или oclHashcat).
Для его конвертирования в формат .hccap с помощью “aircrack-ng” нам нужно использовать опцию -J
Обратите внимание -J это заглавная J а не маленькая j.
В моём случае команда следующая:
Взлом WPA2 WPA рукопожатий с Hashcat
Hashcat (cudaHashcat или oclHashcat) очень гибкие. Я охвачу только два наиболее общих и базовых сценария:
- Атака по словарю
- Атака по маске
Атака по словарю
Раздобудьте какие-нибудь словари, вроде Rockyou.Прочитайте эту заметку для детальных инструкций о том как получить файл словаря, отсортировать/очистить и т.д.
Для начала нам нужно узнать, какой режим использовать для файла хендшейка WPA2 WPA. Этот вопрос раскрыт в полной мере в статье «Взлом хешей паролей MD5, phpBB, MySQL и SHA1 с помощью Hashcat в Kali Linux». Здесь только краткое изложение:
Мы используем следующую команду для старта процесса взлома:
Поскольку я установил oclHashcat.
У тех, кто установил cudaHashcat, команда выглядить так:
У меня всё получилось быстро, поскольку пароль для беспроводной ТД был простым. Это заняло секунды. В зависимости от размера словаря, процесс может занять довольно много времени.
Не забываем, что если использовать атаку по словарю, то Pyrit будет намного-намного быстрее чем любая из троицы cudaHashcat или oclHashcat или Hashcat.
Про атаку по словарю уже рассказано, не будем повторяться. Если пропустили, то читайте «Взлом хешей паролей MD5, phpBB, MySQL и SHA1 с помощью Hashcat в Kali Linux» там тема атаки по словарю раскрыта в полной мере.
Атака методом перебора — брутфорс
Теперь главная часть этой инструкции. Использование атаки методом перебора по МАСКе.
Для взлома файла рукопожатия WPA WPA2 с Hashcat (cudaHashcat или oclHashcat) используйте следующую команду:
- Где -m = 2500 означает атаку на файл рукопожатия WPA2 WPA.
- -a = 3 означает использование брутфорса (она совместима с атакой по маске).
- capture.hccap = Наш конфертированный файл .cap. Мы сгенерировали его программами wpaclean и aircrack-ng.
- ?d?d?d?d?d?d?d?d = Это наша маска, где d = цифра. Это означает, что пароль полностью состоит из цифр, например, 78964352 или 12345678 и т.д.
Я сделал маску под свою задачу, чтобы ускорить процесс. Вы можете создавать ваши собственные маски подобным образом, как объяснено выше. Если планируется использовать МАСКу многократно, то своё драгоценное творение можно сохранить в файл. Назовём его, к примеру codeby-1.hcmask. Поместить его можно к остальным маскам.
Кстати, посмотреть дефолтныей файлы МАСОК, поставляемых с oclHashcat можно здесь:
ls /usr/share/oclhashcat/masks/
Когда я вновь захочу использовать созданную мной маску, то команда будет примерно следующая:
Пример файлов .hcmask file
Вы можете проверить содержимое файла образца .hcmask следующей командой:
Эти файлы образцов можно использовать в оригинальном виде с Hashcat (cudaHashcat или oclHashcat) или отредактировать под свои нужды.
Расположение взломанных паролей
Hashcat (cudaHashcat или oclHashcat) сохраняет все раскрытые пароли в файл. Вы найдёте его в той же рабочей директории, где вы запустили Hashcat. В моём случае я запускал все команды из моей домашней директории, т. е. в /root.
Мы рассмотрели все основные приёмы перебора паролей по маске. Тем не менее, отсылаю вас к официальному сайту hashcat.net, к его вики и инструкциям. Там вы найдёте дополнительную информацию.
Также необходимо помнить, что существуют ещё и другие типы атак: атака по отпечаткам, гибридная атака, перестановочная атака, атака основанная на правиле, табличная атака, атака с переключением раскладки.


Поясню некоторые опции, с которыми загружается oclHashcat:
-a 3 – режим атаки брут-форс (перебор);
-m 400 – тип хеша – md5 wordpress;
-i — increment-min=8 –increment-max=8 – длина пароля;
-1 01234567890 – используемые в пароле символы (-1 – первый набор);
tmp8355.tmp – временный файл, содержащий наш хеш;
-1 ?d ?1?1?1?1?1?1?1?1 – маска пароля. Десятичные цифры из первого набора, 8 штук;
-w 3 –gpu-temp-abort=80 –gpu-temp-retain=70 – режим работы с высокой доступностью пользовательского окружения (не тупит всё), температура остановки перебора и температура догона.
–session=all – определяет имя сессии (для возможного продолжения перебора);
–force – игнорируем предупреждения;
Итак, выполняем команду:

Что мы видим. В общем-то статусное окно, в котором показана вся интересующая нас информация. Важное, на что тут можно обратить внимание – Speed.GPU.#1 – 207.7 kH/s – скорость подбора, 207700 вариантов в секунду. Сто миллионов вариантов делим на это число, получится чуть больше восьми минут. Намного более приятный рейт.
Подождём некоторое время.

Через 3 минуты 18 секунд пароль сдался. Статус Cracked. oclHashcat решила задачку и выдала результат: 13011987 – похоже на дату рождения. Какой неосторожный админ.
Для сравнения, если бы он использовал не цифры, а только маленькие латинские буквы, количество всевозможных вариантов при том же раскладе составило бы: 208827064576 штук. А это при наихудшем варианте почти две недели перебора. А если взять больше и малые буквы, цифры и спец.символы? А ещё и длину около 9-10 символов? 6634204312890625 вариантов (и то не все спецсимволы). А теперь для примера представим, что злоумышленник обладает графической станцией с восемью AMD R9 290X топовыми графическими картами с разгоном, которые обеспечат ему 15,5 лет увлекательного перебора нашего пароля.*
Radeon
Case





