Блог A1QA

О тестировании и качестве ПО

Как защитить пароли пользователей от перебора

Кражи паролей, похищения личных данных пользователей регулярно попадают в заголовки новостей. Почтовые сервисы, аккаунты в социальных сетях, даже сами смартфоны – хакеры ставят под угрозу любые пользовательские данные.

Если вы участвуете в разработке программного продукта, использование которого подразумевает доступ к данным пользователя, эта статья для вас.

Сегодняшний материал подготовлен специалистами центра компетенции по тестированию безопасности нашей компании. Из него вы узнаете:

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

Как злоумышленники узнают пароли?

Прежде чем говорить о самих паролях разберемся, как они могут быть украдены. Украсть пароль можно у самого пользователя, у сервиса или на пути от клиента к сервису.

Нас интересует только первый вариант, поскольку только он относится непосредственно к парольной безопасности. Два других варианта связаны с уязвимостями веб-приложений и шифрованием данных, при этом вероятность похищения пароля никак не зависит от его сложности.

Итак, каким образом злоумышленник может украсть пароль у пользователя?

  • Прямым перебором аутентификационных данных жертвы (guessing, cracking, brute force attack и т.д.). Это самый простой способ.
  • Методами социальной инженерии, которые позволяют узнать аутентификационные данные пользователя (например, позвонить и представиться администратором, рассылка писем от лица того же администратора и т.д.). Этот способ более изощренный и требует определенных усилий от атакующего (сбор информации о жертве и его окружении). Для этого злоумышленник должен владеть специальными навыками и инструментами и обладать определенными познаниями в психологии.
  • Подсмотреть пароль при прямом общении с жертвой или на его/ее рабочем месте (установить кейлогер в компьютер жертвы, найти стикер с паролем).

Механизмы защиты паролей

Если успешность проведения двух последних пунктов зависит не от разработчика продукта, а от самого пользователя, то воспрепятствовать автоматическому перебору паролей можно на стадии разработки, внедрив следующие механизмы:

  • CAPTCHA (капча). При аутентификации пользователю необходимо дополнительно ввести символы с картинки.
  • Двухфакторная аутентификация с использованием различных средств. Например, отправка SMS с кодом на мобильное устройство пользователя для авторизации в приложении или использование генераторов одноразовых паролей.
  • Временная блокировка пользователя после определенного количества неудачных попыток аутентификации. Например, аккаунт пользователя блокируется на 30 минут после 5 неудачных попыток.
  • Определение требований к паролю. На этом моменте остановимся поподробнее.

Надежные пароли: какие они?

  • Оптимальное количество символов в пароле – 8-12.
  • В состав пароля входят цифры, латинские буквы и специальные символы («$», «?», «!», «<», «>». «”», «#», «%», «@» и другие).
  • Сочетание цифровых и буквенных символов (заглавных и строчных) – самое надежное.

НЕ рекомендуется использовать в качестве пароля:

  • Устойчивые словосочетания.
  • Наборы символов, представляющие собой комбинации клавиш, расположенных подряд на клавиатуре: qwerty, 123456789, qazxsw и т. д.
  • Персональные данные: имена и фамилии, даты рождения (свою и родственников), клички домашних животных, адреса, номера паспортов, страховых свидетельств и т. п., пароли, созданные для доступа к другим сервисам.

Важным моментом при составлении пароля является соблюдение баланса между его сложностью и запоминаемостью для пользователя. Дело в том, что при составлении очень длинных и трудно запоминаемых паролей, у пользователя может возникнуть соблазн записать его на бумажном носителе (например, на стикере, который наклеен на монитор или лежит под клавиатурой), что повышает вероятность кражи пароля у пользователя злоумышленником.

Также вы можете предусмотреть принудительную смену пароля с определенной периодичностью (например, раз в 90 дней). Если для подбора пароля требуется время превышающее данный период, то риск подбора пароля заметно сокращается.

Наконец, пользователь должен знать, какую последовательность действий предпринять, если пароль был похищен или есть подозрения на это.

Если защитные механизмы отсутствуют: реальный кейс по тестированию

При отсутствии защитных механизмов злоумышленник, обладающий необходимым временем и информацией о жертве, сможет подобрать аутентификационные данные и тем самым получить доступ к аккаунту, а в дальнейшем использовать это для развития атаки на ресурс. Например, если это панель администратора ресурса, то злоумышленник сможет получить доступ ко всем аккаунтам, контенту ресурса, проводить различные манипуляции с ними (редактировать/удалять/добавлять).

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

Инженеры сразу обратили внимание на то, что код состоял всего из 4 цифр, что означает всего 10000 возможных комбинаций. Кроме того, в приложении ошибка в реализации аутентификации позволяла вводить любое количество кодов без блокировки пользователя.

Используя специально разработанный скрипт, команда по тестированию безопасности за несколько попыток смогла подобрать данный код и поменять пароль пользователя. Таким образом был получен доступ к аккаунту.

О том, какие еще обнаруживают инженеры центра компетенции по тестированию безопасности A1QA, читайте здесь и вот здесь.

Тестирование на проникновение

Оценить уровень защищенности информационной системы (в том числе паролей пользователей) позволяет тестирование на проникновение.

На начальном этапе тестирования инженеры осуществляют пассивный сбор информации о жертве/клиенте: имена, фамилии, почтовые ящики, аккаунты в социальных сетях и прочие данные. На основе полученных данных генерируются шаблоны писем, словари для перебора и т.д.

При проведении тестов на проникновение могут применятся методы социальной инженерии. Специалисты по тестированию рассылают письма сотрудникам компании с целью ввести их в заблуждение и выведать нужную информацию.

Также могут использоваться и другие методы взаимодействия с жертвами: физический контакт, телефонные звонки.

Проводится тестирование на проникновение после того, как приложение полностью реализовано и протестировано. Обязательное условие – тестирование в окружении, максимально приближенном к настоящему.

Результаты проведения тестирования на проникновение:

  • Независимая оценка защищенности информационной системы от атак извне;
  • Выявление узких мест и уязвимостей;
  • Список необходимых работ по улучшению защиты с оценкой бюджета и временных рамок.

А данные ваших пользователей находятся под надежной защитой?

Если есть сомнения, закажите бесплатную консультацию со специалистами по тестированию безопасности A1QA.

Поделиться статьей: