и, возможно, обычные файлы ( чаще всего 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 ).