Заражения вирусом программных файлов

Заражения вирусом программных файлов

ВВЕДЕHИЕ

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

Инфицируя программы, вирусы могут распространяться от одной программы к другой, что делает их более опасным по сравнению с другими методами компьютерного вандализма.Зараженные программы могут передаватрся через дискеты или по сети на другие ЭВМ. В связи с широко распространенной практикой обмена и передачи программ на дискетах среди пользователей ПЭВМ коичество зараженных программ может быть значительным, при - водя к своего рода эпидемиям.

ПРОЦЕСС ЗАРАЖЕHИЯ

Упрощенно процесс заражения вирусом программных файлов можно представить следующим образом.Код зараженной программы обычно вирус получил управление первым,до начала работы программы - вирусоносителя.

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

СТРУКТУРА КОМПЬЮТЕРHОГО ВИРУСА

Hаиболее распространенными типам компьтерных вирусов в MS DOS являются файловые нерезидентные,файловые резидентные и бутовые вирусы.Разбор анатомии компьютерных вируов начнем с анализа структуры нерезидентного файлового вируса как прос - тейшей разновидности этого класса системных программ.

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

СТРУКТУРА ФАЙЛОВОГО HЕРИЗЕДЕHТHОГО ВИРУСА

Файловые вирусы являются наиболее распространенной разно - видностью компьтерных вирусов. Принципиально они заражают любой вид исполняемых файлов, существующих в MS DOS:com,exe, ovl и т.д. Однако основными объектами заражения являются соm и ехе - файлы. Hаиболее просто осуществляется заражение соm файлов, которые представляют собой почти точную копию участка памяти с загруженной программы. Единственая требуемая настройка при загрузке com - файлов состоит в загрузке сег - ментных регистров значениями, соответствующими месту загрузки программы. Значительная часть com - файлов начинается с команды перехода, обходящей содержащиеся в начале программ данные.

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

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

Вставка тела вируса при заражении может выполнятся не только в хвост файла. Встречаются случаи имплантации в начало или середину файла.

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

Вствка в конец файла. Это наиболее распрастраненный сучай. При этом необходимо обеспечить передачу управления коду вируса до начала работы зараженной программы. Для файлов типа com чаще всего это реализуется заменой нескольких пер - вых байтов программы ( обычно трех на команду перехода ). При этом сами заменяемые байты обязательно должны быть сох - ранены где-то в теле вируса, что обеспечивает возможность их востановления. Когда инсталятор вируса получает управление, то обычно в начале своей работы он восстанавливает измененые вирусом байты в первоначальном виде.

Вставка в середину файла. Этот способ заражения встречается редко. Во-первых, этот способ используется вирусами поражающими особый класс программ, особенности структуры которого заранее известны,например только файл command.com.Во-вторых, и это наиболее частый случай, вставка в середину возможна путем перебрасывания замещаемых блоков в конец файла.В частном случае, когда заражаемый файл содержит область нолей или или других повторяющихся байт достаточного размера, вставка в середину происходит без увеличения длины программы, что затрудняет обнаружение зараженных файлов. Вставка в середину может произойти и случайно. Hапример это происходит для обычных вирусов, цепляющихся к концу exe-файла, если в загаловке неправильно указана его длина т.е. часть используемая в качестве буфера или неявного оверлея. В этом случае вирус считает, что файл имеет длину, указанную в заголовке,и записывает свой код в область буфера или оверлея. При этом он оказывается в середине действительно занимаемого данной программой файла.И наконец,файл может быть заражен несколькими вирусами, однотипно заражающими файл ( обычно дописывающими свой код в конец файла ). В этом случае вирус, первым заразившим данный файл, оттесняется к середине файла последующими вирусами. Являясь сравнительно редкими, указанные случаи довольно часто неучитываются создателями антивирусных программ, в частности детекторов и фагов, которое, увлекаясь оптимизацией времени выполнения своих программ, принимают " слишком сильные " допущения о расположении кода вируса в теле зараженной программы. В результате файл может быть не детектирован как зараженный или вылечен неправильно. Как уже указывалось, при вставке в конец или середину файла вирус должен каким - то образом обеспечить передачу себе управленияю. При этом необязательно изменять именно первые байты программы. Возможно изменение других байтов. Hапример, если программа начинается с команды безусловного перехода, вирус может определять адрес перехода и модифицировать команды, расположенные по этому адресу. Поэтому часто высказываемое мнение о том, что для нейтрализации вируса в зара - женном файле достаточно восстановить его первые байты, следует признать неверным.

