Взлом пароля

Взлом пароля (англ. password cracking) — процесс подбора или угадывания паролей в целях получения доступа к компьютерной системе. В криптоанализе и компьютерной безопасности взлом пароля может применяться для восстановления забытого пользователем пароля, получения несанкционированного доступа к системе или в профилактических целях — когда системный администратор проверяет силу паролей пользователей[1]. Один из наиболее распространённых методов — атака перебором (брутфорс), при которой программа последовательно перебирает варианты паролей и сравнивает хэш-коды возможных комбинаций с известным хэшом настоящего пароля[2]. Другой подход — спрейинг паролей (англ. password spraying), обычно автоматизированный и осуществляемый с длительными промежутками во времени по списку популярных паролей, что позволяет атакам оставаться незамеченными[3].

На уровне отдельных файлов взлом пароля применяется для получения доступа к цифровым доказательствам с разрешения суда, если у объекта ограничены права доступа.

Время взлома пароля

Время, необходимое для взлома пароля, зависит от битовой стойкости, которая определяется энтропией пароля, а также от способа его хранения. Большинство методов взлома паролей требуют генерации множества кандидатов для пароля, каждый из которых проверяется. Пример — атака перебором (брутфорс), когда программа перебирает все возможные ключи или пароли до тех пор, пока не добьётся успеха. Если используется несколько процессоров, время взлома можно оптимизировать, разделяя диапазоны перебора между ними[4]. Более распространённые методы взлома — словарная атака, проверка шаблонов и вариаций популярных слов — предназначены для минимизации числа попыток и обычно применяются до брутфорса. Увеличение битовой стойкости пароля экспоненциально повышает число кандидатов, которые необходимо перебрать в среднем для восстановления пароля, и уменьшает вероятность того, что пароль попадёт в словарь для взлома[5].

Эффективность взлома программным методом также зависит от числа паролей, которые можно проверить за секунду. Если злоумышленник располагает хэшем пароля, скорость перебора может исчисляться миллиардами или триллионами попыток в секунду, поскольку возможна офлайн-атака. Если хэш недоступен, скорость взлома определяется тем, ограничивает ли программа аутентификации частоту попыток (например, вводя задержки, CAPTCHA или блокируя учётную запись после определённого числа неудачных попыток). Быстрый перебор иногда возможен, если пароль используется для генерации ключа, и проверка угадывания сводится к успешному декодированию данных.

Для некоторых видов хэшей современных десктопов достаточно для проверки сотен миллионов паролей в секунду на процессорах общего назначения и миллиардов паролей в секунду на GPU с помощью специализированных программ[1],[6][7] (см. John the Ripper и его бенчмарки)[8]. Всё зависит от конкретной хэш-функции: эффективные хэши, вроде bcrypt, значительно сложнее для массового перебора, чем простые, такие как MD5 или SHA. По данным NIST, восьмисимвольный пароль с буквами, цифрами и символами, не содержащий популярных слов и совпадений со словарём, достигает порядка 30 бит стойкости, то есть 230 комбинаций (примерно миллиард)[9], и может быть взломан за считанные секунды при наивном хэшировании. Использование ботнетов ещё более увеличивает мощность атакующих[10].

GPU увеличивают скорость подбора паролей в 50–100 раз для некоторых алгоритмов хэширования. Например, в 2011 году коммерческие продукты позволяли проверять до 2,8 миллиарда паролей NTLM в секунду на обычном десктопе с мощной видеокартой[11]. Такой компьютер способен взломать 10-символьный пароль из букв одного регистра за сутки. Аналогичная технология позволяет осуществлять перебор распределённо на кластере компьютерных систем с GPU. Однако отдельные алгоритмы (например, DES, Triple DES, bcrypt, scrypt, Argon2) целенаправленно спроектированы так, чтобы быть сложными для параллельного взлома на GPU.

Аппаратное ускорение с помощью GPU повысило эффективность атак перебором для большинства алгоритмов хэширования. В 2012 году компания Stricture Consulting Group создала кластер из 25 GPU, способный брутфорсить 350 миллиардов NTLM-хэшей в секунду, что позволило перебрать комбинаций 8-символьных паролей за 5,5 часа и вскрыть 90 % из 6,5 миллионов паролей пользователей LinkedIn[12]. В вычислениях использовалась система на базе oclHashcat Plus и виртуального кластера OpenCL[13].

Для некоторых алгоритмов нужны специальные аппаратные средства — FPGA или ASIC, поскольку CPU и GPU малоэффективны. Поточное и массовое производство FPGA выгодно при небольшом числе устройств, ASIC — при очень больших партиях, так как они быстрее и энергоэффективнее. В 1998 году EFF создала аппаратный взломщик на ASIC под названием Deep Crack, который вскрыл ключ DES размером 56 бит за 56 часов, перебирая более 90 миллиардов ключей в секунду[14]. В 2017 году выяснилось, что ASIC использовались также в секретных военных проектах для дешифровки интернет-коммуникаций с устаревшими алгоритмами[15]. С 2019 года John the Ripper поддерживает ограниченное число алгоритмов хэширования на FPGA[16]. Коммерческие компании используют FPGA для организации промышленных атак на пароли[17].

Лёгкий для запоминания — сложный для взлома

Сложные для запоминания пароли могут ослаблять защищённость системы, поскольку:

  • пользователи склонны записывать или хранить пароли в неработоспособных или небезопасных местах,
  • пользователи чаще вынуждены сбрасывать пароли,
  • пользователи чаще используют один и тот же пароль на разных сервисах.

Чем жестче требования к составу пароля (например, "наличие больших и малых букв, чисел", "обязательная смена каждый месяц"), тем активнее пользователи обходят ограничения[18].

