


                   2. ОБЩИЕ ПРИНЦИПЫ ФУНКЦИОНИРОВАНИЯ
                          КОМПЬЮТЕРНЫХ ВИРУСОВ

                                           Не стоит слишком мучать себя
                                           вопросом: "Как это возможно?"
                                                               Р.Фейнман

   Уже в  середине 60-х  гг. разработчики и пользователи обнаружили, что
системы разделения времени весьма уязвимы с точки зрения возможности до-
ступа к  чужим данным  и программам  посторонних лиц, и начали принимать
меры защиты  против "непрошенных гостей". Доверие к той или иной компью-
терной системе  фактически означает  доверие по  отношению к тем, кто ее
разработал, и  тем, кто  ею пользуется. Эксперты по безопасности компью-
терных систем часто подчеркивают, что эти проблемы в значительной степе-
ни являются  социальными проблемами.  В программировании, как и в других
сферах человеческой  деятельности, появилась и развивается преступность.
Вирусы являются  только частью  проблемы компьютерной преступности, и их
правильнее всего  рассматривать в этом, более общем контексте. Современ-
ные персональные компьютеры, в действительности не обеспечивают безопас-
ность информации,  поскольку любой,  кто имеет доступ к компьютеру может
изменять, читать или копировать данные. Поэтому наряду с различными спе-
цифическими методами защиты от вирусов, важное значение имеют традицион-
ные методы защиты информации с которыми можно познакомиться по учебникам
[Хоффман80, Сяо82].

   Рассмотрение вирусов начнем с их исторических предшественников -- про-
грамм вандалов и троянских программ.



                         2.1. Программы-вандалы

                                                 "Homo homini lupus est"
                                                 (Человек человеку волк)
                                                                   Плавт

   Класс программ, направленных на причинение вреда пользователям, часто
обозначают термином  "Badware", по  аналогии с  тем, что для обозначения
программного обеспечения  обычно используется термин "Software". На рус-
ский язык  этот термин  иногда переводится "калькой" софтвер, который не
прижился из-за  своей неблагозвучности.  Мне кажется,  что в технической
литературе отдельные  общепринятые иностранные  слова можно использовать
без перевода.  Badware включает  ряд подклассов,  среди которых наиболее
распространенными являются троянские программы и компьютерные вирусы.



                        2.2. Троянские программы

                                                  "O tempora, o mores !"
                                                  (О времена, о нравы !)
                                                                 Цицерон

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

   Троянские программы-вандалы обычно выполняют или имитируют выполнение
какой-нибудь полезной  или экзотической функции. При этом в качестве по-
бочного эффекта  они стирают файлы, разрушают каталоги, форматируют диск
и т.д.  Иногда разрушительный  код встраивается в какую-нибудь известную
программу. Чтобы привлечь пользователей, полученная троянская программа-
вандал часто маскируется под новую версию данного программного продукта.
   С появлением  BBS программы-вандалы получили значительное распростра-
нение. При  этом техно-крыса  подсовывает программу в один или несколько
BBS, пользователи  которых затем "попадаются на удочку". В качестве при-
мера  троянской  программы-вандала  можно  привести  программу  SURPRISE
("Сюрприз"). Написанная на Бейсике, она исполняла команду DEL *.*, а за-
тем выдавала  на экран  строку "Surprise  !". И  таких простых и злобных
программ создано немало. С их распространением запуск новой программы на
компьютере стал небезопасной операцией.

   Иногда в  качестве самостоятельной  разновидности троянских программ-
вандалов выделяют  так называемые логические мины (logic bomb) -- скрытые
модули, встроенные  в ранее разработанную и широко используемую програм-
му. Такой  модуль является  безвредным до определенного события, при на-
ступлении которого  он срабатывает. Такого рода программы иногда исполь-
зуются уволенными или обиженными сотрудниками как форма мести по отноше-
нию к  нанимателю. Частный случай логических мин, в которых срабатывание
скрытого модуля  определяется временем,  часто называют минами с часовым
механизмом (time  bomb). Фактически  логические мины  являются средством
компьютерного саботажа,  и их  создание должно предусматривать уголовную
ответственность. Хотя,  как указано  выше, компьютерный  саботаж  обычно
связан с  "местью" обиженных  или уволенных программистов своему бывшему
работодателю, он может использоваться и как форма конкурентной борьбы.

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

   Программы, обеспечивающие  вход в  систему или получение привилегиро-
ванной функции  (режима работы) в обход существующей системы полномочий,
называют люками (back door). Люки часто оставляются разработчиками соот-
ветствующих компонент операционной системы для того, чтобы завершить те-
стирование или  исправить какую-то ошибку, но нередко продолжают сущест-
вовать и  после того,  как то, для чего они планировались, завершено или
необходимость в нем отпала. Например, в операционной системе ОС ЕС широ-
ко использовалcя люк NewPSW, позволявший программе пользователя получить
привилегированный режим, называемый в серии 360/370 режимом супервизора,
в обход средств контроля операционной системы.

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



                        2.3. Компьютерные вирусы

                                      "Да он-то как вперед пробрался ?"--
                                      "За хвостик тетеньки держался !"
                                                                И.Франко

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

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

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

+----------------+  +-------------+ +----------------+
|++++++++++++++++|  |+++++++++++++| |++++++++++++++++|
|Команда перехода|+ |+++++++++++++| |Команда перехода|+
|++++++++++++++++|| |+Тело вируса+| |++++++++++++++++||
|----------------|| |+++++++++++++| |----------------||
|++++++++++++++++|| |+++++++++++++| |++++++++++++++++||
|+  ЗАРАЖЕННАЯ  +|| |+++++++++++++| |+   НАЧАЛО     +||
|++++++++++++++++|| |+++++++++++++| |++++++++++++++++||
|+  ПРОГРАММА   +|| |+++++++++++++| |+  ЗАРАЖЕННОЙ  +||
|++++++++++++++++|| |+++++++++++++| |++++++++++++++++||
|+ (COM - ФАЙЛ) +|| |+++++++++++++| |+  ПРОГРАММЫ   +||
|++++++++++++++++|| |+ЗАРАЖЕННАЯ +| |++++++++++++++++||
|++++++++++++++++|| |+++++++++++++| |++++++++++++++++||
|++++++++++++++++|+ |+ПРОГРАММА  +| |++++++++++++++++|+
|+++Тело вируса++|  |+++++++++++++| |++++++++++++++++|
|++++++++++++++++|  |+COM - ФАЙЛ)+| |+++Тело вируса++|
|++++++++++++++++|  |+++++++++++++| |++++++++++++++++|
|++++++++++++++++|  |+++++++++++++| |++++++++++++++++|
|Спрятанные байты|  |+++++++++++++| |Спрятанные байты|
|++++++++++++++++|  |+++++++++++++| |++++++++++++++++|
|++++++++++++++++|  |+++++++++++++| |++++++++++++++++|
+----------------+  +-------------+ |----------------|
       а                   б        |++++++++++++++++|
                                    |+    КОНЕЦ     +|
 Рис. 2.  Схема заражения           |++++++++++++++++|
  вирусом COM-файлов:               |+  ЗАРАЖЕННОЙ  +|
  а - в конец программы;            |++++++++++++++++|
  б - в начало программы;           |+  ПРОГРАММЫ   +|
  в - в середину программы.         |++++++++++++++++|
                                    +----------------+
                                            в



                   2.4. Анатомия компьютерного вируса

   Наиболее распространенными типами компьютерных вирусов в MS DOS явля-
