Как сканеры находят уязвимости


Сканеры уязвимостей не сильно отличаются от сканеров вирусов. В обоих случаях цель программного обеспечения состоит в том, чтобы найти что-то необычное в цели. Антивирусный сканер сканирует локальные ресурсы и локальное хранилище компьютера на предмет обнаружения потенциально вредоносного программного обеспечения. Сканер уязвимостей сканирует какую-то цель, чтобы найти потенциально уязвимое программное обеспечение. Оба используют для этого схожие техники.



Сканирование на основе сигнатур

В случае сканирования на основе сигнатур сканер ищет узнаваемые шаблоны, которые либо подготовлены производителем сканера, либо взяты из общедоступной базы данных. Например:

  • Вирусный сканер ищет определенную цепочку байтов, которые присутствуют в вредоносном исполняемом файле. Если он находит эту цепочку байтов, он предполагает, что вредоносный файл был найден.
  • Сетевой сканер ищет определенный ответ от сервера, чтобы распознать точную версию программного обеспечения, которое использует сервер. Это может быть так же просто, как программное обеспечение на самом деле отвечает информацией о версии, или более сложно, например, распознавая определенное типичное поведение.
Сканирование на основе сигнатур имеет ряд преимуществ:

  • Обычно это происходит довольно быстро, потому что не нужно выполнять никаких операций, кроме сравнения цепочек байтов из библиотеки сканера с цепочками байтов, полученных от цели.
  • Он менее навязчив и почти не имеет побочных эффектов.
  • Для создателя сканера нет необходимости писать пользовательский код. Существуют также базы данных сигнатур общественного достояния, которые можно использовать для создания собственной базы данных.
К сожалению, у этого типа сканирования тоже есть некоторые серьезные недостатки:

  • Это не всегда очень точно. Подпись не гарантирует, что найденный результат является вредоносным.
  • Нет абсолютно никаких доказательств того, что сообщенный результат является вредоносным. Поскольку сканер только сравнивает сигнатуры, он не проверяет, верны ли его предположения.
  • Большинство сканеров ограничены известными сигнатурами и не могут распознать мутации (например, сигнатуру с одним другим байтом), нарушения (например, сервер с другой конфигурацией) или новые угрозы.
Сканирование на основе поведения (Эвристическое сканирование)

Другой способ проверки на наличие вредоносного контента - это фактический анализ поведения цели. Это означает, что сканер должен понимать, как работает объект, а не просто сравнивать сигнатуру. Например:

  • Когда эвристический антивирусный сканер находит потенциально исполняемый файл, он может выполнить обратное проектирование, чтобы точно проверить, что делает код (чтобы проверить, являются ли его действия вредоносными). Он также может попытаться выполнить код в безопасной среде, чтобы увидеть результаты.
  • Когда сканер веб-уязвимостей находит элемент, который позволяет пользователю вводить данные, он пытается “обмануть цель”, отправляя неожиданные данные. Затем он анализирует реакцию цели, чтобы увидеть, удалось ли это.
Эвристическое сканирование имеет ряд существенных преимуществ:

  • Теоретически он способен обнаружить любую угрозу, даже обычную или нулевую. Очевидно, это зависит от того, насколько продвинуто программное обеспечение.
  • Он более точен, потому что на самом деле проверяет правильность своих предположений. Иногда это даже может служить доказательством.
К сожалению, эвристическое сканирование также имеет некоторые недостатки:

  • Оно гораздо более ресурсоемко, чем сканирование на основе сигнатур.
  • Эвристическому сканеру требуется больше времени для поиска результатов, и он может замедлить цель больше, чем сканер на основе сигнатур.
Создание хорошего эвристического сканера очень сложно и требует высочайшего таланта. В отличие от сканеров на основе сигнатур, каждый новый тип атаки должен быть запрограммирован и смоделирован. Библиотека эвристических сканеров – это не просто список строк для сравнения, она требует реального пользовательского программного обеспечения для каждого типа проверки.

Лучшее из обоих миров

Многие профессиональные сканеры пытаются использовать оба типа сканирования, но основной тип сильно зависит от типа выполняемого сканирования:

  • Антивирусные сканеры почти всегда в основном основаны на сигнатурах. Некоторые продвинутые антивирусные сканеры также имеют сканирование на основе поведения, но это часто необязательно (потому что такое сканирование занимает больше времени и ресурсов).
  • Сетевые сканеры почти всегда основаны на сигнатурах. Это связано с тем, что сетевые сканеры фокусируются на поиске устаревших версий программного обеспечения и неправильных конфигураций, которые могут быть легко распознаны с помощью сигнатур.
  • Сканеры веб-уязвимостей всегда в основном эвристичны, но при необходимости могут использовать сигнатуры.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, информационная безопасность




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.



Платформа .NET: история создания, особенности
Лихо закрученный триллер
Не работает поиск OpenCart при переносе