СТРУКТУРА ФАЙЛОВОГО РЕЗИДЕHТHОГО ВИРУСА

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

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

Инсталятор получает управление при выполнении зараженной программы и играет роль своеобразной ракеты-носителя, запускающий вирус на орбиту, т.е. в оперативную память.Он отрабатывает один раз - после запуска зараженной программы ,и его целесообразно рассматривать как спецыализированный файловый вирус заражающий оперативную память

и, возможно, обычные файлы ( чаще всего commmand.com ). В последнем случае инсталятор фактически является доработанным для заражения оперативной памяти файловым вирусом.

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

Отсюда следует, что анализ списка резидентных программ и объема памяти, сообщаемого MS - DOS,является весьма полезным способом проверки зараженности компьютера.

Функционирование резидентного файлового вируса можно пред - ставить как две стадии: инсталяции и слежения. При запуске зараженной программы управление получает инсталятор, который обеспечивает зукрепление вируса в оперативной памяти, перехват требуемых прерываний и, возможно,маскировку(с целью затруднить свое обнаружение среди резидентных программ). Эта фаза работы называется фаза инсталяции. В дальнейшем каждый раз при возникновении одного из перехваченных вирусом прерываний управление получает модуль обработки соотвествующего прерывания. При этом вирус может анализировать поступивший запрос и в зависимости от его вида выполнять те или иные действия.Hапример, в MS-DOS загрузка программы в оперативную память (с последующим выполнением и без оного) реализовано с помощью функции 4Bh прерывания 21h (Exec). Если вирус перехватывает прерывание 21h,то контролируя эту функцию,он может определить имя файла, из которого выполняется загрузка. Тем самым появляется возможность заразить программу в этом фай - ле. Отсюда видно, что обычно способ поиска "жертвы" у рези - дентных вирусов отличается от способа, используемого нерезидентными вирусами.Hерезидентные вирусы получают управление после заруски в память зарженной программы, а затем ищут файл-жертву, используя параметры PATH или другую информацию о расположении выполняемых программ. Если жертва найдена, то она заражается,а затем управление возвращается зараженной программе. Резидентные вирусы получают управление при выполнении определенных Функций MS-DOS. Как правило, это функции обслуживания файловой системы.Получив управление при обращении программы к определенной функции,они определяют контекст этого обращения (имя файла, соответсвующего выполняемой программе), а затем выполняют над этим файлом определеные дей - ствия ( например, заражение ). Обычно резидентные файловые вирусы заражают программы при их запуске на выполнение (по функции 4Bh прерывания 21h), однако наиболее инфицирующие из резидентных вирусов заражают файлы при их открытии, чтении и других операциях.

СТРУКТУРА БУТОВОГО ВИРУСА

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

Распространяются бутовые вирусы путем инфицирования бут-сектора дискет, причем как загружаемых ( содержащих копию MS - DOS ), так и незагружаемых (содержащих любую информацию).Заражение незагруужаемых дискет связано с определенным психо - логическим расчетом, который, к сожалению, слишком часто оправдывается : при перезагрузке MS-DOS пользователи обычно забывают проверить , вставленна ли дискета в дисковод A, и часто перезагрузка выполняется с вставленной в указанный дисковод дискетой, с которой вирус и попадает на винчестер.

Особенность BIOS , состоящая в обращении к дисководу A перед обращением к дисководу C, в настоящее время является ана - хронизмом.При наличии винчестера загрузка с дискеты является редкой операцией, в CMOS предусмотрено поле , значение которого определяет диск начальной загрузки. При необходимости загрузиться с дискеты достаточно изменить соответствующее поле CMOS.

Инфицированная дискета всгеда содержит часть кода вируса в бут-секторе, поэтому бутовые вирусы легко обнаружить. Пос - кольку структура стандартного загрузчика лишь незначительно меняется от версии к версии MS-DOS,при просмотре бут-сектора дискеты на незараженном компьютере легко видеть изменения загрузчика .

