| Слушать на Google Podcasts | Слушать на Mave | Слушать на Яндекс Музыке |
Руслан Рахметов, Security Vision
В одной из прошлых статей мы рассказывали про этичного хакера: чем он отличается от других и каким образом может защищать компании и данные их сотрудников, клиентов и партнёров. А сейчас рассмотрим такую часть его работы, которая называется «тестирование на проникновение», или «пентест» (от английского penetration test). Мы расскажем про основные этапы тестирования, а также опишем, кому и для каких задач может быть интересно проведение пентеста.
Тестирование на проникновение – процесс творческий, и проводиться оно может по-разному, но, как и другие процессы в ИБ, его можно разделить на основные этапы (например, согласно NIST):
1. Определение цели тестирования
Этап, на котором определяются приложения, сети, системы и другие тестируемые ресурсы. На этом этапе выделяются и описываются ограничения проекта и особые требования безопасности.
Фактически, этап определения целей – это подписание контракта на проектную работу между компанией и этичным хакером. Сравнить его можно с определением учебного плана в начале года (когда рассчитываются нагрузка на студентов, изучаемые в семестре предметы, планируется набор экзаменов и других тестов) или с составлением плана лечения с возможными ограничениями по бюджету или из-за аллергии на препараты.
2. Сбор информации
В этой фазе исследователи собирают информацию о целевой системе: происходит изучение сайта и общедоступной информации о компании и сотрудниках, поиск открытых сетевых портов, сбор информации о сетевой инфраструктуре, определение использованных технологий и т.д. Сбор информации бывает пассивный или активный, а в сети можно встретить и другие названия для второго этапа пентеста – реконнесанс или рекогносцировка.
При пассивном сборе данных этичный хакер не взаимодействует с целевой системой (из шага 1) напрямую, а просто мониторит сайты, домены, изучает публично доступную информацию (например, whois-запросы). Активный же способ исследования включает уже проведение сканирования портов (например, Nmap сканером, который используется и вне тестирования на проникновение для управления активами и инвентаризацией и с другими целями), исследование сети и связей объектов и даже методы социальной инженерии, когда исследователь коммуницирует с сотрудниками организации.
В контексте тестирования на проникновение реконнесанс помогает лучше понять целевую среду и определить возможные точки входа для дальнейших этапов тестирования. Сравнить этот этап можно с тем, как доктор планирует лечение пациента в самом начале: изучает доступную историю болезни по записям (пассивное исследование) или общается с пациентом и его близкими с заполнением анкет и расчётами (активное исследование).
3. Анализ уязвимостей
Для поиска уязвимостей в приложениях или технических устройствах может применяться как автоматический сканер (как и в процессе управления уязвимостями), так и ручной анализ исходного кода.
4. Эксплуатация уязвимостей
На данном этапе тестер (тестировщик, пентестер) пытается эксплуатировать найденные уязвимости, чтобы продемонстрировать, как злоумышленник может получить несанкционированный доступ.
Если сравнивать текущий этап с врачебной практикой, как мы делали выше, то на нем доктор попытался бы вызвать очередной приступ эпилепсии (или другие симптомы), чтобы убедиться самостоятельно и показать пациенту опасность неконтролируемой болезни.
5. Отчёт
По завершении тестирования составляется отчёт, который включает в себя обнаруженные уязвимости, рекомендации по их устранению и общую оценку безопасности системы. Такой отчёт будет не только актом о выполненных работах, но и инструкциями для заказчика о том, как улучшить безопасность внутри периметра. Дополнительно можно запланировать повторное тестирование, для постоянного циклического развития безопасности в компании.
Описывая этапы пентеста, мы приводили аналогии с медицинским осмотром, но на самом деле в жизни нас окружает много похожих процессов:
· Периодическая учебная пожарная тревога для отработки эвакуации, безопасности и слаженности в случае нештатной ситуации;
· Игра в шахматы или домино, когда противники тестируют различные тактики и ищут «бреши» в защите друг друга;
· Тестирование материала на прочность, когда образцы сжимают, скручивают, растягивают и повреждают разными способами для определения таких условий, где применение будет максимально эффективным;
· Краш-тесты автомобилей для прогнозирования рисков при реальных авариях в безопасных условиях, когда вместо человека в автомобиле находится специальный манекен.
В любом случае, тестирование на проникновение само по себе похоже на процесс взлома, кражи данных и повторяет его структуру. Основное отличие – цель проведения подобного тестирования не включает фактическую кражу данных и нанесение повреждений.
Сам процесс тестирования, несомненно, является творческим и может проходит в самых разных форматах, например:
· Физическое тестирование, когда тестер находится в периметре физически, может подбрасывать «заражённые» флешки или пытаться взломать Wi-Fi в офисе;
· Тестирование на основе игровой модели, когда команды атакующих и защитников (red/blue) соревнуются друг с другом в условиях, максимально приближенных к реальным, чтобы обнаружить уязвимости и разработать стратегии обороны. Подобные мероприятия привлекают и профессионалов, и студентов, участвующих для собственного развития, например, Standoff в рамках PHdays, брифинги Black Hat или Def Con.
· Применение машинного обучения для создания персонализированных и эффективных атак с использованием социальной инженерии или автоматизации тестирования.
Пентест обычно проводится в одном из режимов (или комбинации):
· Белый ящик (White-Box), когда специалист получает все необходимые конфигурации, имеет доступ к исходному коду, документации, архитектурным диаграммам и другим данным. В таком формате уязвимости могут быть выявлены более точно, но в самом процессе подразумевается сотрудничество между тестером и другими сотрудниками.
· Черный ящик (Black-Box), когда доступ предоставляется только к внешним интерфейсам (например, веб-приложению или сети), которые доступны потенциальным злоумышленникам изначально. Такой формат реалистично моделирует действия злоумышленника, но требует больше времени и навыков от тестера.
Разобравшись с основными этапами тестирования на проникновение, давайте поймём, кому будет интересно и полезно проводить такие работы:
· ИТ-компании и стартапы, занимающиеся разработкой программного обеспечения, веб-приложений и других технологий, проводят тестирование на проникновение для обеспечения безопасности своих продуктов и защиты клиентов.
· Банки, страховые компании и другие финансовые учреждения обрабатывают большое количество чувствительной информации. Тестирование на проникновение помогает защитить их системы от кибератак и утечек данных. Похожая ситуация и для организаций в системе здравоохранения (медицинская информация является чрезвычайно конфиденциальной, а её утечка может привести к тяжелейшим последствиям).
· Поставщики облачных услуг несут ответственность за безопасность хранимых в облаке данных, так что для них проведение пентеста имеет некое среднее значение между примерами, которые мы описали выше.
· Крупные компании с обширными сетевыми инфраструктурами и множеством ИТ-ресурсов, а также государственные организации проводят тестирование на проникновение, чтобы защитить критическую инфраструктуру и государственные секреты.