ются файловые нерезидентные, файловые резидентные и бутовые вирусы. Мно-
гие из  пользователей имеют  ограниченный опыт  работы с MS DOS. В то же
время для  понимания функционирования  файловых вирусов и средств защиты
от них  важно понимать  структуру файловой  системы и прерываний MS DOS.
Поэтому в  прил. 4 приводится  краткий обзор  структуры файловой системы
MS DOS, в прил. 5 -- структуры исполняемых файлов и некоторых управляющих
блоков. Более подробные сведения можно получить в учебниках по языку ас-
семблера [Скенлон89], в электронном справочнике TechHelp, а также книгах
П.Нортона [Нортон90] и Жордена. Разбор анатомии компьютерных вирусов на-
чнем с анализа структуры нерезидентного файлового вируса, как простейшей
разновидности этого класса системных программ.

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


            2.4.1. Структура файлового нерезидентного вируса

   Файловые вирусы  являются  наиболее  распространенной  разновидностью
компьютерных вирусов.  Принципиально они  заражают любой тип исполняемых
файлов, существующих  в MS DOS:  COM, EXE,  OVL и  т.д. Однако основными
объектами заражения  являются файлы типа COM и файлы типа EXE. Некоторые
сведения о  структуре этих  файлов приведены  в прил. 5. Наиболее просто
осуществляется заражение  COM-файлов, которые  представляют собой  почти

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

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

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

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

   Шаг 1: Восстановить первые  три байта программы. Три байта зараженной
программы, сохраненные в теле вируса, пересылаются на свое старое место.

   Шаг 2: Проверить среду.  Проверить версию  операционной системы. Если
не подходящая, то перейти к шагу 11.

   Шаг 3: Найти очередную  жертву(ы). Найти в текущем каталоге очередной
файл типа COM. При неудаче перейти к шагу 11.

   Шаг 4: Проверить зараженность  потенциальной жертвы. Считать область,
позволяющую установить, заражен ли уже данный файл вирусом или нет. Про-
верить содержимое этой области. Если файл уже заражен, то перейти к шагу
3, иначе перейти к шагу 5.

   Шаг 5: Проверить, подходит  ли жертва для заражения. Если длина файла
+ длина вируса больше 64К, перейти к шагу 3, иначе перейти к шагу 6.

   Шаг 6: Снять атрибут  READ ONLY,  запомнить дату  создания программы.
Снять указанный  атрибут и запомнить в своем теле дату создания програм-
мы.

   Шаг 7: Обеспечить передачу управления вирусу. Считать первые три бай-
та зараженной программы и записать их в своем теле. Сформировать команду
перехода на байт, следующий за концом программы, и записать соответству-
ющие три байта в начало заражаемой программы. При неудаче перейти к шагу
11, иначе перейти к шагу 8.

   Шаг 8: Дописать тело вируса в конец заражаемой программы. Передвинуть
указатель файла  в конец  программы и установить режим дозаписи. Перепи-
сать свое  тело в конец заражаемой программы. При неудаче перейти к шагу
11, иначе перейти к шагу 9.

   Шаг 9: Восстановить дату  создания зараженной  программы. Записать  в
элемент каталога,  соответствующий заражаемой программе, дату, сохранен-
ную в теле вируса.

   Шаг 10: Восстановить атрибут  READ ONLY.  Присвоить заражаемому файлу
атрибуты, установленные  у файла до заражения и сохраненные в теле виру-
са. При неудаче перейти к шагу 11, иначе перейти к шагу 10.

   Шаг 11: Выход. Восстановить  содержимое регистров и передать управле-
ние программе-вирусоносителю.
   Как видно  из приведенной  схемы, данный  вирус  распространяется  не
мгновенно по всей файловой системе, а постепенно, по мере заражения фай-
лов в  текущем каталоге. Поэтому от момента появления в файловой системе
первого зараженного  файла до  заражения всех  файлов в  каталоге должно
пройти некоторое  время, зависящее  от интенсивности использования зара-
женной программы.

   Наиболее уязвимыми с точки зрения блокирования размножения вируса яв-
ляются шаг 6  (попытка снятия  атрибута READ  ONLY), шаги 7,8 -- запись в
файл, содержащий  исполняемую программу, и шаг 9 -- установка даты созда-
ния файла,  отличающейся от  текущей. Для блокирования этих шагов обычно
используются различные резидентные программы (см. ниже). Кроме того, ес-
ли на  шаге 4 вирус  использует для  маркировки зараженных  файлов легко
воспроизводимый признак  (например, простановку  в  поле  даты  значения
62 с -- излюбленный  признак для файловых вирусов), можно блокировать его
распространение, присвоив  этот признак  всем заражаемым  данным вирусом
файлам. Этот прием используется так называемыми программами-вакцинами.

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

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

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

   3) Вставка  в середину файла. Этот способ заражения файла встречается
редко. Во-первых, этот способ используется узкоспециализированными виру-
сами, поражающими определенный класс программ, особенности структуры ко-
торого заранее известны, например, только файл СOMMAND.COM. Примером та-
кого вируса  может служить вирус RC-0-346.Leh (Lehigh). Во-вторых, и это
более частый  случай, вставка  в середину  возможна путем перебрасывания
замещаемых блоков в конец файла. В частном случае, когда заражаемый файл
содержит области  нулей или  других повторяющихся  символов достаточного
размера, вставка  в середину  происходит без увеличения длины программы,
что затрудняет  обнаружение зараженных  файлов. Вставка в середину может
произойти и случайно. Например, это происходит для обычных вирусов, цеп-
ляющихся к  концу EXE-файла,  если в  заголовке заражаемого файла непра-
вильно указана его длина, т.е. часть файла используется в качестве буфе-
ра или  неявного оверлея,  как,  например,  в  головном  модуле  системы
FoxBase. В  этом случае вирус считает, что файл имеет длину, указанную в
заголовке, и  записывает свой код в область буфера или оверлея. При этом
он оказывается  в середине  действительно занимаемого  данной программой
файла. И,  наконец, файл  может быть заражен несколькими вирусами, одно-
типно заражающими  файл (обычно дописывающими свой код в конец файла). В
этом случае вирус, первым заразивший данный файл, оттесняется к середине
файла последующими  вирусами. Являясь  сравнительно  редкими,  указанные
случаи довольно  часто не учитываются создателями антивирусных программ,
в частности, детекторов и фагов, которые, увлекаясь оптимизацией времени
выполнения своих  программ, принимают "слишком сильные" допущения о рас-
положении кода вируса в теле зараженной программы. В результате файл мо-
жет быть не детектирован как зараженный или вылечен неправильно.

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


             2.4.2. Структура файлового резидентного вируса

   Для понимания  функционирования файлового вируса необходимо некоторое
знакомство с  системой прерываний  компьютера типа  IBM PC.  Hеобходимые
сведения приводятся в литературе (см., например, [Скенлон90]).

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

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

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

   Шаг 1: Проверить версию MS DOS

   Шаг 2: Восстановить измененные байты зараженной программы.

   Шаг 3: Проверить зараженность оперативной памяти. Если память зараже-
на, то передать управление программе-вирусоносителю, иначе перейти к ша-
гу 4.

   Шаг 4: Закрепиться в  оперативной памяти.  Переписать свое тело в за-
данный участок  оперативной памяти и выполнить некоторые действия по за-
креплению этого участка за собой.

   Шаг 5: Перехватить требуемые прерывания. Заменить адреса в соответст-
вующих элементах вектора прерываний на адреса своих программ обработки.

   Шаг 6: Передать управление зараженной программе.

   Приведем некоторые пояснения к упрощенной схеме инсталлятора файлово-