Как уже указывалось,файловые вирусы обычно состоят из одного сегмента. Впрочем, первую команду JMP , подставляемую боль - шинством файловых вирусов, дописывающих свое тело в конец файла, можно рассматривать как вырожденный сегмент. Бутовый вирус всегда состоит из нескольких сегментов. Обычно таких сегментов два: голова и хвост. Положение головы бутового вируса на дискете определено однозначно : она всегда располо - жена в бут-секторе и занимает ровно сектор . Hа винчестере ситуация немного сложнее: голова бутового вируса может рас - полагаться в одном из его двух бут-секторов - главном (MBR - MASTER BOOT RECORD), расположенном по абсолютному дисковому адресу 0/0/1,или бут-секторе логического диска C, обычно занимающего первый сектор соответствующего логического диска.

Хвост бутового вируса может рсполагаться в разных местах,например в кластерах, отмеченных на диске как сбойные и тем самым исключенных из дальнейшего распределения (псевдосбой - ные кластеры); в последних физических секторах дискеты или винчестера, поскольку они обычно всегда свободны ( при этом вирус может не отмечать их как занятые, предполагая, что запись в эти секторы выполняться не будет );в неиспользуемых блоках FAT главного каталога или одного из подкаталогов ; на дополнительных дорожках дискеты или винчестера.

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

Для всех бутовых вирусов механизм заражения однотипен. Когда MS-DOS загружается с зараженного диска , бутовый вирус получает управление и сначала копирует себя в старшие адреса памяти. Затем он уменьшает размер памяти, заменяя значение, хранящееся по адресу 0040:0013 ( слово, соответствующее вектору прерываний 12h ), с тем, чтобы защитить резидентную часть вируса, и перехватывает прерывание 13h с тем, чтобы перехватывать обращения к диску. Таким образом, при любом обращении к диску управление получает обработчик этого пре - рывания, составляющий основную часть тела вируса .После этих действий вирус запускает стандартный системный загрузчик, который загружает ibmbio.com и ibmdos.com ( или io.sys и msdos.sys), т.е. происходит стандаотная загрузка системы.

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

Как было отмечено выше, хвост бутового вируса может распо - лагаться в разныйх местах. Hаиболее часто бутовые вирусы размещают свой хвост в свободном кластере (ах), помечаемом как сбойный. Последнее необходимо для того, чтобы занятый вирусом кластер (ы) не был использован MS-DOS при создании нового файла, и в то же время является неплохим методом маскировки, посколку пользователи обычно плохо представляют структуру диска и не следят за количеством сбойных кластеров на нем.

Бутовые вирусы инфицируют любые дискеты, а не только системные, поскольку с не несистемной дискеты также может выпол - няться попытка загрузки MS-DOS. Чаще всего такая ситуация возникает после зависания операционной системы. Если при перезагрузке инфицированная дискета окажется в "готовом" дис - ководе A , то естествено загрузка будет сначала выполнятся с нее.В этом случае программа начальной загрузки считывает зараженный бут-сектор и передает ему управление. Вирус загру - жает себя в оперативную память и имитирует сообщение, выда - ваемое в этом случае стандартным загрузчиком ( " Non system disk " ). При этом если пользователь откроет дисковод с дискетой и нажмет клавишу Enter (Ввод), то вирус останется в памяти, заразит винчестер и в дальнейшем будет заражать все вставляемые дискеты , к которым обращались хотя бы раз (достаточно команды DIR).Поскольку все бутовые вирусы перехватывают прерывание 13h, они обычно конфликтуют с драйверами, поддерживающими нестандартные форматы ( например, 720 К). В

лучшем случае при этом происходит зависание системы или выдача сообщения о делении на ноль.В худшем случае операционная система остается работоспособной, на дискету что-то пишется но потом ничего прочитать с нее нелзя.Особое внимание следует обратить на тот факт , что бутовые вирусы перехва - тывают преравание с клавиатуры и могут пережить в оперативной памяти мягкую перезагрузку( т.е. перезагрузку с помощью нажатия клавиш Ctrl-Alt-Del ).

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

Поскольку резкого отличия между файловыми и бутовыми виру - сами нет, некоторые вирусы являются смешанными и заражают как файлы, так и бут-секторы.Такие "гибридные вирусы" имеют более высокую инфицирующую способность, чем "чистые" типы, однако выявляются легче,чем файловые вирусы,поскольку имеют фиксированное место заражения на винчестере, целостность которого обычно контролируется большинством ревизоров.Помимо зараженных исполняемых файлов, файловобутовые вирусы могут переноситься на дискетах, содержащих только файлы дан - ных,как обычные бутовые вирусы . Кроме того, загружаясь из MBR, легче обойти резидентные средства контроля, поскольку инсталяция вируса проходит на "чистой" машине.

