Те, кто знаком с военным делом, знают о том, что военные разных стран каждый год проводят учения, чтобы проверить наступательную и оборонительную тактику и оперативные возможности своих войск. В Соединенных Штатах американских военных обычно называют «синей командой», а воображаемого противника — «красной командой «, этот метод военных учений был введен в 1990-х годах для проверки реального наступательного и оборонительного процесса кибербезопасности и информационной инфраструктуры вооруженных сил США. Группа профессионально подготовленных экспертов по безопасности выступала в качестве «красной» стороны и проводила атаки безопасности на «синюю» сторону защитника, чтобы проверить эффективность защиты целевой системы и методы реагирования на чрезвычайные ситуации в реальных условиях. Этот метод тестирования и оценки безопасности с помощью реальных атак известен как тестирование на проникновение (пентест).
В конце 1990-х годов он постепенно начал распространяться от военных и разведывательных служб к сообществу безопасности, и некоторые компании с высокими требованиями к безопасности начали применять этот подход для тестирования своих сетей и систем.
Как проводится пентест?
- Сбор информации
Сбор и анализ информации является предпосылкой/предшественником/основой всех атак вторжения. С помощью сбора и анализа информации из сети можно разработать план симуляции хакерской атаки так, чтобы увеличить процент успеха вторжения и уменьшить вероятность разоблачения или обнаружения. Методы сбора информации включают сканирование сети хоста, идентификацию типа операции, идентификацию приложений, сканирование учетных записей, идентификацию конфигурации и т.д.
- Сканирование портов
Это основа всего тестирования на проникновение, которое проводится путем сканирования TCP/UDP портов целевого адреса для определения количества и типа открытых сервисов. С помощью сканирования портов можно определить основную информацию о системе, а в сочетании с опытом пентестера можно выявить еще и возможное существование и использование слабых мест в системе безопасности, обеспечивая основу для более глубокого проникновения.
- Эскалация
Посредством сбора и анализа информации можно осуществить две стратегии. Первым вариантом является то, что испытатель может непосредственно контролировать целевую систему и затем исследовать распределение уязвимостей и причин в ней для формирования окончательного отчета о тестировании. Когда целевая система не имеет удаленных основных уязвимостей, но может получить удаленные общие привилегии, тогда тестировщик может собрать дополнительную информацию о целевой системе через эти общие привилегии.
Вторым вариантом является то, что целевая система не имеет удаленных критических уязвимостей, но ей может быть предоставлен удаленный общий доступ, что позволяет тестировщику собрать дополнительную информацию о целевой системе. Следующий шаг 1 сделать все возможное для получения местных разрешений, сбора местных данных и информации и поиска возможностей для повышения местных разрешений. Результаты этого безостановочного сбора и анализа информации и эскалации привилегий станут итогом всего процесса тестирования на проникновение для данного проекта.
- Испытание на переполнение
Когда пентестеры не могут напрямую войти в систему с использованием пароля учетной записи, то они используют метод переполнения системы, чтобы напрямую получить контроль над ней. Этот метод иногда приводит к сбою или перезагрузке системы, но не приводит к потере системных данных, и, если произошел сбой, просто перезагрузите систему и откройте исходную службу.
- Пентестирование веб-приложений
Пентестирование веб-сценариев и приложений проводится специально для веб-серверов и серверов баз данных. Согласно последним статистическим данным, слабые места в безопасности сценариев являются одним из наиболее серьезных недостатков безопасности современных веб-систем, особенно тех, которые имеют динамический контент. Использование слабых мест, связанных со сценариями, может быть применено для получения доступа к другим каталогам системы или для получения контроля над системой. Поэтому для веб-систем и систем баз данных с динамическими страницами тестирование веб-сценариев и приложений будет неотъемлемой частью процесса.
- Атаки с использованием SQL-инъекций
SQL-инъекции обычно используются на веб-серверах с базами данных SQL. Выполняя определенные специальные SQL-запросы, злоумышленник может получить доступ, подделать и контролировать содержимое базы данных веб-сервера. Этот тип уязвимости является одним из наиболее распространенных способов компрометации, используемых злоумышленниками.
- Обнаружение скрытых полей на страницах
Веб-приложения часто используют скрытые поля для хранения информации. Многие веб-приложения электронной коммерции используют скрытые поля для хранения конфиденциального содержимого, такого как цены на продукцию, имена пользователей, пароли и т.д. Это очень опасная уязвимость, так как злоумышленники могут манипулировать содержимым скрытых полей для осуществления вредоносных операций и кражи информации.
- Межсайтовые атаки
Злоумышленник может использовать сайт для атаки на конечного пользователя, который заходит на него. С помощью сайта преступник получает доступ к паролю пользователя или использует дублирование сайта для получения контроля над клиентом.
- Эксплуатация файлов cookie
Веб-приложения часто используют файлы cookie для хранения определенной информации, такой как идентификаторы пользователей, пароли, временные метки и т.д., на хосте клиента. Злоумышленники могут подделать содержимое файлов cookie, чтобы получить доступ к учетным записям пользователей, что может привести к серьезным последствиям.
- Проверка на наличие черного хода
Бэкдоры и опции отладки, оставленные при разработке системы, могут быть использованы злоумышленниками, что приводит к легким атакам.
- Неправильная конфигурация программного обеспечения сторонних производителей
Неправильная настройка стороннего программного обеспечения может привести к тому, что злоумышленник использует уязвимость для построения различных типов атак вторжения.
Что сделать, чтобы подготовиться к тесту на проникновение? Как можно избежать рисков?
Тесты на проникновение проводятся на сетевых устройствах, операционных системах хостов, системах баз данных и прикладных системах. Существует множество предвидимых и непредвидимых рисков, которых невозможно избежать в процессе тестирования. Поэтому перед тестированием необходимо разобраться во внедрении целевой системы, ключевых объектах и функциях защиты, а тестирующая сторона должна предусмотреть меры по предотвращению значительного воздействия на систему. Советы, которые могут помочь:
- Пентест приурочен к периодам минимальной рабочей нагрузки;
- Произведено обеспечение резервного копирования соответствующих данных перед проведением тестирования;
- Все испытания сообщаются и подтверждаются обслуживающим персоналом до их проведения;
- Немедленное прекращение теста и оперативное восстановление системы в случае возникновения аномалий во время пентеста;
- Создание полной зеркальной среды исходной бизнес-системы и проведение тестов на проникновение в зеркальную среду.