Общие сведения о компьютерных вирусах

10.1. Общие сведения о компьютерных вирусах

Компьютерным вирусом называется программа, способная внедряться в другие программы. Это, конечно, невозможно без способности к самовоспроизводству, т.е. размножению. Но не всякая могущая размножаться программа является компьютерным вирусом.

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

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

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

Исторически появление компьютерных вирусов связано с идеей создания самовоспроизводящихся механизмов, в частности, программ, которая возникла в 50-х гг. Еще в 1951 г. один из «отцов» вычислительной техники — Дж. фон Нейман — предложил метод создания таких механизмов. Его соображения на этот счет получили дальнейшее развитие в работах других исследователей. В результате появились безобидные игровые программы, основанные на вирусной технологии.

Воспользовавшись накопленными научными и практическими результатами, некоторые лица (часто именуемые «технокрысами») стали разрабатывать самовоспроизводящиеся программы с целью нане­сения ущерба пользователям ЭВМ. Авторы вирусов сосредоточили свои усилия именно в области ПЭВМ вследствие их массовости и почти полного отсутствия средств защиты как на аппаратном уровне, так и на уровне ОС. Среди побудительных мотивов, движущих авторами вирусов, можно назвать следующие:

― озорство и одновременно недопонимание всех последствий распространения вируса;

― стремление «насолить» кому-либо;

― неестественная потребность в совершении преступлений;

― желание самоутвердиться;

― невозможность использовать свои знания и умения в конструктивном русле (это в большей степени экономическая проблема);

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

Первые случаи массового заражения ПЭВМ вирусами были отмечены в 1987 г.

Сначала появился так называемый Пакистанский вирус, созданный братьями Амджатом и Базитом Алви. Этим они решили наказать американцев, покупавших дешевые незаконные копии ПО в Пакистане: такие копии братья стали продавать, инфицируя их разработанным вирусом. В результате он заразил только в США более 18 тыс. компьютеров и, проделав кругосветное путешествие, попал в СНГ (тогда — СССР).

Следующим широко известным вирусом стал вирус Lehigh (Лехайский вирус), распростра­нившийся в одноименном университете США. В течение нескольких дней он уничтожил содер­жимое нескольких сот дискет из библиотеки вычислительного центра университета и личных дискет многих студентов. По состоянию на февраль 1989 г. только в США этим вирусом было поражено около 4 тыс. ПЭВМ.

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

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

Определенный сдерживающий эффект был достигнут в результате принятия рядом стран законодательных актов о компьютерных преступлениях. Уже имеются и конкретные результаты этого. Так, недавно студент Моррис-младший за создание и распространение вируса в амери­канской национальной сети Internet, в результате чего было заражено около б тыс. компьютеров, приговорен к условному заключению сроком на 2 года, 400 часам общественных работ и штрафу в размере 10 тыс. долларов.

В настоящее время насчитывается около 900 различных вирусов, включая штаммы (разно­видности вируса одного типа), которые не знают границ. Естественно, многие вирусы курсируют и по нашей стране. Более того, недавно отчетливо проявилась печальная тенденция, а именно, увеличение числа вирусов, разработанных отечественными программистами. Если ситуация не изменится, то в скором, времени наше содружество будет претендовать (если уже не претендует) на роль лидера в данной области, что, несомненно, окажет отрицательное влияние на возможности экспорта программных изделий из СНГ.

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

1) латентный период, в течение которого вирусом никаких действий не предпринимается;

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

3) период проявления, в течение которого наряду с размножением выполняются несанкционированные пользователем действия.          

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

Компьютерные вирусы классифицируются в соответствии со следующими признаками:

1) среда обитания;

2) способ заражения среды обитания;

3) способ активизации;

4) способ проявления (деструктивные действия или вызываемые эффекты);

5) способ маскировки.

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

файловые вирусы, инфицирующие программные файлы, т.е. файлы с программами;

― загрузочные вирусы, заражающие компоненты системной области, используемые при загрузке DOS;

― файлово-загрузочные вирусы, интегрирующие черты первых двух групп.

Файловые вирусы могут внедряться (имплантироваться) в:

― файлы с компонентами DOS;

― позиционно-независимые перемещаемые машинные программы, находящиеся в СОМ-файлах;

― позиционно-зависимые перемещаемые машинные программы, размещаемые в ЕХЕ-файлах;

― внешние драйверы устройств (SYS- и BIN-файлы);

― объектные модули (OBJ-файлы);

― файлы с программами на языках программирования (в расчете на компиляцию этих программ);

― командные файлы (ВАТ-файлы);

― объектные и символические библиотеки (LIB- и др. файлы);

― оверлейные файлы (OV?-, PIF- и др. файлы).

Наиболее часто файловые вирусы способны внедряться в СОМ и/или ЕХЕ-файлы.

Загрузочные вирусы могут заражать:

BR (точнее — SB) на дискетах;

BR (точнее — SB) системного логического диска, созданного на винчестере;

MBR (точнее — NSB) на жестком диске.

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

