Руслан Рахметов, Security Vision
В любых объектах в нашей жизни есть области, в которых этот объект становится уязвимым. Устаревшие приложения, ненадёжные сети и слабые пароли также как бреши в стенах крепости, старые водопроводные трубы в квартирах и слишком простые коды на сейфах являются опасными. Говоря об информационных системах, мы будем говорить о специфичных для них уязвимостях, различных видах сканеров и подходах для поиска слабых мест.
Говоря о сканерах уязвимостей, инструментах для анализа сетей, приложений, операционных систем, баз данных и других компонентов ИТ-инфраструктуры, мы можем выделить несколько групп сканеров. Мы уже рассказывали про сканеры исходного кода (статические, динамические и комбинированные), которые с одной стороны похожи на классические сканеры уязвимостей, но нацелены на процесс разработки приложений, а в текущем обзоре рассмотрим другие группы и отдельно методы сканирования.
В зависимости от положения сканера и объектов, которые он будет анализировать, можно выделить сетевые, облачные и хостовые сканеры.
Как сантехник ищет утечки в трубах, сетевой сканер выявляет слабые места в соединениях устройств друг с другом. Благодаря централизованному движку такой сканер позволяет охватить инфраструктуру максимально в быстром режиме, он будет работать как охранник, проверяющий всю территорию вокруг дома на наличие подозрительных зон. Такие сканеры применяются для анализа всей корпоративной сети (серверов, маршрутизаторов, принтеров, IoT-устройств), выявления открытых портов и служб, проверки настроек брандмауэров и VPN. Применяя инструменты сетевого сканирования, можно мониторить сегментацию сети и обнаружить устаревшие протоколы (например, шифрование TLS 1.0). В крупных сетях инструмент может нагружать каналы связи или просто работать долго, но при грамотном расписании и создании задач на сканирование в конкретные «окна» по заданным подсетям – все будет работать более плавно.
Облачные сканеры фокусируются на анализе облачных сервисов (AWS, Azure, GCP и др.) на предмет ошибок, управление доступом и соответствия стандартам (например, SOC2, ISO 27001). Это похоже на проверку дома тепловизором или обход склада с различными зонами и проверки доступа персонала. Благодаря специализации такие типы сканеров работают на обнаружение конфигурационных ошибок, специфичных для облака, и часто предлагают дополнительные опции для защиты от утечек данных.
Хостовые сканеры нацелены на анализ операционных систем и установленных приложений, устаревших компонентов и неправильно настроенных сервисов. Работают они как мастер по ремонту ПК, которому нужно его получить, разобрать, а затем проверить каждый компонент на работоспособность. Как поквартирный обход для проверки газовых труб или проведение замеров на квартире перед началом ремонта, такой тип сканирования требует непосредственного доступа к исследуемому объекту. Но это позволяет такому виду сканеров проводить самый глубокий анализ конкретного устройства и его конфигураций, подходит для серверов и рабочих станций.
Сканеры разделяются не только по их расположению, но, например, по типам данных/систем, на которые они нацелены. Например, для тестирования веб-приложений используются сканеры, которые проверяют функционал и безопасность интерфейсов. Если представить такой интерфейс как набор кнопок, например, на кофемашине, то сканер будет нажимать все кнопки, чтобы убедиться, что на пользователя не польётся кипяток. Поскольку каждое веб-приложение – это целый набор интерфейсов, применение специализированных сканеров может охватывать целых спектр уязвимостей: XSS и SQL-инъекции, использование небезопасных cookie и токенов, защищённость API. Сканер не только проводит анализ приложений, но может имитировать хакерские атаки, искать уязвимости авторизации и аутентификации или в целом обеспечить соблюдение стандартов безопасности OWASP.
Другой тип сканеров сосредотачивается на обратной стороне приложения – базе данных. Такой тип сканеров обеспечивает проверку конфигураций БД, выявление незащищённых SQL-запросов, анализ хранимых данных на соответствие политикам конфиденциальности и стандартам (например, 152-ФЗ и GDPR), проверку ролей и разрешений, а также анализ шифрования резервных копий. Как инвентаризатор на складе проверяет хранилище на отсутствие просроченных или неправильно размещённых продуктов, сканер ищет уязвимости в структуре базы данных.
Отдельно можно выделить сканеры мобильных приложений, которые проверяют, можно ли легко «обмануть» мобильное приложение и надёжна ли сигнализация при покупке автомобиля. Анализ мобильных приложений (iOS, Android) включает проверки на распространённые уязвимости (например, утечка данных, слабое шифрование), проблемы в API, мобильных библиотеках и SDK, что актуально перед публикацией в App Store, Google Play, RuStore или других маркетах. Поддерживаются большинство популярных языков разработки (Java, Kotlin, Swift) и анализ как исходного кода, так и готового APK/IPA с интеграцией в DevSecOps.
Все эти инструменты используют разные методы поиска уязвимостей, поэтому сосредоточимся на них по отдельности:
1) Аутентифицированный метод проводит сканирование с предоставлением учётных данных для глубокой проверки внутреннего состояния системы, её настроек и зависимостей. Как механик, который тестирует автомобиль, находясь в салоне, этот метод проверяет систему, имея доступ к её внутренним функциям. Применяется для оценки внутренней безопасности.
2) Неаутентифицированный сканинг, наоборот, исследует систему снаружи, как это сделал бы злоумышленник, не имея доступа к учётным записям. Применяется для проверки внешней защиты и периметра и работает как наблюдение за домом и его жильцами через окна.
3) Сравнение с базой данных известных уязвимостей (Signature-based Scanning) ищет известные уязвимости, сопоставляя проверяемую систему с базой данных (например, CVE). Используется в антивирусах, системах IDS/IPS и сканерах уязвимости. Как врач узнаёт болезнь по её типичным симптомам, этот метод определяет проблемы по известным характеристикам.
4) Анализ конфигураций (Configuration Analysis или Security Profile Compliance) проверяет соответствие настроек системы рекомендуемым стандартам и анализирует права доступа, настройки брандмауэра, версионность ПО и шифрование. Используется в аудитах безопасности и работает как повар, который убеждается, что ножи острые, а печь правильно настроена для готовки.
5) Эвристический анализ (Heuristic Analysis) прогнозирует возможные уязвимости на основе анализа кода или поведения системы (например, обнаруживает потенциальные ошибки в логике приложения или подозрительные паттерны в запросах). Часто применяется в защите от новых, ранее неизвестных угроз и похож в работе на детектор лжи, который выявляет нехарактерные реакции, поведенческий анализ выявляет неестественные действия системы.
6) Фаззинг или фуззинг (Fuzz Testing) отправляет случайные или специально созданные данные в приложение, чтобы вызвать сбои или ошибки. Как ребёнок нажимает все кнопки на пульте, фаззинг случайно подаёт данные в программу, чтобы вызвать сбой и применяется для обеспечения соответствия систем актуальному состоянию безопасности. Используется для тестирования сетевых протоколов, API и драйверов.
7) Анализ метрик и логов (Log and Behavioral Analysis) обрабатывает журналы событий и поведенческие метрики, чтобы выявить подозрительные активности, такие как повторные попытки входа или резкое увеличение трафика. Анализ журналов событий – это частный случай анализа логов, ориентированный на изучение истории событий системы. Обнаруживает следы взлома или попыток эксплуатации. Такой метод можно сравнить с работой бухгалтера, которому нужно сверить чеки с реальными тратами (сканер анализирует логи для поиска несоответствий).
8) Имитация атак (Penetration Testing, пентест) – это ручное или автоматизированное тестирование, моделирующее действия реального злоумышленника. Оценивает защиту системы с точки зрения атакующего, как мастер, который выезжает для диагностики и починки сложного оборудования, пентестеры вручную проверяют систему на слабые места. Этот метод используется для комплексной проверки безопасности и часто требует творческого подхода. Используется для проверки всех возможных точек входа.
Методы поиска уязвимостей используются в комбинациях (как, например, модули VS и SPC для комплексного анализа) и могут быть расширены дополнительными методиками вроде анализа патчей (проверки на наличие установленных и отсутствующих обновлений) и тестированием под нагрузкой (которое имитирует экстремальные условия, высокую нагрузку и большое количество запросов для проверки устойчивости системы), что позволяет выявлять DoS-уязвимости. Именно в комбинировании методов заключается фактор, влияющий на приобретение систем поиска и анализа уязвимостей. Такие процессы интегрируются в процесс разработки или применяются для готовых сторонних решений, чтобы повысить общую безопасность и защитить инфраструктуру от возможных вторжений.