Перебор пароля: грубая сила против смекалки

2 ноября, 2020, Oleg Afonin
Рубрика: «Разное»
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Когда-то давно в приложениях были пароли, и пароли эти охраняли душевный покой пользователя — и ничего больше. Шифрования не было, о «соли» никто не задумывался, а криптография считалась чем-то вроде оружия массового поражения, распространение которого должно было контролировать государство. В те далёкие времена мы выпустили целый ряд приложений, позволяющих нашим пользователям мгновенно или очень быстро получить доступ к «защищённой» информации. Те времена остались в прошлом, и многие (хотя и не все) разработчики стали использовать более или менее стойкое шифрование. Теперь недостаточно просто сбросить пароль — его необходимо восстановить в оригинальном виде, чтобы расшифровать данные. В этой статье рассмотрим некоторые стратегии восстановления паролей, используемые в нашем программном обеспечении.

В одной из наших статей в англоязычном блоге Everything You Wanted to Ask About Cracking Passwords мы рассказали об основах. Сегодня мы углубимся в тему перебора паролей и обсудим некоторые методы, позволяющие ускорить атаку.

Грубая сила: полный перебор

Полный перебор всего пространства возможных паролей — самый простой и оттого популярный метод криптографического анализа. Посредством полного перебора можно взломать принципиально любой пароль. Единственный вопрос — просуществует ли вселенная достаточно времени, чтобы дождаться завершения атаки.

Основная идея атаки проста: в качестве потенциальных паролей опробуются все возможные комбинации указанных символов. В качестве указанных символов могут использоваться как буквы (причём далеко не единственного алфавита), так и цифры и специальные символы. Весьма часто ограничения на использованные символы накладывается на стороне приложения или сервиса — к примеру, позволяется использовать исключительно буквы латиницы, цифры и ограниченный набор специальных символов.

Простейшие математические вычисления позволяют точно узнать максимальную продолжительность атаки: время, за которое можно перебрать всё пространство паролей заданной длины. Формула проста: число возможных символов, из которых состоит пароль, возводится в степень количества знаков в пароле. Так, если в качестве возможных символов используются только буквы английского алфавита (их 26), причём как строчные, так и прописные (это ещё 26), а длина пароля — 5 знаков, то возможное число комбинаций будет таким:

(26 + 26) ^ 5 = 380,204,032

Цифры экспоненциально увеличиваются с увеличением длины пароля. Например, для 7-значных паролей одного типа общее количество составляет:

(26 + 26) ^ 7 = 1,028,071,702,528

И как только вы добавляете числа и специальные символы из расширенного диапазона, число возможных комбинаций начинает зашкаливать:

(26 + 26 + 10 + 33) ^ 7 = 69,833,729,609,375

Основная сложность в том, что в большинстве случаев ни длина пароля, ни наборы использованных символов неизвестны, поэтому приходится пробовать все (действительно — все) возможные комбинации или… использовать другой подход.

Что означают эти цифры? Они указывают на максимальное время, которое нужно будет затратить, чтобы взломать пароль. Разделите общее количество паролей на скорость перебора для данного типа файлов, и вы получите максимальное время восстановления пароля. Например, если скорость перебора на вашем компьютере для данного файла — 10 миллионов комбинаций в секунду, то вам придётся ждать всего полминуты, чтобы взломать пароль из первого примера (5 букв, оба регистра). Если скорость составляет 100 паролей в секунду (например, вы пытаетесь взломать зашифрованный последней версией Microsoft Office документ без использования GPU), а пароль содержит не менее 7 символов из расширенного диапазона, то максимальное время атаки увеличивается примерно до 700 миллиардов секунд или ~ 22 тысяч лет.

Этот вид атаки стал первым, реализованным в Advanced ZIP Password Recovery в 1997 году.

Маски

Использование масок (фактически — шаблонов с подстановками символов) позволяет значительно сократить размер множества паролей, на которые будет проводиться атака. Однако маски можно применять лишь тогда, когда вам известна хотя бы минимальная информация о пароле. Например, предположим, что у вас есть основания полагать, что некий пароль начинается с набора символов «MoiParol», за которым следуют три цифры. При использовании метода полного перебора программе придётся проверить огромное количество комбинаций:

(26 + 26 + 10) ^ 10 = 839,299,365,868,340,224

Использование же шаблона «MoiParol???», где на место вопросительных знаков будут подставлены символы из набора «1234567890», сократит число возможных комбинаций до тысячи — ничтожная по современным меркам величина, позволяющая восстановить пароль за считанные мгновения.

Атака по словарю

