Взлом пароля
Взлом пароля (англ. 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].
Примечания
- ↑ 1 2 oclHashcat-lite – advanced password recovery. Hashcat.net. Дата обращения: 31 января 2013. Архивировано 26 июня 2016 года.
- ↑ Montoro, Massimiliano Cain & Abel User Manual: Brute-Force Password Cracker. oxid.it (defunct) (2005). Дата обращения: 13 августа 2013. Архивировано 7 июня 2019 года.
- ↑ What Is Password Spraying? How to Stop Password Spraying Attacks. Дата обращения: 16 сентября 2021. Архивировано 30 сентября 2022 года.
- ↑ Bahadursingh, Roman (2020-01-19). “A Distributed Algorithm for Brute Force Password Cracking on n Processors”. DOI:10.5281/zenodo.3612276. Архивировано из оригинала 2022-06-24. Дата обращения 2022-06-24. Используется устаревший параметр
|url-status=(справка) - ↑ Lundin, Leigh PINs and Passwords, Part 2. SleuthSayers.org (11 августа 2013). Дата обращения: 24 июня 2022. Архивировано 19 мая 2022 года.
- ↑ The Bug Charmer: How long should passwords be? Bugcharmer.blogspot.com (20 июня 2012). Дата обращения: 31 января 2013. Архивировано 7 апреля 2022 года.
- ↑ Cryptohaze Blog: 154 Billion NTLM/sec on 10 hashes. Blog.cryptohaze.com (15 июля 2012). Дата обращения: 31 января 2013. Архивировано 6 марта 2016 года.
- ↑ John the Ripper benchmarks. openwall.info (30 марта 2010). Дата обращения: 31 января 2013. Архивировано 5 мая 2018 года.
- ↑ Burr, W. E.; Dodson, D. F. & Polk, W. T. (2006), Electronic authentication guideline, Gaithersburg, MD: National Institute of Standards and Technology, doi:10.6028/nist.sp.800-63v1.0.2, <https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-63ver1.0.2.pdf>.
- ↑ 64-bit key project status. Distributed.net. Дата обращения: 27 марта 2008. Архивировано 10 сентября 2013 года.
- ↑ Password Recovery Speed table. ElcomSoft. Дата обращения: 1 февраля 2011. Архивировано 21 февраля 2011 года.
- ↑ 25-GPU cluster cracks every standard Windows password in <6 hours (2012). Дата обращения: 27 января 2019. Архивировано 27 января 2019 года.
- ↑ VCL Cluster Platform. mosix.cs.huji.ac.il. Дата обращения: 12 сентября 2021. Архивировано 19 октября 2021 года.
- ↑ EFF DES Cracker machine brings honesty to crypto debate. EFF. Дата обращения: 7 июня 2020. Архивировано 1 января 2010 года.
- ↑ Biddle, Sam NYU Accidentally Exposed Military Code-breaking Computer Project to Entire Internet. The Intercept (11 мая 2017). Дата обращения: 6 июня 2020. Архивировано 9 июня 2022 года.
- ↑ announce - [openwall-announce] John the Ripper 1.9.0-jumbo-1. openwall.com. Дата обращения: 6 июня 2020. Архивировано 8 ноября 2020 года.
- ↑ Bcrypt password cracking extremely slow? Not if you are using. Medium (8 сентября 2020). Дата обращения: 12 сентября 2021. Архивировано 20 сентября 2021 года.
- ↑ Managing Network Security. Fred Cohen & Associates. Дата обращения: 31 января 2013.
- ↑ Yan, J.; Blackwell, A.; Anderson, R.; Grant, A. (2004). “Password Memorability and Security: Empirical Results” (PDF). IEEE Security & Privacy. 2 (5): 25. DOI:10.1109/MSP.2004.81. S2CID 206485325. Архивировано из оригинала (PDF) 2022-12-06. Дата обращения 2022-06-24. Используется устаревший параметр
|url-status=(справка) - ↑ 1 2 Steinberg, Joseph. New Technology Cracks 'Strong' Passwords – What You Need To Know, Forbes (21 апреля 2015). Архивировано 31 августа 2017 года. Дата обращения: 7 сентября 2017.
- ↑ CERT IN-98.03. Дата обращения: 9 сентября 2009. Архивировано 9 июля 2010 года.
- ↑ Consumer Password Worst Practices. Imperva.com. Дата обращения: 24 июня 2022. Архивировано 24 июня 2022 года.
- ↑ NATO Hack Attack. The Register. Дата обращения: 24 июля 2011. Архивировано 26 июля 2020 года.
- ↑ Anonymous Leaks 90,000 Military Email Accounts in Latest Antisec Attack (11 июля 2011). Дата обращения: 24 июня 2022. Архивировано 24 июня 2022 года.
- ↑ Microsoft's Hotmail Bans 123456. Imperva.com (18 июля 2011). Архивировано 27 марта 2012 года.
- ↑ Ashley Madison: Hackers Dump Stolen Dating Site Data (англ.). bankinfosecurity.com. Дата обращения: 11 апреля 2021. Архивировано 11 апреля 2021 года.
- ↑ Researchers Crack 11 Million Ashley Madison Passwords (англ.). bankinfosecurity.com. Дата обращения: 11 апреля 2021. Архивировано 11 апреля 2021 года.
- ↑ Singer, Abe (2001-11). “No Plaintext Passwords” (PDF). Login. 26 (7): 83—91. Архивировано из оригинала (PDF) 2006-09-24. Используется устаревший параметр
|url-status=(справка); Проверьте дату в|date=(справка на английском) - ↑ Cryptanalysis of Microsoft's Point-to-Point Tunneling Protocol. Schneier.com (7 июля 2011). Дата обращения: 31 января 2013. Архивировано 21 мая 2016 года.
- ↑ Grassi, Paul A (2017-06). “SP 800-63B-3 – Digital Identity Guidelines: Authentication and Lifecycle Management” (PDF). NIST. DOI:10.6028/NIST.SP.800-63b. Архивировано из оригинала (PDF) 2019-04-01. Дата обращения 2021-02-03. Используется устаревший параметр
|url-status=(справка); Проверьте дату в|date=(справка на английском) - ↑ A Future-Adaptable Password Scheme. Usenix.org (13 марта 2002). Дата обращения: 31 января 2013. Архивировано 24 сентября 2008 года.
- ↑ MDCrack FAQ 1.8. Дата обращения: 31 января 2013. Архивировано 27 августа 2008 года.
- ↑ Password Protection for Modern Operating Systems. Usenix.org. Дата обращения: 31 января 2013. Архивировано 11 марта 2016 года.
- ↑ NIST SP800-63B Section 5.1.1.2. nvlpubs.nist.gov. Дата обращения: 3 февраля 2021. Архивировано 1 апреля 2019 года.
- ↑ Top 10 Password Crackers. Sectools. Дата обращения: 1 ноября 2009. Архивировано 11 мая 2019 года.
- ↑ Stay Secure: See How Password Crackers Work - Keeper Blog (амер. англ.). Keeper Security Blog - Cybersecurity News & Product Updates (28 сентября 2016). Дата обращения: 7 ноября 2020. Архивировано 21 октября 2020 года.
- ↑ Anderson, Nate. How I became a password cracker: Cracking passwords is officially a "script kiddie" activity now. (24 марта 2013). Архивировано 26 октября 2017 года. Дата обращения: 24 марта 2013.
Литература
- Филипп Экслен. Accelerating Cryptanalytic Time-Memory Trade-Offs в CRYPTO 2003: c. 617–630 Архивировано 9 апреля 2023 года.
- Сводка утечек от Anonymous и LulzSec в 2011 году
- Международная конференция по вопросам паролей
- Password security: past, present, future, Passwords12 presentation
- Собрание коллекций скомпрометированных паролей на Skullsecurity Архивировано 15 декабря 2019 года.