Горбунов А.Н.1, Емельяненко Т.Г.2 ©
1Кандидат технических наук, доцент кафедры информатики и прикладной математики;
2магистрант, кафедра информатики и прикладной математики, Брянский государственный университет им. ак. И.Г. Петровского
ПРИНЦИПЫ ИСПОЛЬЗОВАНИЯ СИГНАТУРНОГО АНАЛИЗА ДЛЯ ОБНАРУЖЕНИЯ ВРЕДОНОСНЫХ ПРОГРАММ
Аннотация
Статья посвящена описанию принципов обнаружения вредоносных программ методом сигнатурного анализа и его применению в работе антивирусных систем.
Ключевые слова: обнаружение вирусов, сигнатурный анализ, сигнатура вируса, вредоносная программа.
Keywords: virus detection, signature analysis, virus signature, malware.
Сигнатурный анализ является одним из методов обнаружения вредоносных программ (вирусов, троянских коней, червей и т.п.) и используется во многих современных антивирусных системах (АВС). Этот метод обнаружения вирусов заключается в проверке наличия в принимаемых файлах сигнатур вирусов.
Для проведения проверки АВС необходим набор сигнатур вредоносных программ -далее по тексту вирусов, который хранится в антивирусной базе системы.
Сигнатурой вируса можно считать совокупность черт, позволяющих однозначно идентифицировать наличие вируса в файле (включая случаи, когда файл целиком является вирусом). Такая сигнатура должна содержать только уникальные строки из этого файла, настолько характерные для вируса, чтобы гарантировать минимальную возможность ложного срабатывания.
С одной стороны, для того чтобы повысить вероятность правильной диагностики вируса, сигнатура должна быть достаточно длинной - как минимум 8-12 байт, а еще лучше 64 байта. С другой стороны, учитывая огромное число существующих к настоящему моменту вирусов (сотни тысяч), увеличение длины сигнатуры увеличит и без того большой объем базы данных сигнатур.
В общем случае метод, основанный на анализе сигнатур, реализуется следующим образом [1]. Поддерживается база данных сигнатур для известных атак с возможностью пополнения без потерь в производительности. В результате анализа происходит сопоставление регистрируемой последовательности событий известным сигнатурам атак. В случае соответствия выдается сигнал о попытке вторжения. Дальнейшие действия определяются алгоритмами модуля реакции: удаление вируса или оповещение. Рассмотрим принцип сигнатурного анализа на следующем примере. Пусть поток входных данных (событий) имеет вид:
ABCDDABACCBC.
Пусть теперь распознавание происходит относительно сигнатуры:
ADAC.
Тогда, в случае работы алгоритма по правилам дискретной аппроксимации получим:
A xx^DxA xxCxxxх.
х - обозначает отсутствие символа, образующего сигнатуру в потоке исходных данных. Т.е. атака распознана. Стоит отметить, что в случае использования правила «немедленного следования» распознавания бы не произошло.
Поиск вирусных сигнатур на уровне битов можно в простейшем случае представить в виде алгоритма поиска строки в тексте. Простейшую процедуру поиска подстрок можно
© Горбунов А.Н., Емельяненко Т.Г., 2013 г.
интерпретировать графически как скольжение «шаблона» с образцом по тексту, в процессе которого отмечается, для каких сдвигов все символы шаблона равны соответствующим символам текста.
Эти определения проиллюстрированы на рисунке 1. В примере, представленном на рисунке, предлагается найти все вхождения образца Р=аЬаа в тексте Т=аЬсаЬааЬсаЬас. Образец встречается в тексте только один раз, со сдвигом s=3. Говорят, что сдвиг s является допустимым. Каждый символ образца соединен вертикальной линией с соответствующим символом в тексте.
Рис. 1. Задача поиска подстрок
Рассмотрим работу простейшего файлового вируса, поражающего .EXE-файлы и не являющегося резидентным. Получив управление при запуске зараженной программы, вирус ищет на доступном диске файлы с расширением .EXE. Найдя подходящий файл, вирус записывает свой код за последним оператором (т.е. в "хвост") этой программы, а затем на место первых трех байт этой программы записывает код короткого перехода по адресу входа в свою программу, предварительно сохранив исходные три байта в своей внутренней области данных или в стеке.
Чтобы найти в теле вируса последовательность кодов, которую можно было использовать в качестве сигнатуры, прежде всего, нужен двоичный (исполняемый) код вируса. Такой код можно получить, оттранслировав вирус с помощью макроассемблера. При этом макроассемблером необходимо создать листинг данного вируса, поскольку листинг содержит как ассемблерные команды, так и перемещаемый двоичный код [2].
Полученная в результате сигнатура (двоичный код) вируса может быть использована в качестве образца Р при решении задачи поиска подстроки. При совпадении сигнатуры образца и соответствующего фрагмента текста, можно говорить о наличии вируса в исходном тексте и принимать меры к его изоляции.
Литература
1. Корт С.С. Теоретические основы защиты информации. - М.: Гелиос-АРВ, 2004 (печатное издание).
2. Хижняк: П.Л. Пишем вирус и... антивирус. / Под общей редакцией И.М.Овсянниковой. - М: ИНТО, 1991. - 90 с.