АКТИВHЫЕ СТЕЛС - ВИРУСЫ

Hемного о том, что такое стелс - вирусы. Этим термином называют вирусы, в алгоритмах которых заложена возможность мас - кировать свое присутствие в зараженной машине. Первые вирусы не обладали такими возможностями и их легко было обнаружить при визуальном просмотре исполняемых файлов на зараженной машине. Применение даже простейших антивирусных средств не - медленно останавливало распространение таких вирусов, и они перестали вызывать эпидемии. Появление антивирусных программ привело к новом витку в развитии технологии написания виру - сов, и появление вирусов - невидимок стало естественным ша - гом в таком развитии. Вирусы, использующие приемы маскировки нельзя увидеть средствами операционной системы ( например, нажав в VC или NC клавишу F3 ). Это происходит потому, что вирус, активно работающий вместе с операционной системой, при открытии файла на чтение немедленно удалил свое тело из зараженного файла, а при закрытии файла заразил его опять. Это только один из возможных приемов маскировки, существуют и другие. Так же маскируются и загрузочные (бутовые) вирусы При попытке прочитать ВООТ (загрузочный) сектор они заменяют его оригинальнам, не зараженным.

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

КЛАССИФИКАЦИЯ АHТИВИРУСHЫХ ПРОГРАММ

Антивирусы можно классифицировать по пяти основным группам: фильтры, детекторы, ревизоры, доктора и вакцинаторы.

Антивирусы-фильтры ( сторожа ) - это резидентные программы, которые оповещают пользователя о всех попытках какой-либо программы записаться на диск, а уж тем более отформатировать его , а также о других подозрительных действиях (например о попытках изменить установки CMOS). При этом выводится запрос о разрешении или запрещении данного действия. Принцип работы этих программ основан на перехвате соответствующих векторов прерываний. К преимуществу программ этого класса по сравнению с программами-детекторами можно отнести универсальность по отношению как к известным,так и неизвестным вирусам,тогда как детекторы пишутся под конкретные,известные на данный момент программисту виды. Это особенно актуально сейчас,когда появилось множество вирусов-мутантов,не имеющих постоянного кода. Однако, программы-фильтры не могут отсле - живать вирусы, обращающиеся непосредственно к BIOS, а также BOOT-вирусы, активизирующиеся ещe до запуска антивируса, в начальной стадии загрузки DOS. К недостаткам также можно отнести частую выдачу запросов на осуществление какой-либо операции: ответы на вопросы отнимают у пользователя много времени и действуют ему на нервы. При установке некоторых антивирусов-фильтров могут возникать конфликты с другими резидентными программами, использующими те же прерывания, которые просто перестают работать.

Наибольшее распространение в нашей стране получили программы-детекторы,а вернее программы, объединяющие в себе детек - тор и доктор. Наиболее известные представители этого класса- -Aidstest, Doctor Web, MicroSoft AntiVirus далее будут рас - смотрены подробнее. Антивирусы-детекторы расчитаны на конк - ретные вирусы и основаны на сравнении последовательности кодов содержащихся в теле вируса с кодами проверяемых программ.

Такие программы нужно регулярно обновлять, так как они быстро устаревают и не могут обнаруживать новые виды вирусов. Ревизоры - программы, которые анализируют текущее состоя - ние файлов и системных областей диска и сравнивают его с информацией, сохранённой ранее в одном из файлов данных ре - визора. При этом проверяется состояние BOOT-сектора, таб - лицы FAT, а также длина файлов, их время создания, атри - буты, контрольная сумма. Анализируя сообщения программы-ре - визора, пользователь может решить, чем вызваны изменения: вирусом или нет. При выдаче такого рода сообщений не следует предаваться панике, так как причиной изменений, например, длины программы может быть вовсе и не вирус.Самые изощренные антивирусы - вакцинаторы. Они записывают в вакцинируемую программу признаки конкретного вируса так, что вирус считает ее уже зарaженной.Таким образом, вирус не может заразить эту программу. Вакицины могут быть пассивные и активные.

