Дисклеймер: гуру проходим мимо) PACK (Password Analysis and Cracking Toolkit) представляет собой набор утилит, разработанных для помощи в анализе списков паролей с целью улучшения взлома паролей посредством обнаружения шаблонов масок, правил, наборов символов и других характеристик пароля. Инструментарий генерирует действительные входные файлы для взломщиков паролей семейства Hashcat. ПРИМЕЧАНИЕ. Сам инструментарий не способен взламывать пароли, но вместо этого предназначен для повышения эффективности работы взломщиков паролей. Более детально со всеми опциями можно ознакомиться на github странице: Password Analysis and Cracking Kit by Peter Kacherginsky (iphelix) https://github.com/iphelix/pack Цели: перевод статьи, ознакомление, нюансы использования, примеры применения. Spoiler: Requirements Все манипуляции проводились на Windows 10. 1. Для работы необходимо установить Python 2 (именно 2, не 3). Рекомендую ставить версию х86, после прочтение станет ясно почему. На момент написания последняя версия: Python 2.7.17 (прямая ссылка на скачивание х86): https://www.python.org/ftp/python/2.7.17/python-2.7.17.msi Spoiler: python Все галки по дефолту. (В процессе установки можно добавить Python в path, я не делаю это, так-как работаю в основном с Python3, та и привык вызывать вручную) разница при вызове Python: 1. Без установки в path: C:\Python27\python.exe 2. С добавлением в path: python Установка завершена. По дефолту путь: C:\Python27 Выбор списков паролей для анализа Прежде чем мы сможем начать использовать инструментарий, мы должны установить критерии выбора списков паролей. Поскольку мы стремимся проанализировать, как люди создают свои пароли, мы должны получить как можно большую выборку утечек паролей. Один из таких превосходных списков основан на компромиссе RockYou.com. Этот список предоставляет большую и достаточно разнообразную коллекцию, которая обеспечивает хорошие результаты для общих паролей, используемых аналогичными сайтами (например, в социальных сетях). Анализ, полученный из этого списка, может не работать для организаций с конкретными политиками паролей. Таким образом, выбор образца ввода должен быть как можно ближе к вашей цели. Кроме того, старайтесь избегать получения списков, основанных на уже взломанных паролях, так как это приведет к статистическому смещению правил и масок, используемых лицами, взломавшими список, а не действительными пользователями. Spoiler: StatsGen StatsGen ========================================== Самый простой анализ, который вы можете выполнить, - это просто получить наиболее распространенную длину, набор символов и другие характеристики паролей в предоставленном списке. В приведенном ниже примере мы будем использовать 'rockyou.txt', содержащий приблизительно 14 миллионов паролей. Запустите `statsgen.py` с помощью следующей командной строки: Открываем консоль и пишем: (путь к нашему python) (путь к утилите statsgen.py) (путь к словарю для анализа) > C:\Python27\python.exe F:\pack-master\statsgen.py F:\rockyou.txt Ниже приведен вывод вышеуказанной команды: Spoiler: Полный вывод StatsGen 0.0.3 | | _ __ __ _ ___| | _ | '_ \ / _` |/ __| |/ / | |_) | (_| | (__| < | .__/ \__,_|\___|_|\_\ | | |_| [email protected] [*] Analyzing passwords in [F:\rockyou.txt] [+] Analyzing 100% (14344385/14344385) of passwords NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords [*] Length: [+] 8: 20% (2966036) [+] 7: 17% (2506270) [+] 9: 15% (2191039) [+] 10: 14% (2013694) [+] 6: 13% (1947797) [+] 11: 06% (866035) [+] 12: 03% (555350) [+] 13: 02% (364173) [+] 5: 01% (259169) [+] 14: 01% (248527) [+] 15: 01% (161213) [+] 16: 00% (118406) [+] 17: 00% (36884) [+] 18: 00% (23769) [+] 4: 00% (17899) [+] 19: 00% (15567) [+] 20: 00% (13069) [+] 21: 00% (7850) [+] 22: 00% (6156) [+] 23: 00% (4849) [+] 24: 00% (4237) [+] 25: 00% (2950) [+] 3: 00% (2461) [+] 26: 00% (2249) [+] 27: 00% (1811) [+] 28: 00% (1198) [+] 30: 00% (992) [+] 29: 00% (785) [+] 255: 00% (476) [+] 31: 00% (469) [+] 32: 00% (407) [+] 2: 00% (335) [+] 33: 00% (296) [+] 34: 00% (193) [+] 36: 00% (188) [+] 35: 00% (131) [+] 39: 00% (118) [+] 37: 00% (81) [+] 42: 00% (81) [+] 38: 00% (67) [+] 45: 00% (56) [+] 40: 00% (55) [+] 41: 00% (46) [+] 1: 00% (45) [+] 71: 00% (45) [+] 43: 00% (43) [+] 48: 00% (40) [+] 44: 00% (31) [+] 55: 00% (28) [+] 54: 00% (27) [+] 50: 00% (26) [+] 46: 00% (25) [+] 47: 00% (23) [+] 69: 00% (23) [+] 51: 00% (22) [+] 61: 00% (21) [+] 60: 00% (20) [+] 49: 00% (18) [+] 58: 00% (18) [+] 56: 00% (17) [+] 57: 00% (17) [+] 64: 00% (17) [+] 52: 00% (16) [+] 53: 00% (16) [+] 63: 00% (16) [+] 70: 00% (16) [+] 222: 00% (15) [+] 66: 00% (12) [+] 67: 00% (12) [+] 74: 00% (12) [+] 75: 00% (11) [+] 59: 00% (9) [+] 84: 00% (9) [+] 62: 00% (8) [+] 68: 00% (8) [+] 72: 00% (8) [+] 65: 00% (7) [+] 73: 00% (7) [+] 80: 00% (7) [+] 76: 00% (6) [+] 79: 00% (6) [+] 81: 00% (6) [+] 101: 00% (6) [+] 246: 00% (6) [+] 78: 00% (5) [+] 87: 00% (5) [+] 210: 00% (5) [+] 219: 00% (5) [+] 77: 00% (4) [+] 82: 00% (4) [+] 85: 00% (4) [+] 88: 00% (4) [+] 96: 00% (4) [+] 117: 00% (4) [+] 129: 00% (4) [+] 150: 00% (4) [+] 221: 00% (4) [+] 83: 00% (3) [+] 91: 00% (3) [+] 94: 00% (3) [+] 95: 00% (3) [+] 108: 00% (3) [+] 125: 00% (3) [+] 142: 00% (3) [+] 146: 00% (3) [+] 165: 00% (3) [+] 188: 00% (3) [+] 220: 00% (3) [+] 224: 00% (3) [+] 232: 00% (3) [+] 243: 00% (3) [+] 90: 00% (2) [+] 92: 00% (2) [+] 98: 00% (2) [+] 102: 00% (2) [+] 103: 00% (2) [+] 104: 00% (2) [+] 109: 00% (2) [+] 111: 00% (2) [+] 113: 00% (2) [+] 123: 00% (2) [+] 124: 00% (2) [+] 134: 00% (2) [+] 154: 00% (2) [+] 173: 00% (2) [+] 178: 00% (2) [+] 182: 00% (2) [+] 190: 00% (2) [+] 194: 00% (2) [+] 195: 00% (2) [+] 197: 00% (2) [+] 207: 00% (2) [+] 208: 00% (2) [+] 216: 00% (2) [+] 217: 00% (2) [+] 218: 00% (2) [+] 225: 00% (2) [+] 226: 00% (2) [+] 228: 00% (2) [+] 237: 00% (2) [+] 238: 00% (2) [+] 239: 00% (2) [+] 241: 00% (2) [+] 249: 00% (2) [+] 254: 00% (2) [+] 257: 00% (2) [+] 262: 00% (2) [+] 86: 00% (1) [+] 89: 00% (1) [+] 93: 00% (1) [+] 97: 00% (1) [+] 99: 00% (1) [+] 100: 00% (1) [+] 105: 00% (1) [+] 106: 00% (1) [+] 115: 00% (1) [+] 118: 00% (1) [+] 126: 00% (1) [+] 131: 00% (1) [+] 132: 00% (1) [+] 133: 00% (1) [+] 137: 00% (1) [+] 138: 00% (1) [+] 141: 00% (1) [+] 145: 00% (1) [+] 148: 00% (1) [+] 149: 00% (1) [+] 151: 00% (1) [+] 153: 00% (1) [+] 162: 00% (1) [+] 168: 00% (1) [+] 170: 00% (1) [+] 171: 00% (1) [+] 172: 00% (1) [+] 174: 00% (1) [+] 175: 00% (1) [+] 176: 00% (1) [+] 184: 00% (1) [+] 189: 00% (1) [+] 192: 00% (1) [+] 198: 00% (1) [+] 200: 00% (1) [+] 202: 00% (1) [+] 203: 00% (1) [+] 204: 00% (1) [+] 206: 00% (1) [+] 209: 00% (1) [+] 211: 00% (1) [+] 213: 00% (1) [+] 230: 00% (1) [+] 231: 00% (1) [+] 233: 00% (1) [+] 234: 00% (1) [+] 240: 00% (1) [+] 242: 00% (1) [+] 244: 00% (1) [+] 245: 00% (1) [+] 248: 00% (1) [+] 251: 00% (1) [+] 252: 00% (1) [+] 258: 00% (1) [+] 266: 00% (1) [+] 285: 00% (1) [*] Character-set: [+] loweralphanum: 42% (6074867) [+] loweralpha: 25% (3726129) [+] numeric: 16% (2346744) [+] loweralphaspecialnum: 02% (426350) [+] upperalphanum: 02% (407431) [+] mixedalphanum: 02% (382237) [+] loweralphaspecial: 02% (381622) [+] upperalpha: 01% (229875) [+] mixedalpha: 01% (159310) [+] all: 00% (53237) [+] mixedalphaspecial: 00% (49654) [+] specialnum: 00% (46606) [+] upperalphaspecialnum: 00% (27737) [+] upperalphaspecial: 00% (26813) [+] special: 00% (5773) [*] Password complexity: [+] digit: min(0) max(255) [+] lower: min(0) max(255) [+] upper: min(0) max(187) [+] special: min(0) max(255) [*] Simple Masks: [+] stringdigit: 37% (5339556) [+] string: 28% (4115314) [+] digit: 16% (2346744) [+] digitstring: 04% (663951) [+] othermask: 04% (576322) [+] stringdigitstring: 03% (450742) [+] stringspecialstring: 01% (204441) [+] stringspecialdigit: 01% (167816) [+] stringspecial: 01% (148328) [+] digitstringdigit: 00% (130517) [+] stringdigitspecial: 00% (77378) [+] specialstringspecial: 00% (25126) [+] digitspecialstring: 00% (16821) [+] specialstring: 00% (14496) [+] digitstringspecial: 00% (12242) [+] digitspecialdigit: 00% (12114) [+] digitspecial: 00% (11017) [+] specialstringdigit: 00% (9607) [+] specialdigitstring: 00% (8328) [+] special: 00% (5773) [+] specialdigit: 00% (4142) [+] specialdigitspecial: 00% (3610) [*] Advanced Masks: [+] ?l?l?l?l?l?l?l?l: 04% (687991) [+] ?l?l?l?l?l?l: 04% (601152) [+] ?l?l?l?l?l?l?l: 04% (585013) [+] ?l?l?l?l?l?l?l?l?l: 03% (516830) [+] ?d?d?d?d?d?d?d: 03% (487429) [+] ?d?d?d?d?d?d?d?d?d?d: 03% (478196) [+] ?d?d?d?d?d?d?d?d: 02% (428296) [+] ?l?l?l?l?l?l?d?d: 02% (420318) [+] ?l?l?l?l?l?l?l?l?l?l: 02% (416939) [+] ?d?d?d?d?d?d: 02% (390529) [+] ?d?d?d?d?d?d?d?d?d: 02% (307532) [+] ?l?l?l?l?l?d?d: 02% (292306) [+] ?l?l?l?l?l?l?l?d?d: 01% (273624) [+] ?l?l?l?l?l?l?l?l?l?l?l: 01% (267733) [+] ?l?l?l?l?d?d?d?d: 01% (235360) [+] ?l?l?l?l?d?d: 01% (215074) [+] ?l?l?l?l?l?l?l?l?d?d: 01% (213109) [+] ?l?l?l?l?l?l?d: 01% (193097) [+] ?l?l?l?l?l?l?l?d: 01% (189847) [+] ?l?l?l?l?l?l?l?l?l?l?l?l: 01% (189355) [+] ?l?l?l?d?d?d?d: 01% (178304) [+] ?l?l?l?l?l?d?d?d?d: 01% (173559) [+] ?l?l?l?l?l?l?d?d?d?d: 01% (160592) [+] ?l?l?l?l?l?l?l?l?d: 01% (160054) [+] ?l?l?l?l?l?d?d?d: 01% (152400) ПРИМЕЧАНИЕ. Вы можете уменьшить количество отображаемых выбросов, добавив флаг --hiderare, который не будет отображать элементы с частотой менее 1%. > C:\Python27\python.exe F:\pack-master\statsgen.py F:\rockyou.txt --hiderare Spoiler: Вывод с частотой > 1% _ StatsGen 0.0.3 | | _ __ __ _ ___| | _ | '_ \ / _` |/ __| |/ / | |_) | (_| | (__| < | .__/ \__,_|\___|_|\_\ | | |_| [email protected] [*] Analyzing passwords in [F:\rockyou.txt] [+] Analyzing 100% (14344385/14344385) of passwords NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords [*] Length: [+] 8: 20% (2966036) [+] 7: 17% (2506270) [+] 9: 15% (2191039) [+] 10: 14% (2013694) [+] 6: 13% (1947797) [+] 11: 06% (866035) [+] 12: 03% (555350) [+] 13: 02% (364173) [+] 5: 01% (259169) [+] 14: 01% (248527) [+] 15: 01% (161213) [*] Character-set: [+] loweralphanum: 42% (6074867) [+] loweralpha: 25% (3726129) [+] numeric: 16% (2346744) [+] loweralphaspecialnum: 02% (426350) [+] upperalphanum: 02% (407431) [+] mixedalphanum: 02% (382237) [+] loweralphaspecial: 02% (381622) [+] upperalpha: 01% (229875) [+] mixedalpha: 01% (159310) [*] Password complexity: [+] digit: min(0) max(255) [+] lower: min(0) max(255) [+] upper: min(0) max(187) [+] special: min(0) max(255) [*] Simple Masks: [+] stringdigit: 37% (5339556) [+] string: 28% (4115314) [+] digit: 16% (2346744) [+] digitstring: 04% (663951) [+] othermask: 04% (576322) [+] stringdigitstring: 03% (450742) [+] stringspecialstring: 01% (204441) [+] stringspecialdigit: 01% (167816) [+] stringspecial: 01% (148328) [*] Advanced Masks: [+] ?l?l?l?l?l?l?l?l: 04% (687991) [+] ?l?l?l?l?l?l: 04% (601152) [+] ?l?l?l?l?l?l?l: 04% (585013) [+] ?l?l?l?l?l?l?l?l?l: 03% (516830) [+] ?d?d?d?d?d?d?d: 03% (487429) [+] ?d?d?d?d?d?d?d?d?d?d: 03% (478196) [+] ?d?d?d?d?d?d?d?d: 02% (428296) [+] ?l?l?l?l?l?l?d?d: 02% (420318) [+] ?l?l?l?l?l?l?l?l?l?l: 02% (416939) [+] ?d?d?d?d?d?d: 02% (390529) [+] ?d?d?d?d?d?d?d?d?d: 02% (307532) [+] ?l?l?l?l?l?d?d: 02% (292306) [+] ?l?l?l?l?l?l?l?d?d: 01% (273624) [+] ?l?l?l?l?l?l?l?l?l?l?l: 01% (267733) [+] ?l?l?l?l?d?d?d?d: 01% (235360) [+] ?l?l?l?l?d?d: 01% (215074) [+] ?l?l?l?l?l?l?l?l?d?d: 01% (213109) [+] ?l?l?l?l?l?l?d: 01% (193097) [+] ?l?l?l?l?l?l?l?d: 01% (189847) [+] ?l?l?l?l?l?l?l?l?l?l?l?l: 01% (189355) [+] ?l?l?l?d?d?d?d: 01% (178304) [+] ?l?l?l?l?l?d?d?d?d: 01% (173559) [+] ?l?l?l?l?l?l?d?d?d?d: 01% (160592) [+] ?l?l?l?l?l?l?l?l?d: 01% (160054) [+] ?l?l?l?l?l?d?d?d: 01% (152400) Вот что мы можем сразу извлечь из приведенного выше списка: * Большинство паролей имеют длину от 6 до 10 символов. * Большинство паролей имеют буквенно-цифровой набор символов. * Нет очевидной минимальной или максимальной сложности пароля. * Анализируемые пароли, как правило, следуют за простыми масками «строка, за которой следуют цифры» stringdigit. Последний раздел «Advanced Masks:» содержит наиболее часто встречающиеся маски с использованием формата Hashcat. Отдельные символы можно интерпретировать следующим образом: ?l - один строчный символ ?u - один заглавный символ ?d - одна цифра ?s - один специальный символ ?l = abcdefghijklmnopqrstuvwxyz ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ ?d = 0123456789 ?s = !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ Например, самая первая маска «?l?l?l?l?l?l?l?l» будет соответствовать всем строчным буквенным паролям. Учитывая размер выборки, вы сможете взломать примерно 4% паролей. Однако после генерации начального вывода вас может заинтересовать использование фильтров для сужения данных паролей. Использование фильтров (Using filters) ------------- Давайте посмотрим, как пользователи RockYou стремятся выбрать свои пароли, используя простую маску "stringdigit" (строка, за которой следуют цифры): > C:\Python27\python.exe F:\pack-master\statsgen.py F:\rockyou.txt --simplemask stringdigit --hiderare Spoiler: вывод StatsGen 0.0.3 | | _ __ __ _ ___| | _ | '_ \ / _` |/ __| |/ / | |_) | (_| | (__| < | .__/ \__,_|\___|_|\_\ | | |_| [email protected] [*] Analyzing passwords in [F:\rockyou.txt] [+] Analyzing 37% (5339556/14344385) of passwords NOTE: Statistics below is relative to the number of analyzed passwords, not total number of passwords [*] Length: [+] 8: 23% (1267260) [+] 7: 18% (981432) [+] 9: 17% (939971) [+] 10: 14% (750938) [+] 6: 11% (618983) [+] 11: 05% (294869) [+] 12: 03% (175875) [+] 13: 01% (103047) [+] 14: 01% (65958) [*] Character-set: [+] loweralphanum: 88% (4720184) [+] upperalphanum: 06% (325941) [+] mixedalphanum: 05% (293431) [*] Password complexity: [+] digit: min(1) max(252) [+] lower: min(0) max(46) [+] upper: min(0) max(31) [+] special: min(0) max(0) [*] Simple Masks: [+] stringdigit: 100% (5339556) [*] Advanced Masks: [+] ?l?l?l?l?l?l?d?d: 07% (420318) [+] ?l?l?l?l?l?d?d: 05% (292306) [+] ?l?l?l?l?l?l?l?d?d: 05% (273624) [+] ?l?l?l?l?d?d?d?d: 04% (235360) [+] ?l?l?l?l?d?d: 04% (215074) [+] ?l?l?l?l?l?l?l?l?d?d: 03% (213109) [+] ?l?l?l?l?l?l?d: 03% (193097) [+] ?l?l?l?l?l?l?l?d: 03% (189847) [+] ?l?l?l?d?d?d?d: 03% (178304) [+] ?l?l?l?l?l?d?d?d?d: 03% (173559) [+] ?l?l?l?l?l?l?d?d?d?d: 03% (160592) [+] ?l?l?l?l?l?l?l?l?d: 02% (160054) [+] ?l?l?l?l?l?d?d?d: 02% (152400) [+] ?l?l?l?l?l?l?d?d?d: 02% (132216) [+] ?l?l?l?l?l?l?l?l?l?d: 02% (129823) [+] ?l?l?l?l?l?d: 02% (114732) [+] ?l?l?l?l?d?d?d: 02% (111218) [+] ?l?l?d?d?d?d: 01% (98305) [+] ?l?l?l?d?d?d: 01% (98183) [+] ?l?l?l?l?l?l?l?d?d?d: 01% (87611) [+] ?l?l?l?l?l?l?l?l?l?d?d: 01% (82654) [+] ?l?l?l?l?l?l?l?d?d?d?d: 01% (70914) [+] ?l?d?d?d?d?d?d: 01% (54883) Самая верхняя часть вывода указывает, какой процент от общего количества паролей был проанализирован. В этом случае, взломав только пароли, соответствующие маске «stringdigit», можно восстановить только около 37% от общего набора, как было показано в исходном выводе. Далее, кажется, что только 11% этого типа пароля используют что-либо кроме строчных. Поэтому было бы разумно сосредоточиться только на строчных строках(loweralphanum), соответствующих этой маске. Наконец, в разделе «Advanced Mask» мы видим, что большинство паролей «stringdigit» состоят из строки с двумя или четырьмя цифрами после нее. С помощью информации, полученной из вышеприведенного вывода, мы можем начать создавать мысленный образ шаблонов генерации паролей целевых пользователей. Есть несколько других фильтров, доступных для длины пароля, маски и наборов символов: **Length:** --minlength and/or --maxlength **Simple Mask:** --simplemask [numeric, loweralpha, upperalpha, mixedalpha, loweralphanum, etc.] **Character sets:** --charset [digit, string, stringdigit, digitstring, digitstringdigit, etc.] ПРИМЕЧАНИЕ. В качестве списка через запятую можно указать несколько фильтров одного и того же класса: --simplemask="stringdigit,digitstring" Сохранение расширенных масок. "Saving advanced masks" --------------------- Хотя в разделе "Advanced Mask" отображаются только шаблоны, соответствующие более 1% всех паролей, вы можете получить и сохранить полный список масок паролей, соответствующих данному словарю, с помощью следующей команды: > C:\Python27\python.exe F:\pack-master\statsgen.py F:\rockyou.txt -o F:\rockyou.masks Spoiler: rockyou.masks https://anonfile.com/39ucsfq2oe/rockyou_masks пример вывода: Все маски паролей и их частоты будут сохранены в указанном файле в формате CSV. Естественно, вы можете предоставить фильтры только для генерации файла масок, соответствующего заданным параметрам. Выходной файл можно использовать в качестве входных данных для инструмента MaskGen, описанного в следующем разделе. Spoiler: MaskGen MaskGen ========================================== MaskGen позволяет вам создавать атаки на основе шаблонных масок для ввода в семейство взломщиков паролей Hashcat. Инструмент использует выходные данные, созданные statsgen выше с флагом '-o', чтобы произвести наиболее оптимальную атаку маски, отсортированную по сложности маски, наличию маски или соотношению двух (оптимальный индекс). Давайте запустим MaskGen только с выводом StatGen в качестве аргумента: > C:\Python27\python.exe F:\pack-master\maskgen.py F:\rockyou.masks Spoiler: Результат _ MaskGen 0.0.3 | | _ __ __ _ ___| | _ | '_ \ / _` |/ __| |/ / | |_) | (_| | (__| < | .__/ \__,_|\___|_|\_\ | | |_| [email protected] [*] Analyzing masks in [F:\rockyou.masks] [*] Using 1,000,000,000 keys/sec for calculations. [*] Sorting masks by their [optindex]. [*] Finished generating masks: Masks generated: 146577 Masks coverage: 100% (14344385/14344385) Masks runtime: >1 year Есть несколько частей информации, которые вы должны соблюдать: * Скорость взлома по умолчанию, используемая для расчетов, составляет 1 000 000 000 паролей / с. * Режим сортировки по умолчанию [optindex] эквивалентен флагу --optindex. * Создано 146 578 уникальных масок с 100% покрытием * Общее время работы всех сгенерированных масок составляет более 1 года. Указание целевого времени "Specifying target time" ------------------------------------------------------------------- Поскольку вы обычно ограничены во времени для выполнения и создания атак, maskgen позволяет вам указать, сколько времени у вас есть для выполнения атак по маске, и будет генерировать наиболее оптимальный набор масок на основе режима сортировки. Давайте немного поиграем с разными режимами сортировки и целевым временем: > C:\Python27\python.exe F:\pack-master\maskgen.py F:\rockyou.masks --targettime 600 --optindex -q [*] Analyzing masks in [F:\rockyou.masks] [*] Using 1,000,000,000 keys/sec for calculations. [*] Sorting masks by their [optindex]. [!] Target time exceeded. [*] Finished generating masks: Masks generated: 779 Masks coverage: 56% (8116194/14344385) Masks runtime: 0:11:36 > C:\Python27\python.exe F:\pack-master\maskgen.py F:\rockyou.masks --targettime 600 --complexity -q [*] Analyzing masks in [F:\rockyou.masks] [*] Using 1,000,000,000 keys/sec for calculations. [*] Sorting masks by their [complexity]. [!] Target time exceeded. [*] Finished generating masks: Masks generated: 5163 Masks coverage: 31% (4572332/14344385) Masks runtime: 0:10:01 > C:\Python27\python.exe F:\pack-master\maskgen.py F:\rockyou.masks --targettime 600 --occurrence -q [*] Analyzing masks in [F:\rockyou.masks] [*] Using 1,000,000,000 keys/sec for calculations. [*] Sorting masks by their [occurrence]. [!] Target time exceeded. [*] Finished generating masks: Masks generated: 4 Masks coverage: 16% (2390986/14344385) Masks runtime: 1:34:05 Все вышеперечисленные прогоны имеют целевое время 600 секунд (или 10 минут) с различными режимами сортировки. Исходя из наших экспериментов, маски, созданные в режиме сортировки OptIndex, могут взломать 56% паролей RockYou за 10 минут. В то же время маски, сгенерированные с использованием режима сортировки occurrence, не только имеют довольно слабое покрытие, составляющее всего 16%, но и превышают указанное целевое время более чем на час. ПРИМЕЧАНИЕ. Маски, отсортированные по сложности, могут быть очень эффективными при атаке на списки на основе политик. Давайте рассмотрим некоторые маски, сгенерированные maskgen в режиме optindex с использованием флага --showmasks: > C:\Python27\python.exe F:\pack-master\maskgen.py F:\rockyou.masks --targettime 43200 --optindex -q --showmasks Spoiler: Результат [*] Analyzing masks in [rockyou.masks] [*] Using 1,000,000,000 keys/sec for calculations. [*] Sorting masks by their [optindex]. [L:] Mask: [ Occ: ] [ Time: ] .... .... [ 7] ?l?d?s?l?l?d?d [6 ] [ 0:00:00] [ 8] ?s?l?l?l?l?l?l?s [3480 ] [ 0:05:36] [ 9] ?l?l?l?l?d?d?d?d?s [1553 ] [ 0:02:30] [ 8] ?d?l?d?d?d?l?l?l [47 ] [ 0:00:04] [ 8] ?d?l?l?d?l?d?d?l [47 ] [ 0:00:04] [ 8] ?d?l?l?d?d?l?d?l [47 ] [ 0:00:04] [ 8] ?d?l?d?l?d?d?l?l [47 ] [ 0:00:04] [ 8] ?d?d?l?l?d?l?d?l [47 ] [ 0:00:04] [ 8] ?d?l?d?d?l?l?l?l [122 ] [ 0:00:11] [ 8] ?u?u?d?u?d?d?d?d [18 ] [ 0:00:01] [ 6] ?d?s?s?s?s?s [4 ] [ 0:00:00] [10] ?l?l?l?l?l?l?l?l?d?d [213109 ] [ 5:48:02] [!] Target time exceeded. [*] Finished generating masks: Masks generated: 3970 Masks coverage: 74% (10620958/14344385) Masks runtime: 16:10:38 Отображаемые маски имеют довольно интуитивно понятный формат: [ 9] ?l?l?l?l?d?d?d?d?s [1553 ] [ 0:02:30] \ \ \ \ \ \_ generated mask \ \_ mask runtime \ \ \_ mask length \_ mask occurrence В приведенном выше примере вы можете увидеть некоторые из логики, которая входит в генерацию маски. Например, хотя маска '?s?l?l?l?l?l?l?s' имеет один из самых длинных периодов времени в выборке (5 минут), она все же имеет более высокий приоритет из-за ее относительно более высокой частоты появления. В то же время, хотя '?l?d?s?l?l?d?d' имеет довольно низкий охват, он все же получает более высокий приоритет, чем другие маски, потому что, будучи маской из семи символов, он выполняется очень быстро. Указание фильтров маски "Specifying mask filters" ----------------------------------------------------------------- Вы можете дополнительно оптимизировать ваши сгенерированные атаки с помощью фильтров. Например, у вас может быть достаточно мощное оборудование, где вы можете просто перебрать все пароли длиной до 8 символов. В этом случае вы можете создавать маски, содержащие не более 8 символов, используя флаг --minlength следующим образом: > C:\Python27\python.exe F:\pack-master\maskgen.py F:\rockyou.masks --targettime 43200 --optindex -q --minlength 8 [*] Analyzing masks in [F:\rockyou.masks] [*] Using 1,000,000,000 keys/sec for calculations. [*] Sorting masks by their [optindex]. [!] Target time exceeded. [*] Finished generating masks: Masks generated: 585 Masks coverage: 41% (5905182/14344385) Masks runtime: 15:50:36 Естественно, сгенерированное покрытие маски было уменьшено, но эти фильтры становятся полезными при подготовке коллекции масок при атаке на списки паролей, отличные от того, который использовался для их создания. В списке ниже показаны дополнительные фильтры, которые вы можете использовать: Индивидуальные параметры фильтра маски "Individual Mask Filter Options": --minlength=8 Minimum password length --maxlength=8 Maximum password length --mintime=3600 Minimum mask runtime (seconds) --maxtime=3600 Maximum mask runtime (seconds) --mincomplexity=1 Minimum complexity --maxcomplexity=100 Maximum complexity --minoccurrence=1 Minimum occurrence --maxoccurrence=100 Maximum occurrence Occurrrence and complexity flags могут быть особенно эффективными для точной настройки сгенерированных масок с использованием различных режимов сортировки. Сохранение созданных масок "Saving generated masks" ----------------------------------------------------------------------- Если вы удовлетворены созданными выше масками, вы можете сохранить их, используя флаг -o: > C:\Python27\python.exe F:\pack-master\maskgen.py F:\rockyou.masks --targettime 43200 --optindex -q -o F:\rockyou.hcmask [*] Analyzing masks in [F:\rockyou.masks] [*] Saving generated masks to [F:\rockyou.hcmask] [*] Using 1,000,000,000 keys/sec for calculations. [*] Sorting masks by their [optindex]. [!] Target time exceeded. [*] Finished generating masks: Masks generated: 3970 Masks coverage: 74% (10620958/14344385) Masks runtime: 16:10:38 https://anonfile.com/H3z5taq4o3/rockyou_hcmask Это создаст файл 'rockyou.hcmask', который может быть непосредственно использован набором инструментов Hashcat или частью пользовательского скрипта, который проходит через них. Проверка покрытия маски "Checking mask coverage" ------------------------------------------------------------ Часто полезно посмотреть, насколько хорошо сгенерированные маски работают против уже взломанных списков. Maskgen может сравнить набор масок с другими, чтобы увидеть, насколько хорошо они будут работать, если маски из одного списка паролей будут применены к другому. Давайте сравним, насколько хорошо маски, сгенерированные из списка RockYou, будут работать с другим списком, таким как 3WiFi_WiFiKey (3wifi-dic-2020-03-02): > C:\Python27\python.exe F:\pack-master\statsgen.py F:\3WiFi_WiFiKey.txt -o F:\3WiFi_WiFiKey.masks https://anonfile.com/pbqfudqfo9/3WiFi_WiFiKey_masks > C:\Python27\python.exe F:\pack-master\maskgen.py F:\3WiFi_WiFiKey.masks --checkmasksfile F:\rockyou.hcmask -q [*] Analyzing masks in [F:\3WiFi_WiFiKey.masks] [*] Using 1,000,000,000 keys/sec for calculations. [*] Checking coverage of masks in [F:\rockyou.hcmask] [*] Finished matching masks: Masks matched: 586 Masks coverage: 54% (2325061/4292008) Masks runtime: 16:25:44 Используя параметр --checkmasksfile, мы попытались запустить маски внутри файла 'rockyou.hcmask', сгенерированного ранее, для масок из примера словаря '3WiFi_WiFiKey.masks'. Это дает 54% охват, где 586 из 3971 сгенерированных масок на основе RockYou совпали с масками в списке 3WiFi_WiFiKey. Также можно увидеть покрытие одной или нескольких масок, указав их непосредственно в командной строке следующим образом: > C:\Python27\python.exe F:\pack-master\maskgen.py F:\3WiFi_WiFiKey.masks --checkmasks="?l?d?l?d?l?d?l?d,?d?d?l?l?l?l?d?d,?l?l?l?l?d?d?d?d" -q [*] Analyzing masks in [F:\3WiFi_WiFiKey.masks] [*] Using 1,000,000,000 keys/sec for calculations. [*] Checking coverage of the these masks [?l?d?l?d?l?d?l?d, ?d?d?l?l?l?l?d?d, ?l?l?l?l?d?d?d?d] [*] Finished matching masks: Masks matched: 3 Masks coverage: 1% (74287/4292008) Masks runtime: 0:00:13 Три указанные маски соответствуют только 1% покрытия. Указание скорости "Specifying speed" ------------------------------------------------ В зависимости от ваших точных технических характеристик оборудования и целевого хэша вы можете увеличить или уменьшить скорость паролей / сек, используемую во время вычислений с помощью параметра --pps: > C:\Python27\python.exe F:\pack-master\maskgen.py F:\rockyou.masks --targettime 43200 --pps 50000000 -q [*] Analyzing masks in [F:\rockyou.masks] [*] Using 50,000,000 keys/sec for calculations. [*] Sorting masks by their [optindex]. [!] Target time exceeded. [*] Finished generating masks: Masks generated: 1192 Masks coverage: 61% (8754547/14344385) Masks runtime: 12:17:31 Использование параметра --pps для соответствия фактической производительности делает целевое время более значимым. Spoiler: PolicyGen PolicyGen ========================================== Многие атаки по маске и по словарю потерпят неудачу в корпоративной среде с минимальными требованиями к сложности пароля. Вместо того, чтобы прибегать к чисто брутфорс-атаке, мы можем использовать известные или предполагаемые правила сложности паролей, чтобы избежать попыток кандидатов на пароли, которые не соответствуют политике, или, наоборот, проводить аудит только для несоответствующих паролей. Используя PolicyGen, вы сможете сгенерировать коллекцию масок, следуя сложности пароля, чтобы значительно сократить время взлома. Ниже приведен пример сеанса, в котором мы генерируем все действительные маски паролей для среды, в которой требуется как минимум одна цифра, один верхний и один специальный символ: > C:\Python27\python.exe F:\pack-master\policygen.py --minlength 8 --maxlength 8 --minlower 1 --minupper 1 --mindigit 1 --minspecial 1 -o F:\complexity.hcmask https://anonfile.com/T0Ibu8q7o0/complexity_hcmask [*] Saving generated masks to [F:\complexity.hcmask] [*] Using 1,000,000,000 keys/sec for calculations. [*] Password policy: Pass Lengths: min:8 max:8 Min strength: l:1 u:1 d:1 s:1 Max strength: l:None u:None d:None s:None [*] Generating [compliant] masks. [*] Generating 8 character password masks. [*] Total Masks: 65536 Time: 76 days, 18:50:04 [*] Policy Masks: 40824 Time: 35 days, 0:33:09 Из приведенного выше вывода видно, что мы сгенерировали 40824 маски, соответствующих указанной сложности, для выполнения которых потребуется около 35 дней со скоростью 1 000 000 000 ключей / с. Если вы просто проводите аудит паролей и хотите обнаружить только несовместимые пароли, вы можете указать флаг --noncompliant для инвертирования сгенерированных масок: > C:\Python27\python.exe F:\pack-master\policygen.py --minlength 8 --maxlength 8 --minlower 1 --minupper 1 --mindigit 1 --minspecial 1 -o F:\noncompliant.hcmask -q --noncompliant https://anonfile.com/HcK5ubq7o1/noncompliant_hcmask [*] Saving generated masks to [F:\noncompliant.hcmask] [*] Using 1,000,000,000 keys/sec for calculations. [*] Password policy: Pass Lengths: min:8 max:8 Min strength: l:1 u:1 d:1 s:1 Max strength: l:None u:None d:None s:None [*] Generating [non-compliant] masks. [*] Generating 8 character password masks. [*] Total Masks: 65536 Time: 76 days, 18:50:04 [*] Policy Masks: 24712 Time: 41 days, 18:16:55 Давайте рассмотрим некоторые из несовместимых масок, сгенерированных выше с использованием флага --showmasks: > C:\Python27\python.exe F:\pack-master\policygen.py --minlength 8 --maxlength 8 --minlower 1 --minupper 1 --mindigit 1 --minspecial 1 -o F:\noncompliant.hcmask -q --noncompliant --showmasks [*] Saving generated masks to [F:\noncompliant.hcmask] [*] Using 1,000,000,000 keys/sec for calculations. [*] Password policy: Pass Lengths: min:8 max:8 Min strength: l:1 u:1 d:1 s:1 Max strength: l:None u:None d:None s:None [*] Generating [non-compliant] masks. [*] Generating 8 character password masks. [ 8] ?d?d?d?d?d?d?d?d [l: 0 u: 0 d: 8 s: 0] [ 0:00:00] [ 8] ?d?d?d?d?d?d?d?l [l: 1 u: 0 d: 7 s: 0] [ 0:00:00] [ 8] ?d?d?d?d?d?d?d?u [l: 0 u: 1 d: 7 s: 0] [ 0:00:00] [ 8] ?d?d?d?d?d?d?d?s [l: 0 u: 0 d: 7 s: 1] [ 0:00:00] ... [ 8] ?s?s?s?s?s?s?s?d [l: 0 u: 0 d: 1 s: 7] [ 0:07:06] [ 8] ?s?s?s?s?s?s?s?l [l: 1 u: 0 d: 0 s: 7] [ 0:18:28] [ 8] ?s?s?s?s?s?s?s?u [l: 0 u: 1 d: 0 s: 7] [ 0:18:28] [ 8] ?s?s?s?s?s?s?s?s [l: 0 u: 0 d: 0 s: 8] [ 0:23:26] [*] Total Masks: 65536 Time: 76 days, 18:50:04 [*] Policy Masks: 24712 Time: 41 days, 18:16:55 Как вы можете видеть, все маски имеют по крайней мере одно отсутствующее требование сложности пароля. Интересно, что с меньшим количеством сгенерированных масок для атаки требуется больше времени из-за длительных масок, таких как '?s?s?s?s?s?s?s?s'. Указание максимальной сложности "Specifying maximum complexity" ----------------------------------------------------------------------------------------- Также можно указать максимальную сложность пароля, используя флаги --maxlower, --maxupper, --maxdigit и --maxspecial для точной настройки вашей атаки. Например, ниже приведен пример сайта, который применяет политику паролей, но не допускает никаких специальных символов: > C:\Python27\python.exe F:\pack-master\policygen.py --minlength 8 --maxlength 8 --minlower 1 --minupper 1 --mindigit 1 --maxspecial 0 -o F:\maxcomplexity.hcmask -q https://anonfile.com/l0O4u5q1o5/maxcomplexity_hcmask [*] Saving generated masks to [F:\maxcomplexity.hcmask] [*] Using 1,000,000,000 keys/sec for calculations. [*] Password policy: Pass Lengths: min:8 max:8 Min strength: l:1 u:1 d:1 s:None Max strength: l:None u:None d:None s:0 [*] Generating [compliant] masks. [*] Generating 8 character password masks. [*] Total Masks: 65536 Time: 76 days, 18:50:04 [*] Policy Masks: 5796 Time: 1 day, 20:20:55 В разработке.. http://www.mediafire.com/file/ukm9v4p05m1cnu5/File_PACK.rar/file https://anonfile.com/jcs9w1q9o4/File_rar Happy Cracking!
Rules Analysis ========================================== Spoiler: Требования (Requirements) На windows не все функции `rulegen.py` работают, часть функционала удалось запустить, но не работает основное - анализ словарей. (если кто нашел способ запустить на windows, поделитесь) C:\Python27\python.exe C:\Python27\Scripts\pip2.exe install pyenchant==1.6.6 ///install pyenchant only 32 bit python Есть под рукой linux mint, дальнейшие манипуляции выполняются на нем (на других дистрибутивах тоже должно работать). Устанавливаем по очереди: sudo apt install python-pip sudo apt-get install python-setuptools pip install wheel pip install pyenchant Готово. `rulegen.py` реализует анализ паролей и генерацию правил для взломщика паролей Hashcat. https://anonfile.com/5fX0Ecqco8/rulegen_py Изменение исходных слов и правил искажения слов из уже взломанных паролей может быть очень эффективным при выполнении атак на все еще зашифрованные хэши. Постоянно перерабатывая / расширяя сгенерированные правила и слова, вы сможете взломать большее количество паролей. Spoiler: Предпосылки (Prerequisites) Предпосылки "Prerequisites" ------------------------------------- Существует несколько предпосылок для эффективного использования `rulegen.py`. Инструмент использует библиотеку проверки орфографии Enchant для взаимодействия с несколькими механизмами проверки орфографии, такими как Aspell, MySpell и т. Д. Вы должны установить эти инструменты перед использованием. Также важно установить словари для любого механизма проверки орфографии, который вы в конечном итоге используете (в качестве альтернативы можно использовать пользовательский список слов). Дополнительные сведения о конкретном синтаксисе правил Hashcat см. В разделе [Атака на основе правил Hashcat] (http://hashcat.net/wiki/doku.php?id=rule_based_attack). Spoiler: Анализ одного пароля (Analyzing a Single Password) Анализ одного пароля "Analyzing a Single Password" ------------------------------------------------------------------- Основное использование `rulegen.py` включает в себя анализ одного пароля для автоматического определения правил. Давайте обнаружим правила и потенциальное исходное слово, используемое для генерации образца пароля `P@55w0rd123`: $ python '/home/antichat/Downloads/pack-master/rulegen.py' --verbose --password P@55w0rd123 _ RuleGen 0.0.4 | | _ __ __ _ ___| | _ | '_ \ / _` |/ __| |/ / | |_) | (_| | (__| < | .__/ \__,_|\___|_|\_\ | | |_| [email protected] [*] Using Enchant 'aspell' module. For best results please install 'aspell' module language dictionaries. [*] Analyzing password: P@55w0rd123 [-] Pas sword => {edit distance suboptimal: 8 (7)} => P@55w0rd123 [+] Password => sa@ ss5 so0 $1 $2 $3 => P@55w0rd123 [+] Passwords => sa@ ss5 so0 o81 $2 $3 => P@55w0rd123 [+] Passwords => sa@ ss5 so0 i81 o92 $3 => P@55w0rd123 [+] Passwords => sa@ ss5 so0 i81 i92 oA3 => P@55w0rd123 [+] Password's => sa@ ss5 so0 o81 o92 $3 => P@55w0rd123 [+] Password's => sa@ ss5 so0 o81 i92 oA3 => P@55w0rd123 [+] Password's => sa@ ss5 so0 i81 o92 oA3 => P@55w0rd123 Есть несколько флагов, которые мы использовали для этого примера: * --password - указывает один пароль для анализа. * --verbose - выводит подробную информацию, такую как сгенерированные правила и статистику производительности. Обработка файлов паролей описана в разделе ниже; Тем не менее, давайте сначала обсудим некоторые из доступных вариантов тонкой настройки, используя один пароль в качестве примера. Spoiler: Провайдер проверки правописания (Spell-checking provider) Провайдер проверки правописания "Spell-checking provider" ------------------------------------------------------------------------------ Обратите внимание, что мы используем модуль «aspell» Enchant для определения исходного слова. Точный механизм проверки орфографии можно изменить с помощью флага `--provider` следующим образом: $ python '/home/antichat/Downloads/pack-master/rulegen.py' --verbose --provider myspell --password P@55w0rd123 -q [*] Using Enchant 'myspell' module. For best results please install 'myspell' module language dictionaries. [*] Analyzing password: P@55w0rd123 [-] Pas sword => {edit distance suboptimal: 8 (7)} => P@55w0rd123 [+] Password => sa@ ss5 so0 $1 $2 $3 => P@55w0rd123 [+] Passwords => sa@ ss5 so0 o81 $2 $3 => P@55w0rd123 [+] Passwords => sa@ ss5 so0 i81 o92 $3 => P@55w0rd123 [+] Passwords => sa@ ss5 so0 i81 i92 oA3 => P@55w0rd123 ПРИМЕЧАНИЕ. Приоритет подсистемы провайдера можно указать с помощью списка через запятую (например, --provider aspell, myspell). Spoiler: Форсирование исходного слова (Forcing source word) Форсирование исходного слова "Forcing source word" --------------------------------------------------------------------- Использование механизма обнаружения исходного слова можно полностью отключить, указав исходное слово с флагом `--word`: $ python '/home/antichat/Downloads/pack-master/rulegen.py' -q --verbose --word word --password P@55w0rd123 [*] Analyzing password: P@55w0rd123 [+] word => ^5 ^5 ^@ ^P so0 $1 $2 $3 => P@55w0rd123 Указывая разные исходные слова, вы можете очень весело экспериментировать с механизмом генерации правил. Spoiler: Использование пользовательского словаря (Defining Custom Dictionary) Использование пользовательского словаря "Defining Custom Dictionary" --------------------------------------------------------------------------------------------- Неизбежно вы натолкнетесь на момент, когда генерация правил с использованием стандартного списка слов правописания больше не является достаточной. Вы можете указать пользовательский список слов, используя флаг `--wordlist`. Это особенно полезно при повторном использовании исходных слов из предыдущего сеанса анализа: $ python '/home/antichat/Downloads/pack-master/rulegen.py' -q --verbose --wordlist '/home/antichat/Downloads/3WiFi_WiFiKey.txt' --password 1pa55w0rd1 [*] Using Enchant 'Personal Wordlist' module. For best results please install 'Personal Wordlist' module language dictionaries. [*] Analyzing password: 1pa55w0rd1 [+] password => ^1 ss5 so0 $1 => 1pa55w0rd1 Пользовательский список слов может быть особенно полезен, когда используются не найденные слова, такие как сленг, а также уже взломанные пароли. Spoiler: Генерация субоптимальных правил и слов (Generating Suboptimal Rules and Words) Генерация субоптимальных правил и слов "Generating Suboptimal Rules and Words" ------------------------------------------------------------------------------------------------------------ Хотя `rulegen.py` пытается генерировать и записывать только лучшие исходные слова и пароли, могут быть случаи, когда вас интересуют дополнительные результаты. Используйте флаги `--morewords` и` --morerules` для генерации слов и правил, которые могут превышать оптимальное расстояние редактирования: $ python '/home/antichat/Downloads/pack-master/rulegen.py' -q --verbose --password '$m0n3y$' --morerules --morewords [*] Using Enchant 'aspell' module. For best results please install 'aspell' module language dictionaries. [*] Analyzing password: $m0n3y$ [+] money => ^$ so0 se3 $$ => $m0n3y$ [+] moneys => ^$ so0 se3 o6$ => $m0n3y$ [+] mingy => ^$ si0 sg3 $$ => $m0n3y$ [+] many => ^$ sa0 i43 $$ => $m0n3y$ [+] Mooney => sM$ o1m so0 se3 $$ => $m0n3y$ Можно дополнительно расширить сгенерированные слова, используя флаги `--maxworddist` и` --maxwords`. Точно так же вы можете создать больше правил, используя флаги `--maxrulelen` и` --maxrules`. Spoiler: Отключение продвинутых настроек (Disabling Advanced Engines) Отключение продвинутых настроек "Disabling Advanced Engines" ------------------------------------------------------------------------------------ `rulegen.py` включает в себя несколько продвинутых движков для генерации более качественных слов и правил. Можно отключить их, чтобы наблюдать разницу (или если они вызывают проблемы), используя флаги `--simplewords` и` --simplerules`. Давайте посмотрим, как исходные слова и правила изменяются с этими флагами: $ python '/home/antichat/Downloads/pack-master/rulegen.py' -q --verbose --password '$m0n3y$' --simplewords --simplerules [*] Using Enchant 'aspell' module. For best results please install 'aspell' module language dictionaries. [*] Analyzing password: $m0n3y$ [-] Meany => {edit distance suboptimal: 5 (4)} => $m0n3y$ [+] many => i0$ o20 i43 i6$ => $m0n3y$ [+] mingy => i0$ o20 o43 i6$ => $m0n3y$ [+] money => i0$ o20 o43 i6$ => $m0n3y$ [+] mangy => i0$ o20 o43 i6$ => $m0n3y$ [+] manky => i0$ o20 o43 i6$ => $m0n3y$ Обратите внимание, что качество сгенерированных слов и правил значительно снизилось, так как такие слова, как «manky», имеют меньшее отношение к фактическому исходному слову «деньги». В то же время сгенерированные правила были сокращены до простых вставок, удалений и замен. Spoiler: Обработка списков паролей (Processing password lists) Обработка списков паролей "Processing password lists" ----------------------------------------------------------------------- Теперь, когда вы освоили все различные флаги и переключатели, мы можем попытаться сгенерировать слова и правила для набора паролей. Давайте сгенерируем текстовый файл `antichat.txt`, содержащий следующие довольно сложные тестовые пароли: &~defcon '#(4)\ August19681 '&a123456 10-D'Ann ~|Bailey Krist0f3r f@cebOOK Nuclear$( zxcvbn2010! 13Hark's NjB3qqm Sydney93? antalya%] Annl05de ;-Fluffy Теперь давайте посмотрим на анализ `rulegen.py`, просто указав файл паролей в качестве первого аргумента: $ python '/home/antichat/Downloads/pack-master/rulegen.py' '/home/antichat/Downloads/antichat' -q [*] Using Enchant 'aspell' module. For best results please install 'aspell' module language dictionaries. [*] Analyzing passwords file: /home/antichat/Downloads/antichat: [*] Press Ctrl-C to end execution and generate statistical analysis. [*] Saving rules to analysis.rule [*] Saving words to analysis.word [*] Finished processing 16 passwords in 1.01 seconds at the rate of 15.88 p/sec [*] Generating statistics for [analysis] rules and words. [-] Skipped 0 all numeric passwords (0.00%) [-] Skipped 2 passwords with less than 25% alpha characters (12.50%) [-] Skipped 0 passwords with non ascii characters (0.00%) [*] Top 10 rules [+] ^3 ^1 o4r - 3 (2.00%) [+] i61 i79 i86 i98 oA1 - 2 (1.00%) [+] ^- ^0 ^1 i4' o5A - 2 (1.00%) [+] sS1 i13 T2 - 1 (0.00%) [+] i61 se9 i86 i98 oA1 - 1 (0.00%) [+] o61 i79 i86 i98 oA1 - 1 (0.00%) [+] ^- ^0 ^1 so' i5A - 1 (0.00%) [+] i61 se9 sr6 $8 $1 - 1 (0.00%) [+] i61 i79 se6 i98 oA1 - 1 (0.00%) [+] i3a o5y o6a i7% o8] - 1 (0.00%) [*] Top 10 words [+] xxxv - 1 (0.00%) [+] defcon - 1 (0.00%) [+] Kristen - 1 (0.00%) [+] Kristi - 1 (0.00%) [+] Augusts - 1 (0.00%) [+] xxxvii - 1 (0.00%) [+] Hack's - 1 (0.00%) [+] antlers - 1 (0.00%) [+] antelope - 1 (0.00%) [+] August - 1 (0.00%) Используя все настройки по умолчанию, мы смогли создать несколько правил высокого качества. Приложение отображает некоторые основные 10 лучших правил и статистику слов. Все сгенерированные правила и слова по умолчанию сохраняются с использованием базового имени «analysis»: * analysis.word - несортированные и неисследованные исходные слова * analysis-sorted.word - вхождение отсортировано и уникальные исходные слова * analysis.rule - несортированные и неуникальные правила * analysis-sorted.rule - появление отсортированных и уникальных правил https://anonfile.com/L2W4E6q6o7/analysis_word https://anonfile.com/NfWfE2qbo4/analysis-sorted_word https://anonfile.com/P6W1E7q2oa/analysis_rule https://anonfile.com/J2W3Edqdo5/analysis-sorted_rule Обратите внимание, что несколько паролей, таких как '#(4)\ and '&a123456, были пропущены, поскольку они не имеют достаточных характеристик для обработки. Помимо количества буквенных символов, программа пропускает все числовые пароли и пароли, содержащие non-ASCII символы. Последнее связано с ошибкой в механизме Enchant. Spoiler: Указание выходного базового имени (Specifying output basename) Указание выходного базового имени "Specifying output basename" -------------------------------------------------------------------------------------- Как упоминалось ранее, `rulegen.py` сохраняет выходные файлы, используя базовое имя 'analysis' по умолчанию. Вы можете изменить базовое имя файла с флагом `--basename` или` -b` следующим образом: $ python '/home/antichat/Downloads/pack-master/rulegen.py' '/home/antichat/Downloads/antichat' -q -b antichat $ python rulegen.py korelogic.txt -q -b korelogic [*] Using Enchant 'aspell' module. For best results please install 'aspell' module language dictionaries. [*] Analyzing passwords file: /home/antichat/Downloads/antichat: [*] Press Ctrl-C to end execution and generate statistical analysis. [*] Saving rules to antichat.rule [*] Saving words to antichat.word Spoiler: Правила отладки (Debugging rules) Правила отладки "Debugging rules" --------------------------------------------- Могут быть ситуации, когда вы сталкиваетесь с проблемами, генерирующими правила для взломщика паролей Hashcat. `rulegen.py` включает флаг` --hashcat` для проверки сгенерированных слов и правил с использованием самого hashcat, работающего в режиме --stdout. Для корректной работы этого режима вы должны загрузить последнюю версию hashcat-cli и отредактировать переменную `HASHCAT_PATH` в источнике. Например, на момент написания этой статьи я поместил папку hashcat-0. ## в каталог PACK и определил `HASHCAT_PATH` как 'hashcat-0. ## /'. Вы также можете наблюдать внутреннюю работу механизма генерации правил с флагом `--debug`. Не беспокойтесь о сообщениях об ошибках некоторых правил, это результат решения проблемы остановки, которое пытается найти оптимальное и правильное решение. Заключение "Conclusion" ================== Хотя в этом руководстве представлен ряд методов для анализа паролей, изменения правил и создания масок, существует ряд других приемов, которые ждут вас, чтобы их обнаружить. Я был бы рад, если бы вы сказали мне о необычном использовании или предложениях для любого из покрытых инструментов. --------------------------------------------------------------------------------------------------------- Проведем анализ словарей 3WiFi_WiFiKey, 10_million_password_list_top_1000000: Spoiler: 3wifi https://anonfile.com/5am8F6q5o5/3WiFi_WiFiKey_rar $ python '/home/antichat/Downloads/pack-master/rulegen.py' '/home/antichat/Downloads/3WiFi_WiFiKey.txt' -q -b 3WiFi_WiFiKey analysis.word - несортированные и неисследованные исходные слова: https://anonfile.com/F9R9F8qbo0/3WiFi_WiFiKey_Word_rar analysis.rule - несортированные и неуникальные правила: https://anonfile.com/9aE4F6qeo6/3WiFi_WiFiKeyRule_rar Утилита не смогла отсортировать слова и правила из-за размера файлов, при желании это можно легко сделать самому. Spoiler: 10_million Проведем анализ словаря 10_million_password_list_top_1000000: https://anonfile.com/D5FeF5qdoe/10_million_password_list_top_1000000.txt_gz $ python '/home/antichat/Downloads/pack-master/rulegen.py' '/home/antichat/Downloads/10_million_password_list_top_1000000.txt' -q -b 10_million_password_list_top_1000000 Spoiler: Результат консоль Using Enchant 'aspell' module. For best results please install 'aspell' module language dictionaries. [*] Analyzing passwords file: /home/antichat/Downloads/10_million_password_list_top_1000000.txt: [*] Press Ctrl-C to end execution and generate statistical analysis. [*] Saving rules to 10_million_password_list_top_1000000.rule [*] Saving words to 10_million_password_list_top_1000000.word [*] Finished processing 1000000 passwords in 437.69 seconds at the rate of 2284.73 p/sec [*] Generating statistics for [10_million_password_list_top_1000000] rules and words. [-] Skipped 165206 all numeric passwords (16.52%) [-] Skipped 10093 passwords with less than 25% alpha characters (1.01%) [-] Skipped 5 passwords with non ascii characters (0.00%) [*] Top 10 rules [+] : - 102258 (1.00%) [+] $1 - 16599 (0.00%) [+] ] - 6812 (0.00%) [+] T0 - 5228 (0.00%) [+] ^1 - 4440 (0.00%) [+] $2 - 4305 (0.00%) [+] $1 $2 $3 - 3711 (0.00%) [+] $1 $2 - 2932 (0.00%) [+] o51 - 2580 (0.00%) [+] o61 - 2419 (0.00%) [*] Top 10 words [+] m - 3055 (0.00%) [+] z - 2476 (0.00%) [+] n - 2269 (0.00%) [+] mm - 2200 (0.00%) [+] Wm - 2110 (0.00%) [+] Cm - 2096 (0.00%) [+] kn - 2076 (0.00%) [+] Mn - 1981 (0.00%) [+] In - 1962 (0.00%) [+] Ln - 1948 (0.00%) analysis.word - несортированные и неисследованные исходные слова: https://anonfile.com/H6H6F2q3oe/10_million_password_list_top_1000000_word_rar analysis-sorted.word - вхождение отсортировано и уникальные исходные слова: https://anonfile.com/F6H6F9q0od/10_million_password_list_top_1000000-sorted_word_rar analysis.rule - несортированные и неуникальные правила: https://anonfile.com/P1HfF0q2o1/10_million_password_list_top_1000000_rule_rar analysis-sorted.rule - появление отсортированных и уникальных правил: https://anonfile.com/RdH4F1qeod/10_million_password_list_top_1000000-sorted_rule_rar Продолжение следует..
Почему бы и нет) Обработка на моем многопоточном celeron заняла чуть больше недели.. HashesOrg (два файла: в первом удалены дубли, второй под wpa) 1) http://www.mediafire.com/file/8166qrno2zle2v9/HashesOrg_word.rar/file 2) http://www.mediafire.com/file/tn8nhn7yidgm1oa/HashesOrg_word_wpa.rar/file analysis.rule - не поделюсь, так-как файлик в районе 80гб (ресурсов на анализ и чистку пока нет)
Добрый день. если кому не сложно. сделайте пожалуйста правила по этому словарю и маски. буду очень признателен