По данным центра мониторинга и реагирования на кибератаки Solar JSOC компании «Ростелеком», подбор учетных данных применяется в 18% атак и стоит на третьем месте по популярности среди прочих методик хакеров. Многие пользователи уверены, что их аккаунт не может заинтересовать злоумышленников, особенно если речь идет о корпоративной «учетке». На самом деле хакера интересует абсолютно любой аккаунт, который поможет ему проникнуть во внутреннюю сеть той или иной компании, закрепиться в ней, развить атаку и впоследствии украсть конфиденциальные данные или получить контроль над ИТ-инфраструктурой организации.
Для проведения части атак используются ошибки в разработке программного обеспечения, из-за которых система не блокирует многочисленные неправильные попытки ввода учетных данных. Однако для другой части – недостаточная осведомленность пользователей в вопросах создания и управления паролями. Далее мы увидим примеры распространенных ошибок и ненадежных паролей, выявленных в компаниях-заказчиках «Ростелекома» в ходе внешних и внутренних тестирований на проникновение и анализа защищенности веб-приложений. В рамках подобных проектов эксперты-безопасники выступают в роли хакеров и по согласованию с заказчиком взламывают его ИТ-системы, чтобы определить их слабые места. Все данные собраны за 2019 и первую половину 2020 года.
Наиболее частым недостатком механизмов аутентификации внешних систем и приложений является отсутствие защиты от атак подбора учетных данных: изъян был обнаружен в 46% исследуемых систем. В них, в частности, не отслеживалось и не ограничивалось количество неудачных попыток аутентификации, отсутствовали временные задержки между попытками ввода пароля.
Также у 21% компаний Solar JSOC выявил слабую парольную политику: пароли не соответствовали требованиям по длине и набору символов. Напомним, что именно парольные политики не дают пользователям создавать простейшие комбинации.
Уязвимыми могут быть и сложные, на первый взгляд, пароли. Дело в том, что, кроме атак полного перебора (так называемого bruteforce), злоумышленники часто применяют атаки по словарю: подбор пароля основан на той идее, что владелец аккаунта использует не случайный набор символов, а реально существующие слова или распространенные комбинации. Злоумышленники запускают программу, которая автоматически подбирает подходящее слово из специальных баз данных – словарей. Оказывается, лишь небольшая доля корпоративных сервисов и систем при создании и смене паролей проверяют их наличие в подобных публичных словарях и списках утечек.
К сожалению, не все проблемы по защите систем и данных решаются на стороне разработчиков и администраторов. Важную – если не ключевую – роль здесь играют сами пользователи. Проводя тестирование на проникновение, эксперты «Ростелекома» часто видят такое использование:
Теперь мы можем на практике посмотреть, как же хакеры подбирают пароли от ваших аккаунтов. Ниже описаны несколько случаев, связанных с подбором паролей, которые встречались в проектах по тестированию на проникновение.
Пример 1. Без словарей и автоматизированных инструментов
Во время одного из исследований эксперты обнаружили административный интерфейс ApacheMQ. Естественно, от посторонних глаз его защищала форма аутентификации. «Для начала мы решили проверить пару «admin:admin», и это действительно сработало. Как можно прочитать в документации, «admin:admin» являются учетными данными по умолчанию, которые не сменили после установки. Это значит, что, подобрав пароль от ApacheMQ, хакер мог бы легко проникнуть во внутреннюю сеть заказчика», – рассказал руководитель отдела анализа защищенности Solar JSOC компании «Ростелеком» Александр Колесов.
Если предположить, что пароль сменили бы на случайную последовательность символов той же длины (например, «Ha?z9»), то подбор занял бы до 5 лет, а примерная скорость подбора составила бы 50 паролей/сек.
Пример 2. Автоматизируем подбор паролей
В другом проекте (получение доступа к веб-приложению компании-заказчика) учетные данные «admin:admin», к счастью, уже не сработали. Зато при исследовании публично доступных сценариев и содержимого приложения специалисты «Ростелекома» обнаружили ряд активных учетных записей пользователей. Осталось только подобрать к ним пароль. Выяснилось, что в веб-приложении клиента не было защиты от атак с использованием подбора данных, поэтому достаточно было написать сценарий, который в автоматическом режиме начал перебирать различные комбинации.
Спустя 3 часа комбинация была подобрана. Как оказалось, в аккаунте использовался словарный пароль, что и привело к его компрометации. Если бы вместо этого пользователь придумал случайную комбинацию символов той же длины, что и словарный пароль, ее подбор занял бы более 17 млн лет.
Пример 3. Password Spraying
Однако чаще всего корпоративные учетные записи подключены к Active Directory (специальное хранилище данных обо всех объектах сети). Если злоумышленник начнет подбирать пароль по словарю к учеткам, то система это «увидит» и заблокирует сразу всех пользователей AD. Хакер же преследует иную цель: он хочет проникнуть во внутренний периметр компании, оставаясь незамеченным. Это накладывает определенные ограничения на проведение атак с подбором учетных данных.
Чтобы этого избежать, применяется атака типа Password Spraying, которая предполагает поочередное введение одного и того же пароля к каждой из доступных учетных записей. К примеру, берется 100 учетных записей и 1 пароль, который пытаются «примерить» ко всем имеющимся «учеткам», потом берется 2-й пароль и т.д. Так как это делается с большой разницей во времени, пользователи не будут заблокированы. Обычно для проведения атаки хакеры используют заранее подготовленный список учетных записей, который могут, например, собрать из открытых источников или в результате эксплуатации других уязвимостей.
«В одном из проектов для дальнейшего продвижения в сети нашим специалистам необходимо было получить учетные данные хотя бы одного доменного пользователя (это корпоративная учетная запись, которая позволит получить доступ к почте и подобным корпоративным сервисам). Атаку Password Spraying решили провести на одном из корпоративных сайтов, расположенных в Интернете. Каждый день с интервалом 40-70 минут проводились попытки входа со слабыми паролями из публичного словаря. Несмотря на достаточно медленный перебор (не более 10 паролей в день), учетные данные активного пользователя удалось найти на 12 день. Очевидно, что подобрать случайную последовательности из 9 символов за примерно 120 попыток практически невозможно», – отметил Александр Колесов.
Как придумать пароль, который сможет защитить системы и обрабатываемые в них данные от несанкционированного доступа? Национальный институт технологий и стандартов (NIST) выпускает рекомендации по цифровой идентификации личности (Digital Identity Guidelines), которые в том числе касаются реализации парольных политик и предъявляемых к паролям требований. Многие компании по всему миру следуют данным рекомендациям при разработке и обслуживании систем.
В свое время NIST рекомендовал обращать внимание в первую очередь на алфавит паролей, но сегодня главным параметром безопасности считается его длина. Институт рекомендует использовать длинные парольные фразы вместо коротких буквенно-цифровых комбинаций со специальными символами. При этом длина пароля должна составлять не менее 8 знаков.
Также важно проверять, содержится ли устанавливаемый пароль в словарях или среди ранее скомпрометированных паролей. В случае если комбинация была обнаружена, стоит объяснить пользователю, почему именно его вариант пароля отклонен.
Также не стоит забывать о двухфакторной аутентификации: когда, кроме пароля, пользователю предлагается ввести, например, одноразовый код, высланный на телефон. Это усилит защиту от несанкционированного доступа, поскольку кроме информации о пароле злоумышленнику необходимо дополнительно обладать еще и, к примеру, физическим устройством пользователя.
Двухфакторная аутентификация в настоящее время является лучшей защитой от таких атак, как словарный и полный перебор пароля, Credential Stuffing и Password Spraying. Но она требует дополнительных затрат на организацию со стороны компании, а восстановить доступ в случае потери второго фактора (например, телефона с приложением для генерации одноразового кода) достаточно сложно.
Со случайными последовательностями символов и словарными паролями все более-менее интуитивно понятно: словарные пароли – плохо, а случайные, более 8 символов – хорошо. А вот с фразами возникают вопросы: что это и какой длины она должна быть?
Парольная фраза – это последовательность слов, например, RosePuppyShelfForest. Ее основное преимущество – простота запоминания.
Активный словарный запас русско- и англоговорящего человека составляет 10–20 тысяч слов. Предположим, что потенциальный злоумышленник обладает словарем из 15 тысяч активно употребляемых слов и использует его при подборе. Сравним энтропию (уровень сложности) парольных фраз, которые можно составить из предполагаемого словаря, и случайных последовательностей символов различной длины.
Как видно из таблиц, парольные фразы из 4 слов по уровню энтропии сопоставимы со случайной последовательностью из 8–9 символов. Следовательно, парольная фраза должна содержать не менее 4 случайных слов. Стоит отметить, что при включении в парольные фразы специальных символов и цифр их сложность будет только возрастать.
Для защиты систем и данных требуются комплексные действия со стороны как разработчиков, так и пользователей. Первым следует выстраивать ИБ-защиту с учетом возможных атак подбора данных, внедрять двухфакторную аутентификацию и помогать пользователям придумывать сложные и надежные комбинации, прописывая необходимые требования в политиках безопасности. Вторым – стоит использовать генераторы паролей, не ориентироваться на минимальные парольные требования и помнить, что для злоумышленников нет «неинтересных» аккаунтов: любой может попасть в фокус их внимания.