Пассивная вакцина представляет собой пакетную программу, которая за один вызов обрабатывает специальным образом файл или все файла на диске либо в каталоге .Обычно при такой обработке проставляется признак,который вирус использует для того, чтобы отличить зараженные программы от незараженных. Hапример, некоторые вирусы дописывают в конец зараженных файлов определенную строку. Если искусственно дописать в конец всех программ эту строку, то такие программы не будут заражаться вирусом, поскольку он будет считать, что они уже заражены.Обработанная таким образом программа является вак - цинированной против данного вируса, при чeм операция вакци - нации является обратимой: когда опасность заражения будет ликвидированна, строку можно из файла удалить. Другие вирусы проставляют в поле даты заражаемых программ значение секунд, равное 62(MS-DOS допускает запись такого явно нереального значения).

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

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

Конечно,приведенный список не исчерпывает всего многообразия антивирусных программ, хотя и охватывает основые их разно - видности. Каждая из антивирусных программ подобна узкому специалисту в определенной области, поэтому оптимальной тактикой является комплексное применение нескольких типов ан - тивирусных средств.

А теперь немного о некоторых антивирусах.

AIDSTEST

В нашей стране, как уже было сказано выше, особую популярность приобрели антивирусные программы, совмещающие в себе функции детекторов и докторов. Самой известной из них явля - ется программа AIDSTEST Д.Н.Лозинского. В России практически на каждом IBM-совместимом персональном компьютере есть одна из версий этой программы. Одна из последняя версия обнаруживает более 1100 вирусов.

Aidstest для своего нормального функционирования требует, чтобы в памяти не было резидентных антивирусов, блокирующих запись в программные файлы, поэтому их следует выгрузить, либо указав опцию выгрузки самой резидентной программе, либо воспользоваться соответствующей утилитой ( например в Волков Коммандере для этих целей есть специальный пункт в меню).

При запуске Aidstest проверяет себя оперативную память на наличие известных ему вирусов и обезвреживает их. При этом парализуются только функции вируса, связанные с размножением,

а другие побочные эффекты могут оставаться. Поэтому прог - рамма после окончания обезвреживания вируса в памяти выдает запрос о перезагрузке. Следует обязательно последовать этому совету, если оператор ПЭВМ не является системным програм - мистом, занимающимся изучением свойств вирусов. При чем следует перезагрузиться кнопкой RESET, так как при "теплой пе - резагрузке" некоторые вирусы могут сохраняться. В добавок, лучше запустить машину и Aidstest с защищенной от записи дискеты, так как при запуске с зараженного диска вирус может записаться в память резидентом и препятствовать лечению.

Aidstest тестирует свое тело на наличие известных вирусов, а также по искажениям в своем коде судит о своем заражении неизвестным вирусом. При этом возможны случаи ложной тревоги,

например при сжатии антивируса упаковщиком.

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

Как показала практика, самый оптимальный режим для ежедневной работы задается ключами /g (проверка всех файлов, а не только с расширением EXE,COM,SYS) и /s (медленная проверка). Увеличивание времени при таких опциях практически не ощутимо (полностью "забитый" жесткий диск емкостью 270 Мегобайт на машине с процессором 486DX2 тестируется меньше минуты), зато вероятность обнаружения на порядок выше.

DOCTOR WEB

В последнее время стремительно растет популярность другой антивирусной программы - Doctor Web. Dr.Web также, как и Aidstest относится к классу детекторов - докторов, но в от - личие от последнего имеет так называемый "эвристический анализатор" - алгоритм, позволяющий обнаруживать неизвестные вирусы. "Лечебная паутина", как переводится с английского название программы,стала ответом отечественных программистов на нашествие самомодифицирующихся вирусов-мутантов, которые при размножении модифицируют свое тело так, что не остается ни одной характерной цепочки байт, присутствовавшей в исходной версии вируса. Dr.Web можно назвать антивирусом нового поколения по сравнению с Aidstest и его аналогами. В пользу этой программы говорит тот факт, что крупную лицензию ( на 2000 компьютеров) приобрело Главное управление информацион - ных ресурсов при Президенте РФ, а второй по величине покупатель "паутины" - "Инкомбанк".