го вируса. На шаге 3 инсталлятор, подобно обычному файловому вирусу, ка-
ким-то образом  определяет зараженность оперативной памяти. Эта проверка
может выполняться  самыми разнообразными  способами. Одним  из  наиболее
распространенных является введение некоторого нового прерывания или фун-
кции существующего  прерывания. Инсталлятор выдает это прерывание, и по-
лучаемый ответ, например 5555 в регистре AX, играет роль сигнала "память
заражена" и  "память еще  не  заражена",  своеобразный  аналог  признака
"62 с" в  дате создания файла для нерезидентных файловых вирусов. Второй
способ состоит в сканировании памяти и поиске сигнатуры, характерной для
данного вируса.  Поиск может начинаться с определенной, характерной точ-
ки, например, с адреса перехватываемого вирусом прерывания (обычно 21h).
Могут быть использованы и другие способы или их комбинация.

   Если проверка  показала, что память еще не заражена, то на шаге 4 ви-
рус выполняет  ее заражение. Как уже указывалось, заражение может произ-
водиться как  путем записывания тела вируса на участок свободной памяти,
так и "вписыванием" тела в уже используемый участок. В первом случае ви-
рус должен  обеспечить резервирование этой памяти, чтобы она не была за-
терта другими  программами. Простейшие  вирусы выполняют  это с  помощью
функции 31h  (Keep) прерывания  21h или  используя прерывание 27h (TSR --
Terminate but  Stay Resident)  MS DOS. Такие  вирусы видны при просмотре
списка резидентных  программ утилитами  типа Map,  MemAnal и  т.д. Более
сложный способ  предполагает манипуляцию  с  цепочкой  блоков  MCB  (см.
прил.5): вирус сам создает дополнительный блок MCB для захваченного уча-
стка памяти.

   После закрепления  в оперативной памяти инсталлятор выполняет так на-
зываемый перехват  прерываний -- обеспечение  передачи управления модулям
вируса, обрабатывающим соответствующие прерывания. Это может делаться "в
лоб", т.е.  путем использования  соответствующих функций  MS DOS, или "с
черного хода" --  нестандартным способом, обеспечивающим, в общем случае,
более высокую  степень маскировки. При любом способе конечный эффект со-
стоит в том, что при возникновении определенного прерывания вирусу будет
передаваться управление.  При этом  вирус может содержать дополнительный
механизм, обеспечивающий  то, что  он будет  получать управление  всегда
первым. Такие  резидентные вирусы  будем называть всплывающими. Всплытие
помогает вирусу обходить простейшие программы-сторожа, основанные на пе-
рехвате тех же прерываний, поскольку они будут получать управление после
вируса. Этот  способ использует, в частности, вирус RCE-1800.DAV (Эдди).
Отсюда следует,  что анализ списка резидентных программ и объема памяти,
сообщаемого MS DOS,  является весьма  полезным диагностическим  приемом,
применимым как  при анализе  многих резидентных  файловых вирусов, так и
при анализе  бутовых вирусов.  Существует целый  ряд программ,  выдающих
список резидентных программ. Автор рекомендует использовать для этой це-
ли программу  Release, которая  являясь резидентной, не только позволяет
получить этот  список в любой момент, но дает возможность снять ненужные
резидентные программы. Сведения  об объеме оперативной  памяти (установ-
ленной  и  свободной)  можно,  например,  получить  с  помощью программы
CHKDSK, вxодящей  в MS  DOS (она  также выдает  очень важные сведения об
объеме па-  мяти, занятой  сбойными кластерами,  и о  количестве скрытых
файлов), хотя имеется целый ряд других программ с аналогичными функциями
(Map, MemAnal,  MemStat и  др). Для  пользователей Norton  Commander эту
информацию проще всего получить с помощью команды Ctrl-L.
   В случае наличия опасности  заражения вирусом полезно включить  вызов
CHKDSK в файл AUTOEXEC.BAT, а за ним поместить строку с данными, которые
получены при загрузке на незараженной системе, например:

              c:\dos\chkdsk
              echo ПРОВЕРЬТЕ СООТВЕТСТВИЕ ПОЛУЧЕННЫХ
              echo ПОЛУЧЕННЫХ ЗНАЧЕНИЙ ЭТАЛОННЫМ !
              echo 188416 in 8 hidden, 61440 in bad,
              pause 655360 totalmem, 515424 free memory

   Функционирование резидентного  файлового вируса можно представить как
две стадии: инсталляции и слежения. При запуске зараженной программы уп-
равление получает инсталлятор, который обеспечивает закрепление вируса в
оперативной памяти, перехват требуемых прерываний и, возможно, маскиров-
ку (с целью затруднить свое обнаружение среди резидентных программ). Эта
фаза работы  резидентного вируса  получила название  фазы инсталляции. В
дальнейшем каждый  раз при возникновении одного из перехваченных вирусом
прерываний управление  получает модуль обработки соответствующего преры-
вания. При  этом вирус может анализировать поступивший запрос и, в зави-
симости от  его вида, выполнять те или иные действия. Например, загрузка
программы в  оперативную память  и ее  выполнение в MS DOS реализованы с
помощью функции  24h прерывания 21h (Exec). Если вирус перехватывает это
прерывание, то  он может  определить имя  файла, из которого выполняется
загрузка, и заразить программу в этом файле.
   Следует также  отметить, что способ поиска "жертвы" у резидентных ви-
русов существенно  отличается от  способа, используемого  нерезидентными
вирусами. Нерезидентные  вирусы получают управление после загрузки в па-
мять зараженной программы, а затем ищут файл-жертву, используя параметры
PATH, СOMSPEC или другую информацию о расположении выполняемых программ.
Если жертва  найдена, то она заражается, а затем управление возвращается
зараженной программе.  Резидентные вирусы реагируют на определенные пре-
рывания. Получив  управление после перехваченного прерывания, они выпол-
няют соответствующие  действия. Как  уже указывалось, обычно резидентные
файловые вирусы выполняют заражение запускаемых программ (по функции 24h
прерывания 21h), однако наиболее инфицирующие из резидентных вирусов за-
ражают файлы и при их открытии или чтении. Например, вирус RCE-1800.DAV,
кроме указанных действий, перехватывает и прерывания по чтению, заражая,
в частности, оба файла, копируемые  командой COPY, если хотя бы  один из
них имеет расширение ЕХЕ или СОМ.


                    2.4.3. Структура бутового вируса

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

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

   Инфицированная дискета  всегда содержит  часть  кода  вируса  в  бут-
секторе, поэтому  бутовые вирусы  легко обнаружить.  При просмотре  бут-
сектора дискеты  на незараженном  компьютере легко  видеть изменения за-
грузчика (дамп  стандартного бут-сектора  приведен в  прил.5). Структура
стандартного загрузчика  лишь незначительно  меняется от версии к версии
MS DOS, поэтому  изменения легко выявить визуально (особенно первых трех
байтов, содержащих  команду JMP на начало загрузчика) или с помощью под-
ходящей программы  (Scan, Aidstest  и др.). Такая проверка должна обяза-
тельно проводиться для всех поступающих дискет.

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

   Положение головы  бутового вируса  на дискете  определено однозначно:
она всегда расположена в бут-секторе и занимает ровно сектор. На винчес-
тере ситуация немного сложнее: голова бутового вируса может располагать-
ся в одном из его двух бут-секторов -- главном (MBR -- Master Boot Record,
расположенном по абсолютному дисковому адресу 0/0/1) или бут-секторе ло-
гического диска С, обычно занимающего первый сектор соответствующего ло-
гического диска.  Для наиболее  распространенных  40 M  винчестеров  это
обычно абсолютный  сектор 18  (при 17  секторах на  трек его адрес равен
1/0/1).

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

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

   Для всех бутовых вирусов  механизм заражения однотипен. Когда  MS DOS
