Сначала злоумышленник выясняет, какой алгоритм был использован для хеширования паролей. Это относительно несложно, поскольку криптографические алгоритмы независимо от размера входных данных генерируют хеш-значения фиксированной длины и эта длина различна для разных алгоритмов.
«Несоленые» хеши обрабатываются злоумышленником с использованием таблиц ранее сопоставленных друг с другом хешей-паролей. Таблицы бывают разного типа, например «радужными» (они представляют собой перечень соответствий не всех ранее подобранных паролей и их хешей, а только первых элементов таких цепочек)[34]. Подключив таблицы к программе взлома, хакер будет перебирать возможные варианты, пока не расшифрует пароли. Простые и распространенные будут расшифрованы мгновенно; чем пароли длиннее и сложнее, тем больше потребуется времени.
Взлом «соленых» хешей, если значение соли известно злоумышленнику, производится аналогично, только в программе взлома указывается еще и соль. В данном случае работа злоумышленника значительно усложняется, так как для «соленых» хешей нужно генерировать собственные таблицы под каждую соль.
Все становится намного интереснее, если соль хакеру неизвестна. В том случае, если для всех пользователей используется одинаковая соль, хакер несколько раз пробует зарегистрироваться в системе и сравнивает значения первого хеша и второго («соленого»), пытаясь выяснить, какое значение используется при «солении». Выяснив его, хакер возвращается к предыдущему методу перебора. Либо, если доступа к собственным хешам у него нет, он пробует извлечь соль из хешей перебором.
Если для каждого пароля используется различное значение соли, т. е. динамическая соль, это будет самый сложный вариант для хакера: ему придется взламывать каждое хеш-значение по отдельности, на что уйдет гораздо больше времени. Либо атака станет невозможной, если злоумышленник не поймет алгоритм генерации соли.
КЕЙС В марте 2013 г. Нэйт Андерсон, заместитель главного редактора журнала Ars Technica, провел эксперимент: скачал со специального сайта базу хешей паролей (т. е. хешей в зашифрованном виде, как они обычно и хранятся в компьютерных системах) и специальный софт для взлома. За пару часов ему удалось взломать около 8000 паролей, притом что Нэйт никогда раньше этим не занимался[35].
Для еще большего усложнения задачи злоумышленника используется такой метод, как «растяжение пароля». Суть его в рекурсивном алгоритме хеширования: раз за разом, десятки тысяч раз вычисляется хеш самого хеша. Количество итераций (вычислений хеша) должно быть таким, чтобы вычисление шло не менее секунды (чем больше, тем дольше взламывать). Для взлома хакеру нужно точно знать количество итераций (иначе получится другой хеш) и ждать не менее секунды после каждой попытки. Таким образом, атака получается очень длительной и поэтому маловероятной – но не невозможной. Чтобы справиться с задержкой, злоумышленнику понадобится более мощный компьютер, чем тот, на котором производилось хеширование[36].
Но, учитывая, что для ведения атак (перебора паролей) злоумышленники могут привлекать распределенные компьютерные системы любых масштабов (т. е. состоящие из компьютеров, совместно работающих над одной задачей), взлом всегда принципиально возможен; вопрос только в том, сколько времени займет атака. Мощные хакерские инструменты, использующие ресурсы графического процессора типа OclHashCat, позволяют взломать даже длинные пароли, просто для взлома потребуется больше времени.
■ Прочие методы. Социальная инженерия, фишинг (использование подложных сайтов и приложений), использование специального аппаратного и программного обеспечения: кейлогеров (программ, которые регистрируют нажатие клавиш и действия мыши), снифферов (программ для перехвата трафика), троянов и т. п.[37] Все эти способы будут описаны далее в книге, в соответствующих главах.
Обобщая всю информацию, можно выделить несколько основных правил, о которых речь пойдет далее.
Как выбрать надежный пароль
Хотя для аутентификации на сайтах и в пользовательских приложениях все чаще применяются биометрические технологии и прочие методы, реализуемые с помощью электронных устройств, а IT-компании призывают к отказу от паролей[38], вопрос надежности паролей не теряет актуальности. Существует программное обеспечение, сайты и электронные девайсы, для доступа к которым требуется старый добрый пароль, и, если он будет достаточно сложным, злоумышленник не сможет его подобрать.
Для обеспечения надежной парольной защиты нужно запомнить несколько основных правил:
1. Пароль должен быть относительно длинным и стойким к взлому.
2. Пароль следует хранить в безопасном месте и защищать от компрометации.
3. Разные сервисы – разные пароли.
4. Пароль нужно периодически менять.
5. Информация для восстановления пароля должна быть сложна и тщательно защищена.
6. Если поддерживается многофакторная аутентификация – она должна быть включена.
7. Вынос мусора, или удаление своих следов. Это правило не связано с надежностью паролей, но очень важно.
КЕЙС В ночь с 4 на 5 мая 2018 г. в Копенгагене злоумышленники взломали компанию Bycyklen, управляющую городской системой велопроката, и стерли все данные, до которых смогли добраться. В результате из строя вышли 1660 электровелосипедов, расположенных в различных местах по всему городу. Велосипеды были оснащены планшетами под управлением операционной системы Android и для учета поездок и определения местонахождения подключены к сети Bycyklen. Специалистам компании пришлось вручную перезагружать все планшеты на электровелосипедах в городе[39].
Пароль должен быть относительно длинным и стойким к взлому
Длинные пароли взламывать сложнее, но и сложнее запоминать. Здесь применим общий принцип: чем ценнее объект, тем лучше он должен быть защищен от похищения. Верно же, что полотенца и смену белья вы храните в шкафу или комоде, а деньги и документы – в укромном месте: в сейфе или банке? И чем больше сумма или важнее документы, тем больше усилий вы предпринимаете для их защиты. Так и с цифровыми данными. Можно использовать относительно простой пароль для аккаунта на бесплатном сайте, содержащего минимум персональной информации. То же касается ящика электронной почты, предназначенного, например, для получения массовых рассылок (но в такой ящик не должны попадать письма, способные нанести вам ущерб в случае их прочтения злоумышленником). А важный рабочий или личный адрес электронной почты, аккаунты в социальных сетях, а уже тем более доступ к финансовой информации нужно защищать существенно надежнее.
КЕЙС В 2014 г. хакеры нашли брешь в системе безопасности одного из серверов кинокомпании Sony Pictures и получили доступ ко многим терабайтам внутренних данных: сведениям о 47 000 сотрудниках компании, в том числе Анджелине Джоли и Сильвестре Сталлоне (включая сканы их паспортов, копии контрактов, личные портфолио, сведения о доходах и многие другие конфиденциальные данные); цифровым копиям фильмов, еще не вышедших в прокат; почтовой переписке между сотрудниками компании; логинам и паролям к многочисленным рабочим аккаунтам в сети Twitter и многому-многому другому. Также была полностью выведена из строя внутренняя сеть компании, из-за чего работа Sony Pictures остановилась на несколько дней[40]. Интересно, что рабочий пароль Майкла Линтона, генерального директора компании Sony Entertainment, был таким: sonyml3[41].