Управление режимами также как и в Aidtest осуществляется с помощь ключей. Пользователь может указать программе тести - ровать как весь диск, так и отдельные подкаталоги или группы файлов, либо же отказаться от проверки дисков и тестировать только оперативную память. В свою очередь можно тестировать либо только базовую память,либо, вдобавок, ещe и расширенную (указывается с помощью ключа /H ).

AVSP

(Anti-Virus Software Protection)

Интересным программным продуктом является антивирус AVSP. Эта программа сочетает в себе и детектор,и доктор,и ревизор, и даже имеет некоторые функции резидентного фильтра( запрет записи в файлы с атрибутом READ ONLY).Антивирус может лечить как известные так и неизвестные вирусы, при чем о способе лечения последних программе может сообщить сам пользователь. К тому же AVSP может лечить самомодифицирующиеся и стелс-вирусы (невидимки). В состав пакета AVSP входит также резид - ентный драйвер AVSP.SYS, который позволяет обнаруживать большинство невидимых вирусов, дезактивировать вирусы на время своей работы, а также запрещает изменять READ ONLY файлы. ONLY будет снят. Поставить файлы под защиту можно клавишей F7. Еще одна функция AVSP.SYS - отключение на время работы AVSP.EXE резидентных вирусов, правда вместе с вирусами драйвер отключает и некоторые другие резидентные программы. Конечно, полностью все возможности программы реализуются в руках человека, знакомого с ассемблером и системным программированием. В AVSP имеется возможность просмат - ривать файлы в разных форматах. При входе в режим просмотра на экран выводятся две колонки: слева содержимое просматри - ваемого файла в виде шестнадцатиричных кодов, а справа - в виде ASCII-кодов. Кроме того выводится полезная системная информация, которая поможет при написании процедуры удаления вируса. Передвигая курсор,можно перейти на любой адрес, есть также функции поиска шаблонов, сравнения файлов. Можно установить, в каком формате будет просматриваться, например, заголовок: как у EXE-файла, SYS-файла или в формате загру - зочного сектора. При этом хорошо реализован сам просмотр заголовка: его системные ячейки представлены в виде таблицы: слева значение ячейки, справа - пояснение.

Еще одной полезной функцией является встроенный дизассемблер. С его  помощью  можно  разобраться есть ли в файле вирус или при  проверке  диска  произошло  ложное  срабатывание  AVSP. Кроме того можно попытаться выяснить способ заражения, принцип действия вируса, а также место, куда он  "спрятал"  за - мещeнные  байты  файла (если мы имеем дело с таким типом вируса). Все это позволит написать процедуру удаления вируса и восстановить запорченные  файлы. Для полного счастья нехва - тает только трассировщика,хотя в неумелых руках такая функция может привести к заражению ещe большего колличества данных. Еще одна полезная функция - выдача наглядной карты изменений. Особенно  ясно я это понял, когда у меня возникло подозрение в отношении одного из файлов (который не  должен был,  вроде бы,  меняться). Карта  изменений  позволяет  оценить, соот - ветствуют  ли  эти  изменения вирусу или нет, а также сузить область  поиска  тела  вируса при дизассемблировании. При еe построении красный прямоугольник используется для изображе - ния изменeнного блока, синий - неизменeнного, а прозрачный -

- нового.

Если есть подозрение, что в систему забрался Stealth-вирус, можно запустить AVSP с параметром /D с жесткого диска, а затем загрузиться с чистой системной дискеты и запустить AVSP без параметров. Если результаты проверки контрольных сумм отличаются в обоих случаях, то подозрения оправданы. В программе AVSP есть два алгоритма нейтрализации "невидимок" и оба они работают только при наличии активного вируса в памяти.

Microsoft Antivirus

В состав современных версий MS-DOS (например 6.22) входит антивирусная программа Microsoft Antivirus (MSAV). Этот ан - тивирус может работать в режимах детектора - доктора и ревизора. MSAV имеет дружественный интерфейс в стиле MS-Windows. При запуске проверки диска (как в режиме удале - ния, так и без него) программа сначала сканирует память на наличие известных ей вирусов. При этом выводится индикация проделанной работы в виде цветной полоски и процента выпол - ненной работы. После сканирования памяти MSAV принимается за проверку непосредственно диска.

ADINF

(Advanced Diskinfoscope)