В исследовании «Запоминаемость и безопасность паролей» («The Memorability and Security of Passwords»)[19] Джефф Ян и соавт. отмечают, что пароли, созданные с помощью техники "фраза — первая буква каждого слова", так же легко запоминаются, как и простые, и, в то же время, так же устойчивы ко взлому, как и случайно сгенерированные. Другой эффективный метод — комбинация двух не связанных между собой слов. Также помогает создание личного «алгоритма» формирования сложных паролей.

Однако требование использовать одновременно прописные и строчные буквы аналогично просьбе запомнить последовательность бит — трудно запомнить и лишь немного сложнее для взлома (например, в 128 раз сложнее для 7-буквенных паролей, а если пользователь просто заглавливает одну букву — преимущество почти теряется). Требование "использовать буквы и цифры" часто приводит к легко угадываемым замещениям 'E' → '3', 'I' → '1' и т.п., хорошо известным атакующим. Аналогично, популярный трюк — смещение всей комбинации на строку выше на клавиатуре — также известен злоумышленникам.

Исследования профессоров Университет Карнеги — Меллона показали, что при требовании задавать длинные пароли (например, 16 символов и более) люди склонны повторять символы или целые слова[20]. В итоге пароли оказываются проще для взлома, чем предполагалось бы из расчётов стойкости. Также часто встречается добавление одной цифры в конце пароля[20].

Инциденты

16 июля 1998 года CERT сообщил о взломе 186 126 хэшированных паролей, из которых к моменту обнаружения было взломано уже 47 642[21].

В декабре 2009 года масштабный взлом паролей на Rockyou.com привёл к утечке 32 млн паролей. Их полный список был опубликован в интернете; пароли хранились в открытом виде и были похищены через SQL-инъекцию. Заметная часть пользователей выбирала слишком простые комбинации: 30 % имели длину менее 7 символов, почти 60 % ограничивались простым латинским алфавитом и цифрами; порядка половины использовали имена, жаргонизмы и элементарные схемы (последовательные или соседние клавиши). Самым распространённым паролем среди пользователей RockYou был "123456"[22].

В июне 2011 года НАТО стало жертвой утечки, в результате которой в сеть попали имена, фамилии, логины и пароли более 11 000 пользователей их электронного магазина. Это было частью кампании Operation AntiSec, которую проводили Anonymous, LulzSec и другие[23].

11 июля 2011 года консалтинговая компания Booz Allen Hamilton была взломана группой Anonymous; в сеть были выложены логины 90 000 военных и государственных служащих США. Из утёкших паролей многие были хэшированы без соли в SHA-1. Анализ показал использование крайне слабых комбинаций, вплоть до "1234"[24].

18 июля 2011 года сервис Microsoft Hotmail заблокировал пароль "123456"[25].

В июле 2015 года группа "Impact Team" скомпрометировала данные пользователей сайта Ashley Madison[26]. Немалая часть паролей была хэширована как относительно стойким bcrypt, так и устаревшим MD5; атака на последний позволила группе CynoSure Prime восстановить около 11 млн паролей[27].

Противодействие

Один из способов защиты — не допускать утечки даже хэшей паролей. Например, в ранних версиях Unix хэши хранились в общедоступном файле /etc/passwd. На современных Unix-подобных системах они хранятся в отдельном файле /etc/shadow, доступ к которому имеют только программы с привилегиями суперпользователя. Тем не менее, и такие хеши неоднократно похищались при взломах, а некоторые сетевые протоколы до сих пор передают пароли в открытом виде[28].[29]

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

Другой подход — сочетание уникального ключа сайта с хэшем пароля, что делает невозможным обратное восстановление оригинального пароля даже при утечке хешей. Однако привилегированные атаки позволяют похитить и этот ключ. Третий подход — использование функций получения ключа с заведомо медленным вычислением хэша, что резко снижает скорость перебора[30].

На современных Unix-подобных системах вместо прежнего хэширования с помощью DES (crypt()) используются более надёжные алгоритмы, такие как crypt-SHA, bcrypt и scrypt[31]. Подобные методы применяются и в других системах: например, Cisco IOS раньше использовал обратимый шифр Виженера, но теперь — md5-crypt с 24-битной солью[32]. Более новые схемы используют длинные соли, что не позволяет эффективно вести перебор параллельно для множества пользователей, а также требуют значительного времени на каждую попытку[33].

Большинство распространённых хэшей для паролей (например, MD5, семейство SHA) проектировались для быстрой работы и компактности, в том числе для аппаратной реализации. Такие хэши легко параллелизуются и поэтому неэффективны как средство от перебора. Некоторые алгоритмы удлинения ключа (например, PBKDF2, crypt-SHA) реализуют многократные проходы хэширования с высоким числом итераций, что значительно снижает скорость перебора. Другие, например scrypt, являются memory-hard и требуют заметных ресурсов памяти, что делает их сложными для реализации на GPU и специализированных интегральных схемах.

В 2013 году был объявлен длительный Password Hashing Competition, результатом которого в 2015-м стал стандарт Argon2. Ещё одним рекомендованным NIST алгоритмом является Balloon[34]. Оба алгоритма memory-hard.

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

Программное обеспечение

Существует множество программных средств для взлома паролей; наибольшей популярностью пользуются Aircrack-ng, Cain & Abel, John the Ripper, Hashcat, Hydra, DaveGrohl и ElcomSoft. Многие средства судебной экспертизы также имеют функции взлома паролей[35]. Как правило, эти средства применяют различные методы, главным образом атаки словарём/вариантами слов и перебором[36].

Дешёвая вычислительная техника и бесплатные программы для взлома различных схем позволяют заниматься этим даже неопытным пользователям[37].

Примечания