Привет! Меня зовут Сергей Домнин, со мной моя коллега Анастасия Есина. Мы руководители направлений по информационной безопасности в SM Lab. В этой статье мы расскажем о таком методе оценки защищенности, как тестирование на проникновение, или пентест.

Немного печальной статистики

Начнем с определения понятия «уровень защищенности». 

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

Если обратимся к статистике ГК «Солар» за 2022-2023 гг., увидим следующее: только 7% компаний имеет средний или высокий уровень защищенности. У более 90% слабо защищен внешний периметр, что может привести к достаточно печальным последствиям. Например, хакеры могут украсть деньги, данные, зашифровать сервера и попросить выкуп, в самых худших случаях – сломать целый бизнес-процесс.

Финансовые последствия одной хакерской атаки – от 7 млн рублей (конечную сумму определить трудно). В среднем компания тратит на разрешение инцидентов по информационной безопасности от 20 и более млн рублей в год. Что касается восстановления процессов, оно может длиться не менее 5 дней.

Можно ли что-то сделать для предотвращения взломов, утечек, кражи денежных средств и данных? Да. Отличной практикой в таком случае будет пентест.

Пентест: что такое и зачем нужен

Пентест (Penetration Testing) – это поиск критичных уязвимостей с целью продемонстрировать возможность проникновения в инфраструктуру и оказания негативного воздействия на сервисы, приложения и данные. 

Основная цель пентеста не просто найти те самые уязвимости, но и составить рекомендации для их дальнейшего устранения. 

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

Итак, для чего нужен пентест. 

Во-первых, для выявления уязвимостей и недостатков в приложениях, сервисах, системах и процессах.

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

В-третьих, для определения слабых мест в инфраструктуре, дальнейшей настройки защиты и концентрации усилий именно на уязвимых точках.

В-четвертых, для написания рекомендаций по устранению уязвимостей и повышению уровня защищенности.

Методики пентеста

Существуют следующие методики:

  • «Черный ящик», или симуляция реальной атаки.  Если речь о веб-приложении, то команде достаточно только URL, после чего они самостоятельно проводят разведку и ищут возможные точки развития атаки; 

  • «Серый ящик». Помимо самого URL у пентестеров есть еще какие-то ограниченные доступы системы. Такой вид пентеста помогает за более короткий промежуток времени находить больше уязвимостей, т.к. уже не надо ломать админку или учётку; 

  • «Белый ящик». Плюсом к цели дается вся документация, архитектура, код и доступы к другим системам. Это самый глубокий вид пентеста, и он больше моделирует поведение злоумышленников, действующих внутри компании. 

Направления атаки

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

Если с первыми пятью всё понятно, то отдельно следует пояснить шестой пункт: как бы ни была защищена инфраструктура, через манипуляции с сотрудниками (так называемая «социальная инженерия») она может быть скомпрометирована. Необходимо проводить регулярные тестовые фишинговые рассылки среди персонала, в которых предупреждать об опасных письмах, атаках в Telegram, WhatsApp и по телефону – таким образом можно проверить, насколько сотрудники готовы к этим атакам, как развита культура ИБ, а по результатам корректировать вектор развития практики Awareness.

Критерии, по которым назначается пентест

Критериев несколько, основные из них: 

  • продукт вообще никогда не проверялся, поэтому стоит провести работы для понимания его уровня защищенности;

  • потенциальные риски, выявленные в ходе проверок, которые после будут дополнительно подвергнуты пентесту;

  • продукт планируется к публикации в Интернете, где «страшные хакеры» только сидят и ждут, чтобы что-нибудь взломать. Соответственно, нужно удостовериться, что риски компрометации низкие;

  •  продукт или доработка бизнес-критична, т.е. именно эта фича, её работа очень важна, поэтому надо проверить  чисто на всякий случай;

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

Этапы проведения пентеста

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

Представим, что к владельцу продукта (Product Owner, далее PO) приходит ИБшник и говорит: «Привет, мы сейчас будем проверять твой продукт на безопасность!» Чтобы пентест прошел гладко и PO с командой остались довольны, необходимо четко обозначить обязанности, этапы, сроки и ключевых лиц.

Во-первых, уведомить ответственных, которые, помимо условного PO, тоже должны знать, что проходит пентест: проджект-менеджера, кураторов, отдел эксплуатации и др. Во-вторых, собрать информацию (например, архитектурные схемы), а также выдать доступы, после чего вместе с PO определить дату начала работ. Обычно надо укладываться под конец цикла разработки (если команда работает по итеративной модели): так проще закладывать время на закрытие обнаруженных уязвимостей.

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

Результаты пентеста

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

  • номер ошибки и краткое описание;

  • уровень опасности по CVSS, который помогает приоритизировать уязвимости;

  • вектор CVSS – этот параметр больше нужен безопасникам. В этих цифрах и буквах зашифровано влияние на конфиденциальность, целостность, доступность, а также привилегии, которые нужны для эксплуатации той или иной уязвимости; 

  • сервис/приложение – что именно пентестили;

  • платформа – Web, iOS, Android или инфраструктура; 

  • статус воспроизводится/не воспроизводится: иногда бывает, что в отчет попадает критичная уязвимость, уже устраненная командой в реал-тайме, т.к. она была обнаружена в момент написания; 

  • шаги:  они достаточно подробные, чтобы любой мог повторить шаг 1, 2, 3 и убедиться, что уязвимость действительно есть; 

  • последствиями эксплуатации – на какую часть бизнес-процесса влияет эксплуатация уязвимости;

  • рекомендации по устранению – как можно устранить эту уязвимость, т.е. команде дается небольшой план, на который можно опереться. 

Сроки

Сроки варьируются от компании к компании, а также зависят от уровня критичности. В среднем на закрытие уязвимостей дается следующее количество дней:

Чем можно дополнить пентесты 

Можно организовать внутреннюю программу Bug Bounty, где сотрудники за вознаграждение будут искать уязвимости в продуктах.

А можно податься и на внешнюю платформу Bug Bounty – это достаточно эффективный способ выявления уязвимостей, поскольку их поиском может заниматься большое количество независимых исследователей. Однако стоит помнить, что потребуется соответствующая инфраструктура и опытные специалисты в команде ИБ, а также четко описанный скоуп, в рамках которого будут вестись работы.

Подводя итоги

https://lh7-rt.googleusercontent.com/docsz/AD_4nXeuB8kZd5jQ2x0MmFoSqYG1uDOK0HZestLOet8M01B6sCljTQ_dM-_3tRji04Fxvn7hIgM15q9H0xhIBsky1qMQ9cbgIzCb390-mDnByMlHEJy7BLJ30Xcv0MuCwTUD3CCP0iXhbZhmsuuH?key=YbLkzCFvkCVv-awnfyZKfuJt

Итак, мы рассказали о такой крутой практике, как тестирование на проникновение, которая делает продукт безопаснее следующим образом:

  • помогает обнаружить критичные уязвимости, способные нарушить работу приложений/систем;

  • позволяет соответствовать законодательству и международным стандартам, например, PCI DSS, которые требуют ежегодных проверок;

  • проверяет продукт без вреда для компании: лучше отдать продукт на проверку пентестерам, чем позволить сделать это злоумышленникам;

  • описывает в отчете рекомендации по устранению уязвимостей, что косвенно поднимает скиллы по ИБ членов команды разработки;

  • пентесту подвергаются не только продукты, но и инфраструктура. Таким образом компания будет понимать, как реагировать на угрозы, какой у нее уровень защищенности и какие меры необходимо принять для его повышения. 

Комментарии (0)