Что такое пентест
Пентест (от pentesting, penetration testing) – это симуляция кибератаки на компьютерную систему, нацеленная на определение уязвимостей и угроз безопасности.
Зачем компаниям нужен пентест
- Обнаружение уязвимостей, в частности, проверка на возможность доступа извне или получение несанкционированных доступов внутри компании;
- Соответствие требованиям безопасности (для тех видов деятельности, к которым предъявляют требования государство или регуляторы), и стандартам, например, КИИ, PCI DSS, 821-П (бывший 719-П), ГОСТ Р 57580 и другие;
- Управление рисками: идентификация угроз и проверка эффективности принятых мер входит в большинство методологий управления рисками;
- Защита от атак: результатом пентеста является не только обнаружение брешей в защите, но и план их устранения вкупе с общими рекомендациями по повышению уровня безопасности;
Методологии/виды пентеста
- White box (букв. “белый ящик”) – тот, кто имитирует атаку, имеет достаточно высокий уровень доступа к инфраструктуре компании или уровень знаний о ее устройстве. Самое важное отличие от других видов пентеста в ITGLOBAL.COM Security – тестирование white box проводится с доступом к исходным кодам приложения;
- Gray box (“серый ящик” или смешанный пентест) – пентестер имеет некоторые знания внутренней структуре или частичный доступ к ее инфраструктуре, например, как у бывшего работника компании, или, например, учетную запись с ограниченными правами;
- Black box (“черный ящик”, как правило проводится при внешнем пентесте) – пентестер действует как злоумышленник со стороны, который не имеет знаний об инфраструктуре компании, кроме общедоступных, и, соответственно, никаких доступов;
- Скрытый пентест (он же double blind, двойной слепой) – иногда в отдельную группу выделяется подвид “черного ящика”, почти никто в компании не знает о том, что проводится пентест, включая команду технической защиты информации (именно поэтому он “двойной”);
В этой статье рассматривается проведение тестирования на проникновение методом black box/gray box, то есть без доступа к исходному коду приложений и инфраструктуре заказчика.
Этапы и шаги пентеста
-
Сбор информации
Команда ITGLOBAL.COM Security обычно начинает работу с получения списка доменов заказчика, которые входят в область проведения тестирования. Дополнительно, если у заказчика есть такой запрос, можно получить учетные записи пользователей внутри системы заказчика и проводить тестирование с позиции внутреннего нарушителя (серый ящик). Первым этапом после получения списка целевых ресурсов будет проведение внешней разведки OSINT (open-source intelligence), т.е. сбора информации из открытых источников.
Для этого используются следующие сервисы:
- BBOT – фреймворк автоматизации OSINT, используется для поиска поддоменов, сканирования портов, выполнения скриншотов веб-страниц;
- Hunter.io, Contactout.com – сайты для поиска почт, связанных с компанией;
- Breachdirectory.org, Leak-lookup.com, Intelx.io – ресурсы для поиска почт/логинов/паролей пользователей сотрудников компании в агрегаторах утечек;
- Wappalyzer, BuiltWith – сервисы для сбора информации о стеке технологий, используемых заказчиком (движок сайта, CMS, хостинг, серверы, сертификаты, аналитика и другое);
- Shodan, Censys – системы для поиска информации о целевых системах и сетях, включая открытые порты, версии ПО, используемые протоколы и сертификаты.
-
Сканирование
Следующим этапом проводится тщательное сканирование ресурсов заказчика с использованием автоматизированных средств, таких как:
1. Nmap – программное обеспечение с открытым исходным кодом, используемое для:
- сканирования хостов;
- определения ОС;
- определение открытых портов;
- определение версий программ;
- выполнения сложных задач, таких как выполнение сетевых аудитов, при помощи встроенного скриптового движка.
2. Burp Suite – это ПО для тестирования безопасности веб-приложений в автоматическом и ручном режимах. Используется для нахождения конечных точек плюс как сканер веб-уязвимостей.
3. Фаззеры (например, FFUF) используются для брутфорса конечных точек/путей веб-приложения.
-
Детальный разбор ресурсов
Далее команда вручную проверяет ресурсы заказчика, в том числе прибегая к автоматизированным инструментам. Основным ПО является Burp Suite и его плагины:
Repeater – инструмент для ручной отправки HTTP-запросов с возможностью их модификации. Полезен для проверки различных сценариев эксплуатации уязвимостей. С помощью модуля Repeater можно:
- Отправлять запросы с измененными значениями параметров для проверки на уязвимости, связанные с пользовательским вводом;
- Отправлять серии HTTP-запросов в определенной последовательности для проверки на уязвимости в многоэтапных процессах или уязвимости, которые связаны с состоянием соединения;
- Вручную проверять проблемы, которые нашел Burp Scanner;
Collaborator – модуль позволяющий обнаруживать уязвимости через взаимодействие веб-приложений с внешними серверами под контролем атакующего. Например, с помощью Burp Collaborator можно проверить работоспособность следующих уязвимостей:
- Server-Side Request Forgery (SSRF, подделка запросов на стороне сервера): злоумышленник заставляет сервер делать запросы к произвольным внешним ресурсам;
- Cross-Site Scripting (XSS, межсайтовый скриптинг): в результате атаки на сайт внедряется сторонний скрипт;
- Remote Code Execution (RCE) – удаленное выполнение произвольных команд на сервере;
- Data Exfiltration (кража данных) – выведение данных из системы на внешний сервер.
На данном этапе находится наибольшее количество уязвимостей. С помощью ручного тестирования расширяется фронт работ, получается идентифицировать логические уязвимости, сложные для обнаружения автоматизированными инструментами.
-
Эксплуатация
Активная часть тестирования завершается этапом эксплуатации, на котором используются находки со всех предыдущих этапов тестирования, чтобы имитировать атаку реальных злоумышленников и получить несанкционированный доступ к ресурсам заказчика.
Все найденные потенциальные уязвимости проходят проверку, в ходе которой пентестеры эксплуатируют уязвимость и либо заносят ее в отчет (вместе с оценкой потенциального ущерба), либо отмечают как ложноположительный результат. Используемые инструменты напрямую зависят от типа эксплуатируемой уязвимости. Большинство уязвимостей веб-приложений можно проверить с помощью Burp Suite или Postman. Часто требуется написать скрипт для проверки уязвимости. В таком случае используется Python или Bash.
- Burp Suite Intruder используется для перебора параметров в HTTP запросах, атак типа “brute force”;
- Repeater нужен для ручного создания и модификации HTTP/HTTPS-запросов и анализа ответов;
- Postman нужен для отправки HTTP-запросов, тестирования ответов и автоматизации взаимодействия с API (в отличие от Burp, он используется не только для тестирования безопасности);
- cURL – это инструмент командной строки, который разработчики используют для передачи данных на сервер и с него;
- Metasploit – один из самых популярных фреймворков для пентеста с широкой сферой применения, на этом этапе используется для эксплуатации известных уязвимостей, включая уязвимости из каталога CVE;
- Консольные утилиты Linux/Kali Linux нужны для взаимодействия с базами данных, FTP-серверами, SMTP-серверами и так далее;
- Python/Bash/JavaScript используются для написания скриптов для проверки комплексных уязвимостей.
Немаловажную роль в оценке безопасности системы играет то, насколько быстро обнаружена атака/несанкционированный доступ и насколько хорошо пентестерам удается скрыть следы произошедшего. Это, разумеется, актуально для сценария, в котором большая часть ответственных инженеров и безопасников “нарочно” не знает о проводящемся тестировании.
-
Анализ результатов, документирование и отчетность
На протяжении всех этапов тестирования команда документирует проделанную работу в виде описания проводимых атак и обнаруженных уязвимостей в форме текста со вставкой скриншотов.
Результатом тестирования на проникновение является отчет, который команда формирует из собранной в ходе тестирования информации.
Для создания отчета используется фреймворк/платформа PTaaS (penetration testing as a service), которая упрощает документирование в ходе пентеста и структурирование информации по проектам.
Как правило, отчёт содержит в себе:
- Полное и структурированное описание уязвимостей с процессом эксплуатации
- Описание хода пентеста, методологии (например, NIST SP800-115 и OSSTMM) и этапов тестирования, включающее в себя использованные инструменты
- Описание действий после эксплуатации уязвимостей (например, создание устойчивых доступов, эксфильтрация данных)
- Наглядные доказательства проведенного тестирования и его результатов (скриншоты, логи)
- Общую оценку защищенности ресурсов заказчика, аналитические выводы по наиболее встречающимся типам уязвимостей
- Последствия для бизнеса: оценка возможных последствий для бизнеса в случае реальной атаки
- Рекомендации общего характера по повышению безопасности системы, а также по устранению конкретных уязвимостей – с приоритезацией согласно степенями риска уязвимости по шкале CVSS (низкая, средняя, высокая, критическая степени)
Что делать с результатами пентеста
Нужно понимать, что найденные в процессе тестирования уязвимости – это положительный результат, который убережет вас от проблем в дальнейшем.
Первоочередная задача после получения результатов – на основании полученного отчета разработать план по устранению уязвимостей с учетом их критичности и имеющихся ресурсов. Хорошо, если этот план включает в себя не только “работу над ошибками” и изменения в процессах, но и обучение сотрудников.