загружается с  зараженного диска,  бутовый вирус  получает управление  и
сначала копирует себя в старшие адреса памяти. Затем он уменьшает размер
памяти,  заменяя  значение  в  слове  0:413h  (40:13h),  которое   можно
получить,  вызвав  системную  функцию  int  12h,  с  тем, чтобы защитить
резидентную часть вируса, и 13h  с тем, чтобы перехватывать обращения  к
диску. Таким образом,  при любом обращении  к диску управление  получает
обработчик этого  прерывания, составляющий  основную часть  тела вируса.
После этих действий вирус запускает стандартный системный загрузчик, ко-
торый загружает IBMBIO.COM и  IBMDOS.COM (или IO.SYS и  MSDOS.SYS), т.е.
происходит стандартная загрузка системы.

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

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

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

                            Non system disk

   При этом, если пользователь откроет дисковод с дискетой и нажмет кла-
вишу Enter  (Ввод), то  вирус останется  в памяти, заразит винчестер и в
дальнейшем будет заражать все вставляемые дискеты, к которым производит-
ся хотя  бы одно обращение (достаточно команды DIR). Поскольку все буто-
вые вирусы  перехватывают прерывание 13h, они обычно конфликтуют с драй-
верами, поддерживающими нестандартные форматы (например, 720K). В лучшем
случае при  этом происходит зависание системы или выдача сообщения о де-
лении на  нуль. В худшем случае операционная система остается работоспо-
собной, на дискету что-то пишется, но потом ничего прочитать с нее нель-
зя. Особое  внимание стоит  обратить на  тот факт, что некоторые бутовые
вирусы перехватывают  прерывание с  клавиатуры и могут пережить в опера-
тивной памяти  мягкую перезагрузку  (т.е. перезагрузку с помощью нажатия
клавиш Ctrl-Alt-Del). Из выявленных в CCCР вирусов к этому типу относит-
ся вирус WM-1F.JSH (Joshy).

   Как уже  отмечалось, голова  бутового вируса  всегда находится в бут-
секторе, и  для контроля  дискет на  зараженность необходимо просмотреть
содержимое бут-сектора.  Поскольку подавляющее большинство дискет не яв-
ляется загружаемыми,  целесообразно вакцинировать их с помощью специаль-
ной бутовой вакцины  VitaminB, разработанной А.В.Сессой (cм. Софтпанора-
ма, т.3, No. 2).

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




                     2.4.4. Файлово-бутовые вирусы

   Поскольку резкой границы между файловыми и бутовыми вирусами нет, не-
которые вирусы  являются смешанными и заражают как файлы, так и бут-сек-
тор или  MBR. Такие  "гибридные" вирусы имеют более высокую инфицирующую
способность, чем  "чистые" типы,  однако выявляются  легче, чем файловые
вирусы, поскольку имеют фиксированное место заражения на винчестере, це-
лостность которого  обычно контролируется специальной программой, напри-
мер, SysTest  Я.У.Гринфельдса  (cм. Софтпанорама, т.2, No. 10). Помимо за-
раженных исполняемых  файлов, они могут переноситься на дискетах, содер-
жащих только  файлы данных,  как обычные бутовые вирусы. Кроме того, за-
гружаясь из  MBR, легче  обойти резидентные средства контроля, поскольку
инсталляция вируса проходит на "чистой" машине.

                       2.5. Панацеи не существует
                  (общая классификация средств защиты)

                                              "Специалист подобен флюсу,
                                               полнота его одностороння"
                                                          Козьма Прутков

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

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

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

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

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

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

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

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



                2.6. Жизненный цикл компьютерных вирусов

                                         "Где начало того конца,
                                          которым оканчивается начало ?"
                                                          Козьма Прутков

   Следует различать  два основных  действия (фазы), выполняемые компью-
терным вирусом:  размножение и  проявление. Размножение  обычно является
первым и обязательным действием вируса при получении им управления. Фаза
проявления, на  которой выполняются  несанкционированные действия, может
чередоваться с  размножением, начинаться через определенный (инкубацион-
ный) период или при сочетании некоторых условий. Она может заключаться в
изощренных визуальных  или звуковых эффектах, включать или исключительно
состоять из  нанесения повреждений  файловой системе.  Повреждения могут
быть массированными,  когда, например,  стирается FAT и другие системные
блоки, или  наоборот, распределенными,  когда довольно часто выполняются
небольшие, трудно обнаруживаемые повреждения. У ряда вирусов фаза прояв-
ления отсутствует, т.е. помимо размножения они никаких несанкционирован-
ных действий  не выполняют. В то же время любой вирус обладает рядом по-
бочных эффектов,  которые не  были предусмотрены при создании вируса, но
которые фактически относятся к его проявлениям. Наиболее частым побочным
эффектом является  зависание операционной  системы или потеря работоспо-
собности некоторых  (чаще всего резидентных) программ. Другим важным по-
бочным эффектом  является появление  некоторых "необъяснимых"  сообщений
операционной системы. Например, если при попытке запуска программы с за-
щищенной дискеты  появляется хорошо  знакомое любому пользователю MS DOS
сообщение Abort, Retry..., то это должно настораживать.
   Наряду с указанными действиями, вирус может обладать определенной ла-
тентной фазой,  в течение которой никаких действий по своему размножению
или проявлению не предпринимается. Латентная фаза может быть обусловлена
определенным временным  периодом (например, определенным месяцем или го-
дом), конфигурацией  (например, вирус  может активизироваться только при
попадании на  винчестер) или аппаратными особенностями (например, только
на клонах IBM PC).

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



                      2.7. Среда обитания вирусов

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

   Поскольку голова  вируса так  или иначе  должна получить  управление,
"среда обитания"  головы компьютерного вируса может располагаться только
в прямо или косвенно исполняемых программах. Не следует бояться, что ви-
рус может  быть перенесен  через файл данных. Применительно к MS DOS для
получения управления вирус должен встроить свою голову в загрузочные мо-
дули, такие  как СOM-файлы,  EXE-файлы, оверлейные фазы сегментированных
программ (это наиболее распространенный случай и соответствующий тип ви-
русов будем  называть файловыми); бут-сектор (этот случай также встреча-
ется достаточно часто и соответствующие вирусы будем называть бутовыми);
MBR --  таблицу разделов  винчестера (фактически это частный случай пред-
ыдущего и такая стратегия заражения может использоваться только примени-
тельно к винчестеру, т.е. комбинироваться с предыдущей); драйвер; объек-
тный модуль;  библиотеку компилятора; BAT-файл; исходный текст программы
на алгоритмическом  языке (в  расчете на  его компиляцию); промежуточный
код некоторого достаточно распространенного интерпретируемого языка, на-
пример dBase или Clipper. Поэтому необходим постоянный контроль за цело-
стностью информации, содержащейся в элементах перечисленных типов. Проще
всего этот контроль выполнять с помощью специальной программы-ревизора.

   Что касается  места, где  вирус может расположить свою голову, то для
существующих вирусов  характерны следующие: область стека некоторой сис-
темной программы (RC-0-346.LEH); начало, конец или середина исполняемого
файла; бут-сектор; MBR.

   Поскольку хвост вируса не должен получать управление непосредственно,
