Файл: Исследование проблем борьбы с вирусами и антивирусные программы.pdf
Добавлен: 17.06.2023
Просмотров: 73
Скачиваний: 4
- Постоянное наблюдение за процессами на компьютере и в сети, и обнаружение угроз «на лету», к примеру, при открытии зараженного файла или загрузке инфицированной веб-страницы в браузер.
- Сканирование компьютера, которое запускается по расписанию, запросу или событию пользователя.
Еще один метод классификации технологий, которые реализуют принцип антивирусной защиты:
- Блокирование или ограничение активности объектов, которые содержатся в «черных» списках (к примеру, в базах сигнатур угроз), и разрешение запуска всех остальных.
- Разрешение активности только безопасных объектов из «белых» списков и запрет активности всех остальных.
- Комбинированный подход, к примеру, использование «черных» списков для обнаружения угроз и «белых» списков для коррекции итогов детектирования и снижения ложных срабатываний [7, с. 109].
Программы-детекторы осуществляют поиск характерной для конкретного вируса сигнатуры в оперативной памяти и в файлах и при обнаружении выдают соответствующее сообщение. Минусом таких антивирусных программ является то, что они могут находить только те вирусы, которые известны разработчикам таких программных средств.
Программы-доктора, или фаги, а также программы-вакцины не только находят зараженные вирусами файлы, но и «лечат» их, т. е. удаляют из файла тело программы-вируса, возвращая файлы в исходное состояние. В начале своей работы фаги ищут вирусы в оперативной памяти, уничтожая их, и только затем переходят к «лечению» файлов. Среди фагов выделяют полифаги, т. е. программы-доктора, предназначенные для поиска и уничтожения большого количества вирусных программных средств. Самыми известными из них являются: Norton AntiVirus, Kaspersky Antivirus, Doctor Web [1, с. 45].
В связи с тем, что постоянно появляются новые вирусы, программы-детекторы и программы-доктора быстро устаревают, и нужно регулярное обновление версий.
Программы-ревизоры относятся к самым надежным инструментам защиты от вирусных программных средств. Ревизоры запоминают первоначальное состояние программных средств, системных областей диска и каталогов тогда, когда компьютер не заразил вирус, а потом периодически или по желанию пользователя сравнивают текущее и исходное состояния. Обнаруженные изменения выводятся на дисплей монитора. Как правило, сравнение состояний производят сразу же после загрузки ОС. При сравнении проверяются длина файла, код циклического контроля (контрольная сумма файла), время и дата модификации, а также другие параметры. Программы-ревизоры имеют достаточно развитые алгоритмы, обнаруживают стелс-вирусы и могут даже отличить изменения версии проверяемой программы от изменений, которые внесены вирусом. К количеству программ-ревизоров относится широко распространенная программа Kaspersky Monitor.
Программы-фильтры или «сторожа» представляют собой малые резидентные программы, которые предназначены для обнаружения подозрительных действий при работе компьютера, которые характерны для вирусных программных средств. Такими действиями могут являться:
- попытки коррекции файлов с расширениями СОМ. ЕХЕ;
- изменение атрибутов файла;
- прямая запись на диск по абсолютному адресу;
- запись в загрузочные секторы диска;
- загрузка резидентной программы.
При попытке какой-либо программы произвести указанные действия «сторож» посылает пользователю сообщение и предлагает запретить или разрешить соответствующее действие. Программы-фильтры довольно полезны. потому что они имеют способность обнаружить вирусы на самой ранней стадии его существования, до размножения. Тем не менее, они не «лечат» файлы и диски.
Для уничтожения вирусных программ нужно применить другие программы, к примеру фаги. К недостаткам программ-сторожей можно отнести их «назойливость» (к примеру, они постоянно выдают предупреждение о любой попытке копирования исполняемого файла), а также возможные конфликты с другим программным обеспечением.
Вакцины или иммунизаторы — это резидентные программы, которые предотвращают заражение файлов. Вакцины применяют, если отсутствуют программы-доктора, которые «лечат» этот вирус. Вакцинация возможна только от известных вирусных программных средств. Вакцина модифицирует программу или диск таким образом, чтобы это не отражалось на их работе, а вирус будет воспринимать их зараженными и поэтому не внедрится. На сегодняшний день у программ-вакцин есть ограниченное применение.
Рассмотрим подробнее алгоритмы и способы поиска компьютерных вирусных программных средств.
Алгоритмы поиска компьютерных вирусов
Используются следующие методы поиска вирусов:
- Сигнатурный метод поиска вирусных программных средств.
Сигнатура – это программный код вируса. Когда антивирусная компания находит тело вируса, она добавляет в свою базу его сигнатуру. Скачивая обновленные базы, уменьшается вероятность проникновения вируса на компьютер. Антивирусная программа сканирует каждый файл на компьютере на предмет известных сигнатур.
В этой связи есть один интересный момент. Некоторые базы имеют в своем арсенале 70 тысяч сигнатур, а в других – скажем сто. Вторые в глазах пользователя выглядят привлекательнее. Но, самом деле, это ничего не означает. Алгоритмы создания сигнатуры одних производителей отличаются от алгоритмов других. Поэтому у одной организации одна сигнатура может обозначать целую группу вирусных программных средств, в то время как у другой эту же группу будет описывать несколько сигнатур.
Существенный недостаток в таком методе – его нединамичность. Организации требуется несколько дней для поиска и создания новых сигнатур. А программисту нужно всего несколько минут для написания нового вируса и несколько секунд для заражения его на тысячи и сотни тысяч компьютеров [10, с. 181].
2). Эвристический метод поиска.
Именно медленное обновление баз и все более сложные алгоритмы вирусных программ породили антивирусные организации этот метод. Собственно при помощи него антивирусные организации сканируют сеть на предмет поиска новых вирусных программных средств.
Он представляет собой «сигнатурный метод для сигнатур». Здесь анализируются не файлы, а прошлые методы поиска, их ошибки и достижения, устанавливаются определенные закономерности в поведении вирусных программных средств. Только этот метод сможет уберечь от свежего вируса. Его недостаток заключается в том, что есть возможность отправить в вирусное хранилище ни в чем не повинный файл, если он по своему поведению или содержанию напомнит вирус. Зараженные файлы, которые отправлены в хранилище, не контактируют с другими файлами и с системой, поэтому безопасны. Антивирусная система может отсылать эти файлы на сайты антивирусных лабораторий, где они будут подвергаться дальнейшему анализу.
3). Поиск по контрольным суммам (CRC).
Поиск по контрольным суммам (CRC - cyclic redundancy check), по сути, является модификацией поиска по сигнатурам. Метод был разработан для избежания основных недостатков сигнатурного поиска - размера базы и уменьшения вероятности ложных срабатываний. Сущность данногометода состоит в том, что для поиска вредоносного кода берется не только «опорная» строка - сигнатура, а, точнее говоря, контрольная сумма этой строки, но и местоположение сигнатуры в теле вредоносной программы. Местоположение используется для того, чтобы не подсчитывать контрольные суммы для всего файла. Следовательно, вместо 10-12 байт сигнатуры (минимально) используется 4 байта для хранения контрольной суммы и еще 4 байта - для местоположения. Тем не менее, способ поиска по контрольным суммам несколько медленнее, чем поиск по сигнатурам.
Использование масок для обнаружения вредоносного кода зачастую бывает осложнено из-за наличия шифрованного кода (так называемые полиморфные вирусы), потому что при этом или нельзя выбрать маску, или маска самого большого размера не удовлетворяет условиям однозначной идентификации вируса без ложных срабатываний.
Невозможность выбора маски нужного размера в случае полиморфного вируса можно легко объяснить. С помощью шифрования своего тела вирус добивается того, что большая часть его кода в пораженном объекте является переменной, и, следовательно, не может быть выбрана в качестве маски.
Для детектирования таких вирусных программ применяют следующие методы: криптоанализ, использование редуцированной маски и статистический анализ.
Рассмотрим эти методы более подробно.
4). Использование редуцированной маски.
При поражении объектов вирус, который использует шифрование, преобразует свой код в шифрованную последовательность данных:
S = F (T), (1)
где T - базовый код вируса;
S - зашифрованные коды вируса;
F - функция шифрования вируса, которая произвольно выбирается из некоторого множества преобразований {F}.
Способ редуцированной маски заключается в том, что выбирается преобразование R зашифрованных кодов вируса S, такое, что итог преобразования (то есть некоторая последовательность данных S') не будет зависеть от ключей преобразования F, то есть:
S = F (T)
S' = R (S) = R (F (T)) = R' (T).
При применении преобразования R к всевозможным способам шифрованного кода S итог S' будет постоянным при постоянном T. Следовательно, идентификация пораженных объектов производится при помощи выбора S' в качестве редуцированной маски и применения к пораженным объектам преобразования R [2, с. 96].
5). Криптоанализ.
Этот способ заключается в следующем: по известному базовому коду вируса и по известному зашифрованному коду (или по «подозрительному» коду, похожему на зашифрованное тело вируса) восстанавливаются ключи и алгоритм программы-расшифровщика. Затем этот алгоритм применяется к зашифрованному участку, итогом чего является расшифрованное тело вируса. При решении этой задачи приходится иметь дело с системой уравнений.
Как правило, этот способ работает значительно быстрее и занимает гораздо меньше памяти, чем эмуляция инструкций вируса. Тем не менее, решение подобных систем зачастую является достаточно сложной задачей.
При этом главная проблема заключается в математическом анализе полученной системы уравнений или полученного уравнения. Во многом задача решения систем уравнений при восстановлении зашифрованного тела вируса напоминает классическую криптографическую задачу восстановления зашифрованного текста при неизвестных ключах. Тем не менее, здесь эта задача звучит несколько иначе: требуется выяснить, является ли этот зашифрованный код итогом применения некоторой известной с точностью до ключей функции. Причем заранее известны многие данные для решения этой задачи: участок зашифрованного кода, участок незашифрованного кода, возможные варианты функции преобразования. Более того, сам алгоритм этого преобразования и ключи также присутствуют в анализируемых кодах. Тем не менее, есть значительное ограничение, которое заключается в том, что эта задача должна быть решена в конкретных границах оперативной памяти и процедура решения не должна занимать много времени.
6). Статистический анализ.
Также используют в целях детектирования полиморфных вирусных программных средств. Во время своей работы сканер анализирует частоту использования команд процессора, строит таблицу встречающихся команд процессора (опкодов), и на основе этой информации делает вывод о заражении файла вирусом. Такой метод эффективен для поиска некоторых полиморфных вирусных программных средств, так как эти вирусы используют ограниченный набор команд в декрипторе, тогда как «чистые» файлы используют совершенно другие команды с другой частотой. К примеру, все программы для MS-DOS часто используют прерывание 21h (опкод CDh 21h), однако в декрипторе полиморфных DOS-вирусных программ эта команда практически не встречается.
Основной минус этого метода в том, что есть ряд сложных полиморфных вирусных программных средств, которые используют почти все команды процессора и от копии к копии набор используемых команд сильно изменяется, то есть по построенной таблице частот не представляется возможным обнаружить вирус.
7). Эвристический анализ.
Когда количество вирусных программ превысило несколько сотен, антивирусные эксперты задумались над идеей детектирования вредоносных программных средств, о существовании которых антивирусная программа еще не знает (нет соответствующих сигнатур). В итоге были созданы так называемые эвристические анализаторы. Эвристическим анализатором называется набор подпрограммных средств, которые анализируют код исполняемых файлов, скриптов, макросов, памяти или загрузочных секторов для обнаружения в нем различных типов вредоносных компьютерных программных средств. Существуют два принципа работы анализатора.
8). Статический метод.
Поиск общих коротких сигнатур, которые присутствуют в большинстве вирусных программ (так называемые «подозрительные» команды). К примеру, большое количество вирусных программ производит поиск вирусных программ по маске *.EXE, открывает найденный файл, производит запись в открытый файл. Задача эвристик в этом случае - найти сигнатуры, которые отражают эти действия. После этого происходит анализ найденных сигнатур, и, если найдено некоторое количество необходимых и достаточных «подозрительных команд», то принимается решение о том, что файл инфицирован. Большой плюс этого метода - простота реализации и хорошая скорость работы, но при этом уровень обнаружения новых вредоносных программ довольно низок.
9). Динамический метод.
Этот метод появился в то же время с внедрением в антивирусные программы эмуляции команд процессора (подробнее эмулятор описан ниже). Сущность данного метода состоит в эмуляции исполнения программы и протоколировании всех «подозрительных» действий программы. На основании данного протокола принимается решение о возможном заражении программы вирусом. В отличие от статического метода, динамический метод более требовательный к ресурсам компьютера, однако и уровень обнаружения у динамического метода значительно выше.