Технологии обнаружения вредоносного кода. Эволюция

В статье «Технологии обнаружения вредоносного кода. Эволюция» эксперт «Лаборатории Касперского» Алиса Шевченко освещает различные способы идентификации вредоносного кода, анализирует функциональные и хронологические связи между ними, их технологические и прикладные особенности.

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

В начале статьи Алиса Шевченко говорит о том, что в любой технологии детектирования вредоносного кода можно выделить два компонента: технический и аналитический. Технический представляет собой совокупность функций и алгоритмов, обеспечивающих аналитический компонент данными для анализа. Аналитический является системой принятия решения, основанного на анализе имеющихся данных.

Технический компонент. Поскольку всякая вредоносная программа представляет собой одновременно и файл с определенным содержимым, и совокупность производимых в операционной системе действий, и совокупность произведенных в ОС эффектов, существуют различные способы сбора данных с целью идентификации зловредов. Способы перечислены в соответствии с повышением уровня абстракции при работе с кодом. Под уровнем абстракции в данном случае подразумевается то, под каким углом зрения рассматривается исполняемая программа: как первичный цифровой объект (набор байт), как поведение (более абстрактное следствие из набора байт) или как совокупность эффектов в операционной системе (более абстрактное следствие из поведения). Примерно по этому же вектору шло и развитие антивирусных технологий: работа с файлами, работа с событиями через файл, работа с файлом через события, работа с самой средой, — поэтому приведенный список естественным образом оказался выстроен и по хронологии.

  1. Работа с файлом как с массивом байтов.

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

  2. Эмуляция кода программы.

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

  3. Виртуализация: запуск программы в «песочнице» (Sandbox).

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

  4. Мониторинг системных событий.

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

  5. Поиск системных аномалий.

    Данный метод основан на следующих положениях:

    • операционная среда вместе со всеми выполняющимися в ней программами — это интегральная система;
    • ей присуще некое «системное состояние»;
    • если в среде исполняется вредоносный код, то состояние системы является «нездоровым» и отличается от состояния «здоровой» системы, в которой вредоносного кода нет.

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

Что касается аналитического компонента, то сложность алгоритма принятия решений может быть совершенно любой. Очень условно здесь можно выделить три категории:

  1. Простое сравнение.

    Вердикт выносится по результатам сравнения единственного объекта с имеющимся образцом.

  2. Сложное сравнение.

    Вердикт выносится по результатам сравнения одного или нескольких объектов с соответствующими образцами. Шаблоны для сравнения могут быть гибкими, а результат сравнения — вероятностным.

  3. Экспертная система.

    Вердикт выносится в результате тонкого анализа данных. Это может быть система, содержащая в себе зачатки искусственного интеллекта.

Далее в статье рассматривается, какие именно алгоритмы могут лежать в основе конкретных технологий поиска вредоносных программ. Также говорится о плюсах и минусах различных способов детектирования вредоносного кода. Технический компонент ответственен главным образом за такие характеристики, как нагрузка на систему, ее безопасность и защищенность. В среднем, чем менее абстрактна защита, тем она безопаснее, но и тем проще ее обойти.

Аналитический компонент той или иной защитной технологии ответственен за проактивность (способность технологии обнаруживать новые вредоносные программы), процент ложных срабатываний и нагрузку на пользователя (имеется в виду степень его участия в формировании политики защиты — правил, исключений, белых и черных списков — и участия в процессе вынесения вердикта — подтверждение или опровержение «подозрений» аналитической системы). Вывод можно сделать следующий: чем сложнее аналитическая система, тем она могущественнее, но и тем выше процент ложных срабатываний. Последние компенсируются взаимодействием с пользователем.

В заключение даются рекомендации по выбору системы несигнатурной защиты. Прежде всего, следует помнить, что не существует ни универсального, ни «самого лучшего» решения. У каждой технологии есть свои плюсы и минусы. В выборе того или иного продукта рекомендуется руководствоваться в первую очередь результатами независимых тестов, а также отзывами уже опробовавших антивирусы пользователей.

Rambler's Top100 Service