количество мест  его расположения существенно больше, и здесь многое за-
висит от  изобретательности автора вируса. Сегментация в настоящее время
характерна только для бутовых вирусов, и применительно к ним можно отме-
тить следующие  варианты расположения хвоста: один или группа кластеров,
помеченных как  сбойные (самый распространенный вариант); неиспользуемые
блоки нулевой дорожки винчестера после MBR; неиспользуемые блоки систем-
ных таблиц,  таких как  FAT, главный  каталог или один из подкаталогов и
т.д.; специально  созданный файл с атрибутами HIDDEN и/или SYSTEM; "хво-
сты" последних, заполненных частично, кластеров имеющихся файлов (напри-
мер, системных); "дополнительные" дорожки на дискете или винчестере (на-
пример, 40 и более старшие дорожки дискеты).

   Для файловых  вирусов сегментация может использоваться для размещения
хвоста в неиспользуемых секторах последнего кластера файла, однако такой
способ в настоящее время применяется только в вирусе RC-0-512.DAV и, как
оказалось, обладает  существенными недостатками.  В  частности,  команда
COPY MS DOS не копирует информацию из неиспользуемых секторов последнего
кластера. В  результате при  копировании зараженного  файла хвост вируса
теряется и  скопированная программа  становится  неработоспособной  (при
этом вирус  сохраняет работоспособность  и запуск такой "урезанной" про-
граммы приведет к его успешной инсталляции в оперативной памяти).
                        2.8. Симптомы заражения

                                 "Если на клетке слона прочтешь
                                 надпись "буйвол", не верь глазам своим"
                                                          Козьма Прутков

   Существуют определенные  признаки, указывающие на поражение программы
или диска  вирусами. Помимо  очевидных, связанных с демонстрационным эф-
фектом, характерным  для данного  вируса, к ним можно отнести следующие:
изменение длины  командного процессора  (COMMAND.COM); выдача  сообщений
типа "Write  protect error" при чтении информации, при загрузке программ
с защищенных  от записи дискет; изменение длины и/или даты создания про-
граммы (их  рекомендуется просматривать  с помощью  Norton Commander или
другой оболочки, непосредственно интерпретирующей содержимое каталогов);
программа выполняется медленнее, чем обычно; возрастание времени загруз-
ки, зацикливание  при загрузке;  необъяснимые обращения  к дискетам  или
файлам на защищенных разделах винчестера; потеря работоспособности неко-
торых резидентных  программ или  драйверов; аварийное  завершение  ранее
нормально функционировавших  программ; необъяснимые  зависания или пере-
загрузки системы; уменьшение объема системной памяти или свободной памя-
ти после  загрузки; резкое  уменьшение доступной  дисковой памяти,  хотя
файлы не  добавлялись и не удалялись; появление новых сбойных кластеров,
дополнительных скрытых файлов или других изменений файловой системы (вы-
являются запуском CHKDSK или другой подходящей утилиты);

   Конечно, приведенные  признаки носят  эвристический характер  и могут
наблюдаться на "здоровых" компьютерах по причинам, совершенно не связан-
ным с  вирусами. Тем  не менее, появление каких-то аномалий должно сразу
настораживать пользователя. Если после перезагрузки с защищенной дискеты
некоторые из  этих признаков  исчезают, то есть смысл провести более или
менее полное  тестирование с  помощью программы  ревизора (только не при
загруженной с  винчестера и возможно зараженной операционной системе), а
также визуально  сравнить содержимое  бут-сектора и  таблицы разделов  с
эталонными. Полезно  также просмотреть  дамп программы (с помощью Norton
Commander, PC  Shell или  другой подходящей  утилиты). Если в конце про-
граммы имеются подозрительные текстовые строки или, наоборот, нет ни од-
ной текстовой строки, то такая программа заслуживает дополнительного ис-
следования.



                    2.9. Вызываемые вирусами эффекты

                                     "Однажды мои соседи обнаружили
                                     у себя в квартире странные явления:
                                     каждую ночь что-то упорно
                                     шелестело в мусорном ведре, и
                                     каждое утро отходы обнаруживались
                                     в самых не подходящих местах.
                                     Стали исчезать картошка, лук...
                                     Крысы! - мелькнула догадка."
                                                Газета "Красная Пресня",
                                                          апрель 1990 г.


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

   1) отказ в  выполнении той  или иной  функции (например, блокирование
вирусом RС-1701.CAS загрузки программы с защищенной от записи дискеты);

   2) выполнение действий,  не предусмотренных программой (например, из-
менение данных в каком-то файле);

   3) разрушение отдельных  файлов, управляющих блоков или всей файловой
системы в целом (форматирование диска, удаление файла и т.д.);

   4) выдача ложных,  раздражающих или  отвлекающих сообщений (например,
"Скажи бебе" или "Non system disk");
   5) создание звуковых  или визуальных эффектов (например, падение букв
в вирусе  RС-1701.CAS, замедление  выполнения  программ  в  вирусе  RСЕ-
1813.IER, проигрывание  мелодии в RCE-1805.TP, движущийся на экране ром-
бик в Bx1-1C.PIN и т.д.);

   5) инициирование ошибок или сбоев в программе или операционной систе-
ме (например, переполнение стека), перезагрузка или зависание MS DOS;

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

   7) имитация сбоев  аппаратуры (перевод части кластеров в "псевдосбой-
ные" на  дискете или винчестере, зависание ЭВМ через некоторое время по-
сле перезагрузки операционной системы и т.д.);

   8) ускорение износа оборудования или попытки его порчи.

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

   Наиболее уязвимой частью файловой системы MS DOS является FAT (табли-
ца размещения файлов). Если FAT разрушен, то MS DOS не в состоянии опре-
делить местонахождение  того или иного файла, хотя сами файлы не повреж-
дены. Вирус может также выполнять форматизацию некоторых участков диска,
содержащих системные  данные. Поэтому необходимо достаточно часто дубли-
ровать управляющие  данные файловой системы на другой, заранее известный
участок диска  или дискету.  Для этой цели, в частности, можно использо-
вать Norton Utilities, а также Mirror из пакета PC Shell.

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

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

   По степени разрушительности вирусы можно условно разделить на два ти-
па: "иллюзионисты" (RC-1701.CAS, RCE-1805.TP, RСE-2885.TP, Bx1-1C.PIN) и
"вандалы" (C-648.VEN,  RСE-1800.DAV, Dx3-E9, RC-496). Основным приорите-
том при конструировании "иллюзионистов" является демонстрация какого-ни-
будь экзотического звукового (например, вирусы RCE-1805.TP, RCE-2885.TP)
или визуального  эффекта типа  бегающего шарика  (например,  вирус  Bx1-
1C.PIN), осыпающихся букв (вирус RC-1701.CAS) и т.д. В качестве основно-
го приоритета  пpи констpуиpовании  "вандалов" является  обеспечение как
можно более  скрытого размножения,  с тем чтобы фазе разрушения (детона-
ции), уничтожающей  и зараженный файл (дискету) с данным экземпляром ви-
руса (при  разрушении таблицы FAT, форматизации и других подобных дейст-
виях), предшествовало  определенное число незамеченных размножений. Пси-
хологически примитивный  вандализм типа разрушения файлов или форматиро-
вания диска,  наверное, в  большей степени присущ примитивным личностям,
страдающим комплексом  неполноценности, но неспособным на конструктивную
деятельность. В то же время, если на начальном этапе вирусы-вандалы, как
правило, не демонстрировали нетривиальных визуальных или звуковых эффек-
тов, то в настоящее время граница между этими двумя типами вирусов прак-
тически исчезла  и уже не может служить косвенным признаком типа вируса.
Это связано с тем, что обилие литературы по программированию IBM PC поз-
воляет заимствовать готовую программу создания достаточно сложных эффек-
тов.



                       2.10. Повторное заражение

                                 "Сожрали с аппетитом ядовитый порошок
                                  Четыре неразлучных таракана и сверчок"
                                          Из популярной песни 60-х годов

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

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



                       2.11. Компьютерные вирусы
                         и операционные системы

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

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


                     2.11.1. MS DOS 3.3 как VIR DOS

   Версия 3.3  MS DOS является,  по-видимому, наиболее  распространенной
