Насколько серьезно должно быть защищено устройство, зависит от важности хранимой на нем информации и, соответственно, модели нарушителя (как мы уже говорили, следует понять: каков уровень его подготовки, какими ресурсами он располагает, будет ли возможная атака против вас случайной или целенаправленной и т. д.). Если это смартфон (планшет) для повседневной болтовни с друзьями, съемки селфи и запуска игр, то потенциальный злоумышленник, скорее всего, окажется простым воришкой и не будет тратить много ресурсов и времени на разблокировку устройства. Он либо присвоит телефон и отформатирует имеющийся в нем накопитель информации, либо, если средства защиты не позволят сменить аккаунт на вашем гаджете, продаст его на запчасти. В обоих случаях ваши персональные данные не будут скомпрометированы. Существует риск кражи средств со счетов, если интернет-банк привязан к имеющейся в устройстве SIM-карте и карта не была вовремя заблокирована (либо не защищена ПИН-кодом). Совсем другое дело, если вы крупный предприниматель, госслужащий или публичная персона, – раскрытие хранимой на вашем аппарате информации может вызвать что-то вроде локальной (а может, даже и глобальной) катастрофы. Спровоцировать ее может нарушитель, целенаправленно охотящийся именно за этим устройством (точнее, за данными на нем), и, если за преступником стоит крупная конкурирующая организация или спецслужбы, в такую операцию могут быть вложены колоссальные средства. В этом случае злоумышленник всеми силами постарается получить доступ к данным, хранящимся на устройстве.
Исходя из модели потенциального нарушителя, следует выбрать наиболее безопасный из доступных способов защиты, не забывая об удобстве и соотнося его с важностью хранимой на устройстве информации. Чуть позже мы поговорим обо всех этих способах защиты, используемых при доступе к самым разным устройствам и цифровым службам (операционным системам компьютеров, аккаунтам в социальных сетях, беспроводным сетям и т. п.), а сейчас рассмотрим реальные случаи, позволяющие представить масштаб проблемы слабых паролей.
Слабые пароли
В июле 2015 г. был взломан сайт знакомств для женатых мужчин и женщин AshleyMadison.com (созданный фактически для поиска любовников и любовниц) и в открытый доступ попали данные 30 млн пользователей этого сайта с адресами электронной почты, паролями и другой конфиденциальной информацией. Самое примечательное то, что в десятке наиболее популярных паролей, которые использовали многие клиенты, были следующие: «123456», «12345», «password», «DEFAULT», «123456789», «qwerty», «12345678», «abc123», «pussy» и «1234567»[17 - https://arstechnica.com/information-technology/2015/09/new-stats-show-ashley-madison-passwords-are-just-as-weak-as-all-the-rest/ (https://arstechnica.com/information-technology/2015/09/new-stats-show-ashley-madison-passwords-are-just-as-weak-as-all-the-rest/).].
КЕЙС В январе 2021 г. в открытом доступе были опубликованы данные о 2,28 млн пользователях сайта знакомств MeetMindful. Файл размером 1,2 Гб содержит полную базу данных (БД) посетителей сайта, включая такие данные, как реальные Ф.И.О., адреса электронной почты, города проживания, даты рождения, IP-адреса, хешированные пароли от аккаунтов и др. Используя похищенные данные, нетрудно найти их владельцев, которые в итоге могут стать мишенями вымогателей, фишеров, шантажистов и прочих злоумышленников[18 - https://xakep.ru/2021/01/25/meetmindful/ (https://xakep.ru/2021/01/25/meetmindful/).].
Важно обратить внимание: AshleyMadison.com – ресурс, предполагающий платную подписку. Поэтому злоумышленники получили доступ не только к 30 млн интимных переписок и фотографий, но и к соответствующему объему сведений о банковских реквизитах, которые пользователи регистрировали для оплаты услуг сервиса. Несмотря на то что полные номера банковских карт не были раскрыты, преступники потенциально могли вымогать[19 - К слову, сам ресурс AshleyMadison.com отчасти можно назвать мошенником, так как за удаление профиля с пользователя взималась плата 19 долларов. По словам группы хакеров The impact team, взломавшей ресурс и слившей данные с серверов собственника сайта – компании Avid Life Media, даже после оплаты профиль не удалялся, о чем стало ясно после изучения слитых дампов данных, https://xakep.ru/2015/09/04/ashley-madison-fall (https://xakep.ru/2015/09/04/ashley-madison-fall).] финансовые средства у владельцев, выяснив реальные имена и адреса владельцев, даже если на сайте знакомств те использовали псевдонимы. Учитывая особенность скомпрометированного сервиса, остается догадываться, какое волнение пережили его пользователи, узнав о взломе. Но суть не в этом, как и не в самом факте взлома (уязвимости системы). Взломы совершаются постоянно, от этого не застрахованы даже самые защищенные системы. Важно то, какие пароли использовали люди, скрывая свои интриги, способные разрушить их семьи.
Согласно инфографике[20 - https://www.esetnod32.ru/company/press/center/eset-usilit-resheniya-odnogo-iz-liderov-rynka-utm/ (https://www.esetnod32.ru/company/press/center/eset-usilit-resheniya-odnogo-iz-liderov-rynka-utm/).], предоставленной компанией Eset, 90 % американских компаний в течение года становятся жертвами хакеров, причем 76 % атак возможны из-за ненадежных или украденных паролей[21 - https://www.popmech.ru/technologies/44764-slabye-paroli-prichina-76-kiberatak-na-kompanii/ (https://www.popmech.ru/technologies/44764-slabye-paroli-prichina-76-kiberatak-na-kompanii/).]. Поскольку свыше 60 % пользователей используют одни и те же пароли на разных сайтах и устройствах, ущерб от взлома возрастает в несколько раз. Компания WP Engine провела исследование, в котором проанализировала 10 млн скомпрометированных паролей, созданных самыми разными пользователями интернета. В большинстве из 50 самых распространенных паролей использовались либо только строчные буквы, либо только цифры; 10 % паролей заканчивались цифрами, чаще всего единицей. Оказалось, что при создании паролей пользователи часто набирают на клавиатуре комбинации, которые легко запомнить и можно машинально повторить. Поэтому так популярны комбинации клавиш, расположенных рядом, например «qwerty». В ходе исследования были выявлены и составлены списки самых распространенных слов, одним из которых было «love». Интересно, что слово «love» намного чаще использовалось людьми 1980-х и 1990-х гг. рождения, чем представителями предыдущих поколений, а женщины использовали этот пароль в четыре раза чаще, чем мужчины[22 - https://revisium.com/kb/weak_passwords.html.].
Кстати, если обзавестись программой для перебора паролей и словариком из 10 000 самых распространенных паролей, можно попробовать расшифровать запароленные файлы и документы пользователя даже в тех случаях, когда о самом пользователе не известно ничего. Такая простейшая атака помогает вскрыть пароль в 30 % случаев[23 - https://www.spy-soft.net/samye-chastye-paroli/ (https://www.spy-soft.net/samye-chastye-paroli/).].
Распространенных слабых паролей очень много, нет смысла перечислять их все. Важно понять принципы составления сложных паролей, которые окажутся не по зубам злоумышленникам. Для этого нужно руководствоваться несколькими рекомендациями, но сначала о том, как пароли взламывают.
Как злоумышленники подбирают пароли
Сложно составить надежный пароль, не понимая, как работают хакеры, мошенники, специалисты по информационной безопасности, следственные органы и спецслужбы. Зная об их приемах, можно проанализировать слабые места собственных кодовых фраз и сменить их, пока не стало слишком поздно. Итак, как злоумышленник может узнать/угадать/подобрать ваш пароль?
? Силовой метод. Как правило, этот метод применяется к людям, которым действительно есть, что скрывать. Злоумышленник может требованиями, угрозами или с помощью физического воздействия заставить выдать пароль. Спецслужбы и органы правопорядка при этом могут ссылаться на закон, согласно которому они могут досмотреть содержимое устройства, но следует знать: в России закон не обязывает владельца разблокировать его для досмотра[24 - http://www.garant.ru/news/1297198/ (http://www.garant.ru/news/1297198/).].
? Перебор. Злоумышленник использует специальную программу, позволяющую в автоматическом режиме очень быстро перебирать пароли. Существует несколько видов перебора паролей[25 - https://xakep.ru/2017/08/16/edpr-nvidia-passcrack/ (https://xakep.ru/2017/08/16/edpr-nvidia-passcrack/).]:
? По базе данных. Этот вид атаки еще называется credential stuffing: киберпреступник перебирает регистрационные данные пользователей из ранее украденной или купленной базы данных. Поскольку взламываемый сервис может блокировать попытки многократного доступа с одного IP-адреса, как правило, запускается автоматизированный процесс перебора, в том числе и с применением бот-сетей. Тогда сервис считает обращения к серверу попытками авторизации реальных пользователей[26 - https://www.securitylab.ru/blog/company/PandaSecurityRus/345574.php (https://www.securitylab.ru/blog/company/PandaSecurityRus/345574.php).].
? По словарю. Программа для взлома подключает специальные внешние файлы – словари, списки слов, которые могли применяться владельцами в виде паролей, например имена, фамилии, 10 000 самых популярных паролей, клички животных и т. д. (используются отдельные файлы для латиницы и других языков, включая кириллицу).
? По маске. Атака по маске производится, когда известна часть пароля. Скажем, если злоумышленнику известно, что пароль начинается с буквы «а», то он может ее указать вместо первого символа вопроса в маске, и поиск будет произведен быстрее.
? Брутфорс. Этот вид атаки, называемый также методом «грубой силы», подразумевает перебор всех допустимых комбинаций символов, вплоть до нахождения той, которая подходит в качестве пароля. Это самый надежный метод перебора пароля, при котором вычисление правильного пароля лишь вопрос времени. Но в случае особенно длинных несловарных паролей оно может занять миллионы лет.
? Персональный взлом[27 - https://www.anti-malware.ru/threats/brute-force (https://www.anti-malware.ru/threats/brute-force).]. В этом случае атака (которая может сочетать разные способы подбора паролей) направлена на конкретного пользователя: взлом аккаунтов в социальных сетях, электронной почты, мессенджеров и т. п. Через интернет или иными путями злоумышленник старается узнать логин, личные данные и другую информацию, которая понадобится ему для подбора пароля. Злоумышленник вписывает в программу взлома адрес ресурса, к которому нужен доступ, и логин; подключает словарь и подбирает пароль. Составляя словарь, нарушитель пытается понять, какой логикой вы руководствовались при составлении пароля (использовали логин + 2 символа; логин, написанный задом наперед; самые распространенные пароли и т. п.), и применяет ее при подборе пароля. Также учитываются такие особенности, как название сайта (может использоваться в составе пароля), открытые данные пользователя (например, часто в виде паролей применяются даты рождения) и шаблонность комбинаций. Если злоумышленник охотится за определенным устройством, ему известна вся открытая информация о владельце (или даже закрытая, если нарушителем является родственник либо злоумышленник владеет приемами социальной инженерии). Еще играет роль психология людей, точнее, их склонность к шаблонному мышлению. Чтобы понять, что это такое, пройдите следующий тест: посмотрите на категории ниже и, не задумываясь, быстро назовите по одному слову из каждой категории:
? фрукт;
? часть лица;
? русский поэт;
? цветок;
? страна.
В большинстве случаев ответы – это «яблоко», «нос», «Пушкин», «роза» и «Россия». Это и есть пример шаблонности мышления, предсказуемости, которую злоумышленники учитывают при взломе паролей[28 - https://revisium.com/kb/weak_passwords.html.].
? Брут/чек. Цель такой атаки – перехват большого числа паролей, т. е. паролей многих пользователей. К программе взлома подключается база логинов и паролей каких-либо почтовых сервисов. Также подключается список прокси-серверов, чтобы замаскировать узел. Это не дает инструментам защиты взламываемых сайтов обнаружить атаку. При регистрации на сайте, в социальной сети или в игре пользователь заполняет поле с адресом своей почты, на который приходят данные для входа в соответствующий аккаунт. В опциях брутфорса указывается список названий сайтов или других ключевых слов, по которым он будет искать в почтовых ящиках именно эти письма с логинами и паролями, извлекать из них информацию и копировать ее в отдельный файл. Так хакер получает сотни паролей и может использовать их в любых целях. Когда система защищена от перебора паролей ограничением числа попыток (например, блокирует IP-адрес, откуда исходят запросы, если превышено число попыток), программа автоматически берет адрес следующего прокси-сервера из списка, меняя IP-адрес, и продолжает атаку.
В современные системы защиты разработчики встраивают специальные алгоритмы, к которым относятся временная блокировка доступа к устройству после нескольких попыток подряд ввести неправильный пароль и отображение генерируемого CAPTCHA[29 - Читается как «капча».] -кода (случайного набора символов (слов) или уравнений, которые надо решить). Злоумышленники стараются обойти такие ограничения, подключая к устройствам аппаратные клавиатуры или специальные сервисные инструменты и применяя программы автоматического распознавания и ввода CAPTCHA-кода. К сожалению, есть программы, сайты и устройства, которые не имеют таких ограничений и допускают неограниченное количество попыток подбора пароля. Кроме того, иногда устройства, программы или сайты хранят в доступных файлах хешированные пароли, которые злоумышленник может похитить и перейти к следующему указанному здесь способу перебора.
? По специальным таблицам. Распространенный метод взлома паролей, когда базу данных с хешированными паролями крадут с сервера (либо похищают хешированные пароли с устройства пользователя) и затем хакер подбирает к хеш-суммам соответствующие пароли.
Вкратце о хешировании
Хеш-сумма – это значение пароля, зашифрованное по специальному криптографическому алгоритму (существует много разных алгоритмов различной степени криптостойкости – MD5, SHA-1, SHA-3 и др.). Постоянно разрабатываются новые алгоритмы с целью повышения их стойкости. В качестве примера рассмотрим принцип работы алгоритма SHA-1 (в настоящее время считается устаревшим и постепенно выходит из обращения). Если зашифровать по алгоритму SHA-1 слово «взлом», получится хеш-значение 94d6ad7efefe1b647da47625e75712f87405c3c1 (и это значение всегда будет соответствовать слову «взлом»). Не важно, какой длины данные шифруются, будь то слово из 5 букв, как в примере, или 100 специальных символов: в итоге вы получите хеш-значение фиксированной длины из 40 случайных символов (у других алгоритмов длина строки может быть иной). Даже слово «Взлом», написанное с прописной буквы, будет зашифровано в абсолютно другой хеш (9281eea3837f94218b04024d23c9d20a71811b4a). Вы можете поэкспериментировать с хешированием паролей на сайте https://www.hashemall.com (https://www.hashemall.com/) и с их расшифровкой на сайте https://crackstation.net (https://crackstation.net/). На большинстве сайтов, в программах и системах пароли в открытом виде, как правило, не хранятся, а используются их хеш-значения. Процесс регистрации/авторизации на защищенном сайте происходит по описанному ниже сценарию.
При регистрации:
? пользователь пересылает логин и пароль на сайт, где
? к паролю присоединяется соль (термин поясняется ниже), сгенерированная с помощью криптографически стойкого генератора псевдослучайных чисел,
? а затем, зная пароль (или его первый хеш) и соль, с помощью стандартной криптографической хеш-функции, например SHA256, вычисляют хеш-значение.
? Соль и хеш-значение сохраняются в базе данных пользователей.
При аутентификации/авторизации:
? пользователь пересылает логин и пароль (в открытом виде по защищенному каналу/протоколу, в зашифрованном виде или в виде хеш-значения) на сайт, где
? соль и хеш-значение пользователя извлекаются из базы данных,
? соль добавляется к введенному паролю и с помощью той же самой функции вычисляется хеш-значение.
? Хеш-значение введенного пароля сравнивается с хеш-значением, сохраненном в базе данных. Если они совпадают – пароль верен, тогда пользователь аутентифицируется и допускается в систему. В противном случае пользователю сообщают о неправильном пароле.
Украв базу данных, злоумышленник получает доступ к хеш-значениям паролей, а не к самим паролям и, соответственно, в большинстве случаев не сможет залогиниться от имени какого-либо пользователя (разумеется, он может перехватить данные при передаче на сервер пароля конкретного пользователя, но этот случай не связан с безопасностью всех остальных посетителей сайта и будет рассмотрен в соответствующих главах этой книги). Для успешной аутентификации хакеру нужно извлечь из хеш-значений исходные пароли, используя вспомогательные средства (например, таблицы, в которых все распространенные пароли сопоставлены с их хеш-значениями). Это легко удается сделать при использовании не только простых и распространенных паролей, но также сложных и длинных. Взломав один хеш, злоумышленник получает доступ ко всем аккаунтам, где используется тот же пароль.
Допустим, когда-то давно на сайте http://site.ru использовалась БД, в которой хранились открытые пароли и их хеши, и она утекла к хакерам. Спустя какое-то время была украдена база данных другого сайта, скажем http://site2.ru, в которой были записаны только хеши паролей (алгоритм хеширования, естественно, тот же). Хакер сканирует базу данных http://site2.ru в поисках хешей, совпадающих с найденными в базе данных http://site.ru. Обнаружив совпадения, хакер может раскрыть соответствующие пароли в базе данных http://site2.ru, несмотря на то что там хранились только хеши (и сложность пароля здесь не играет роли).
Также хакер может формировать собственную базу хешей, даже если их нет ни в одной БД. При этом он обычно учитывает специфику взламываемого сайта. Если формат пароля не требует спецзнаков, значит, пароль состоит только из букв и цифр. Также учитывается регион, где используется сайт, его тематика (например, если пользователи сайта – пенсионеры, то они могут использовать как пароли имена внуков) и т. д. Так хакер может вычислить хеши для наиболее популярных парольных фраз, а затем сравнить со своей базой хешей украденную с сайта БД с хешами реальных пользователей.
Взломав один хеш, злоумышленник получает доступ ко всем аккаунтам, где используется тот же пароль.
Поэтому для дополнительной защиты от подбора паролей их хеш-значения «солят», т. е. к значению хеша добавляют некое единое для всех пользователей системы (сайта) или уникальное для каждого пользователя значение, называемое солью[30 - Соль (также модификатор входа хеш-функции) – строка данных, которая передается хеш-функции вместе с входным массивом данных (прообразом) для вычисления хеша (образа). «Соль» – дословный перевод английского термина «salt».], и получают второе хеш-значение. Соль снижает вероятность подбора пароля злоумышленником, так как «радужные таблицы», о которых речь пойдет чуть ниже, не позволят сравнить хеш-значения и определить (открыть) пароли. Если соль одинакова для всех пользователей, то и у разных пользователей с одинаковыми паролями будут одинаковые вторые хеш-значения, а если уникальна, то вторые хеш-значения всех пользователей, даже с одинаковыми паролями, будут различны.
Например, если пользователь А и пользователь Б используют пароль «Яблоко», то в первом случае их парольный хеш будет одинаковым (скажем, 422a41… без соли и a5ed85… с солью у обоих пользователей[31 - Пример, нереальные значения.]), а во втором – различным (скажем, 422a41… без соли у обоих пользователей и a5ed85… у одного и fc1a95… у второго (с солью)).
Кстати, если пароль хешируется на стороне клиента, т. е. на компьютере (устройстве) пользователя, это хеш-значение становится, по сути, самим паролем, так как именно хеш передается пользователем на сервер для аутентификации. Злоумышленник может перехватить хеш и зайти на сервер под именем пользователя, даже не зная его пароля. Поэтому в таких случаях необходимы дополнительные меры защиты, например использование протокола HTTPS (TLS)[32 - https://www.internet-technologies.ru/articles/solenoe-heshirovanie-paroley-delaem-pravilno.html (https://www.internet-technologies.ru/articles/solenoe-heshirovanie-paroley-delaem-pravilno.html).].
Еще можно упомянуть о коллизиях – случаях, когда криптографический алгоритм создает одинаковые хеш-значения для разных фрагментов данных. Этим недостатком грешит большинство хеш-функций, одни меньше (SHA-256, SHA-512, whirlpool и др.), другие больше (например, MD5 или SHA-1). Злоумышленники могут использовать и эту особенность, но несколько иначе. Имея один набор данных, они могут подобрать другой (к примеру, файл) с таким же хешем, как у первого. Вектор атаки следующий: злоумышленник подменяет корректный файл своим экземпляром с закладкой, вредоносным макросом или загрузчиком трояна. И этот зловредный файл будет иметь такой же хеш или цифровую подпись[33 - https://habr.com/post/322478/ (https://habr.com/post/322478/).].
Сначала злоумышленник выясняет, какой алгоритм был использован для хеширования паролей. Это относительно несложно, поскольку криптографические алгоритмы независимо от размера входных данных генерируют хеш-значения фиксированной длины и эта длина различна для разных алгоритмов.
«Несоленые» хеши обрабатываются злоумышленником с использованием таблиц ранее сопоставленных друг с другом хешей-паролей. Таблицы бывают разного типа, например «радужными» (они представляют собой перечень соответствий не всех ранее подобранных паролей и их хешей, а только первых элементов таких цепочек)[34 - Подробнее о таблицах см.: https://www.internet-technologies.ru/articles/solenoe-heshirovanie-paroley-delaem-pravilno.html (https://www.internet-technologies.ru/articles/solenoe-heshirovanie-paroley-delaem-pravilno.html).]. Подключив таблицы к программе взлома, хакер будет перебирать возможные варианты, пока не расшифрует пароли. Простые и распространенные будут расшифрованы мгновенно; чем пароли длиннее и сложнее, тем больше потребуется времени.
Взлом «соленых» хешей, если значение соли известно злоумышленнику, производится аналогично, только в программе взлома указывается еще и соль. В данном случае работа злоумышленника значительно усложняется, так как для «соленых» хешей нужно генерировать собственные таблицы под каждую соль.