Автор работы: Пользователь скрыл имя, 29 Января 2013 в 21:05, реферат
Одной из основных частей любого антивируса является совокупность алгоритмов работы антивируса, так называемый антивирусный "движок" - модуль, отвечающий за проверку объектов и обнаружение вредоносных программ. Именно от антивирусного "движка", от того, как он разработан, какие он использует методы детектирования и эвристики, зависит качество детектирования вредоносных программ и, как следствие, уровень защиты, предоставляемый антивирусом.
Введение 3
Критерии качества работы антивируса 4
Алгоритмы работы антивирусов 6
Поиск по "сигнатурам" 7
Поиск по контрольным суммам (CRC) 8
Использование редуцированной маски 9
Криптоанализ 10
Статистический анализ 11
Эвристический анализ 12
Эмуляция 14
Оригинальные технологии в антивирусных "движках" 15
База данных антивирусного "движка" 17
Полиморфные вирусы 18
Заключение 21
Федеральное агентство по образованию
ГОУ ВПО «Пермский
государственный технический
Кафедра «Автоматики и Телемеханики»
РЕФЕРАТ
по «Основным технологиям эксплуатации защищенных компьютерных и телекоммуникационных систем»
«ОСНОВНЫЕ АЛГОРИТМЫ РАБОТЫ АНТИВИРУСОВ»
Выполнил: студент группы КЗИ-06 Осипович А.Э.
Принял: ассистент кафедры АТ Безукладников И.И.
ПЕРМЬ 2010 г.
Содержание:
Введение
Одной из основных частей любого антивируса является совокупность алгоритмов работы антивируса, так называемый антивирусный "движок" - модуль, отвечающий за проверку объектов и обнаружение вредоносных программ. Именно от антивирусного "движка", от того, как он разработан, какие он использует методы детектирования и эвристики, зависит качество детектирования вредоносных программ и, как следствие, уровень защиты, предоставляемый антивирусом.
Критерии качества работы антивируса
К сожалению, разработчики антивирусного программного обеспечения очень редко раскрывают детали реализации своих "движков". Однако и по косвенным признакам можно определить, является ли "движок" хорошим или нет. Вот основные критерии, по которым можно определить качество антивирусного "движка":
Качество детектирования. Насколько хорошо антивирус определяет вирусы. Этот критерий можно оценить по результатам различных тестов, которые проводятся несколькими организациями и обычно представлены на web-ресурсах разработчика.
Уровень детектирования эвристическими анализаторами. К сожалению, без тестирования на коллекции вирусов определить этот параметр невозможно, однако можно довольно легко определить, каков уровень ложных срабатываний у конкретного "движка".
Уровень ложных срабатываний. Если на 100% незараженных файлах антивирус рапортует об обнаружении возможно зараженного файла, то это - ложное срабатывание. Стоит ли доверять такому эвристическому анализатору, который беспокоит пользователя ложными тревогами? Ведь за большим количеством ложных срабатываний пользователь может пропустить действительно новый вирус.
Поддержка большого количества упаковщиков и архиваторов. Это очень важный фактор, так как часто создатели вредоносных программ, написав вирус, упаковывают его несколькими утилитами упаковки исполняемых модулей и, получив несколько разных вирусов, выпускают их "в свет". По сути, все эти вирусы являются экземплярами одного и того же варианта. Для антивирусного "движка", который поддерживает все или почти все популярные утилиты упаковки, не составит труда определить все эти экземпляры одного и того же вируса, назвав их при этом одним и тем же именем, для других же "движков" потребуется обновление антивирусной базы (а также время на анализ экземпляра вируса антивирусными экспертами).
Частота и размер обновлений антивирусной базы. Эти параметры являются косвенными признаками качества "движка". Так как частый выпуск обновлений гарантирует, что пользователь всегда будет защищен от только что появившихся вирусов. Размер обновления (и количество детектируемых вирусов в этом обновлении) говорит о качестве проектирования антивирусной базы и, отчасти, "движка".
Возможность обновления "движка" без обновления самой антивирусной программы. Иногда для обнаружения вируса требуется обновить не только антивирусную базу данных, но и сам "движок". Если антивирус не поддерживает такую возможность, то пользователь может остаться без защиты перед лицом нового вируса. Кроме этого, такая возможность позволяет оперативно улучшать "движок" и исправлять в нем ошибки.
Алгоритмы работы антивирусов
С появлением первых компьютерных вирусов программисты довольно быстро разобрались в принципах их работы и создали первые антивирусные программы. С тех пор прошло довольно много времени, и современный антивирус отличается от тех первых антивирусов, как персональный компьютер отличается от калькулятора.
Антивирусный "движок" (Anti-Virus
Engine) - это программный модуль, который
предназначен для
Рассмотрим каждый из этих методов подробнее.
Поиск по "сигнатурам"
Сигнатура - это уникальная "строка" байт, которая однозначно характеризует ту или иную вредоносную программу. Сигнатурный поиск, в той или иной модификации, используется для обнаружения вирусов и других вредоносных программ, начиная с самых первых антивирусных программ и до сих пор. Неоспоримое достоинство сигнатурного поиска - скорость работы (при использовании специально разработанных алгоритмов, разумеется) и возможности детектирования нескольких вирусов одной сигнатурой. Недостаток - размер сигнатуры для уверенного детектирования должен быть довольно большой, как минимум 8-12 байт (обычно для точного детектирования используются гораздо более длинные сигнатуры, до 64 байт), следовательно, размер антивирусной базы будет достаточно большой. Кроме этого, в последнее время большую распространенность получили вредоносные программы, написанные на языках высокого уровня (C++, Delphi, Visual Basic), а у таких программ есть отдельные части кода, которые практически не изменяются (так называемая Run Time Library). Неправильно выбранная сигнатура неизбежно приведет к ложному срабатыванию - детектированию "чистого", не зараженного файла как зараженного вирусом. Как решение этой проблемы предлагается использовать или очень большие сигнатуры или использовать детектирование по некоторым областям данных, например, таблицы перемещений (relocation table) или текстовые строки, что не всегда хорошо.
Поиск по контрольным суммам (CRC)
Поиск по контрольным суммам (CRC - cyclic redundancy check), по сути, является модификацией поиска по сигнатурам. Метод был разработан во избежание основных недостатков сигнатурного поиска - размера базы и уменьшения вероятности ложных срабатываний. Суть метода состоит в том, что для поиска вредоносного кода берется не только "опорная" строка - сигнатура, а, вернее сказать, контрольная сумма этой строки, но и местоположение сигнатуры в теле вредоносной программы. Местоположение используется для того, чтобы не подсчитывать контрольные суммы для всего файла. Таким образом, вместо 10-12 байт сигнатуры (минимально) используется 4 байта для хранения контрольной суммы и еще 4 байта - для местоположения. Однако метод поиска по контрольным суммам несколько медленнее, чем поиск по сигнатурам.
Использование масок для обнаружения вредоносного кода довольно часто бывает осложнено наличием шифрованного кода (так называемые полиморфные вирусы), поскольку при этом либо невозможно выбрать маску, либо маска максимального размера не удовлетворяет условию однозначной идентификации вируса без ложных срабатываний.
Невозможность выбора маски достаточного размера в случае полиморфного вируса легко объясняется. Путем шифрования своего тела вирус добивается того, что большая часть его кода в пораженном объекте является переменной, и, соответственно, не может быть выбрана в качестве маски.
Для детектирования таких вирусов применяются следующие методы: использование редуцированной маски, криптоанализ и статистический анализ. Рассмотрим эти методы подробнее.
Использование редуцированной маски
При поражении объектов вирус, использующий
шифрование, преобразует свой код
в шифрованную
S = F (T), где
T - базовый код вируса;
S - зашифрованные коды вируса;
F - функция шифрования вируса, произвольно
выбирающаяся из некоторого
Способ редуцированной маски заключается в том, что выбирается преобразование R зашифрованных кодов вируса S, такое, что результат преобразования (то есть некоторая последовательность данных S') не будет зависеть от ключей преобразования F, то есть
S = F (T)
S' = R (S) = R (F (T)) = R' (T).
При применении преобразования R к всевозможным вариантам шифрованного кода S результат S' будет постоянным при постоянном T. Таким образом, идентификация пораженных объектов производится путем выбора S' в качестве редуцированной маски и применения к пораженным объектам преобразования R.
Криптоанализ
Этот способ заключается в следующем: по известному базовому коду вируса и по известному зашифрованному коду (или по "подозрительному" коду, похожему на зашифрованное тело вируса) восстанавливаются ключи и алгоритм программы-расшифровщика. Затем этот алгоритм применяется к зашифрованному участку, результатом чего является расшифрованное тело вируса. При решении этой задачи приходится иметь дело с системой уравнений.
Как правило, этот способ работает значительно быстрее и занимает гораздо меньше памяти, чем эмуляция инструкций вируса. Однако решение подобных систем часто является задачей высокой сложности.
Причем основная проблема - это математический анализ полученного уравнения или полученной системы уравнений. Во многом задача решения систем уравнений при восстановлении зашифрованного тела вируса напоминает классическую криптографическую задачу восстановления зашифрованного текста при неизвестных ключах. Однако здесь эта задача звучит несколько иначе: необходимо выяснить, является ли данный зашифрованный код результатом применения некоторой известной с точностью до ключей функции. Причем заранее известны многие данные для решения этой задачи: участок зашифрованного кода, участок незашифрованного кода, возможные варианты функции преобразования. Более того, сам алгоритм этого преобразования и ключи также присутствуют в анализируемых кодах. Однако существует значительное ограничение, заключающееся в том, что данная задача должна решаться в конкретных границах оперативной памяти и процедура решения не должна занимать много времени.
Статистический анализ
Также используется для детектирования полиморфных вирусов. Во время своей работы сканер анализирует частоту использования команд процессора, строит таблицу встречающихся команд процессора, и на основе этой информации делает вывод о заражении файла вирусом. Данный метод эффективен для поиска некоторых полиморфных вирусов, так как эти вирусы используют ограниченный набор команд в декрипторе, тогда как "чистые" файлы используют совершенно другие команды с другой частотой. Например, все программы для MS-DOS часто используют прерывание 21h, однако в декрипторе полиморфных DOS-вирусов эта команда практически не встречается.
Основной недостаток этого метода в том, что есть ряд сложных полиморфных вирусов, которые используют почти все команды процессора и от копии к копии набор используемых команд сильно изменяется, то есть по построенной таблице частот не представляется возможным обнаружить вирус.
Эвристический анализ
Когда количество вирусов превысило несколько сотен, антивирусные эксперты задумались над идеей детектирования вредоносных программ, о существовании которых антивирусная программа еще не знает (нет соответствующих сигнатур). В результате были созданы так называемые эвристические анализаторы. Эвристическим анализатором называется набор подпрограмм, которые анализируют код исполняемых файлов, макросов, скриптов, памяти или загрузочных секторов для обнаружения в нем разных типов вредоносных компьютерных программ. Существуют два принципа работы анализатора.
Статический метод. Поиск общих коротких сигнатур, которые присутствуют в большинстве вирусов (так называемые "подозрительные" команды). Например, большое количество вирусов производит поиск вирусов по маске *.EXE, открывает найденный файл, производит запись в открытый файл. Задача эвристик в этом случае - найти сигнатуры, отражающие эти действия. Затем происходит анализ найденных сигнатур, и, если найдено некоторое количество необходимых и достаточных "подозрительных команд", то принимается решение о том, что файл инфицирован. Большой плюс этого метода - простота реализации и хорошая скорость работы, но при этом уровень обнаружения новых вредоносных программ довольно низок.
Динамический метод. Этот метод появился одновременно с внедрением в антивирусные программы эмуляции команд процессора . Суть метода состоит в эмуляции исполнения программы и протоколировании всех "подозрительных" действий программы. На основе этого протокола принимается решение о возможном заражении программы вирусом. В отличие от статического метода, динамический метод более требовательный к ресурсам компьютера, однако и уровень обнаружения у динамического метода значительно выше.
В эвристическом анализаторе, входящем в состав почти каждого антивируса, используются оба описанные выше методы анализа - криптоанализ и статистический анализ. Современный эвристический анализатор изначально разрабатывается так, чтобы быть расширяемым (в отличие от большинства эвристических анализаторов первого поколения, которые разрабатывались для обнаружения вредоносных программ только в исполняемых модулях).
В настоящее время эвристический анализатор позволяет обнаруживать вредоносные коды в исполняемых файлах, секторах и памяти, а также новые скрипт-вирусы и вредоносные программы для Microsoft Office (и других программ, использующих VBA), и, наконец, вредоносный код, написанный на языках высокого уровня, таких как Microsoft Visual Basic.
Гибкая архитектура и