Мешков А.В., Семьянов П.В., Зегжда Д.П. ИНТЕЛЛЕКТУАЛЬНЫЙ ИНТЕГРАТОР СРЕДСТВ АНТИВИРУСНОЙ БОРЬБЫ В настоящее время вследствие широкого распространения персо- нальных компьютеров и отсутствию защиты у операционной системы MS DOS, появилось большое количество компьютерных вирусов (КВ). В тоже время существует и целый ряд антивирусных средств (АВС). Однако специфика распространения как вирусов, так и средств борьбы с ними привела к тому, что ни одно АВС не обеспечивает обезвре- живание всех известных вирусов. Логично предложить для гарантии от- сутствия последних в компьютерной системе последовательный запуск нес- кольких наиболее мощных АВС. Но возникают сразу же три серьезных проблемы: - увеличение времени выполнения; - различное качество обезвреживания одного и того же КВ раз- личными средствами; - для ликвидации последствий воздействия некоторых КВ на вычислительную среду недостаточно только обезвреживания. Сами АВС не предоставляют всеоблемьющей информации для успеш- ного преодоления двух последних проблем, а та информация, которая имеется, представлена в различных источниках в текстовом виде. Причем различие в классификациях еще более затрудняет эффективное противос- тояние КВ. Отказавшись от создания нового АВС, страдающего теми же недос- татками, авторы пришли к идее объединения, во-первых, средств борьбы, во-вторых, информации по КВ, чтобы затем соединить все это в одной оболочке - интеграторе, который на основе результатов работы антиви- русных программ и знаний из справочной системы должен принимать реше- ние по обезвреживанию вируса и ликвидации его воздействия на компьютерную систему. Программа со структурой, представленной на рис. 1, как раз и является таким интегратором. Остановимся подробнее на отдельных его блоках. -------------------------------------------------- ИНТЕРФЕЙС --------------------------------------------------   │ │   ┌──────────────┐ ┌───────────────┐ │ Блок │ │ Блок │ │ Подключения │ │ Запуска │ ╒════════════╕ │ АВС │ │ АВС │ <--> │ Справочная │ └──────────────┘ └───────────────┘ │ Система │ ┌──────────────┐ ┌───────────────┐ │ ──────── │ │ Блок │ │ Блок │ <--> │ (База │ │ Формирования │ │ Обработки и │ │ Знаний) │ │ Производных │ │ Представления │ ╘════════════╛ │ Средств │ │ Результатов │ └──────────────┘ └───────────────┘ Рис. 1. Структура интеллектуального интегратора средств антивирусной борьбы Блок подключения внешних программ. Антивирусное средство по отношению к интегратору является внешней программой. Для успешной ее работы в рамках оболочки такая программа должна иметь унифицированный интерфейс с пользователем, использующий задание режимов работы в ко- мандной строке, а также обеспечивать сохранение результатов работы, иначе говоря, такая программа обладает входным и выходным языком. Входной язык определяется системой задания параметров или ре- жимов работы и маршрутов поиска и лечения со следующим синтаксисом: <команда> ::= <имя программы> <пути поиска> <параметры> <параметры> ::= [<по умолчанию>] [<проверка всех файлов>] [<проверка памяти>] [<удаление испорченных файлов>] [<медленный поиск>] [<пользовательская опция>] <пользовательская опция> ::= <название опции> <ключ> Нераскрытые термы задаются пользователем с помощью ключевых слов. Например, для программы AidsTest Д.Н.Лозинского термы могут определятся следующими ключевыми словами: <имя программы> ::= "aidstest.exe" <пути поиска> ::= "C:" <по умолчанию> ::= "/A45" <проверка всех файлов> ::= "/G" <удаление испорченных файлов> ::= "/X" <медленный поиск> ::= "/S" Выходной язык определяется набором сообщений, выдаваемых прог- раммой. Мы считаем, что для данного типа программ все сообщения воз- можно свести к языку со следующим синтаксисом. <строка сообщения> ::= <объект> <состояние> <вирус> <объект> ::= <файл>|<диск>|<память> <состояние> ::= <заражен>|<обезврежен>|<не обезврежен>| <удален>|<не удален>|<подозрителен> <вирус> ::= <левый ограничитель> имя_вируса <правый ограничитель> <файл> ::= <признак файла> имя_файла <диск> ::= <признак диска> имя_диска <память> ::= <признак памяти> Термы <признак файла>, <признак диска>, <признак памяти> за- даются ключевыми словами и выражениями, определяющими их положение в строке. Термы <заражен>, <обезврежен>, <не обезврежен>, <удален>, <не удален>, <подозрителен> определяются для каждого средства с помощью набора ключевых слов. Таким образом, подключение АВС в интегратор заключается в за- дании нужных ключевых слов и выражений. Средство, подключенное таким образом, будем называть базовым. Однако подключение само по себе не реализует объединение АВС. Для этого вводятся несколько типов производных средств: - средство на основе базового с фиксированными параметрами и путями поиска; - обобщенное средство, как совокупность базовых; - профилактическое средство, как совокупность средств с фикси- рованными параметрами, осуществляющее после нахождения вирусов их устранение и генерацию отчета. За формирование производных средств отвечает состветствующий блок. Блок запуска обеспечивает генерацию задания и выполнение анти- вирусных средств. Данные, полученные при подключении АВС, позволяют осуществлять диалог с пользователем на естественном языке, и не тре- буют помнить параметры программ. Маршрут поиска также задается в диалоге на основе реальной структуры текущей файловой системы, что исключает ошибки. Отличие формирования параметров АВС для запуска на обезврежи- вание КВ состоит в том, что для этого используются знания из справоч- ной системы, а также проводится некотарая оптимизация. Такая необходи- мость возникает в случае обнаружения вирусов на значительном дисковом пространстве, т.к. лечение следует проводить только в тех каталогах, где найдены вирусы. Особенно, если программа-фаг при каждом запуске может бороться только с одним вирусом (VirusClean), а вирусов найдено несколько. Для средств, в состав которых включено несколько базовых, за- пуск заключается в последовательном формировании команд для выполнения конкретных программ и их исполнение. Срузу после окончания работы отдельной программы выполняются функции обработки и представления результатов. Блок, отвечающий за это, должен на основе данных о выходном языке соответстыующей прог- раммы произвести разбор результатов ее работы. Однако для этого недос- таточно полчить тройку <<объект-вирус-состояние>>. Необходимо на осно- ве информации из справочной системы произвести унификацию названий каждого вируса. Под унификацией понимается приведение всех имен к име- нам из классификации, поддерживаемой справочной системой. Справочная система содержит обширную информацию по компьютерным вирусам и соответствующей тематике, включая основные по- нятия, ссылки на литературу и т.д. Собранные из различных источников данные по каждому вирусу структурированы как по их проявлениям, так и по средствам и способам борьбы с ними. Для каждого компьютерного виру- са, по которому имеется информация, приведен список названий из раз- личных классификаций. Кроме того, имеются знания по дополнительным действиям (если таковые необходимо произвести) по ликвидации пос- ледствий воздействия КВ. На рис. 2 представлен пример описания вируса Dark Avenger, полностью иллюстрирующий сказанное выше. Файловый вирус Edd-1800 (Aidstest) Dark Avenger [Dav] (Scan) RCE-1800 (Безруков) Другие имена: Eddie, Diana, Sofia, Черный мститель Группа: Dark Avenger ┌─Длина/Инкремент │ ┌─Типы заражаемых файлов │ │ ┌─Однократное заражение │ │ │ ┌─Стратегия заражения │ │ │ │ ┌─Заражение COMMAND.COM │ │ │ │ │ ┌─Остается резидентным │ │ │ │ │ │ ┌─Шифрование кода │ │ │ │ │ │ │ ┌─STEALTH-технология │ │ │ │ │ │ │ │ ┌─Степень опасности │ │ │ │ │ │ │ │ │ ┌─Перехват дисковыхошибок │ │ │ │ │ │ │ │ │ │ ┌─Заражение Read-Onlyфайлов │ │ │ │ │ │ │ │ │ │ │ ┌─Сохранение времени файла │ │ │ │ │ │ │ │ │ │ │ │ ┌─Повреждает │ │ │ │ │ │ │ │ │ │ │ │ │ ┌─Удаляет │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌─Эффекты ┌──┴───┬─┴─┬┴┬────┴─────┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬┴┬──┴───┬────┴────┬───┴──────┐ │ 1800/│COM│+│ запуск, │ │ │ │ │ │ │ │ │ │ │ │ │ 1800-│EXE│+│ создание,│+│+│-│-│5│+│+│+│сектор│ - │ - │ │ 1815 │OV?│+│ открытие,│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ закрытие │ │ │ │ │ │ │ │ │ │ │ │ └──────┴───┴─┴──────────┴─┴─┴─┴─┴─┴─┴─┴─┴──────┴─────────┴──────────┘ Проявления: Длина COM-файлов увеличивается на 1800 байт, EXE - на 1800 + выравнивание по границе параграфа. Происходит ощутимое замедление ко- пирования исполняемых файлов на гибкий диск или с него. Действия: Вирус остается резидентным и не видимым для DOS, заражает все программы длиной более 1774 и COM-файлы длиной менее 63149 байт при запуске, создании, открытии, закрытии, переименовании. После каждого 16-го заражения (счетчиком является 10-ый байт BOOT-cектора) пишет в случайный сектор диска свой фрагмент, начинающийся со строки "Eddie lives...somewhere in time". Запись сектора осуществляется без ис- пользования прерывания 13H. Способы борьбы: При подозрении на наличие данного вируса сначала настоятельно рекомендуется загрузиться с чистой дискеты; а для восстановления зара- женных файлов применить программу Aidstest. Затем необходимо гло- бальным поиском по диску найти все сектора, содержащие текст "Eddie lives", и попытаться восстановить их. При этом, системные области мо- гут быть восстановлены при помощи программ типа Mirror/Rebuild (PCTools) или Image/Unformat (Norton Utilities), которые рекомендуется включать в AUTOEXEC.BAT. Рис. 2. Информация по компьютерному вирусу. "Способы борьбы" кроме текстового имеют и процедурное представление. На основе данной структуры авторами создана система AntiVirus Guide (Антивирусная оболочка-справочник). Причем данная система может быть использована как обширный справочник по вирусной тематике.