Конечно, у файловых вирусов инфицирующая способность выше.

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

Способы заражения среды обитания, естественно, зависят от типа последней. Зараженная вирусом среда называется вирусоносителем.

Тело файлового вируса может размещаться при имплантации в:

― конце файла;

― начале файла;

― середине файла;

― хвостовой (свободной) части последнего кластера, занимаемого файлом.

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

1) дописывает к файлу собственную копию (тело вируса);

сохраняет в этой копии оригинальное начало файла;

2) сохраняет в этой копии оригинальное начало файла;

3) заменяет оригинальное начало файла на команду передачи управления на тело вируса.

Структура получившегося файла-вирусоносителя показана на рис. 10.1.

 

 

Рис. 10.1. Структура вирусоносителя

 

При запуске инфицированной описанным способом программы первоначально инициируется выполнение тела вируса, в результате чего:

1) восстанавливается оригинальное начало программы (но не в файле, а в памяти!);

2) возможно, отыскивается и заражается очередная жертва;

3) возможно, осуществляются несанкционированные пользователем действия;

4) производится передача управления на начало программы-вирусоносителя, в результате чего она выполняется обычным образом.

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

Два описанных способа внедрения вируса ведут к увеличению длины оригинального файла.

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

Имплантировать вирус в ЕХЕ-файл труднее, чем в СОМ-файл. Это объясняется необходимостью модификации заголовка ЕХЕ-файла.

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

Размножению файловых вирусов обычно не препятствуют атрибуты R, Н и S.

BR и MBR дисков настолько малы и так заполнены, что дописать в них тело вируса не представляется возможным. Поэтому используется следующий способ имплантации загрузочного вируса: вместо SB (NSB) записывается голова тела вируса, а его хвост и следующий за ним SB (NSB) размещаются в других кластерах или секторах. Для этого могут использоваться следующие кластеры (секторы):

— любые свободные кластеры, которые затем объявляются дефектными;

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

— кластеры на созданной для этого дополнительной дорожке диска.

Загрузочный вирус получает управление в процессе загрузки DOS, выполняет требуемые действия, а затем инициирует выполнение системного (или внесистемного) загрузчика. В зависимости от способа активизации различают:

― нерезидентные вирусы;

― резидентные вирусы.

Для нерезидентного вируса активизация эквивалентна получению им управления после запуска инфицированной программы. Тело вируса исполняется однократно в случае выполнения зара­женной программы и осуществляет описанные выше действия.

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

1) размещает резидентный модуль вируса в ОЗУ и выполняет операции, необходимые для того, чтобы последний хранился в ней постоянно;

2) подменяет некоторые обработчики прерываний, чтобы резидентный модуль мог получать управ­ление при возникновении определенных событий (например, в случае открытия или считывания файла).

Для размещения вируса резидентно в памяти могут использоваться стандартные средства DOS. Однако применение такого метода может быть легко обнаружено антивирусными средствами. Наиболее совершенные вирусы действуют в обход средств DOS, непосредственно корректируя список МСВ. Это позволяет произвести установку резидентного модуля в большей степени скрытно.

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

Получив управление по прерыванию, резидентный модуль вируса выполняет нижеприведенные действия:

1) возможно, отыскивает и инфицирует очередную жертву;

2) вероятно, выполняет несанкционированные действия.

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

По сравнению с нерезидентными резидентные вирусы являются более изощренными и опасными.

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

Проявлениями (деструктивными действиями) вирусов могут быть:

― влияние на работу ПЭВМ;

― искажение программных файлов;

― искажение файлов с данными;

― форматирование диска или его части;

― замена информации на диске или его части;

― искажение BR или MBR диска;

― разрушение связности файлов путем искажения FAT;

― искажение данных в CMOS-памяти.

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

Вирусы всех остальных- групп часто называют «вандалами» из-за наносимого ими, как правило, непоправимого ущерба.

В соответствии со способами маскировки различают:

― немаскирующиеся вирусы;

― самошифрующиеся вирусы;

― стелс-вирусы.

Авторы первых вирусов уделяли особое внимание механизмам размножения (репликации) с внедрением тел в другие программы. Маскировка же от антивирусных средств не осуществлялась. Такие вирусы называются немаскирующимися.

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

В последнее время появились стелс-вирусы, названные по аналогии с широкомасштабным проектом STEALTH по созданию самолетов-невидимок. Методы маскировки, используемые стелс-вирусами, носят комплексный характер, и могут быть условно разделены на две категории:

1) маскировка наличия вируса в программе-вирусоносителе;

2) маскировка присутствия резидентного вируса в ОЗУ.

К первой категории относятся:

1) автомодификация тела вируса;

2) реализация эффекта удаления тела вируса из вирусоносителя при чтении последнего с диска, в частности, отладчиком (это осуществляется, путем перехвата прерывания, конечно, в случае наличия резидентного вируса в ОЗУ);

3) имплантация тела вируса в файл без увеличения его размера;

4) эффект неизменности длины инфицированного файла (осуществляется аналогично п. 2);