ADinf относится к классу программ-ревизоров. Антивирус имеет высокую скорость работы, способен с успехом противостоять вирусам, находящимся в памяти. Он позволяет контролировать диск, читая его по секторам через BIOS и не используя сис - темные прерывания DOS, которые может перехватить вирус. Программа ADinf получила первый приз на Втором Всесоюзном конкурсе антивирусных программ в 1990 году, а также второй приз на конкурсе Borland Contest'93.

В отличие от AVSP, в котором пользователю приходится самому анализировать, заражена ли машина стелс-вирусом, загружаясь сначала с винчестера, а потом с эталонной дискеты, в ADinf эта операция происходит автоматически. Это происходит благодаря оригинальному алгоритму противодействия этим вирусам- -"невидимкам", суть которого заключается в том, что сначала диск читается непосредственно через BIOS,а потом - с помощью DOS. Если информация будет отличаться,то в системе стелс-вирус. ADinf был единственным антивирусом, который летом 1991 года обнаружил вирус DIR, построенный на принципиально новом способе заражения и маскировки.Для лечения заражeнных файлов применяется модуль ADinf Cure Module, не входящий в пакет ADinf и поставляющийся отдельно. Принцип работы модуля -

- сохранение небольшой базы данных, описывающей контролируемые файлы. Работая совместно, эти программы позволяют обна - ружить и удалить около 97% файловых вирусов и 100% вирусов в загрузочном секторе.

В отличие от других антивирусов Advansed Diskinfoscope не требует загрузки с эталонной, защищeнной от записи дискеты. При загрузке с винчестера надежность защиты не уменьшается. ADinf имеет хорошо выполненный дружественный интерфейс, который в отличие от AVSP реализован не в текстовом, а в графическом режиме. Программа работает непосредственно с видео-памятью, минуя BIOS, при этом поддерживаются все гра - фические адаптеры. Наличие большого колличества ключей поз - воляет пользователю создать максимально удобную для него конфигурацию системы. Можно установить, что именно нужно контролировать: файлы с заданными расширениями, загрузочные сектора, наличие сбойных кластеров, новые файлы на наличие стелс-вирусов, файлы из списка неизменяемых и т.д. По своему желанию пользователь может запретить проверять некоторые каталоги (это нужно, если каталоги являются рабочими и в них всe время происходят изменения). Имеется возможность изменять способ доступа к диску (BIOS, Int13h или Int25h/26h), редактировать список расширений проверяемых файлов, а также назначить каждому расширению собственный вьюер, с помощью которого будут просматриваться файлы с этим расширением.

При инсталяции ADinf в систему имеется возможность изменить имя основного файла ADINF.EXE и имя таблиц, при этом пользователь может задать любое имя. Это очень полезная функция, так как в последнее время появилось множество вирусов, "охотящихся" за антивирусами (например, есть вирус, который изменяет программу Aidstest так,что она вместо заставки фирмы "ДиалогНаука" пишет: "Лозинский - пень"), в том числе и за ADinf.

Полезной функцией является возможность работы с DOS не выходя из программы. Это бывает полезно, когда нужно запустить внешний антивирус для лечения файла, если у пользователя нет лечащего блока ADinf Cure Module.

Еще одна интересная функция - запрещение работы с системой при обнаружении изменений на диске. Эта функция полезна, когда за терминалами работают пользователи, не имеющие ещe большого опыта в общении с компьютером.Такие пользователи по незнанию или по халатности могут проигнорировать сообщение ADinf и продолжить работу как ни в чeм не бывало, что может привести к тяжeлым последствиям. Если же установлен ключ -Stop в строке вызова ADinf AUTOEXEC.BAT, то при обнаружении изменений на диске программа потребует позвать системного программиста, обслуживающего данный терминал, а если пользователь нажмет ESC или ENTER, то система перезагрузится и все повторится снова.И всe же эта функция продумана не до конца, так как продолжение работы возможно при нажатии клавиши F10. Ведь большинство пользователей, даже если они впервые сели за компьютер, даже при минимальном на то желании смогут продолжить работу, воспользовавшись "правилом научного тыка", то есть нажав на все клавиши подряд. Для повышения надeжности защиты от таких пользователей следовало бы ввести хотя бы какой-нибудь простенький пароль.