Атака по словарю считается одной из наиболее эффективных в силу самой человеческой природы. Большинство пользователей выбирают такие пароли, которые они смогут легко запомнить. Например, часто используются имена и породы домашних животных, даты рождения; часто в качестве «довеска» к паролю добавляются телефонные номера или четыре цифры, обозначающие год. Словарный запас Уильяма Шекспира составлял порядка 30 тысяч слов, а в словаре Александра Пушкина было около 24 тысяч слов. Какой бы низкой ни была скорость перебора, проверка всех английских или русских слов из словаря не займёт много времени. Впрочем, не будем лукавить: пароли, состоящие из единственного слова из словаря и только из него — большая редкость. Чаще всего используются комбинации слов с неким «довеском», который, по мнению пользователя, должен сделать его пароль более безопасным.

Между «словарём» и «списком слов» существует заметная разница. Даже простые пароли не всегда являются «словами» из словаря, но могут быть некими часто используемыми комбинациями (например, «qwerty») и сокращениями (например,  получившая скандальную известность аббревиатура «maga» из пароля Дональда Трампа). В программы для взлома паролей обычно входит несколько списков слов. Вы можете использовать свой собственный словарь или список слов; множество таковых доступно в Интернете.

Мутации

Слово «password» — очень плохой, хотя и довольно популярный, пароль. Слово «Password» немного лучше, но что насчёт «pa$$w0rd» или «Password2020»?

Многие используют эти и аналогичные комбинации, изменяя некое корневое слово определённым образом, заменяя некоторые символы, добавляя число или дату в конце, вставляя разделители в середине, модифицируя регистр символов и т.д. В результате чаще всего более эффективным решением будет использовать небольшой список слов, применяя различные мутации ко всем перечисленным в нём паролям. В нашем флагманском продукте Distributed Password Recovery мы собрали наиболее часто используемые мутации, сделав возможным их удобное применение.

Гибридные атаки

‘maga2020!’ — пароль, получивший всемирную известность. Но как именно его обнаружили? В данном случае, вероятно, просто угадали, применив знание человеческой природы. Однако подобные пароли довольно легко подобрать, используя гибридную атаку.

Помимо обычных мутаций, многие используют более сложные модификации обычных слов. Если в процессе атаки вы поняли алгоритм, по которому составлены пароли пользователя, то вы сможете воспроизвести этот алгоритм с использованием особого скриптоподобного языка (синтаксис John the Ripper). В недавнем обновлении EDPR мы упростили этот процесс, добавив визуальный редактор правил непосредственно в окно настроек атаки. Вот краткая и неполная выжимка того, какие правила можно использовать:

  • { Ротация: password -> asswordp
  • c Заглавные буквы: password -> Password
  • d Дублирование слова: password -> passwordpassword
  • q Дублирование символов: password -> ppaasssswwoorrdd
  • r Обратный порядок: password -> drowssap
  • V Большие согласные: password -> PaSSWoRD
  • yN  Дублировать первые N знаков
  • $X Добавить символ X в конец слова
  • ^X Вставить символ X в начало слова
  • @X Удалить все символы X из слова
  • !X Не пробовать пароль, если в нём содержится символ X
  • /X Не пробовать пароль, если в нём НЕ содержится символа X

Данный инструмент позволяет создавать исключительно гибкие атаки, но работает лишь в том случае, если вы смогли понять алгоритм, по которому пользователь создаёт свои пароли. Дополнительная информация — в статье Ruling Out the Encryption.

Последовательность шагов

Каким типом атак вы должны воспользоваться в том или ином случае? Единого ответа на этот вопрос не существует. Скорее всего, вы начнёте исследование с того, что извлечёте пароли, сохранённые в браузерах и почтовых клиентах пользователя, в Связке ключей iOS или в облаке. Посмотрев на список, возможно, вы сможете понять общий принцип, которым руководствуется данный конкретный пользователь при создании паролей. Если это удалось — в вашем распоряжении маски и гибридные атаки. Если нет — словари и мутации.

Есть ли разница, с чего начинать атаку? Какие файлы вы будете пытаться взломать в первую очередь? Порядок имеет значение. Если начать с файлов с самой слабой защитой, вы, скорее всего, сумеете их взломать быстрее прочих. Получив пароли от этих слабо защищённых файлов, вы можете использовать их для атаки на файлы с более надёжной защитой.

Вывод

Если  шифрование надёжное и нет возможности обойти защиту, в вашем распоряжении — ограниченный, но очень мощный инструментарий. Вы сможете как ускорить атаки, так и уменьшить область перебора. Удачного взлома!


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
НАШИ НОВОСТИ