среди пользователей  персональных компьютеров,  совместимых с IBM PC или
PS/2, и  именно на нее, в основном, ориентируются техно-крысы. Указанная
версия "в  чистом виде" полностью лишена средств регламентации доступа к
файлам. Интересно  отметить, что  еще в  версии 3.0 операционной системы
CP/M можно  было защитить  файлы и  диски от записи или чтения с помощью
паролей.  Поэтому   вызывает  сожаление   выжидательная  позиция   фирмы
Microsoft, которая  могла бы  при выпуске  очередной версии MS DOS легко
закрыть хотя бы самые "зияющие" дыры в MS DOS (отсутствие проверки конт-
рольной суммы  файла перед  передачей ему управления, возможность сброса
атрибута READ ONLY без подтверждения пользователя, люки -- различные "не-
легальные" способы  получения адреса  прерывания 13h  и др.).  Возможно,
здесь нельзя  исключить и  определенный политический  расчет на  то, что
сложившаяся ситуация  будет способствовать уменьшению количества случаев
незаконного копирования  коммерческого программного обеспечения, которое
существенно уменьшает доходы фирмы, а также переходу пользователей к бо-
лее совершенной  и снабженной  средствами регламентации доступа к файлам
операционной системе  OS/2. Последняя из-за повышенных требований к обо-
рудованию (рекомендуется  наличие четырех или более мегабайтов оператив-
ной памяти) пока не пользуется ощутимым успехом.

   Следует отметить, что мнение о "полезности" вирусов для разработчиков
системного программного обеспечения было высказано официально Эндрю Зол-
товским -- директором  фирмы Novell UK Ltd, который в интервью корреспон-
денту советско-польского журнала "Компьютер" заявил: "Сейчас стало ясно,
что великолепным  средством борьбы с нелегальными копиями сталиЄ компью-
терные вирусы, распространяемые чаще всего с бесплатным (читай "ворован-
ным") программным обеспечением" [Компьютер, 1990, No. 2, c.5]. Такая пози-
ция не только не этична, но и по существу опасна для самой фирмы, "испо-
ведующей" такую  философию. Ведь помимо разработчиков коммерческого про-
граммного обеспечения существуют разработчики бесплатно распространяемо-
го (Freeware)  и субсидируемого  пользователями (Shareware) программного
обеспечения, которые  страдают из-за  падения интереса  к их продуктам в
связи с угрозой заражения. Да и для разработчиков коммерческого програм-
много обеспечения  опасно рассматривать  вирусы как  средство увеличения
доходов от  продажи своего программного обеспечения: отсюда только шаг к
борьбе с  конкурентами с  помощью вирусов, ориентированных на конкретный
программный продукт,  скажем, версию  2.15 сетевой  операционной системы
Advanced Netware.  Ведь наверняка  есть люди,  считающие, что  положение
фирмы Novell  на рынке не соответствует действительному качеству ее про-
дуктов и  препятствует более  прогрессивным решениям  "занять свое место
под солнцем".

   Так или  иначе, но  MS DOS в  целом показала  себя  не  только  "user
friendly" ("дружественной  по отношению  к пользователям"),  но и "virus
friendly" ("дружественной  к вирусам"),  а версия  3.3 стала своего рода
базовой системой  для техно-крыс.  И такое положение, по-видимому, фирму
устраивает: в  версии 4.0  не предпринято никаких специальных мер в ука-
занном направлении. Впрочем, любые изменения в операционной системе сни-
жают количество  вирусов, работоспособных в этой измененной системе, по-
скольку многие  вирусы используют особенности версии 3.3, не сохранивши-
еся в  версии 4.0. Появление версии 5.0 MS DOS является еще одним шагом,
уводящим от версии 3.3. Указанная версия обладает возможностью загружать
операционную систему  и драйверы в расширенную память (Extended Memory),
которая в версиях 3.x чаще всего используемую как виртуальный диск. Тем
самым  объем  свободной  оперативной  памяти увеличивается до 610-620K),
делая переход на эту версию весьма привлекательным.

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


                2.11.2. Появление более вирусоустойчивых
                           альтернатив MS DOS

   Следует отметить, что в настоящее время появилось несколько альтерна-
тивных, "полностью  совместимых" с MS DOS операционных систем, обеспечи-
вающих ряд дополнительных возможностей защиты информации от несанкциони-
рованного доступа,  включая заражение  программ вирусами  или различного
рода попытки  искажения или  уничтожения файлов. Из них следует отметить
DR DOS фирмы  Digital Research,  которая, будучи  "более  совместимой  с
MS DOS, чем сама MS DOS" (т.е. существенно реже зависающей, что особенно
важно при  работе на  отечественных ПЭВМ  типа ИСКРА 1030), обеспечивает
лучшие утилиты  и возможность защиты файлов и каталогов. Другой интерес-
ной альтернативной разработкой является Hi DOS.

   Операционная система  Desqview и  Desqview 386  компании  Quarterdeck
Office Systems  (США) является многозадачной операционной системой, пол-
ностью совместимой  с MS DOS.  В ее  состав входит  драйвер для работы с
расширенной памятью QEMM, позволяющий подобно MS DOS 5.0 загружать рези-
дентные программы,  драйверы и  другие ресурсы  DOS в расширенную память
одновременно с  работой основной программы в реальном или защищенном ре-
жиме. Desqview версии 2.3 позволяет загружать и выполнять программы, на-
писанные для  MS Windows,  например Word  for Windows,  в одном  из окон
Desqview. На текущий момент Desqview является самой гибкой многозадачной
средой для персональных компьютеров, имеющих два и более мегабайтов опе-
ративной памяти.

   Ну и,  наконец, следует  упомянуть версию  3.0  операционной  системы
Windows фирмы  Microsoft, которая подобно Desqview обеспечивает многоза-
дачный режим  работы. Как  и Desqview, она перспективна для AT/386 (ком-
пьютеров на  базе микропроцессора 80386), имеющих два и более мегабайтов
оперативной памяти, хотя может использоваться и для AT/286 c платой рас-
ширенной (EMS LIM4.0) оперативной памяти. В этой версии MS Windows фирме
удалось в значительной степени устранить недостатки предыдущих версий и,
несмотря на "монстрообразность", она работает быстро и устойчиво.


                   2.11.3. OS/2 и компьютерные вирусы

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



                  2.12. Влияние на вирусозащищенность
                     используемых аппаратных средств

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


                     2.12.1. Влияние используемого
                        центрального процессора

   В настоящее  время наиболее  распространенным центральным процессором
является 80286 и, естественно, большинство компьютерных вирусов ориенти-
рованы именно  на него. Поэтому компьютеры на базе процесора 80386 в на-
стоящее время  являются более  вирусозащищенными: многие  вирусы на  них
просто виснут.  С другой  стороны, поскольку  процессор 8086  выходит из
употребления, появились вирусы, неработоспособные на этом процессоре.


             2.12.2. Аппаратные средства защиты от вирусов

   Изготовители компьютерного  оборудования не  так активно включились в