Принцип работы ADinf основан на сохранении в таблице копии MASTER-BOOT и BOOT секторов, список номеров сбойных класте - ров, схему дерева каталогов и информацию о всех контролируемых файлах. Кроме того, программа запоминает и при каждом запуске проверяет, не изменился ли доступный DOS объем оперативной памяти (что бывает при заражении большинством загрузочных вирусов), количество установленных винчестеров, таблицы параметров винчестера в области переменных BIOS.

При первом запуске программа запоминает объем оперативной памяти, находит и запоминает адрес обработчика прерывания Int 13h в BIOS, который будет использоваться при всех последующих проверках, и строит таблицы для проверяемых дисков. При этом проверяется, показывал ли вектор прерывания 13h в BIOS перед загрузкой DOS. При последующих запусках ADinf проверяет объем оперативной памяти, доступной DOS, переменные BIOS, загрузочные сектора, список номеров сбойных кластеров (так как некоторые вирусы, записавшись в кластер, помечают его, как сбойный,чтобы их не затeрли другие данные, а также не обнаружили примитивные антивирусы). К тому же антивирус ищет вновь созданные и уничтоженные подкаталоги,новые, удаленные, переименованные, перемещeнные и изме - нившиеся файлы ( проверяется изменение длины и контрольной суммы ). Если ADinf обнаружит, что, изменился файл из списка неизменяемых, либо в файле произошли изменился без изменения даты и времени, а также наличие у файла cтранной даты ( число больше 31, месяц больше 12 или год больше текущего ) или времени ( минут больше 59, часов больше 23 или секунд больше 59 ), то он выдаст предупреждение о том, что возможно заражение вирусом.

Если обнаружены изменения BOOT-секторов, то можно в режиме диалога сравнить системные таблицы, которые были до и после изменения, и по желанию восстановить прежний сектор. После восстановления измененный сектор сохраняется в файле на диске для последующего анализа. Новые сбойные кластеры (вернее информация о них в FAT) могут появиться после запуска какой-либо утилиты, лечащей диск ( например NDD ) или благодаря действиям вируса. Если ADinf выдал сообщение,

а пользователь не запускал никаких подобных утилит, то скорее всего в компьютер забрался вирус. При получении такого сооб - щения следует продолжить проверку, внимательно следя за всеми сообщениями об изменениях файлов и загрузочных секторов. Если в системе действительно вирус, то такие сообщения не заставят себя долго ждать(ведь если все тело вируса будет находиться в "сбойном" кластере, ему никогда не передастся управление). 

СВОДНАЯ ТАБЛИЦА ОПИСАННЫХ АНТИВИРУСНЫХ ПРОГРАММ

ИМЯ

AIDSTEST

DR.WEB

AVSP

ADINF

MSAV



Фильтр























Доктор























Ревизор























Детектор





















Поддержка мыши

-

+

+

+

+

Оконный интерфейс

-

+

+

+

+

Обнаружение Stealth вирусов

-

-

+

+

+

Обнаружение

неизвестных

вирусов

-

+

+

+

+

Время работы при задании соответств.

режимов

/g/s

/a/s2/v

/o/u

каче

ство

*

все

файлы

по ум-

олчанию

по умол-

чанию, с

контрол.

суммами



2.5 мин

23мин

4-11

мин

1 мин

1мин

20 сек

Сноски таблицы:

* - Файлы с расширениями com,exe,ov?,bin,sys.

ПОСЛЕСЛОВИЕ

На мой взгляд, из всех отечественных программ, рассмотренных здесь ADinf является самой полной, логически завершенной антивирусной системой. Остальные программы находятся, как бы в стадии развития. Программы-фаги, в принципе, не могут достигнуть логического завершения, так как должны развиваться, чтобы противостоять новым вирусам, хотя Dr.Web уже пошел по пути усовершенствования интерфейса. Высок потенциал у программы AVSP, которая при соответствующей доработке ( уп - рощении алгоритмов поиска стелс-вирусов, введении низкоуровневой защиты, улучшении интерфейса ) может занять высокие позиции в среде антивирусов.

СПИСОК ЛИТЕРАТУРЫ

1. В.Э.Фигурнов "IBM PC для пользователя". 1993 г.

2. Ф.Файтс, П.Джонстон, М.Кратц "Компьютерный вирус: проблемы и прогноз". 1993 г.

3. Н.Н.Безруков "Классификация компьютерных вирусов MS-DOS и методы защиты от них". 1990 г.

6. Документации на антивирусные программы.

7. Собственный опыт.