5) сохранение неизменным оригинального начала программных файлов.

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

К второй категории методов маскировки можно отнести:

1) занесение тела вируса в специальную зону резидентных модулей DOS, в хвостовые части кластеров, в CMOS-память, видеопамять и т.п.;

2) модификацию списка МСВ, о чем уже говорилось;

3) манипулирование обработчиками прерываний, в частности, специальные методы их подмены, с целью обойти резидентные антивирусные средства;

4) корректировку общего объема ОЗУ.

Конечно, маскировка может комбинироваться с шифрованием.

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

1) заражение файла, к которому осуществляется доступ;

2) явный поиск подходящего файла в файловой структуре.

Первый способ может быть реализован только в резидентном вирусе путем перехвата пре­рываний. При таком подходе в качестве жертвы может быть выбран:

― считываемый файл (в частности, для выполнения или с целью копирования);

― открываемый файл;

― найденный по запросу к DOS файл.

Второй способ используется в основном нерезидентными вирусами. Поиск жертвы в этом случае может осуществляться:

― в текущем каталоге текущего или одного из дисков;

― в корневом каталоге одного из дисков;

― в каталогах, доступных по значению глобальной переменной PATH;

― в любых каталогах файловой структуры путем рекурсивного их обхода.

Файл COMMAND.COM может быть найден по значению глобальной переменной COMSPEC.

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

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

1) увеличение числа файлов на диске;

2) появление на экране сообщения «1 File(s) copied» («Скопирован один файл»), хотя Вы не выдавали команду COPY;

3) уменьшение объема свободной оперативной памяти;

4) изменение даты и времени создания файла;

5) увеличение размера программного файла; ,

6) появление на диске зарегистрированных дефектных кластеров;

7) ненормальная работа программы;

8) замедление работы программы;

9) загорание лампочки дисковода в то время, когда к диску не должны происходить обращения;

10) заметное возрастание времени доступа к жесткому диску;

11) сбои в работе DOS, в частности, ее зависание;

12) невозможность загрузки DOS;

13) разрушение файловой структуры (исчезновение файлов, искажение каталогов).

В качестве примера опишем вирус Vienna, некогда получивший широкое распространение в нашей стране Его размер составляет 648 байт, а инфицирует он только СОМ-файлы. Поиск очередной жертвы осуществляется по расширению СОМ сначала в рабочем каталоге, а затем — в каталогах, доступных по значению глобальной переменной PATH.

Первый, еще не инфицированный, файл либо заражается, либо (с вероятностью 1/8) искажается таким образом, что при запуске вызывает перезагрузку системы. Если испорченным оказался файл COMMAND.COM или любой файл, указанный в файле автозапуска AUTOEXEC.BAT, то процедура загрузки DOS зацикливается. Тело вируса имплантируется в конец СОМ-файла стандартным спо­собом, а время создания последнего заменяется в поле секунд на значение 62. Это помогает вирусу определить инфицированность файла и тем самым избавиться от повторного его заражения.

Каталог существующих вирусов, а также средств их обнаружения и обезвреживания, приведен в Приложении 5.

Наряду с компьютерными вирусами существуют и другие опасные программы, суть которых состоит в обмане пользователя. Такие программы получили название «троянских», заимствованное из известной древнегреческой легенды о Троянском коне. Подобно ему «троянская» программа маскируется под полезную или интересную программу, но обладает порой чрезвычайно разру­шительными побочными эффектами.

Например, имеется «троянская» программа CDIR.COM, которая одновременно с выводом каталогов в цвете разрушает FAT. В качестве другого примера можно назвать программу SEX.EXE, развлекающую пользователя путем отображения пикантных картинок и заодно разрушающую FAT. Интересен тот факт, что две версии популярного антивирусного пакета фирмы McAfee Associates, а именно, 70 и 73, оказались «троянскими» (они, конечно, имеют другое авторство) и попали даже в электронный бюллетень.

Одним из наиболее нашумевших случаев является следующий. Некий Джозеф Попп-младший послал в многие адреса по всему миру дискеты с информацией о СПИДе. Программа, ее отображающая, была «троянской» — разрушала данные на дисках и выводила рекомендацию послать для исцеления дисков 387 долларов в адрес указанного почтового отделения в Панаме. В настоящее время упомянутый горе-шутник привлекается к уголовной ответственности.

В отличие от вирусов «троянские» программы не могут размножаться и внедряться в другие программные изделия.

Наиболее примитивные «троянские» программы проявляют свою сущность при каждом запуске на выполнение. Более совершенные из них аналогично вирусам начинают действовать при наступлении определенного, события или момента времени.

Еще один класс зачастую опасных программ составляют так называемые «черви», формально именуемые репликаторами. Их основная особенность состоит в способности к размножению без внедрения в другие программы. Репликаторы создаются с целью распространения по узлам вы­числительной сети и могут иметь начинку, состоящую, в частности, из вирусов. В этом отношении можно провести недвусмысленную аналогию между «червем» и шариковой бомбой.

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