"охоту на вирусы", как изготовители программного обеспечения. Тем не ме-
нее ряд  продуктов доведен до уровня коммерческих и продается потребите-
лям. Предлагаемые  аппаратные средства защиты, как правило, представляют
собой специальные  платы. Однако в конце 1988 г. фирма American Computer
Security Industries,  Нэшвилл, шт. Теннеси, США, представила "первый на-
дежно защищенный  противовирусный компьютер",  класса  PC AT,  названный
"Immune System" ("Иммунная система"). Cистема якобы обладает иммунитетом
от вирусной атаки, а также набором средств, предохраняющих MS DOS и BIOS
от несанкционированных изменений (Computer Age, январь 1989 г., см. так-
же Personal Computing, 1989, No. 5, р.92).

   Из зарубежных плат, которые повышают степень защищенности компьютера,
отметим плату  Immunetec PC фирмы Зевс (Zeus Corp.), стоимостью 295 дол-
ларов. Эта  плата тестирует бут-сектор и системные файлы MS DOS на нали-
чие несанкционированных  изменений, а также позволяет запретить загрузку
системы с  дискеты, установить  паспорта и  уровни доступа к винчестеру.
Плата совместима  с сетями  Novel,  3Com  и  IBM  Token  Ring  [Personal
Computing, 1989,  No. 5, р.92].  Аналогичная плата Trispan фирмы Микроникс
(Micronics Inc.) стоит 895 долларов.

   Из советских  разработок интерес  представляет плата  Port Watch Card
донецкой фирмы БИС (см. прил.3), совместимая с популярными сетями. Рабо-
тая вместе  с разработанной  А.Г.Водяником  резидентной  программой  IWP
(Intellectual Write Protector), эта плата достаточно надежно перекрывает
возможные пути  инфекции, позволяя,  в частности,  аппаратно блокировать
загрузку, если  пользователь не  указал требуемый  пароль. Следует отме-
тить, что загрузка с собственной дискеты -- стандартный прием проникнове-
ния в чужой компьютер любителей компьютерных игр, да и не только их.

   Принцип действия  IWP основан на усилении присваиваемого файлам атри-
бута READ  ONLY в  сочетании с  защитой системных  блоков, включая MBR и
бут-сектор. Защищаемые  файлы отмечаются  специальной утилитой  MAP.EXE,
устанавливающей защищаемым  файлам указанный атрибут и создающей в файле
_IWP_.MAP в  коpневом каталоге шифрованный список элементов каталога за-
щищаемых файлов и цепочки его кластеpов в FAT. При загрузке IWP считыва-
ет этот  список, пеpехватывает попытки записи чеpез дpайвеp диска и ана-
лизиpует их. При выявлении пpотивоpечий выдается сообщение и опасная за-
пись блокиpуется.  Запись и фоpматиpование чеpез пpеpывание 13h запpеща-
ются, если  они выполняются  не из дpайвеpа диска, a из дpугих пpогpамм.
Вывод в  поpты контpоллеpов  дисков -- если  он выполняется не из BIOS по
пpеpыванию 13h. Используя плату Port Watch Card, IWP контролирует запись
в CMOS-память  (поpт 71h) и опасные действия с портами контpоллеpов дис-
ководов  дискет   (370h..377h,  3F0h..3F7h)  и  винчестера  (170h..177h,
1F0h..1F7h -- PC AT; 320h..32Fh -- PC XT).

   Недостатком существующей  версии IWP  является значительный объем ис-
пользуемой оперативной  памяти (порядка  30К при защите винчестера 40M).
Правда, разработчики предлагают специальный драйвер, имеющий и самостоя-
тельное значение, расширяющий ОЗУ на 80K, если на компьютере установлена
карта EGA (несколько больше для карт CGA и Hercules) за счет неиспользу-
емой в текстовом режиме видеопамяти. Планируется разработка новых версий
платы с IWP, записанной в ROM платы.



                     2.13. Роль компьютерных сетей

                                         "Опасно не наличие компьютеров,
                                          а их нехватка"
                                                                А.Азимов

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

   Чтобы организовать  BBS, нужен персональный компьютер, модем, хотя бы
одна телефонная  линия, немного  специального программного обеспечения и
один человек --  оператор BBS,  часто называемый SYSOP (SYStem OPerator --
оператор системы). Поскольку на Западе эти требования легко удовлетворя-
ются, BBS  стали своего  рода "парковыми скамейками" эпохи НТР. Конечно,
качество банка  данных и  программ данной  BBS зависит,  в основном,  от
уровня квалификации  и преданности делу его SYSOPа. Отдельные BBS обычно
служат узлами  сети. Крупнейшей  в мире любительской сетью ПЭВМ является
FidoNet, несколько узлов которой работает в СССР (в Москве и Таллинне).

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

   Кроме бесплатных BBS, на Западе распространены и коммерческие их ана-
логи -- большие  онлайновые информационные системы, такие как CompuServe.
Подключение к ним платное, зато объем и качество информации выше. Напри-
мер, CompuServe предлагает мини-BBS по группам интересов (так называемые
SIG -- special  interest groups). Среди них есть и группа по борьбе с ви-
русами.

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

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



              2.14. Вирусофобия и попытки ее эксплуатации

                                              "Трусоват был Ваня бедный"
                                                              А.С.Пушкин

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

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

   Далеко не  все повреждения  файловой системы,  отказы винчестера  или
оборудования вызываются  вирусами. Например,  некоторые типы винчестеров
имеют довольно  низкую надежность  и "сыпятся" без всякого вмешательства
вирусов. Имеются компьютеры, которые можно загрузить, только дав им про-
греться в  течении получаса.  Автору приходилось  работать на  дефектном
венгерском дисководе ПЭВМ ЕС 1840, который не только фрезеровал дискеты,
но и  при записи иногда стирал FAT. Причем восстановить поврежденный FAT
с помощью известной утилиты Norton Disk Doctor не удавалось. Общеизвест-
но, что  многие отечественные  компьютеры и без всяких вирусов регулярно
зависают.

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

   Еще одним  вариантом вирусофобии  является чрезмерная доверчивость по
отношению к  диагностике, выдаваемой  антивирусными программами, в част-
ности достаточно примитивным полидетектором Scan. Например, после публи-
кации в  бюллетене Софтпанорама  программы Talker  на  автора  обрушился
шторм звонков,  связанный с  тем, что  ее разработчики  решили сыграть с
пользователями довольно  глупую шутку, троянизировав свою программу так,
чтобы она опознавалась Scan как зараженная довольно экзотическим и давно
вымершим вирусом (Sylvia -- Сильвия или Holland Girl -- Голландская девуш-
ка). Дело здесь в том, что программа Talker заменяет стандартное сообще-
ние операционной  системы на одно из нескольких, выбираемых случайно со-
общений, которые  в некоторых  сочетаниях весьма смахивают на проявление
вируса.



              2.15. О возможности повреждения оборудования
                         компьютерными вирусами

                                                "То тарелками пугают..."
                                                              В.Высоцкий

   Одним из  проявлений вирусофобии следует считать слухи о вирусах, по-
вреждающих оборудование.  Вопрос о  возможности повреждения оборудования
автору задавали  практически на  каждой прочитанной  им лекции. Дейcтви-
тельно, хотя  большинство повреждений,  наносимых вирусом,  относятся  к
данным, возможны  также повреждения оборудования. Например, можно повре-
дить участок  люминофора ("выжечь пятно") на монохроматическом мониторе,
используя особенности схемы управления. Однако для цветного монитора это
сделать невозможно.  Ходят упорные  слухи о  каких-то коварных  вирусах,
якобы вводящих  в резонанс  головки винчестера.  К сожалению,  эти слухи
проникают и в "околовирусные" публикации [Основский90].

    Такая  мифотворческая тенденция всегда возникает в связи с любым ма-
