файловых вирусов, дописывающих свое тело в конец COM-файла, можно
рассматривать как вырожденный сегмент. Бутовый вирус всегда состо-
ит из нескольких сегментов. Обычно таких сегментов два и мы будем
называть их головой и хвостом.
Положение головы бутового вируса на дискете определено однознач-
но: она всегда расположена в бутсекторе и занимает ровно сектор.
На винчестере ситуация немного сложнее: голова бутового вируса мо-
жет располагаться в одном из его двух бутсекторов - главном (MBR -
Master Boot Record, расположенный по абсолютному дисковому адресу
0/0/1) или бутсекторе логического диска С, обычно занимающего пер-
вый сектор соответствующего логического диска. Для наиболее рас-
пространенных 40 M винчестеров это обычно абсолютный сектор 18
(при 17 секторах на трек его адрес равен 1/0/1).
Хвост бутового вируса может располагаться в разных местах, на-
пример: кластерах, отмеченных на диске как сбойные и тем самым ис-
ключенных из дальнейшего распределения (псевдосбойные кластеры);
последних физических секторах дискеты или винчестера, поскольку
они обычно всегда свободны (например, 40/39/8 для обычных 360К ди-
скет); в неиспользуемых блоках FAT, главного каталога или одного
из подкаталогов; дополнительных дорожках дискеты или винчестера
(41 и последующие дорожки для 360К дискет).
В любом случае хвост вируса должен содержать копию оригинального
бутсектора, и если она хранится не в закодированном виде, то поло-
жение хвоста в большинстве случаев можно определить глобальным
контекстным поиском по дискете или винчестеру (исключением являет-
ся случай использования для хвоста дополнительных дорожек на дис-
кете или винчестере). В минимальном варианте хвост может состоять
только из одного сектора с оригинальным бутсектором.
Для всех бутовых вирусов механизм заражения однотипен. Когда MS
DOS загружается с зараженного диска, бутовый вирус получает управ-
ление и сначала копирует себя в старшие адреса памяти. Затем он
уменьшает размер памяти, заменяя значение вектора прерываний A2h с
тем, чтобы защитить резидентную часть вируса, и 13h с тем, чтобы
перехватывать обращения к диску. Таким образом, при любом обраще-
нии к диску управление получает обработчик этого прерывания, со-
ставляющий основную часть тела вируса. После этих действий вирус
запускает стандартный системный загрузчик, который загружает
IBMBIO.COM и IBMDOS.COM (или IO.SYS и MSDOS.SYS), т.е. происходит
стандартная загрузка системы.
Получив управление по прерыванию по чтению, вирус анализирует,
относится ли оно к дискете или к винчестеру. Если это прерывание
относится к дискете, то сначала вирус проверяет, заражена уже дан-
ная дискета или нет. Для этой цели считывается бутсектор и прове-
ряется его содержимое. Если дискета еще не заражена, то вирус за-
ражает дискету, а затем обрабатывает команду READ. В случае, если
дискета уже заражена, вирус сразу переходит к обработке команды
READ; так же он поступает в случае, если дискета защищена от запи-
си.
Что касается места, в котором бутовый вирус прячет свой хвост,
то как было отмечено выше, оно различается от вируса к вирусу.
Наиболее часто бутовые вирусы размещают свой хвост в свободном
кластере(ах), который помечается как сбойный. Последнее необходимо
для того, чтобы занятый вирусом кластер(ы) не был использован MS
DOS при создании нового файла и вместе с тем является неплохим ме-
тодом маскировки, поскольку пользователи обычно плохо представляют
структуру диска и не следят за количеством сбойных кластеров на
нем.
Еще раз подчеркнем, что бутовые вирусы инфицируют любые дискеты,
а не только системные. Как уже указывалось, это связано с тем, что
с несистемной дискеты также может выполняться попытка загрузки MS
DOS. Чаще всего такая ситуация возникает после зависания операци-
онной системы. Если при перезагрузке инфицированная дискета ока-
жется в "готовом" дисководе А, то естественно, загрузка будет сна-
чала выполняться с нее. В этом случае программа начальной загрузки
считывает зараженный ВООТ и передает ему управление. Вирус загру-
жает себя в оперативную память и имитирует сообщение, выдаваемое в
этом случае стандартным загрузчиком:
Non system disk
При этом, если пользователь откроет дисковод с дискетой и нажмет
клавишу Enter (Ввод), то вирус останется в памяти, заразит винче-
стер и в дальнейшем будет заражать все вставляемые дискеты, к ко-
торым производится хотя бы одно обращение (достаточно команды
DIR). Все бутовые вирусы перехватывают 13 прерывание (см. прил. 8)
и поэтому обычно конфликтуют с драйверами, поддерживающими нестан-
дартные форматы (например, 720 K). В лучшем случае при этом проис-
ходит зависание системы или выдача сообщения о делении на нуль. В
худшем случае операционная система остается работоспособной, на
дискету что-то пишется, но потом ничего прочитать с нее нельзя.
Особое внимание стоит обратить на тот факт, что некоторые бутовые
вирусы перехватывают прерывание с клавиатуры и могут пережить в
оперативной памяти мягкую перезагрузку (т.е. перезагрузку с по-
мощью нажатия клавиш Ctrl-Alt-Del). Из выявленных в CCCР вирусов к
этому типу относится вирус WM-1F (Joshy).
Как уже отмечалось, голова бутового вируса всегда находится в
бутсекторе и для контроля дискет на зараженность можно просто про-
смотреть содержимое бутсектора. В целом даже это не является необ-
ходимым. Поскольку подавляющее большинство дискет не является за-
гружаемыми, можно профилактически разрушать содержимое бутсектора
таких дискет. В частности, там можно хранить информацию о времени
и источнике получения дискеты или какие-то указания по ее исполь-
зованию. Достаточно разрушить первые три байта бутсектора, чтобы
нейтрализовать любой бутовый вирус. Это можно сделать с помощью
программ Norton Utilitis, PC Tools и DEBUG. Для профилактического
разрушения бутсектора можно использовать специальную утилиту, на-
пример, DEBOOT В.Пономаренко.
Следует отметить, что число известных чисто бутовых вирусов на-
много меньше, чем файловых и, кроме того, скорость их размножения
ниже (число дискет заведомо меньше, чем количество файлов на них).
В целом, заражение "чистым" бутовым вирусом является признаком
беспечности и недостаточной квалификации пользователя в значитель-
но большей степени, чем заражение файловым вирусом. При соблюдении
приведенных выше несложных рекомендаций его можно полностью исклю-
чить.
2.5. Панацеи не существует
(общая классификация средств защиты)
"Специалист подобен флюсу,
полнота его одностороння"
Козьма Прутков
Операционная система MS DOS, отличающаяся практически полным от-
сутствием защиты от несанкционированных действий, облегчает разра-
ботку компьютерных вирусов. Однако важно понимать, что компьютер-
ные вирусы не являются программами, использующими ошибки или недо-
статки конкретной операционной системы. Для обеспечения своего
функционирования вирусу достаточно лишь нескольких вполне обычных
операций, используемых большинством нормальных программ. Поэтому
принципиально не может существовать универсальный метод, защищаю-
щий операционную систему от распространения любого вируса. Тем не
менее, можно существенно затруднить задачу создания вируса, приме-
няя специальные методы как в самой операционной системе, так и ис-
пользуя дополнительные резидентные и нерезидентные средства защи-
ты.
Простейшим средством защиты от вируса является программа, позво-
ляющая составить список зараженных программ. Мы будем называть та-
кую программу детектором. В качестве детектора могут использовать-
ся и имеющиеся программы, способные выполнять поиск строки в файле
или, желательно, в файлах на заданном диске или каталоге. Детектор
может быть и резидентным. В этом случае после загрузки программы
он проверяет ее на зараженность и, только если вирус не обнаружен,
передает ей управление.
Вторым и наиболее распространенным средством защиты от вирусов
являются так называемые фаги є программы, "выкусывающие" вирус из
зараженной программы и тем самым восстанавливающие ее в виде,
близком к первоначальному. Операция выкусывания не всегда бывает
успешной. Фаги также могут быть резидентными, однако из-за значи-
тельного объема резидентные фаги встречаются редко.
Третьим видом антивирусных программ являются резидентные про-
граммы, контролирующие подозрительные действия запускаемых про-
грамм и блокирующие их либо "молча", либо выдавая сообщение поль-
зователю, который может разрешить действие или запретить (в по-
следнем случае программа, предпринявшая опасное действие, может
закончиться аварийно). Будем называть такие программы сторожами.
При этом дисковые драйверы, обеспечивающие возможность сегментации
винчестера и присваивания отдельным разделам статуса READ ONLY,
можно рассматривать как специальную разновидность сторожей.
Четвертый тип є это программы-ревизоры, которые подсчитывают
контрольные суммы и другие параметры файлов и сравнивают их с эта-
лонными. Последние обычно хранятся в отдельном файле. Этот вид
контроля представляется наиболее надежным, т.к. при отсутствии в
оперативной памяти резидентного компьютерного вируса позволяет вы-
явить все измененные программы независимо от причины, вызвавшей
эти изменения. Подобно остальным типам программ ревизоры могут
быть резидентными. Последние загружают в память программу, подсчи-
тывают ее контрольную сумму и, если она совпадает с записанной в
специальном поле файла или элемента каталога данного файла, то пе-
редают ей управление. В противном случае выдается предупреждающее
сообщение, и выполнение программы блокируется. Следует отметить,
что если записать зараженную программу в файловую систему, все ос-
тальные файлы которой систематически контролируются ревизором, то
наличие вируса может быть выявлено по заражению других программ
для большинства, но не для всех типов вирусов. Поэтому очень важ-
но, чтобы в момент запуска программы-ревизора было достоверно из-
вестно, что в оперативной памяти нет резидентного вируса. Этого
можно достичь, загрузившись с эталонной, защищенной от записи, ди-
скеты или разместив все компоненты операционной системы в разделе
винчестера, имеющего статус READ ONLY. Более подробно вопросы при-
менения антивирусных средств рассмотрены в главе 10.
И, наконец, наиболее изощренным типом антивирусных программ яв-
ляются так называемые вакцины. Подобно естественным вакцинам они
изменяют среду функционирования вируса таким образом, что он теря-
ет способность к размножению. Вакцины могут быть пассивные или ак-
тивные.
Пассивная вакцина представляет собой пакетную программу, которая
за один вызов обрабатывает специальным образом файл или все файлы
на диске либо в каталоге. Обычно при такой обработке проставляется
признак, который вирус использует для того, чтобы отличить зара-
женные программы от незараженных. Например, некоторые вирусы допи-
сывают в конец зараженных файлов определенную строку (скажем,
"MsDos"). Если искусственно дописать в конец всех программ эту
строку, то такие программы не будут заражаться вирусом, поскольку
он будет считать, что они уже заражены. Обработанная таким образом
программа является вакцинированной против данного вируса, причем
операция вакцинации является обратимой: когда опасность заражения
будет ликвидирована, строку можно из файла удалить. Другие вирусы
проставляют в поле даты заражаемых программ значение секунд, рав-
ное 62 (MS DOS допускает запись такого явно нереального значения).
Вакцина может проставить этот признак у всех выполняемых программ,