9 проверенных методов тестирования на проникновение на 2021 год: защитите свой бизнес
В современном корпоративном мире безопасность стала наиболее актуальной проблемой. Ежедневно мы слышим о том, как злоумышленники взламывают компьютерные системы и крадут критически важную информацию.
В 2019 году в Соединенных Штатах было зафиксировано 1473 случая утечки данных, в результате чего было раскрыто более 164 миллионов конфиденциальных записей. В первой половине 2020 года количество утечек данных составило 540. — Отчет Statista
Для выявления слабых мест и уязвимостей во многих крупных компаниях проводят авторизованную имитацию кибератаки на свои собственные системы. Это называется тестированием на проникновение (Pen Test). Основная цель — обнаружить уязвимости безопасности до того, как это сделают хакеры, и устранить их как можно скорее.
Более конкретно, тестирование на проникновение предполагает моделирование реальных сценариев атак для поиска и эксплуатации пробелов в безопасности (безопасным способом), которые в конечном итоге могут привести к краже информации, компрометации учетных данных или другим вредным последствиям для бизнеса.
Тестирование может проводиться внутренними силами с помощью инструментов пентестинга или аутсорсироваться провайдеру услуг тестирования на проникновение. Процесс обычно начинается с перечисления целевой сети специалистом по безопасности для обнаружения уязвимых устройств или учетных записей. Это означает сканирование каждого устройства в сети на предмет открытых портов с работающими на них сервисами.
Уровень проникновения зависит от того, какой вид операций тестировщик безопасности хочет исследовать в целевой системе. Поэтому тестировщик должен хорошо знать наиболее релевантные виды тестов на проникновение.
Тесты на проникновение можно классифицировать по методам их проведения, а также по целевым активам и компонентам. В этой обзорной статье мы рассмотрели различные типы тестирования на проникновение, которые разработаны для интенсивного и глубокого анализа.
Тестирование на проникновение по используемым методам
1. Тестирование «черного ящика» (Black Box Testing)
- Тест-кейсы можно разработать немедленно
- Позволяет обнаружить определенные виды дефектов
При тестировании «черного ящика» тестировщик не имеет доступа к приложению клиента, конфигурации сети или какой-либо внутренней информации. Он/она проводит всю разведку для извлечения необходимых данных.
Этот тип тестирования определяет слабости системы, которые можно эксплуатировать извне сети. Выявление таких слабостей опирается на динамическую инспекцию работающих в данный момент программ и систем в целевой сети.
Тестировщик должен быть знаком с программным обеспечением для автоматизированного сканирования и различными техниками ручного тестирования на проникновение. Поскольку нет предварительных знаний о конфигурации системы или исходном коде приложения, тестировщик «черного ящика» должен уметь строить свою карту целевой сети на основе личных наблюдений.
Ограниченные знания мешают тестировщику найти все уязвимости в системе. Это главный недостаток данного типа тестирования. Если тестировщики не могут прорвать все периметры, внутренние уязвимости остаются нераскрытыми.
Однако этот метод может выявить определенные виды дефектов, такие как ошибки конфигурации сервера и ошибки валидации входных/выходных данных. Для успешного (эффективного обнаружения и устранения большего числа уязвимостей) тестирования «черного ящика» методологии должны сочетаться с другими инструментами тестирования.
На рынке существует множество инструментов для проведения тестирования на проникновение «черного ящика». Например, Wapiti анализирует веб-приложения на потенциальные уязвимости путем внедрения временных данных.
2. Тестирование «белого ящика» (White Box Testing)
- Более всесторонний подход
- Позволяет оптимизировать код и обнаруживать скрытые проблемы безопасности
Как следует из названия, тестирование «белого ящика» является противоположностью тестированию «черного ящика». Тестировщик имеет полный доступ к архитектурной документации, исходному коду и другой системной информации.
Тестировщики просеивают большой объем доступных данных для обнаружения потенциальных слабых точек. Они могут использовать как статические, так и динамические анализаторы кода и отладчики для этого вида тестирования.
Поскольку тестировщики обладают полными знаниями о системе, требуется больше времени, чтобы решить, какие модули тестировать в первую очередь и какое конкретное программное обеспечение использовать для проведения теста.
JUnit, PyUnit, Selenium — некоторые из самых популярных инструментов тестирования «белого ящика» с открытым исходным кодом. Selenium, например, используется для проверки веб-приложений в различных браузерах и на разных платформах.
3. Тестирование «серого ящика» (Gray Box Testing)
- Выявляет более значимые уязвимости при меньших затратах и усилиях
- Тестирование выполняется с точки зрения пользователя, а не разработчика
Это комбинация тестирования «черного» и «белого» ящиков. Тестировщик «серого ящика» обладает частичными знаниями о внутренностях системы, таких как база данных и проектная документация. С этими ограниченными знаниями он/она может создавать более качественные тестовые данные и тест-кейсы при подготовке плана тестирования.
Этот тип тестирования обеспечивает более эффективную и сфокусированную оценку безопасности системы по сравнению с оценкой «черного ящика». Он может выявить дефекты, возникающие из-за неправильного использования приложений или некорректной структуры кода. Более конкретно, он раскрывает контекстно-зависимые ошибки, фокусируясь на всех слоях сложных систем.
Тестирование «серого ящика» лучше подходит для функционального тестирования, веб-приложений, веб-сервисов, оценки безопасности и GUI. Burp Suite — один из популярных инструментов тестирования «серого ящика», который эксплуатирует уязвимости приложений, атакуя потенциально небезопасные точки.
Различия между этими тремя техниками тестирования
| Black Box (Черный ящик) | Gray Box (Серый ящик) | White Box (Белый ящик) |
|---|---|---|
| Знание внутренней работы системы не требуется | Требуются частичные знания внутренней работы системы | Требуются полные знания внутренней работы системы |
| Очень трудно обнаружить скрытые ошибки | Трудно обнаружить скрытые ошибки | Просто обнаружить скрытые ошибки |
| Также известно как тестирование закрытого ящика или управляемое данными тестирование | Также известно как полупрозрачное тестирование | Также известно как тестирование прозрачного ящика, структурное тестирование или тестирование на основе кода |
| Наименее затратное по времени | Частично затратное по времени | Наиболее всестороннее и затратное по времени |
| Лучше всего для поиска ошибок валидации ввода/вывода | Лучше всего подходит для тестирования областей данных и проектирования системы | Лучше всего подходит для тестирования алгоритмов, структуры кода и внутренних границ |
| Тесты проводят конечные пользователи, разработчики и тестировщики | Тесты выполняют независимые тестировщики и разработчики | Тесты выполняют тестировщики и разработчики |
Тестирование на проникновение по целевым компонентам
1. Тестирование сетевых сервисов (Network Services Testing)
- Предотвращает утечки данных и взломы сети
- Обеспечивает безопасность сети и системы
Процесс тестирования на проникновение сети включает обнаружение уязвимостей безопасности в приложениях и системах с использованием различных вредоносных методов для проверки безопасности сети.
Обычно тестировщик выявляет эксплуатируемые сети, хосты, системы и устройства (такие как коммутаторы и маршрутизаторы) для раскрытия слабостей. Поскольку сеть имеет как внешние, так и внутренние точки доступа, обязательно проводить тесты как удаленно извне, так и локально на площадке клиента.
Это помогает тестировщикам понять уровень риска, с которым сталкивается организация, и как устранить и исправить уязвимости безопасности. В зависимости от риска они могут нацеливать тесты на разные области сети. Например, они могут проводить:
- Stateful-анализ (анализ с сохранением состояния)
- Тестирование конфигурации межсетевого экрана
- Тестирование обхода межсетевого экрана
- DNS-атаки
Наиболее часто исследуемые протоколы в таких тестах включают:
- Simple Mail Transfer Protocol (SMTP)
- File Transfer Protocol (FTP)
- Secure Shell (SSH)
- MySQL и SQL Server
В зависимости от размера и сложности системы, тест на проникновение сети может занять от одной до четырех недель. Тестировщики могут предоставить детальную оценку только после определения объема проекта.
2. Тестирование веб-приложений на проникновение (Web Application Pen Testing)
Шаги выполнения теста на проникновение веб-приложения
- Выявляет уязвимости как в проектировании, так и в конфигурации
- Локализует злоумышленников и блокирует их
Поскольку многие веб-приложения хранят конфиденциальную информацию, необходимо поддерживать их безопасность постоянно. Один из способов — включить тестирование веб-приложений на проникновение как часть цикла жизни разработки программного обеспечения (SDLC).
Тесты на проникновение позволяют легко определить уязвимости всего веб-приложения и его компонентов, включая базу данных, внутреннюю сеть и исходный код. Это помогает разработчикам выявлять и приоритизировать слабости и ошибки, а также разрабатывать способы их устранения.
Этот тип тестирования включает сбор данных о целевом веб-приложении, картирование хостовой сети и изучение всех возможных точек внедрения или атак на подделку. Основные причины для проведения тестирования веб-приложений на проникновение:
- Обнаружение неизвестных уязвимостей
- Проверка публично доступных компонентов, таких как маршрутизаторы и межсетевые экраны
- Поиск наиболее уязвимого маршрута для возможной атаки
- Поиск лазеек, которые могут привести к краже информации
- Проверка эффективности существующих политик безопасности
На рынке доступно множество инструментов для проведения (как ручного, так и автоматизированного) тестирования веб-приложений на проникновение. Vega, Veracode и Zap — некоторые из наиболее распространенных для быстрых тестов.
3. Беспроводное тестирование на проникновение (Wireless Pen Testing)
- Определяет реальную позицию безопасности беспроводных сетей
- Устраняет уязвимости и политики/процедуры безопасности
Беспроводное тестирование на проникновение включает обнаружение и анализ соединений между всеми устройствами, подключенными к бизнес-WiFi. Сюда входят ноутбуки, смартфоны, планшеты, принтеры и другие устройства Интернета вещей (IoT).
Различные беспроводные протоколы и точки беспроводного доступа тестируются для обнаружения пробелов в безопасности. Обычно эти тесты проводятся на площадке клиента, потому что тестировщику нужно находиться в зоне действия беспроводных сигналов для доступа к устройству.
В большинстве случаев уязвимости обнаруживаются в точках доступа WiFi из-за отсутствия MAC-фильтрации и нехватки средств контроля доступа к сети (Network Access Controls). Для устранения этих проблем до их реального возникновения критически важно протестировать эффективность позиции безопасности и выявить непреднамеренные слабости.
Также важно помнить, что WiFi — не единственная беспроводная технология, которую могут эксплуатировать злоумышленники. Существует несколько Bluetooth-устройств, устройств Bluetooth Low Energy и других менее популярных технологий, таких как Z-wave и DECT (беспроводные телефоны), встречающихся в публичных местах.
4. Клиентское тестирование на проникновение (Client-Side Penetration Testing)
- Обнаруживает ошибки конфигурации безопасности в клиентском ПО
- Позволяет правильно контролировать входящий и исходящий сетевой трафик
Это внутренний тест на проникновение, при котором тестировщики эксплуатируют уязвимости в клиентских прикладных программах, таких как веб-браузеры, Adobe Acrobat, почтовые клиенты, Macromedia Flash и др.
Хотя нет строгого правила о проведении таких тестов через определенные интервалы, компании должны выполнять тесты на проникновение при добавлении новой IT-инфраструктуры или клиентских приложений, а также при изменении существующей инфраструктуры.
Большинство клиентских уязвимостей возникают из-за непатченного ПО, установленного на ноутбуках или настольных компьютерах. Некоторые злоумышленники даже перехватывают процесс обновления, отправляя вредоносный код вместе с оригинальным обновлением.
USB-устройства также могут быть заражены вредоносными файлами или исполняемым кодом. Эти файлы автоматически выполняются, как только жертва подключает USB к своей машине. Межсайтовый скриптинг (XSS), перехват форм, кликджекинг, HTML-инъекции и открытое перенаправление — некоторые из самых распространенных клиентских атак безопасности.
Именно поэтому важно тестировать восприимчивость сотрудников и способность сетей распознавать и реагировать на клиентские атаки.
5. Внешнее тестирование на проникновение (External Pen Testing)
- Оценка безопасности периметра систем компании
- Включает оценку как на уровне приложений, так и на уровне сети
Внешнее тестирование на проникновение обычно проводится с точки зрения злоумышленника без предварительного доступа к целевой системе или сети. Это отличается от внутреннего тестирования, при котором злоумышленник уже имеет опорную точку на скомпрометированной машине.
При внешнем тестировании тестировщик пытается получить доступ к внутренней сети, используя уязвимости, найденные на внешних активах. Он/она проводит разведку объектов в области действия, собирая данные обо всех активах в области действия.
Эти данные могут включать открытые порты, уязвимости или информацию о сотрудниках для атак на пароли. Как только периметр прорван, цель внешнего теста на проникновение достигнута, и тестировщик переходит к внутреннему тестированию.
Читайте также: 30 полезных инструментов отслеживания ошибок для разработчиков
6. Социальная инженерия (Social Engineering)
- Обманывает не подозревающих сотрудников, заставляя компрометировать безопасность компании
- Использует человеческую психологию для получения конфиденциальных данных
Термин «социальная инженерия» используется для широкого спектра вредоносных действий, выполняемых через человеческое взаимодействие. Поскольку она опирается на человеческую ошибку (вместо слабостей в приложениях или сетях), она менее предсказуема и сложнее для обнаружения, чем вредоносные программы.
Эти виды тестов включают попытки получить конфиденциальные данные, обманывая сотрудников компании, чтобы те раскрыли чувствительную информацию. Это может быть достигнуто либо через удаленное тестирование, либо через физическое.
Читайте также: 15 лучших инструментов генерации тестовых данных
Удаленное тестирование включает отправку фишинговых писем сотрудникам или бомбардировку их устройств ложными тревогами или вымышленными угрозами. В противовес, физическое тестирование включает проникновение вслед за сотрудником (tailgating), олицетворение, поиск в мусоре (dumpster diving), физические угрозы и т.д.
Промышленные технологии
- 14 распространенных типов компьютерных вирусов для защиты систем (обновление 2021)
- 5 моделей центров обработки данных: дизайн, кейсы и примеры
- Восемь ключевых моделей облачных вычислений 2021 года
- 9 проверенных методов тестирования на проникновение на 2021 год: защитите свой бизнес
- Антиалиасинг: 6 типов и методов сглаживания цифровых изображений
- 5 основных типов сварочных стыков: конструкция, качество и влияние на стоимость
- 15 основных типов фрезерных станков для точной металлообработки
- 10 основных типов литейных моделей для оптимального металлопроизводства
- Современные стратегии обслуживания для производственного успеха
- 5 обязательных испытаний строительной техники для надежной работы в любых условиях