Давно мы хотели высказать свое мнение о составе работ по тестированию на проникновение. Еще с момента этого поста: https://svk-ugra.ru/blog/testirovanie-na-proniknovenie-pravitelstva-hmao/
Присущая нашей команде самокритичность не позволяла определить минимально достаточный для статьи (поста) набор информации, а развивать тему до учебного пособия на сотни страниц также не хотелось, однако появилось несколько причин, которые подтолкнули нас наконец сформировать золотую середину и написать-таки свою версию набора тестов на проникновение.
Немного об этих причинах:
- Заявление некоторых «неродивых» коллег-лицензиатов о достаточности проведения (в рамках моделирования угроз и аттестационных испытаний) тестирования на проникновение с использованием только сканера безопасности в режимах «Пентест» и «Аудит/Инвентаризация».
- Мы проанализировали достаточно много источников из открытых ресурсов, статей (прежде всего рекламных), однако по составу (набору) тестов они довольно скромно раскрывают объём и направления работ, достаточно много статей по анализу программного кода (тестированию не инфраструктуры, а именно программного обеспечения) и другим узким направлениям тестирований на проникновение. В прошлом году также появился пример типового технического задания на пентест от Минцифры (спасибо им за единственный пока нормативно-методический документ по этому вопросу), но к нему также есть несколько вопросов, прежде всего по отсутствию блока внутреннего тестирования (раскроем ниже), а также отчетности.
- Столкнулись с тем, что под видом тестирования на проникновение «впаривают» всё что угодно (и не только сканирование сканерами безопасности), а Заказчикам зачастую не хватает компетенций и компетентности принять (а еще ранее сформулировать техзадание в свою пользу) работы. Так на днях зафиксировали случай использования нашего Техзадания на пентест одной из компаний (даже не лицензиат ФСТЭК РФ) и попытки сдать отчет, в котором не раскрыт результат работ, а приводится перечисления методов (аналогичное техзаданию) без возможности убедиться в выполнении собственно этих работ.
Каждый из команды хотел добавить больше по своему направлению (один по анализу программного кода, второй по методологии и инструментарию теста и т.п.) Остановились на таком варианте:
- очень коротко изложить методологию (этапность проведения) работ по тестированию на проникновение;
- подробно изложить состав (набор) исследований в рамках тестирования на проникновение для помощи читателям в формировании технических заданий на тестирование;
- прокомментировать (дать обоснование) чем принципиально отличается сканирование (в т.ч. режим пентеста) сканером уязвимостей и действенное полноценное тестирование на проникновение.
Поехали..
В части методологии. Вообще тестирование на проникновение – это метод оценки безопасности информационной системы путём моделирования атаки злоумышленника с целью получения доступа в корпоративную сеть с последующим исследованием возможности несанкционированным доступа к ключевым системам, получением аутентификационных и идентификационных данных привилегированных пользователей (администраторов).
Тестирование на проникновение является комплексной и многогранной проверкой безопасности ИТ-инфраструктуры и проводится с целями:
- выявления существующих уязвимых мест в элементах ИТ-ландшафта;
- практической демонстрации возможности использования уязвимостей (на примере наиболее критичных);
- формирования рекомендаций по устранению выявленных уязвимостей;
- моделирования угроз и проектирования системы ИБ объектов информатизации, а в нашем случае (что подробно будет показано ниже) для модернизации (совершенствования) и системы ИБ объектов и деятельности служб ИБ.
В общем виде тестирование на проникновение можно представить в виде:
Исследования проводятся с позиции потенциального атакующего (злоумышленника) и включает в себя активное использование уязвимостей системы, инструментарий, а также действительные методы и технологии, направленные на получение несанкционированного доступа в информационные системы Заказчика. Действия этого атакующего наиболее метко описаны в модели Cyber Kill Chain:
- «Разведка» — сбор сведений с использованием профайлов в социальных сетях, сайта Заказчика, анализ списков рассылки, использование поисковых систем и т.д.;
- «Вооружение» — подготовка инструментов, с помощью которых будут использоваться эксплойты применяемые на уязвимом ПО;
- «Доставка» — доставка вредоносного ПО с помощью эксплойта;
- «Заражение» — запуск вредоносного кода на целевых рабочих станциях сотрудников Заказчика;
- «Инсталляция» установка специального программного обеспечения на целевых рабочих станциях сотрудников Заказчика.
- «Получение управления» (Command and Control). Организация скрытого канала управления зараженной рабочей станцией, получение дополнительных модулей вредоносного кода, взаимодействие с C&C-серверами.
- «Выполнение действий». Имитация сбора и кражи конфиденциальных данных, шифрование файлов, перехват управления, подмена данных и другие действия, в зависимости от цели атаки.
Далее наши предложения по составу исследований в рамках тестирования на проникновение.
Пентест в исполнении нашей команды включает в себя следующие направления:
- общая информационная разведка;
- исследование веб-приложений;
- исследование внешнего периметра информационной инфраструктуры;
- исследование внутренней информационной инфраструктуры;
- исследование за счёт методик социальной инженерии;
- исследование защищённости беспроводных сетей;
- исследование исходного кода приложений.
Давайте рассмотрим каждое направление более детально:
1) Информационная разведка
Информационная разведка заключается в моделировании действий потенциального внешнего злоумышленника, не обладающего подробными сведениями о корпоративной сети и информационных системах Заказчика и не имеющего к ним доступа. На данном этапе Исполнителем производится сбор сведений о структуре и компонентах корпоративной сети Заказчика, таких как: доменные имена и зоны, сетевая адресация, компоненты сети, информация о версиях и типе программного обеспечения, доступного для взаимодействия из сети Интернет, о применяемых средствах защиты информации (для подготовки атак в обход этих СЗИ, например в обход WAF). Также производится сбор сведений о сотрудниках Заказчика и другой информации, представляющей интерес для потенциального злоумышленника. В качестве общедоступных источников используются веб-сайты в сети Интернет, форумы, новостные ленты, опубликованные интервью с сотрудниками Заказчика, резюме сотрудников Заказчика и т.д. Как правило этот этап мы заканчиваем Программой и методикой тестирования на проникновение, которая согласовывается с Заказчиком.
В программе и методиках прежде всего описывается сформированная по итогам разведки предварительная поверхность атаки (с правом расширения на последующих этапах конечно), методы и применяемые инструменты.
2) Исследование веб-приложений:
Для веб-приложений необходима идентификация следующих классов уязвимостей:
Сбор информации.
- Проведение поиска и разведки в поисковых системах
- Сканирование портов.
- Получение информации из метафайлов
- Поиск виртуальных хостов
- Поиск старых, резервных и не имеющих ссылок файлов
- Проверка комментариев на утечку информации
- Построение структуры приложения
- Определение типа фреймворка используемого приложением
Тестирование конфигурации и развертывания веб-приложения.
- Тестирование конфигурации платформы приложения
- Тестирование расширений приложения
- Поиск и тестирование административных функций приложения
- Тестирование методов HTTP
Проверка подлинности.
- Проверка учетных данных по умолчанию
- Проверка учетных данных из баз утечек
- Тестирование подбора логина и пароля, пин кодов и т.п.
- Тестирование процесса регистрации пользователей
- Тестирование обхода схемы аутентификации
- Тестирование функции запоминания пароля
- Тестирование кэша
- Тестирование политики слабых паролей
- Тестирование функции секретных вопросов и ответов
- Тестирование функции смены и сброса пароля
Тестирование авторизации.
- Обход пути каталога
- Обхода схемы авторизации
- Повышение привилегий
- Небезопасные прямые ссылки на объекты
- Тестирование сессии.
- Обхода схемы управления сеансами
- Тестирование Cookies
- Тестирование фиксации сессии
- Тестирование сессионных переменных
- Межсайтовые запросы (CSRF)
- Избыточность переменной сессии (Session puzzling)
Проверка входных данных.
- Манипуляция HTTP методами
- Ошибки настройки контроля доступа для методов протокола HTTP.
- HTTP Parameter Pollution
- SQL инъекции
- LDAP инъекции
- XML инъекции
- Инъекции кода
- Выполнение локальных файлов (LFI)
- Выполнение удаленных файлов (RFI)
- Инъекции команд операционной системы
- Инъекция заголовков
Обработка ошибок.
- Анализ кода ошибок
- Анализ следов стека
Тестирование бизнес-логики.
- Проверка данных бизнес-логики
- Проверка на целостность
- Загрузка неожиданных типов файлов
- Загрузка вредоносных типов файлов
- Состоянии гонки
Тестирование на стороне клиента.
- DOM XSS
- Отраженный межсайтовый скриптинг
- Хранимый межсайтовый скриптинг
- HTML инъекции
- Перенаправление клиента на фишинговый сайт (Open redirect)
- CSS инъекции
- Clickjacking
3) Исследование внешнего периметра информационной инфраструктуры:
Объектами тестирования на проникновение является корпоративная сеть по внутреннему периметру IP-адресов.
Нашими специалистами посредством выявления уязвимостей на сетевом периметре реализуется исследование возможности несанкционированного доступа к ключевым системам, получением аутентификационных и идентификационных данных привилегированных пользователей (администраторов). При тестировании внутреннего сетевого периметра, выбираются наиболее значимые сетевые ресурсы, которые потенциально могут заинтересовать злоумышленника.
Исследование корпоративной сети на внутреннем периметре включает в себя следующие направления:
Сбор информации
- Сканирование портов
- Сбор информации о версии и типе ПО
- Определение диапазонов ip адресов
- Идентификация хостов
- Сканирование портов
- Сбор информации о сервисах с открытыми портами
- SNMP сканирование
- Получение учетных записей с применением атаки типа mitm (человек по середине)
Поиск и эксплуатация уязвимостей
- Поиск уязвимостей сервисов и служб
- Перебор учетных записей с часто встречающимися паролями
- Эксплуатация найденных ранее уязвимостей
- Атаки на контроллер домена с целью хищения учетных записей
- Обход средств антивирусной защиты
- Обход средств обнаружения вторжений
- Обход средств межсетевого экрана
- Возможность получения несанкционированного доступа к серверам, сетевым хранилищам, базам данных, компьютерам пользователей с использованием уязвимостей программного обеспечения, служб, некорректных настроек и найденных учетных записей;
- Повышение прав доступа используя уязвимости в установленном ПО
- Возможность несанкционированного доступа к сетевому оборудованию со стандартной парой логин, пароль.
- Возможность несанкционированного доступа с помощью найденных уязвимостей к сетевому оборудованию.
Закрепление в системе
- Сбор информации о хосте
- Удаление средств защиты
- Поиск значимых файлов на хосте
- Получение хэшей паролей
- Извлечение паролей из реестра
- Очистка логов
При этом для веб-приложений в числе выделенных адресов реализуются тесты из блока «Исследование веб-приложений».
4) Исследование внутренней информационной инфраструктуры:
Объектами тестирования на проникновение является корпоративная сеть по внешнему периметру IP-адресов.
Нашими специалистами посредством выявления уязвимостей на сетевом периметре реализуется попытка получения доступа в корпоративную сеть Заказчика с последующим исследованием возможности несанкционированным доступа к ключевым системам, получением аутентификационных и идентификационных данных привилегированных пользователей (администраторов).
Исследование корпоративной сети на внешнем периметре включает в себя следующие направления:
Сбор информации
- Поиск и анализ информации из общедоступных источников;
- Поиск и анализ публично доступных документов и метаданных;
- Сканирование портов;
- Сбор информации о версии и типе ПО.
Поиск и эксплуатация уязвимостей
- Поиск уязвимостей сервисов и служб
- Перебор учетных записей с часто встречающимися паролями
- Эксплуатация найденных ранее уязвимостей для получения доступа к внутренней сети;
- Попытка повышения прав доступа на сервере имеющий доступ к внутренней сети.
Внутренняя разведка
- Определение диапазонов ip адресов
- Идентификация хостов
- Сканирование портов
- Сбор информации о сервисах с открытыми портами
- SNMP сканирование
- Получение учетных записей с применением атаки типа mitm (человек по середине)
- Возможность получения несанкционированного доступа к серверам, сетевым хранилищам, базам данных, компьютерам пользователей с использованием уязвимостей программного обеспечения, служб, некорректных настроек и найденных учетных записей;
- Повышение прав доступа используя уязвимости в установленном ПО
- Возможность несанкционированного доступа к сетевому оборудованию со стандартной парой логин, пароль;
- Возможность несанкционированного доступа с помощью найденных уязвимостей к сетевому оборудованию.
Закрепление в системе
- Сбор информации о хосте
- Удаление средств защиты
- Поиск значимых файлов на хосте
- Получение хэшей паролей
- Извлечение паролей из реестра
- Очистка логов
5) Исследование за счёт методик социальной инженерии:
Социальная инженерия – метод управления действиями человека без использования технических средств. Социальная инженерия может быть применима в любой обстановке, без предварительной подготовки, а люди, в отношении которых была направлена социальная инженерия, остаются в неведении настоящей ситуации, иногда и личностей.
Атаки, основанные на социальной инженерии полностью посвящены эксплуатации “человеческого фактора”, являющегося самым уязвимым звеном любой системы (системы безопасности — в том числе).
Основная цель исследования – получение несанкционированного доступа в информационные системы предприятия/контролируемую зону, осуществление проверки за исполнением физической безопасности (охраны) здания, офиса.
Нашими специалистами используются следующие методы социальной инженерии (Заказчику предоставляется несколько вариантов на выбор):
- Фишинг (англ. phishing, от fishing — рыбная ловля, выуживание) – мошенническая техника, направленная на получение конфиденциальной информации (чаще аутентификационные и идентификационные сведения).
В результате данной атаки происходит заражение рабочей станции сотрудника злонамеренным программным обеспечение и реализуется несанкционированный доступ в сеть предприятия. Техника включает в себя сбор предварительных сведений о сотруднике(ах).
Пример собираемых сведений: должность сотрудника, дата рождения, полное ФИО, номер телефона сотрудника, e-mail и т.д.
- Претекстинг (от англ. pretexting) — это действие, отработанное по заранее составленному сценарию («претексту»), и представляет собой вид «атаки», в которой злоумышленник представляется другим человеком и по определённому сценарию получает конфиденциальную информацию/несанкционированный доступ.
В результате данной атаки сотрудник исследуемой организации совершает необходимые действия или передаёт определённые сведения. Данный вид исследования реализуется по телефону. Техника включает в себя сбор предварительных сведений о сотруднике(ах).
Пример собираемых сведений: должность сотрудника, дата рождения, полное ФИО, номер телефона сотрудника, e-mail и т.д.
- Троянский конь – использование специального программного обеспечения с функционалом удаленного доступа и применения скрывающих методов, затрудняющих его обнаружение средствами антивирусной защиты. Исследователи направляют письмо посредством e-mail, содержащие во вложении «важный документ», «важное обновление программного обеспечения» или даже свежий компромат на сотрудника, а также скрытое СПО, реализующее возможность удаленного доступа.
Метод основан на использовании специального программного обеспечения (далее — СПО) с функционалом удаленного доступа и применения скрывающих методов, затрудняющих его обнаружение средствами антивирусной защиты.
- Дорожное яблоко – метод исследования представляет собой использование и последующие применение технологий сокрытия демаскирующих признаков от обнаружения средствами защиты информации специального программного обеспечения удаленного доступа. Применяемый метод доставки — использование в физических носителей информации. Исследователи осуществляют распространение флэш-накопителей с записанным специальным образом программным обеспечением удаленного доступа в местах, где носитель может быть легко найден (лифт, парковка и т.д.) сотрудниками организации. Носитель подделывается под официальный и сопровождается подписью (сопроводительным письмом), с целью вызвать любопытство и последующее открытие на рабочем месте.
- Маскарад – метод исследования представляет собой получение доступа в контролируемую зону организации и дальнейшего получения доступа в ЛВС с АРМ пользователей, подключения к коммутационному оборудованию, путем выдачи себя за специалистов легитимной компании.
Метод определяет фактическое обеспечение доступа в контролируемую зону.
6) Исследование защищённости беспроводных сетей
Попытки несанкционированного подключения к беспроводной сети и дальнейшие попытки доступа в сетевую инфраструктуру учреждения с использованием беспроводной сети в качестве точки входа.
Вот часть методов, используемых нашими специалистами:
- применение уязвимости WPS;
- взлом WPA/WPA2, перехват рукопожатий с последующим подбором пароля;
- атака с помощью FakeAP (замена истинной точки доступа фальшивой).
7) Исследование исходного кода приложений, входящих в состав исследуемой инфрастуктуры
Анализ исходного кода (например: SAST, DAST) – это вид работ по контролю защищенности в части инструментального исследования программ, основанный на анализе исходного кода программы с использованием специализированных инструментальных средств.
SAST (статический анализ исходного кода) – анализ с использованием специализированных инструментальных средств (статических анализаторов) в режиме, не предусматривающем реального выполнения кода. Он может быть использован для поиска программных ошибок, обнаружения несоответствий стандартам кодирования, поиска уязвимостей безопасности и других проблем. Данный метод позволяет улучшить качество программного обеспечения и снизить риски для продукта (как репутационные, так и финансовые). Сегодня есть анализаторы кода, позволяющие провести статический анализ без наличия исходного кода, достаточно скомпилированного exe-файла.
DAST (динамический анализ исходного кода) –анализ с использованием специализированных инструментальных средств (динамических анализаторов), производящийся при помощи выполнения программ на реальном или виртуальном процессоре (в отличие от статического анализа). Данный метод используется для поиска ошибок и проблем в программном коде, а также для поиска проблем с производительностью и безопасностью. Динамический анализатор кода может проверять программу на предмет некорректного использования памяти, проверки наличия буферных переполнений, ошибки парсинга и другие проблемы.
Вся описанная выше работа заканчивается подготовкой отчетной документации. Требования к отчёту о результатах тестирования на проникновения заслуживают отдельного внимания.
Прежде всего отчёт о тестировании на проникновение содержит подробное и понятное описание найденных уязвимостей/недостатков с примерами эксплуатации. Описание действий потенциального злоумышленника должно содержать доказательства, иллюстрирующие факт получения несанкционированного доступа, в виде снимков экранов или листингов. В отчете подробно отображаются результаты эксплуатации уязвимостей с указанием причин (следствий), сделавших такую эксплуатацию возможной. Отдельно отражаются уязвимости, эксплуатация которых не была согласована Заказчиком.
Также отчет содержит следующие рекомендации:
- по нейтрализации уязвимостей (снижению возможного ущерба от их использования злоумышленниками);
- по изменению конфигурации и настроек компонентов АС, используемых защитных механизмов;
- по установке необходимых обновлений (patches, hot-fixes) установленного программного обеспечения;
- по изменению политик безопасности на серверах и рабочих станциях, в настройках межсетевых экранов;
- по внесению изменений в модели угроз и модели нарушителя (при необходимости). Заказчик должен предоставить типовые или частные модели угроз по запросу;
В отчёте также отображается оценка общего состояния инфраструктуры и её воздействие на критерии безопасности информации, а также детальные рекомендации по совершенствованию имеющейся системы защиты информации, в том числе представляются предложения по разработке новых организационно-распорядительных документов и внедрению передовых технических решений.
Нам кажется очень действенной описанная ниже аналитика, хотя не каждый Заказчик идет на подобную работу (работа связана с передачей и формированием достаточно закрытой информации, а выводы по подобной аналитике, как правило, могут вызвать в том числе и административные решения). Тем не менее на наш взгляд это позволяет принять принципиально важные решения по организации деятельности служб ИБ.
Речь идет о аналитической работе в части деятельности подразделений ИБ (Исполнитель анализирует и характеризует реакцию служб ИБ Заказчика на действия потенциального злоумышленника) и отработке средств защиты информации. Исполнитель анализирует предоставленную заказчиком информацию с журналов средств защиты информации для подготовки выводов о работе средств защиты информации в ходе тестирования, о реагировании средств защиты информации заказчика на методы тестирования и попытки эксплуатации уязвимостей. Исполнитель предоставляет информацию об ошибках и недостатках в настройках и эксплуатации как отдельных средств защиты информации, так и системы защиты информации заказчика в целом, а также предложения по настройке. При этом Исполнитель детально обосновывает (скриншоты, видео и т.п.) выводы о реагировании подсистем защиты информации на моделируемые Исполнителем атаки.
Отвечая на последний из поставленных в начале вопросов можно смело утверждать (учитывая все описанное выше), что современные сканеры безопасности (анализа уязвимостей) не то чтобы не покрывают весь спектр работ по осуществлению работ по тестированию на проникновение, предложенной выше, но и элементарно не позволяют произвести ёмкое исследование поверхности атаки, не говоря уже о аналитической работе в составе предлагаемого нами пентеста.
Исчерпывающий объем исследований в функционале большинства актуальных сканеров безопасности под режимом «Пентест» (рассматриваем сочетание режимов «Пентест» и «Аудит/Инвентаризация») включает в себя:
- сканирование хостов;
- сканирование открытых портов;
- идентификация сервисов и служб, выявление уязвимостей используемых версий и их эксплуатация без авторизации на исследуемом хосте;
- идентификация сервисов и служб, выявление уязвимостей используемых версий и их эксплуатация с авторизацией на исследуемом хосте.
Таким образом сканеры являются всего лишь одним из инструментов в руках пентестера, позволяя снизить временные затраты (а значит и финансовые) на проведение Пентеста. В то время как тестирование на проникновение является комплексной и многогранной проверкой безопасности ИТ-инфраструктуры.
Если накладывать функционал сканеров на состав работ по пентесту, приведенный в начале статьи, то его можно представить в виде (зачёркнутый текст – исследования, которые не покрывается сканером безопасности):