лоизученным и  потенциально опасным  явлением. Следует  учитывать  также
благоприятный для  такого рода  слухов социальный фон: сейчас в обществе
оживился интерес ко всякого рода магии и "чудотворцам". Некоторые из них
ухитряются даже  заговаривать воду  по телевизору. По сравнению с водой,
заговоренной по  телевизору, вирус, прожигающий дыру в экране или даже в
клавиатуре, выглядит предельно правдоподобно. Более того, автор не видит
причин, почему многие из классических русских сказок нельзя было бы "мо-
дернизировать", сделав одним из персонажей злой компьютерный вирус и со-
ответствующим образом  приспособив сюжетную  канву. Со  временем,  когда
компьютеры появятся  во многих семьях, такие сказки, возможно, будут ин-
тереснее ребенку,  чем традиционные  варианты с  Бабой Ягой, Кощеем Бес-
смертным и добрым молодцем.
                    2.16. Легенды о полезных вирусах

                                             "Как часто мы промахиваемся
                                              еще при выборе цели!"
                                                           Виктор Власов

   Идея о  том, что  "подобное излечивается  подобным", распространенная
среди средневековых знахарей, периодически реанимируется применительно к
компьютерным вирусам.  Она принимает несколько основных форм, которые мы
разберем последовательно. Первой по распространенности является идея со-
здания "вируса-защитника" -- вирусоподобной программы защиты. Следует от-
метить, что  эта идея носится в воздухе с момента появления первых виру-
сов, т.е. примерно с 1984 г. (см. гл.1). Исторически, первые фаги созда-
вались именно как вирусы, охотящиеся на тот или иной вирус. Ничего хоро-
шего из  этого не  получилось. Опыт показал, что распространение вируса-
охотника существенно  медленнее, чем  вируса, за которым охотятся, и эф-
фективность такой погони невелика.

   Эта идея весьма неудачна и в других своих модификациях. Например, ча-
сто предлагается вариант "вируса-контролера", который при заражении про-
граммы подсчитывает и запоминает ее контрольную сумму. Тогда при запуске
зараженной программы  вирус подсчитывал  бы контрольную  сумму файла, из
которого она  была считана, и при несовпадении сигнализировал бы о зара-
жении. Вообще  говоря, отсутствие  подобной проверки -- это серьезный де-
фект MS DOS, и исправлять его стоит именно на уровне операционной систе-
мы. Однако тотальное заражение программ вирусом неизбежно ведет к потере
работоспособности части  программ. Кроме  того, заражение  всех программ
вирусом неизбежно приведет к заметному увеличению размеров программ, по-
скольку каждой  исполняемой программе придется сделать прививку. Если на
диске объемом  20M хранится, скажем, 1000 программ и размер прививки со-
ставляет 1024 байта, то получается, что в среднем теряется мегабайт дис-
кового пространства. Реально, учитывая квантование дискового пространст-
ва по кластерам, эти потери могут оказаться и больше, в особенности, ес-
ли на  диске записано  много программ, близких к размеру кластера. Кроме
того, процесс  поиска очередной  "жертвы" не так прост, и будет занимать
некоторое время, замедляя загрузку программы. Поэтому закрывать эту "ды-
ру" предпочтительнее с помощью маленькой резидентной программы, перехва-
тывающей прерывание 21h (функцию 4Bh). Возможно, перехват следует выпол-
нить сплайсингом,  т.е. врезкой  команды JMP  в оригинальный  обработчик
этой команды  с тем, чтобы исключить возможность того, что вирус предва-
рительно перехватит  прерывание 21h.  Кстати, перехватить прерывание 21h
вирусу можно просто не дать, как бы он не старался (на этой идее основа-
ны сторожа Check21 и SBM -- см. прил.3). Получив управление, эта "заплат-
ка" должна проверять контрольную сумму. Для COM-файлов достаточно прове-
рить первый  блок, а  для EXE-файлов -- заголовок и блок, куда передается
управление. При  этом для  COM-файлов контрольную  сумму можно хранить в
неиспользуемых байтах оглавления, а для EXE -- в соответствующем поле за-
головка. Метод  подсчета контрольной  суммы должен быть параметризуемым.
Кстати, аналогичным  способом можно закрыть другую "дыру" в MS DOS, свя-
занную с  тем, что  снятие атрибута  READ ONLY  не требует подтверждения
оператора. При  этом можно  предусмотреть возможность  отключения выдачи
запроса с помощью специального, задаваемого пользователем, пароля.

   Другой идеей, связанной с поисками "полезных" применений компьютерных
вирусов, является автоматическое преобразование программы в какую-то бо-
лее приемлемую  форму. Наиболее  часто при этом предлагается автоматиче-
ское сжатие  программы. Действительно, имеется ряд программ, выполняющих
сжатие EXE-файлов,  наиболее удачной среди которых является Lzexe, кото-
рая обеспечивает  экономию порядка 30% на каждом EXE-файле при очень вы-
сокой скорости  распаковки (практически  не увеличивая  время загрузки).
Идею применить для этой цели вирус высказывал еще Ф.Коэн для обоснования
своих работ более 15 лет назад. Теоретически здесь вроде бы "все чисто".
Вирус, заражая  программы, свертывает  их с  помощью какого-то метода, а
при запуске развертывает. Однако с практической точки зрения эта идея не
выдерживает никакой  критики. Дело  в том,  что включаемый в сжатые про-
граммы распаковщик  должен  иметь  минимальную  длину  (330  байтов  для
Lzexe), что в случае вируса обеспечить невозможно. Более правильным под-
ходом к  реализации идеи  сжатия информации на диске, если уж добиваться
"тотального" ее осуществления, является написание специального дискового
драйвера, который,  во-первых, не  включается в сжатую программу, а, во-
вторых, может  сжимать не только исполняемые файлы, а и все файлы, поме-
ченные определенным атрибутом. Кстати, такие драйверы были реализованы и
успешно применяются.  Однако широкое  их распространение  сдерживает тот
факт, что  достигаемый эффект  составляет порядка 20%, т.е. невелик и не
компенсирует все  возникающие при этом сложности и неудобства. Более то-
го, для  "вируса сжатия" общий эффект может оказаться отрицательным, по-
скольку на каждой программе вирус должен экономить не менее 12-16К (раз-
мер одного кластера, скажем, 4К + собственный размер вируса, который для
этого довольно сложного вируса вряд ли составит меньше 8К), что для про-
грамм, меньших  64K, т.е.  для всех  COM-файлов, практически  нереально.
Кроме того,  если не прибегать к каким-то ухищрениям, то вирусу придется
хранить в сжатой программе и достаточно объемную программу упаковки, ко-
торая еще  больше уменьшает  степень сжатия.  Ну и,  наконец,  поскольку
часть программ  при сжатии  теряет работоспособность, то необходим меха-
низм иммунизации, предохраняющий такие программы от заражения.

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

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

   И, наконец,  последний аргумент в пользу ограничения экспериментов по
созданию "полезных"  вирусов специализированными операционными системами
связан с тем, что по определению "полезный" вирус будет распространяться
свободно. Тем самым, доступность механизма размножения (центральной час-
ти любого вируса) делает его общедоступной базой для совсем небезобидных
экспериментов. В  частности, он  легко может  быть превращен в троянскую
программу, которая,  скажем, защищая от некоторых вирусов, сама периоди-
чески стирает FAT.

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