Windows Password Recovery - гибридная атака по словарю с использованием видеокарт
Гибридная атака по словарю на GPU - аналогична простой гибридной атаке за тем лишь исключением, что перебор паролей происходит на видеокарте, а не на процессоре компьютера. Это позволяет увеличить скорость перебора паролей в среднем ~10 раз по сравнению с обычной гибридной атакой. Хотя финальные цифры в значительно степени зависят от настроек атаки и используемого оборудования.
Действия, применяемые к исходным словам словаря, называются правила. К одному исходному слову можно применять несколько разных правил.
Опции гибридной атаки состоят из восьми вкладок:
- Словари - для задания исходных словарей.
- Правила - файлы с наборами правил.
- Супер-правила - правила, которые можно применить поверх всех обычных, точнее до или после них.
- Генератор словаря, в которой можно создавать собственные словари, получаемые в результате работы гибридной атаки.
- Онлайн словари - для скачивания новых словарей в программу из сети Интернет.
- Синтаксис атаки - полное описание всех правил с примерами.
- Тестер правил для тестирования собственных правил.
- Опции GPU - настройка параметров для работы видеокарты.
Словари
Словари для атаки задаются в первой вкладке. Программа поддерживает следующие форматы: ASCII, UTF8, UNICODE, PCD, ZIP, RAR. Порядок файлов в списке можно менять произвольно. Например, небольшие словари перемещать в начало списка или наоборот. При этом в атаке они будут использоваться последовательно, согласно списку.
Правила
Во вкладке 'Правила' необходимо задать по крайней мере один файл с правилами мутации паролей. С программой поставляется несколько таких файлов, например, english_words.ini с более чем 3000 правилами. Формат файла с правилами довольно тривиален и представляет собой простой текстовый ASCII файл со строкой [Rules]. Все, что идет до этой сроки, считается комментариями и игнорируется программой. Все, что после этого индикатора, рассматривается как правила. Каждая строка может содержать несколько правил, применяемых к исходному слову. Если строка содержит несколько правил для одного слова, то эти правила обрабатываются слева направо. Например, если к исходному слову 'password' применить правило '@pc$a$b$c', то на выходе получим 'Asswordabc'. Максимальная длина выходного слова не должна превышать 256 символов.
Супер-правила
Супер-правило - это одно или несколько правил, которые необходимо применить поверх всех обычных наборов правил. Точнее, до или после них. Например, после отработки обычного правила (или нескольких, если они заданы на одной строке), для того, чтобы сгенерировать все возможные комбинации заглавных и строчных букв, можно задать конечное супер-правило 'a8'. Так правило '/asa4' из файла l33t.ini будет '/asa4a8', а '/csc(' превратится в '/csc(a8', и т.д. Еще один пример: если установить начальное супер-правило '>6
Супер-правило 'aN' может увеличить число генерируемых паролей в сотни или даже тысячи раз!
Генератор словарей
Вкладка 'Генератор словарей' предназначена для создания собственных словарей, получаемых в результате работы этой атаки. В дальнейшем, эти словари, например, можно использовать в других программах. Для создания своего словаря, задайте исходный словарь и набор правил мутации. Длина генерируемого файла может превышать 2 Гб при условии, что он находится на NTFS разделе диска.
Будьте осторожны, процесс создания словаря может занять значительное время!
Онлайн словари
Во вкладке 'Онлайн словари' можно скачать с сайта Passcape дополнительные словари специально для этой атаки.
Синтаксис
Если вы хотите создать свой собственный набор правил, то две предпоследние вкладки можно использовать как помощь. Во вкладке 'Синтаксис' даны простые описания правил, во вкладке 'Тестер правил' можно их протестировать, задав исходное слово и какое-либо правило. Свои наборы правил присылайте нам. Если они покажутся нам интересными и полезными, мы включим их в стандартную поставку программы.
Описание синтаксиса правил гибридной атаки по словарю
- Допускается задавать несколько правил на одной строке.
- Обработка правил (если их несколько на одной строке) идет слева направо.
- Максимальная длина строки - 256 символов.
- Максимальная длина выходного слова 256 символов.
- Весь текст до строки [Rules] считается комментарием и игнорируется.
- Строка, начинающаяся символом # считается коментарием и игнорируется.
- Пробелы в строках, если они не являются частью правил, игнорируются.
- Значения параметров N и M начинаются с 0. Для значений больше 9 используйте A..Z (A=10, B=11 и т.д.). Например, правило 'C ограничивает длину слова 12 символами.
- Следующие правила должны быть последними в строке: aN, ?iN[C], ?i[C], ?oN[C], ?o[C], ?iZ[C], ?oZ[C]
- Не меняйте имена стандартных файлов с правилами. Некоторые из них используются программой.
- Правила ?iN[C], ?i[C], ?oN[C], ?o[C] ?iZ[C], ?oZ[C] используют следующие встроенные наборы символов (также можно задавать свои собственные):
digits - 0123456789
loweralpha - abcdefghijklmnopqrstuvwxyz
upperalpha - ABCDEFGHIJKLMNOPQRSTUVWXYZ
alpha - abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
special - !@#$%^&*()-_+=~`[]{}|\:;"'<>,.?/ "
loweralphanumeric - abcdefghijklmnopqrstuvwxyz0123456789
upperalphanumeric - ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
alphanumeric - abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
printable - abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_+=~`[]{}|\:;"'<>,.? /
Мы будем очень признательны, если вы пришлете нам свои собственные правила, которые можно включить в дистрибутив программы!
Правила
Правило |
Пример |
Вход. слово |
Выход. слово |
Описание |
: |
: |
password |
password |
Ничего не делать со словом. |
{ |
{ |
password |
asswordp |
Сдвинуть слово влево. |
} |
} |
password |
dpasswor |
Сдвинуть вправо. |
[ |
[ |
password |
assword |
Удалить первый символ. |
] |
] |
password |
passwor |
Удалить последний символ слова. |
c |
c |
password |
Password |
Сделать первую букву заглавной. |
C |
C |
password |
pASSWORD |
Первая буква строчная, остальные заглавные. |
d |
d |
password |
passwordpassword |
Дублировать все слово. |
f |
f |
password |
passworddrowssap |
Отразить (зеркальная перестановка букв). |
k |
k |
password
пароль |
зфыыцщкв
gfhjkm |
Конвертировать слово используя альтернативную (первую после установленной по-умолчанию) раскладку клавиатуры. Это правило работает в обоих направлениях. Например, если в системе установлена Русская раскладка клавиатуры, это правило трансформирует слово 'password' в русский эквивалент 'зфыыцщкв', а Русское слово 'пароль' в 'gfhjkm'. Это бывает очень полезно, когда имеем дело с не-английскими паролями. Если в системе установлен только один язык, правило будет проигнорировано. |
K |
K |
password |
passwodr |
Поменять местами два последних символа. |
l |
l |
PassWord |
password |
Все буквы в нижний регистр. |
q |
q |
password |
ppaasssswwoorrdd |
Дублировать все символы в слове. |
r |
r |
password |
drowssap |
Перевернуть слово. |
t |
t |
PassWord |
pASSwORD |
Обратить регистр букв (инверсия регистра). |
u |
u |
password |
PASSWORD |
Все буквы в верхний регистр. |
U |
U |
my own password |
My Own Password |
Первые буквы всех слов в верхний регистр (подразумевается, что слова разделены пробелом). |
V |
V |
password |
PaSSWoRD |
Согласные буквы перевести в верхний регистр, гласные - в нижний. |
v |
v |
password |
pASSWoRD |
Согласные буквы перевести в нижний регистр, гласные - в верхний. |
|
|
|
|
|
'N |
'4 |
password |
pass |
Обрезать слово до длины N. |
+N |
+1 |
password |
pbssword |
Увеличить значение ASCII символа в позиции N. |
-N |
-0 |
password |
obssword |
Уменьшить значение ASCII символа в позиции N. |
.N |
.4 |
password |
passoord |
Заменить символ в позиции N символом в позиции N+1. |
,N |
,1 |
password |
ppssword |
Заменить символ в позиции N символом в позиции N-1. Где N > 0. |
>N |
|
|
|
Отклонить (пропустить) слово если его длина превышает N символов. |
>N |
|
|
|
Отклонить (пропустить) слово если его длина меньше N символов. |
_N |
_8 |
|
|
Отклонить (пропустить) слово если его длина не равна N. |
aN |
a8 |
|
|
Проверять все возможные комбинации регистра букв. N задает максимальную длину слова, для которого может быть применено это правило. |
DN |
D2D2 |
password |
paword |
Удалить символ в позиции N. |
pN |
p3 |
key |
keykeykey |
Копировать слово N раз. |
SLN |
SL2 |
012345678 |
01d345678 |
Арифметический сдвиг влево символа в позиции N. |
SRN |
SR2 |
password |
pa9sword |
Арифметический сдвиг вправо символа в позиции N. |
TN |
T1T5 |
password |
pAsswOrd |
Обратить регистр букв в позиции N. |
yN |
y3 |
password |
paspasword |
Продублировать первые N символов. |
YN |
Y3 |
password |
paswordord |
Продублировать последние N символов. |
zN |
z3 |
password |
ppppassword |
Дублировать первый символ слова N раз. |
ZN |
Z3 |
password |
passwordddd |
Дублировать последний символ слова N раз. |
|
|
|
|
|
$X |
$0$0$7 |
password |
password007 |
Добавить символ X в конец слова. |
^X |
^3^2^1 |
password |
123password |
Вставить символ X в начало слова. |
@X |
@s |
password |
paword |
Удалить все символы X из слова. |
!X |
!. |
|
|
Отклонить (пропустить) слово если оно содержит по крайней мере один символ X. |
/X |
/1/2/3 |
|
|
Отклонить (пропустить) слово если оно не содержит символ X. |
(X |
(p |
|
|
Отклонить (пропустить) слово если его первый символ не X. |
)X |
)d |
|
|
Отклонить (пропустить) слово если его последний символ не X. |
eX |
e@ |
mike@yahoo.com |
mike |
Извлечь подстроку, начинающуюся с первой позиции и заканчивающуюся перед первым найденным символом X (X не входит). |
EX |
E@e. |
mike@yahoo.com |
yahoo |
Извлечь подстроку, которая начинается сразу за первым найденным символом X (и до конца строки). |
|
|
|
|
|
%MX |
%20 |
|
|
Отклонить (пропустить) слово если оно не содержит по меньшей мере M символов X. |
*XY |
*15 |
password |
possward |
Поменять местами символы в позициях X и Y. |
=NX |
=01 |
|
|
Отклонить (пропустить) слово если символ в позиции N не X. |
iNX |
i4ai5bi6c |
password |
passabcword |
Вставить символ X в позицию N. |
oNX |
o4*o5* |
password |
pass**rd |
Перезаписать символ в позиции N символом X. |
sXY |
ss$so0 |
password |
pa$$w0rd |
Заменить все символы X на Y. |
xNM |
x4Z |
password |
word |
Извлечь подстроку длиной M символов начиная с позиции N. |
|
|
|
|
|
INX-Y |
rI0/-/r |
google.com |
google.com/ |
Вставить символ X в позицию N, если предыдущий символ в позиции N не равен Y. |
INX+Y |
rI0.+.r |
password. |
password.. |
Вставить символ X в позицию N, если предыдущий символ в позиции N равен Y. |
ONX-Y |
O0-+p |
password |
-assword |
Если символ в позиции N не равен Y, перезаписать его символом X. |
ONX+Y |
O0P+p |
password |
Password |
Если символ в позиции N равен Y, перезаписать его символом X. |
RNM+Y |
R01+a |
password |
assword |
Удалить символ в позиции N, если символ в позиции M равен Y |
RNM-Y |
R40-b |
password |
passord |
Удалить символ в позиции N, если символ в позиции M не равен Y |
|
|
|
|
|
?iN[C] |
?i0[digits] |
password |
0password
..
9password |
Вставить символ из набора [C] в позицию N входного слова. Где [C] может быть как именем набора, так и самим набором. |
?iZ[C] |
?iZ[digits] |
password |
password0
..
password9 |
Вставить символ из набора [C] в последнюю позицию входного слова. |
?i[C] |
?i[special] |
password |
~password
..
password+ |
Вставить символ из набора [C] в каждую позицию входного слова. [C] может быть как именем набора, так и самим набором. |
?oN[C] |
?o1[upperalpha] |
password |
pAssword
..
pZssword |
Перезаписать во входном слове символ в позиции N каждым символом из набора [C]. Где [C] может быть как именем набора, так и самим набором. |
?oZ[C] |
?oZ[upperalpha] |
password |
passwor0
..
passwor9 |
Перезаписать во входном слове последний символ каждым символом из набора [C]. |
?o[C] |
?o[-=.] |
password |
-password
..
password. |
Перезаписать во входном слове символ в каждой позиции символом из набора [C]. [C] может быть как именем набора, так и самим набором. В данном примере правило ?o[C] сгенерирует следующие пароли: -password, =password, .password, -assword, =asswords, .assword, p-ssword, p=ssword ... password. |
Установки графической карты
Перед использованием ее в атаке, графическую карту необходимо выбрать в соответствующем пункте общего меню.
Настройка графической карты состоит из двух параметров:
-
Установка количество параллельных блоков графической карты, в которых будет осуществляться поиск паролей. Каждый блок состоит из 256 потоков. Таким образом, если задать количество блоков равным 256, то каждый раз на GPU будет запущено 256*256=65536 потоков. А общее количество проверяемых паролей за один запуск GPU кернела будет составлять 256*ThreadBlocks*PasswordsPerThread, т.е. в нашем случае, 256*256*1000= 65 536 000 паролей. Рекомендуется всегда устанавливать значение Thread Blocks кратным 64.
-
Установка максимального количества паролей, обрабатываемые в одном потоке GPU. Чем выше это значение, тем меньше накладных расходов, связанных с запуском потоков, обработки переменных и т.д. и, соответственно, тем выше скорость перебора. Однако установка слишком большого значения может привести к зависанию компьютера, голубому экрану смерти, либо к тому, что текущая скорость перебора (во вкладке состояния атаки) начинает "плясать". Значение по умолчанию для этого параметра составляет 100.
Используйте 'тяжелые' правила (например, aN, ?iN, ?oN и т.д.) особенно аккуратно. Эти правила увеличивают количество проверяемых паролей в сотни и даже тысячи раз, что может привести к зависанию системы или неработоспособности программы.