Mask Attack
Try all combinations from a given keyspace just like in Brute-Force attack, but more specific.
Advantage over Brute-Force
The reason for doing this and not to stick to the traditional Brute-Force is that we want to reduce the password candidate keyspace to a more efficient one.
Here is a single example. We want to crack the password: Julia1984
In traditional Brute-Force attack we require a charset that contains all upper-case letters, all lower-case letters and all digits (aka “mixalpha-numeric”). The Password length is 9, so we have to iterate through 62^9 (13.537.086.546.263.552) combinations. Lets say we crack with a rate of 100M/s, this requires more than 4 years to complete.
In Mask attack we know about humans and how they design passwords. The above password matches a simple but common pattern. A name and year appended to it. We can also configure the attack to try the upper-case letters only on the first position. It is very uncommon to see an upper-case letter only in the second or the third position. To make it short, with Mask attack we can reduce the keyspace to 52*26*26*26*26*10*10*10*10 (237.627.520.000) combinations. With the same cracking rate of 100M/s, this requires just 40 minutes to complete.
Disadvantage compared to Brute-Force
There is none. One can argue that the above example is very specific but this does not matter. Even in mask attack we can configure our mask to use exactly the same keyspace as the Brute-Force attack does. The thing is just that this cannot work vice versa.
Note that masks are split into two parts internally to give hashcat something to work as an amplifier to overcome PCI-E bottleneck.
Masks
For each position of the generated password candidates we need to configure a placeholder. If a password we want to crack has the length 8, our mask must consist of 8 placeholders.
Output
Optimized due its partially reverse algorithms, password candidates are generated in the following order:
NOTE: This shows that the first four letters are increased first and most often. The exact number however can vary, especially in a smaller keyspace, but it is fixed until a keyspace has been scanned completly.
Built-in charsets
Custom charsets
All hashcat derivates have four commandline-parameters to configure four custom charsets.
These commandline-parameters have four analogue shortcuts called -1, -2, -3 and -4. You can specify the chars directly on the command line or use a so-called hashcat charset file (plain text file with .hcchr extension which contains the chars/digits to be used on the 1st line of the file). See examples below:
Examples
The following commands all define the same custom charset that consists of the chars “abcdefghijklmnopqrstuvwxyz0123456789” (aka “lalpha-numeric”):
The following command defines a charset that consists of the chars “0123456789abcdef”:
The following command defines a full 7-bit ascii charset (aka “mixalpha-numeric-all-space”):
The following command sets the first custom charset (-1) to russian language specific chars:
Example
The following commands creates the following password candidates:
Password length increment
A Mask attack is always specific to a password length. For example, if we use the mask “?l?l?l?l?l?l?l?l” we can only crack a password of the length 8. But if the password we try to crack has the length 7 we will not find it. Thats why we have to repeat the attack several times, each time with one placeholder added to the mask. This is transparently automated by using the “—increment” flag (Attention: the mask length itself is the limiting factor for hashcat. That implies that if i.e. the mask is only of length 4 —increment won't increment the length of the password candidates above 4. A mask of length, therefore, won't increase at all even if —increment was specified).
Hashcat charset files
Hashcat charsets files (file extension: .hcchr) are a convenient way to reuse charsets, define custom charsets and use the language-specific charsets shipped by hashcat.
These files can be used together with the —custom-charsetN= (or -1, -2, -3 and -4) parameter. Instead of providing all the charset directly on command line, the support for .hcchr files allows one to specify the path to the file:
It is important that .hcchr files are created with language specific file encodings (e.g. cp1252, ISO-8859-15 etc). For examples of content and encoding of .hcchr files, see the examples shipped with hashcat (e.g. [HASHCATROOT]/charsets/standard/Italian/).
Hint: use iconv and similar tools to convert the files to a language specific file encoding (if for instance created as UTF-8 file).
Hashcat mask files
Hashcat mask files (file extension: .hcmask) are files which contain custom charsets (optional) and masks (e.g. ?1?1?1?1?d?d) line-by-line. The advantage of using .hcmask files, which are plain text files, is that those files allow the hashcat user to have a set of predefined and well-working masks stored within a file (or several e.g. password policy specific files) where the lines contained in the hcmask file could for instance be sorted by increasing runtime and/or likelihood of matches*.
The general format of 1 single line in the .hcmask file is as follows:
where the placeholders are as follows:
* see the PACK program and some example hcmask files shipped by hashcat (in the masks/ folder).
You supply the .hcmask file just where you would normally place the single mask on the command line, like so:
Other less-important syntax available in .hcmask files:
Example
The following .hcmask file contains some valid example lines which show how to use this feature:
Charsets in hex
This can be done by some of the hashcat tools using the “—hex-charset” flag.
Статья Взлом паролей WPA2/WPA с помощью Hashcat в Kali Linux (атака перебором 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 – Инструмент по восстановлению использующий центральный процессор
- oclHashcat – Инструмент использующий графический процессор
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
- Атака по словарю
- Атака по маске
Раздобудьте какие-нибудь словари, вроде 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 и т.д.
Кстати, посмотреть дефолтныей файлы МАСОК, поставляемых с oclHashcat можно здесь:
ls /usr/share/oclhashcat/masks/
Когда я вновь захочу использовать созданную мной маску, то команда будет примерно следующая:
Пример файлов .hcmask file
Вы можете проверить содержимое файла образца .hcmask следующей командой:
Эти файлы образцов можно использовать в оригинальном виде с Hashcat (cudaHashcat или oclHashcat) или отредактировать под свои нужды.
Расположение взломанных паролей
Hashcat (cudaHashcat или oclHashcat) сохраняет все раскрытые пароли в файл. Вы найдёте его в той же рабочей директории, где вы запустили Hashcat. В моём случае я запускал все команды из моей домашней директории, т. е. в /root.
Мы рассмотрели все основные приёмы перебора паролей по маске. Тем не менее, отсылаю вас к официальному сайту hashcat.net, к его вики и инструкциям. Там вы найдёте дополнительную информацию.
Также необходимо помнить, что существуют ещё и другие типы атак: атака по отпечаткам, гибридная атака, перестановочная атака, атака основанная на правиле, табличная атака, атака с переключением раскладки.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Виды атак Hashcat
Hashcat предлагает множество моделей атак для получения максимального эффекта и комплексного покрытия пространства хешей. Есть следующий режимы:
- Атака брут-форсом (перебором)
- Комбинаторная атака
- Атака по словарю
- Гибридная атака
- Атака по Маске
- Перестановочная атака
- Атака на основе правил
- Табличная атака
- Атака с переключением регистра
Атака по Маске (Брут-Форс)
Описание Атаки по Маске (Брут-Форса)
При Атаке по маске пробуются все комбинации из заданного пространства ключей — в точности как атака Брут-Форс, но имеются особенности.
Преимущества по сравнению с Брут-Форсом
Причина использовать атаку по маске и не зацикливаться на Брут-Форсе в том, что мы хотим уменьшить количество кандидатов в пароли в пространстве ключей до самых вероятных.
Вот один пример. Мы хотим взломать пароль: Julia1984
В традиционной атаке Брут-Форс нам требуется набор символов, который включает все заглавные буквы, все строчные буквы и все цифры (aka “mixalpha-numeric”). Длина пароля — 9, поэтому нам нужно пройти через 62^9 (13.537.086.546.263.552) комбинаций. Допустим мы взламываем на скорости 100M/s, это потребует более 4 лет для завершения.
В атаке по Маске мы имеем представление о людях и о том, как они делают пароли. Вышеприведённый пароль соответствует простому, но распространённому паттерну (образцу). В нём имеется имя и год. Вы можем также настроить атаку — пробовать буквы верхнего регистра только в первой позиции. Очень нечасто можно увидеть буквы верхнего регистра только во второй или в третей позиции. Мы делаем пространство ключей короче, с атакой по Маске мы можем уменьшить его до 52*26*26*26*26*10*10*10*10 (237.627.520.000) комбинаций. С такой же скоростью взлома 100M/s, это потребует всего 40 минут до завершения.
Недостатки по сравнению с Брут-Форсом
А их нет. Кто-то может возразить, что приведённый пример очень специфичен, но это не имеет значения. Даже в атаке по маске мы можем настроить атаку таким образом, что её поведение будет в точности как у атаки Брут-Форс. А в обратную сторону это не работает.
Маски
Для каждой позиции генерируемого кандидата в пароли нам нужно настроить заполнитель. Если пароль, который мы хотим взламывать, имеет длину 8, наша маска должна содержать 8 заполнителей.
- Маска — это простая строка, которая, используя заполнители, настраивает пространство ключей для движка кандидатов в пароли.
- Заполнитель может быть как: пользовательским набором символов, встроенным набором символов или статичным символом.
- Переменные помечаются символом ?, после которого следует встроенный набор символов (l, u, d, s, a) или одно из имён пользовательских наборов символов (1, 2, 3, 4).
- Статический символы не помечаются каким-либо образом. Исключения для символа ?, если мы хотим именно знак вопроса, то нужно записать так — .
Выход
Оптимизированные, благодаря небольшому изменению алгоритмы, кандидаты в пароли генерируются в следующем порядке:
ПРИМЕЧАНИЕ: Здесь показано, что первые четыре символа увеличиваются первыми и наиболее часто. При этом точные значения могут разниться, особенно с уменьшением пространства ключей, но факт в том, что пространство ключа будет выбрано до последнего.
Встроенные наборы символов
- ?l = abcdefghijklmnopqrstuvwxyz
- ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
- ?d = 0123456789
- ?h = 0123456789abcdef
- ?H = 0123456789ABCDEF
- ?s = «пробел»!"#$%&'()*+,-./:;<=>?@[\]^_`
Пользовательские наборы символов
Все производные hashcat имеют четыре параметра командной строки для настройки четырёх пользовательских наборов символов.
Эти параметры командной строки имеют четыре сокращённых названия -1, -2, -3 и -4. Вы можете задать символы непосредственно в командной строке или использовать так называемые файлы наборов символов hashcat (обычные текстовые файлы с расширением .hcchr, в которых в первой строке файла содержаться символы для использования. Смотрите примеры ниже:
Примеры пользовательских наборов символов:
Следующие все команды определяют один и тот же пользовательский набор символов, который состоит из “abcdefghijklmnopqrstuvwxyz0123456789” (aka “lalpha-numeric”):
Следующая опция определяет набор символов, который состоит из “0123456789abcdef”:
Следующая опция определяет полный набор 7-битных символов (aka “mixalpha-numeric-all-space”):
Следующая опция устанавливает для первого набора символов (-1) содержать все символы русского алфавита:
Пример пространства ключей по маске
Следующие команды создают такие кандидаты в пароли как:
Увеличение длины пароля
Атака по Маске всегда специфична к длине пароля. Например, если мы используем маску “?l?l?l?l?l?l?l?l”, то мы можем только взламать пароль длинной 8 символов. Но если пароль, который мы пытаемся взломать имеет длину 7 символов, мы его не найдём. Поэтому нам требуется повторять атаку несколько раз, и при каждом новом запуске добавлять в маску один заполнитель. Это делается на полном автомате с флагом “—increment”.
Файлы Hashcat с наборами символов
Файлы Hashcat с наборами символов (расширение файлов .hcchr) — это удобный способ повторно использовать наборы символов, указывайте пользовательский наборы символов и используйте поставляемые с hashcat наборы для определённых языков.
Эти файлы могут использоваться совместно с параметром —custom-charset=N (или -1, -2, -3 и -4). Вместо указания всех символов непосредственно в командной строке, можно указать путь до файла .hcchr:
Важно то, что файлы .hcchr создаются со специфичной для языка кодировкой (например, cp1252, ISO-8859-15 и т.д.). Для примеров содержимого и кодировки файлов .hcchr смотрите примеры, поставляющиеся с hashcat (например [HASHCATROOT]/charsets/standard/Italian/).
Совет: используйте iconv и подобные инструменты для конвертации файлов в специфические файловые кодировки (если, например, создали файл в UTF-8).
Файлы Hashcat с масками
Файлы Hashcat с масками (расширение файла .hcmask) — это файлы, которые построчно содержат пользовательские наборы символов (опционально) и маски (например, ?1?1?1?1?d?d). Преимущество использования файлов .hcmask, которые представляют собой обычный текст, в том, что эти файлы позволяют пользователям hashcat иметь предопределённые и хорошо работающие маски, сохранённые в файле (или нескольких, например, файлах под конкретные политики паролей), где строки, содержащиеся в файле hcmask, могут, например, быть отсортированы по увеличению времени работы и/или по вероятности совпадения*.
Обычным форматом является одна единственная строка в файле .hcmask вроде следующей:
где заполнителями являются следующие:
- [?1] первый набор символов (—custom-charset1 или -1) будет установлен в эту величину, опционально
- [?2] второй набор символов (—custom-charset2 или -2) будет установлен в эту величину, опционально
- [?3] третий набор символов (—custom-charset3 или -3) будет установлен в эту величину, опционально
- [?4] четвёртый набор символов (—custom-charset4 или -4) будет установлен в эту величину, опционально
- [mask] маска, которая может (но не обязательно) использовать пользовательские наборы символов, определённые в [?1], [?2], [?3] или [?4] и может использовать любые дополнительные предопределённые наборы символов (?d, ?l, ?u, ?s, ?a, ?b) и может также содержать фиксированные символы (пример маски: pass?1?d?d?2?l?l
* смотрите ПАКЕТ программы и несколько примеров файлов hcmask поставляемых с hashcat (в каталоги masks/).
В конмадной строке вы указываете ссылку на файл .hcmask в том месте, где разместили бы одиночную маску. Примерно так:
Другой не такой важный, но доступный синтаксис файлов .hcmask:
- с # вы можете закомментировать строку (она не будет использоваться), с \# вы можете использовать # в пользовательском наборе символов или маске
- \, означает, что запятая должна использоваться буквально (а не как разделитель между ?1, ?2, ?3, ?4 или маской)
- ?? внутри маски или пользовательских кодировок означает, что вопросительный знак следует использовать как буквальный символ (в противном случае, если использовался только один вопросительный знак, он был бы интерпретирован как начало ссылки на пользовательский набор символов или встроенную кодировку)
- Файлы .hcmask можно использовать вместе с параметром -i (приращение) для режима брут-форса.
- Не допускается, чтобы [маска] содержала ссылки ?1,?2,?3 или ?4 если они не установлены с помощью [?1], [?2], [?3], [?4]. Это приведёт к сообщению об ошибке. Если вы хотите использовать пользовательскую кодировку для своих масок, вы должны определить её в той же строке файла hcmask, используя поля [?1], [?2], [?3], [?4].
- Если, например, [?2] не был установлен, потому что он не нужен, запятая, которая обычно следует за [?2], также должна быть опущена. См. примеры ниже.
Примеры файлов масок
Следующий файл example.hcmask содержит несколько примеров валидных строк, которые показывают как использовать эту функцию:
Наборы символов в шестнадцатеричном формате
Это может быть сделано некоторыми инструментами hashcat с использованием флага “—hex-charset”.
Комбинаторная атака
Описание комбинаторной атаки
Каждое слово в словаре добавляется к каждому слову в словаре.
Если наш словарь содержит слова:
Вывод
Hashcat создаст следующие кандидаты в пароли:
Комбинаторная атака
Использование комбинаторной атаки в hashcat (это не отдельная версия Комбинаторной атаки).
Команда для Комбинаторной атаки в hashcat это -a 1
Вам нужно указать ровно 2 словаря в вашей командной строке, например:
Если вам хочется добавить правила к левому или правому словарю или к обоим одновременно, тогда вы можете использовать ключи -j или -k.
Вывод должен быть таким…
Атака по словарю
Описание атаки по словарю
Атака по словарю или «прямой режим» — это очень простой вид атаки. Она также известна как «Атака по списку слов»,
Всё, что требуется, это прочитать построчно текстовый файла (также известных как «словарь» или «список слов») и попробовать каждую строчку в качестве кандидата в пароли.
Гибридная атака
Описание гибридной атаки
В принципе, Гибридная атака — это всего лишь Комбинаторная атака. Одна сторона — это просто словарь, другая сторона — результат атаки Брут-Форс. Другими словами, полное пространство ключей Брут-Форса добавляется или предваряется к каждому слову в словаре. Поэтому она называется «гибридной».
В качестве альтернативы вы можете использовать Атаку по маске или Атаку основанную на правиле для замены Брут-Форсной стороны.
Примеры
Если ваш example.dict содержит:
генерирует следующие кандидаты в пароли:
Это работает и в противоположную сторону!
генерирует следующие кандидаты в пароли:
Использование правил для создания Гибридной атаки
Мы можем использовать движок правил в hashcat для эмуляции Гибридной атаки.
Всё, что нужно, это сгенерировать так называемое правило брут-форса. Это просто все возможные правила, требуемые для генерации всех возможных комбинаций.
Это полезно, если вы хотите выполнить Гибридную атаку hashcat. Всё, что вам нужно, это добавить “-r bf.rule”.
Пример 1, добавление к словарю
Это добавит 0000 — 9999 к каждому слову из вашего словаря:
Пример 2, предваряя словарь
Это поставит aa — zz перед каждым словом из вашего словаря:
Перестановочная атака
Описание перестановочной атаки
Каждое слово в словаре генерирует перестановки из себя (используются буквы слова для создания новых слов).
Если наш словарь содержит слова:
Вывод
Hashcat создаст следующие кандидаты в пароли:
Оптимизация перестановочной атаки
Эта атака может быть оптимизирована если вы подготовите ваши словари. Смотрите секцию по утилите prepare на странице Hashcat-utils.
Атака на основе правил
Описание Атаки основанной на правиле
Атака основанная на правиле является самой сложной из всех режимов атак. Причина этого очень проста. Атака основанная на правиле похожа на язык программирования, созданный для генерации кандидатов в пароли. Она имеет функции для модификации, обрезки или увеличения слов и имеет операторы условия для пропуска определённых слов и т. д. Это делает её наиболее гибкой, аккуратной и эффективной атакой.
Почему бы не остановиться на регулярных выражениях
Зачем изобретать колесо? Ответ прост: регулярные выражения слишком медленны. Обычно мы хотим сгенерировать 1.000.000.000 (или более) новых кандидатов в пароли за менее чем 10 миллисекунд перед тем как алгоритм хеширования начнёт простаивать, а затем снова и снова, секунду за секундой. Просто взгляните на отображение скорости вашего GPU, чтобы получить представление об этом.
Совместимость с другими движками правил
Движок правил Hashcat написан так, чтобы все функции, которые делят одинаковое буквенное имя, были на 100% совместимы с правилами John the Ripper и PasswordsPro и наоборот. Позже были представлены некоторые собственные функции, которые несовместимы. Но эти функции получили их собственные буквенные имена во избежание конфликтов.
Реализация совместимых функций
Следующие функции на 100% совместимы с John the Ripper и PasswordsPro:
- * Показывает, что N начинается на 0. Для позиций символов отличных от 0-9 используйте A-Z (A=11)
- + Показывает что это правило реализовано только в hashcat.
- # Изменена в oclHashcat v1.37 → v1.38 и hashcat v0.51 → v0.52
Правила, используемые для отклонения паролей
| Имя | Функция | Описание | Пример правила | Примечание |
|---|---|---|---|---|
| Отклонить менее | <N | Отклонить пароли длиной более чем N | <16 | * |
| Отклонить более | >N | Отклонить пароли длиной менее чем N | >7 | * |
| Отклонить равные | _N | Отклонить пароли длиной не равной N | _7 | * |
| Отклонить содержащего | !X | Отклонить пароли содержащие символ X | !z | |
| Отклонить не содержащего | /X | Отклонить пароли, которые не содержат символ X | /e | |
| Отклонить равный первому | (X | Отклонить пароли, которые не начинаются с X | (h | |
| Отклонить равный последний | )X | Отклонить пароли, которые не оканчиваются на X | )t | |
| Отклонить равный на | =NX | Отклонить пароли, которые не имеют символа X в позиции N | =1a | * |
| Отклонить содержащий | %NX | Отклонить пароли, которые содержат символ X менее чем N раз | %2a | * |
| Отклонить содержащий | Q | Отклонить пароли, где сохранённое в память соответствует текущему слову | rMrQ | для палиндромов, например |
Примечание. Правила отклонения работают только с hashcat-legacy или при использовании «-j» или «-k» с hashcat. Они не будут работать как обычные правила (в файле правил) с hashcat.
* Указывает, что N начинается с 0. Для позиций символов, отличных от 0–9, используйте A-Z (A=10)
Реализация специфичных функций
Следующие функции недоступны в John the Ripper и PasswordsPro:
- * Показывает, что N начинается с 0. Для позиций символов отличных от 0-9 используйте A-Z (A=10)
- + Только в JtR?
- # В бета-версии или ещё не выпущена
Запись правил
Самая важная часть в записи правил — это понимание что же вы хотите записать. Обычно это означает, что вы должна проанализировать множество паролей в открытом виде, может быть от клиентов, чтобы увидеть образец. Например, популярный образец — люди добавляют цифру к их паролю для увеличения надёжности. Итак, мы имеем два «параметра».
- Мы хотим что-то добавить.
- Величина, которую мы хотим добавить, — это цифра.
Если мы взглянем на обзор функций, мы увидим возможность что-то добавить используя функцию '$'. Поэтому, например, если мы хотим добавить к нашему паролю “1”, мы записываем правило, которое выглядит вроде этого.
$1
Достаточно просто. Но что если мы хотим сделать это со всеми цифрами 1 — 9? Это то, что мы называем Гибридной атакой, просто взгляните на этот раздел.
- Белые пробелы игнорируются до тех пор, пока они не используются в качестве параметра. Это позволяет немного форматировать наш «исходный код».
- Чтобы закомментировать текст его нужно начать с символа “#”.
Генерация правил
Есть два способа автоматической «генерации» правил.
- Используя maskprocessor.
- Используя случайные правила.
Использование maskprocessor для генерации правил
maskprocessor — это мощный инструмент и использоваться он может разными способами, в этом случае: для создания правил, работающих с hashcat или oclHashcat.
Создание правил
Давайте предположим, вы хотите создать правило, которое добавляет по 3 цифры после каждого слова в вашем словаре и сохранить как “append_3_digits.rule”.
Как вы можете увидеть, создание правил руками может быть очень скучным и затратным по времени :p
Используя maskprocessor
maskprocessor позволяет вам легко и быстро сгенерировать файл с правилами
- $ — это функция для добавления символа
- ?d — это набор символов из цифр
Примеры команды
Вот несколько примеров команды, которые дадут вам возможность локально сгененировать популярные правила на вашем собственном компьютере.
Скопируйте подходящий набор команд в вашу операционную систему (32/64) bit.
- Скопируйте их в текстовый файл и назовите его “Hashcat Rule Generator.cmd”.
- Разместите новый файл в ту же директорию где и mask-processor и дважды кликните на него.
Вы очень быстро станете собственником группы широко используемых парольных модификаций. Каждый файл правила имеет собственное имя для помощи вам в понимании его функции.
Ограничения
Когда вы пытаетесь вставить символ ^ заключите его в кавычки, поскольку это экранирующий символ в командной строке Widnows, и поэтому он не будет напечатан если не обнесён кавычками.
Случайные правила
Это очень уникальная функция hashcat. С hashcat вы можете сгенерировать случайные правила на лету для использования в этой сессии. Это хорошая вещь, если у вас закончались идеи и вы перепробовали все свои правила на всех ваших словарях. Имеется три конфигурационных параметра:
- Говорит hashcat сгенерировать ЧИСЛО правил для применения к каждой попытке:
- Указывает ЧИСЛО функций которые нужно использовать (диапазон от минимума до максимума):
Это число может быть неограниченным, но большие цифры не рекомендуются. Когда используется соединение с –g, все правила за пределами этих настроек будут игнорироваться.
Например, программа может случайно сгенерировать правила “l r”, “l ^f” и “sa@”, это валидные для использования правила. Тем не менее комбинация “l ^f sa@ r $3” будет проигнорирована, поскольку она содержит 5 функций. По умолчанию: минимум=1, максимум=4.
Вы можете смешивать ваши правила из файла с правилами со случайно сгенерированными правилами. Например, если ваш файл с правилами содержит 200 правил и вы используете -g 500, то будет сгенерировано 300 дополнительных правил.
Сохранение подходящих правил
Это становится очень удобным особенно в комбинации с генератором правил, а также для статистического анализа ваших наборов правил.
Для сохранения любого правила, который генерирует подходящие пароли, используйте эти переключатели:
Это сохранит подходящее правило на каждое вхождение, следовательно, конечный файл с правилами может содержать много одинаковых правил.
При высоких скоростях взлома в секунду это может немного замедлить перебор. При более низких скоростях перебора в секунду воздействие, вероятно, незначительно.
Отладка правил
С hashcat мы можем с лёгкостью отлаживать наши правила. Это означает, что мы можем убедиться что правило, которое мы написали, делает именно то, что мы хотели бы чтобы оно делало. Всё, что вам нужно, это использовать переключатель —stdout и пропустить список хешей.
Создание простого словаря:
Генерируем простое правило. Правило “c” делает заглавной первую букву и маленькими остальные.
И теперь мы видем сгенерированный вывод оттладки:
«Фичей» этого является очень быстрая генерация кандидатов в пароли. Это означает, что если мы имеем несколько внешних программ, которые поддерживают чтение из стандартного ввода, мы можем скармливать им наш вывод.
Использование 'p' (N-ный экземпляр символа) с позиционными правилами
Код позиции символа 'p' запоминает позицию N-го экземпляра символа и делает эту позицию доступной для использования в правилах, которые работают с позициями внутри строки. 'p' становится доступным автоматически при использовании '%' (отклонять простые символы, если они не имеют хотя бы X вхождений определённого символа) и '/' (отклонять простые символы, не содержащие определённого символа).
Если вы хотите работать только с первым экземпляром символа, вы можете использовать %1s или просто использовать '/':
Если вы хотите работать только со вторым экземпляром:
… и т. д. В отличие от правила 's', которое заменяет все экземпляры символа, это позволяет выбрать, какой экземпляр символа заменить.
Вы также можете использовать эту функцию для замены одного символа несколькими символами:
Обратите внимание, что правила, использующие код позиции символа «p», работают только при использовании параметров командной строки «-j» или «-k».
В приведённых ниже примерах часть правила '%2s' означает «отклонять пароли, если они не содержат хотя бы два символа 's'», а затем 'p' означает «работать с позицией, представленной вторым символом 's'».
| Имя | Функция | Описание | Пример правила | Слово на входе | Слово на выходе | Примечание |
|---|---|---|---|---|---|---|
| Переключить @ | Tp | Переключить регистр символов в позиции p | %2s Tp | p@s.sW0rd | p@s.SW0rd | |
| Удалить @ p | Dp | Удаляет символ в позиции p | %2s Dp | p@s.sW0rd | p@s.W0rd | |
| Извлечь диапазон | xpM | Извлекает M символов, начиная с позиции p | %2s xp4 | p@s.sW0rd | sW0r | |
| Убрать диапазон | OpM | Удаляет M символов, начиная с позиции p | %2s Op2 | p@s.sW0rd | p@s.0rd | |
| Вставить @ p | ipX | Вставляет символ X в позицию p | %2s ip! | p@s.sW0rd | p@s.!sW0rd | |
| Перезаписать @ p | opX | Заменяет символ в позиции p на X | %2s op$ | p@s.sW0rd | p@s.$W0rd | |
| Обрезать @ p | 'p | Обрезает слово в позиции p | %2s 'p | p@s.sW0rd | p@s. | |
| Извлечь память | XpMI | Вставить подстроку длины M, начиная с позиции p слова, сохраненного в памяти в позиции I | %2s lMXp28 | p@s.sW0rd | p@s.sw0rswd | |
| Поменять @ p | *pM | Меняет местами символ в позиции p на символ в позиции M | %2s *p4 | p@s.sW0rd | p@s.sW0rd | |
| Побитовый сдвиг влево | Lp | Побитовый сдвиг влево символа @ p | %2s Lp | p@s.sW0rd | p@s.▒W0rd | |
| Побитовый сдвиг вправо | Rp | Побитовый сдвиг вправо символа @ p | %2s Rp | p@s.sW0rd | p@s.9W0rd | |
| Увеличение ASCII | +p | Увеличивает символ @ p на 1 значение ASCII | %2s +p | p@s.sW0rd | p@s.tW0rd | |
| Уменьшение ASCII | -p | Уменьшить символ @ p на 1 значение ASCII | %2s -p | p@s.sW0rd | p@s.rW0rd | |
| Замена p + 1 | .p | Заменяет символ @ p значением @ p плюс 1 | %2s .p | p@s.sW0rd | p@s.WW0rd | |
| Замена p — 1 | ,p | Заменяет символ @ p значением @ p минус 1 | %2s ,p | p@s.sW0rd | p@s..W0rd |
Смотрите каталог rules/ в hashcat для примеров.
Множественные правила
С выходом старенькой oclHashcat-plus v0.07 в мир взлома с использованием правил добавилась новая возможность.
Вместо указания одного параметра -r и файла, теперь вы можете добавить так много -r, как вам хочется.
Они не выполняются последовательно!
Каждое правило каждого файла с правилами комбинируется с каждым правилом каждого файла с правилами. Таким путём вы можете легко приготовить ваш собственный режим атаки.
Поскольку общее количество сгенерированных правил является произведением всех списков, складывание нескольких больших списков может быстро превысить доступную память. Но несколько хорошо подобранных правил можно сложить друг с другом, чтобы добиться большого эффекта.
Поддержка Атаки основанной на правилах
Эта атака в настоящее время поддерживается в:
- hashcat
- hashcat-legacy
Ограничения Атаки основанной на правилах
С hashcat в настоящее время число функций в одной строке правила или коллективных множественных правил в одной строке ограничено 31 функциями.
Табличная атака (устарела, присутствует только в hashcat-legacy)
Описание Табличной атаки
С каждым словом из нашего словаря автоматически генерируются маски как в пакетном режиме Атаки по маске.
Табличную атаку не нужно путать с Радужными Таблицами.
Если наш словарь содержит слово
Оно расщепляется на отдельные символы.
- w
- o
- r
- d
- 1
Следующий шаг это «поиск» каждого из этих символов в «Таблице». Просто продолжайте читать…
Обязательная настройка
Следующий бокс показывает, что мы зовём «Таблицей». То, что мы настроили здесь, это задания. Как обычно в заданиях, мы имеем левую и правую стороны.
Необязательная настройка
Hashcat имеет два параметра командной строки для тонкой настройки этой атаки. Но почему вообще эта простая атака требует настройки? Причина этого в том, что создаётся так много комбинаций, что они никогда не закончатся.
Например, если у нас в нашем словаре есть длинное слово вроде “111111111111111”, которое имеет длину 15, а таблица содержит…
…hashcat должна сгенерировать 10^15 (1.000.000.000.000.000) комбинаций.
Следующие команды дают возможность пользователю задать длину пароля, который они хотят модифицировать.
По умолчанию установлено в: 2
По умолчанию установлено в: 15
И слова за пределами указанной длины будут пропущены.
Вывод
Перед тем, как hashcat сгенерирует маску, она берёт каждый символ из результата расщепления и проверяет их на соответствие табличной конфигурации. Если совпадает, она заменяет символ на символ из правого части правила. Да, точно, и создаёт таким образом новые слова. Это именно то, что нам здесь нужно. Если не совпадает, он не будет заменяться и используется оригинальный символ.
Когда использоваться Табличную атаку
Эта атака крайне эффективно в отношении паролей в стиле лит если мы выберем таблицу вроде этой:
Она также может полностью заменить Атаку с переключением регистра если мы выберем таблицу вроде этой:
Ну лучше всего то, что мы можем делать эти две вещи за один раз.
Другая хорошая идея — это заполнить дыры в наших словарях. Например, если наш словарь содержит:
Мы можем увидеть, что отсутствуют pass4, pass6 и т. д. Единственная строка в таблице может заполнить пропуски:
Совет: Для избежания дублей, замените все цифры на 0 и уникализируйте то что слева.
Смотрите каталог table/ для дополнительного вдохновения.
Поддержка Табличной атаки
В настоящий момент эта атака поддерживается в:
- hashcat (v0.36 или выше)
Альтернативная поддержка
Мы можем использовать параметр стандартного вывода в hashcat для передачи по трубе (|) сгенерированных кандидатов в пароли в oclHashcat.
Атака с переключением регистра
Описание атаки с переключением раскладки
Для каждого слова в словаре генерируются все возможные комбинации с буквами верхнего и нижнего регистра.
Эта атака была реализована в качестве отдельной атаки в hashcat. Новая Табличная атака незаметно заменила её в текущих версиях.
Если наш словарь содержит слово
Вывод
Hashcat создаст следующие кандидаты в пароли
Использование правил для эмуляции атаки с переключением раскладки
В большинстве случаев пароли пишутся полностью в нижнем регистре, что делает пароли слабыми. Некоторые люди усиливают свои пароли, «переводя» некоторые символы в пароле на верхний регистр. (Но не переключайте их все; постарайтесь найти баланс между длиной пароля и количеством символов верхнего регистра.)
Мы можем использовать это поведение, что приведёт нас к крайне оптимизированной версии оригинальной Атаки с переключением раскладки. Мы будем генерировать только такие пароли в кандидаты, которые имеют от двух до пяти заглавных символов. Действительно надёжные пароли имеют такой баланс, они не превышают это правило. Поэтому нам не нужно их проверять.
Спасибо legion из команды hashcat, который первый нашёл это.
Это может быть проделано специализированными правилами. А поскольку hashcat и oclHashcat поддерживают файлы с правилами, они могут также делать атаку переключения раскладки.
Смотрите rules/toggle[12345].rule
В зависимости от имени правила, они включают все возможные переключатели регистра позиций от 1 до 15 или же 1, 2, 3, 4 или 5 символов за раз.
Пример содержимого
На случай если вам ещё нужны подсказки как это работает вот пример содержимого toggle2.rule.
Как вы можете видеть, эти правила были оптимизированы для уникальности. Это означает, например, не имеет смысла делать “T1T1”, поскольку это означает отсутствие изменений вовсе. Другой пример, который лишён смысла, это “T2T4” если мы также делаем “T4T2”, поскольку это дважды одно и то же изменение.