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

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

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

· последующему самостоятельному выполнению;

· самостоятельному распространению в компьютерных системах и сетях.

Вирусы можно разделить на классы по следующим основным признакам: среда обитания; операционная система (ОС); особенности алгоритма работы; деструктивные возможности.

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

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

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

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

Сетевые вирусы используют для своего распространения протоколы или команды компьютерных сетей и электронной почты.

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

Заражаемая операционная система (вернее, ОС, объекты которой подвержены заражению) является вторым уровнем деления вирусов на классы. Каждый файловый или сетевой вирус заражает файлы какой-либо одной или нескольких ОС – DOS, Windows, OS/2 и т. д. Макровирусы заражают файлы форматов MS Word и MS Excel. Загрузочные вирусы также ориентированы на конкретные форматы расположения системных данных в загрузочных секторах дисков.

Среди особенностей алгоритма работы вирусов выделяются следующие:

· резидентность;

· использование стелс-алгоритмов;

· самошифрование и полиморфичность;

· использование нестандартных приемов.

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

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

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

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

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

Различные нестандартные приемы часто используются в вирусах для того, чтобы как можно глубже спрятать себя в ядре ОС, защитить от обнаружения свою резидентную копию, затруднить лечение от вируса (например, помещают свою копию в Flash-BIOS) и т. д.

По деструктивным возможностям вирусы можно разделить на:

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

· неопасные, влияние которых ограничивается уменьшением свободной памяти на диске и графическими, звуковыми и прочими эффектами;

· опасные вирусы, которые могут привести к серьезным сбоям в работе компьютера;

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

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

Файловые вирусы

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

Файловые вирусы могут внедряться практически во все исполняемые файлы всех популярных ОС. Известны вирусы, поражающие все типы выполняемых объектов DOS: командные файлы (ВАТ), загружаемые драйверы (SYS, в том числе специальные файлы IO.SYS и MSDOS.SYS) и выполняемые двоичные файлы (ЕХЕ, СОМ). Существуют вирусы, поражающие исполняемые файлы других ОС – Win32, OS/2, Macintosh, Unix.

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

По способу заражения файлов вирусы делятся на overwriting, паразитические (parasitic), компаньон-вирусы (companion), link-вирусы, вирусы-черви и вирусы, заражающие объектные модули (OBJ), библиотеки компиляторов (LIB) и исходные тексты программ.

Overwriting-вирусы. Данный метод заражения является наиболее простым: вирус записывает свой код вместо кода заражаемого файла, уничтожая его содержимое. Естественно, что при этом файл перестает работать и не восстанавливается. Такие вирусы очень быстро обнаруживают себя, так как ОС и приложения довольно быстро перестают работать.

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

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

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

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

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

Отдельно следует отметить довольно незначительную группу вирусов, не имеющих точки входа (ЕРО-вирусы – Entry Point Obscuring viruses). К ним относятся вирусы, не записывающие команд передачи управления в начало исполняемых файлов или не изменяющие адрес точки старта в заголовке ЕХЕ-файлов. Такие вирусы записывают команду перехода на свой код в какое-либо место в середину файла и получают управление не непосредственно при запуске зараженного файла, а при вызове процедуры, содержащей код передачи управления на тело вируса. Причем выполняться эта процедура может крайне редко (например, при выводе сообщения о какой-либо специфической ошибке). В результате вирус может долгие годы "спать" внутри файла и выскочить на свободу только при некоторых ограниченных условиях.

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

Наиболее распространены компаньон-вирусы, использующие особенность DOS первым выполнять .СОМ-файл, если в одном каталоге присутствуют два файла с одним и тем же именем, но различными расширениями имени – .СОМ и .ЕХЕ. Такие вирусы создают для ЕХЕ-файлов файлы-спутники, имеющие то же самое имя, но с расширением .СОМ. Вирус записывается в СОМ-файл и никак не изменяет ЕХЕ-файл. При запуске такого файла DOS первым обнаружит и выполнит СОМ-файл, т. е. вирус, который затем запустит и ЕХЕ-файл. Некоторые вирусы используют не только вариант СОМ-ЕХЕ, но также и ВАТ-СОМ-ЕХЕ.

Вторую группу составляют вирусы, которые при заражении переименовывают файл, давая ему какое-либо другое имя, запоминают его (для последующего запуска файла-хозяина) и записывают свой код на диск под именем заражаемого файла. При запуске управление получает код вируса, который затем запускает оригинальный программный файл, хранящийся под другим именем. Интересен тот факт, что данный метод работает, наверное, во всех ОС – подобного типа вирусы были обнаружены не только в DOS, но и в Windows, и OS/2.

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

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

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

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

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

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

Зараженный файл при этом не является выполняемым и не способен на дальнейшее распространение вируса в своем текущем состоянии. Носителем же "живого" вируса становится СОМ- или ЕХЕ-файл, получаемый в процессе компоновки зараженного OBJ/LIB-файла с другими объектными модулями и библиотеками. Таким образом, вирус распространяется в два этапа: на первом заражаются OBJ/LIB-файлы, на втором (компоновка) получается работоспособный вирус.

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

Загрузочные вирусы

Загрузочные вирусы заражают загрузочный (boot) сектор гибкого диска и boot-сектор или Master Boot Record (MBR) винчестера. Принцип действия загрузочных вирусов основан на алгоритмах запуска ОС при включении или перезагрузке компьютера: после необходимых тестов установленного оборудования (памяти, дисков и т. д.) программа системной загрузки считывает первый физический сектор загрузочного диска и передает управление на А:, С: или CD-ROM, в зависимости от параметров, установленных в BIOS Setup.

В случае дискеты или CD-диска управление получает boot-сектор диска, который анализирует таблицу параметров диска (ВРВ – BIOS Parameter Block), высчитывает адреса системных файлов ОС, считывает их в память и запускает на выполнение. Если же на загрузочном диске отсутствуют файлы операционной системы, программа, расположенная в boot-секторе диска, выдает сообщение об ошибке и предлагает заменить загрузочный диск.

В случае винчестера управление получает программа, расположенная в MBR винчестера. Она анализирует таблицу разбиения диска (Disk Partition Table), вычисляет адрес активного boot-сектора (обычно этим сектором является boot-сектор диска С:), загружает его в память и передает на него управление. Получив управление, активный boot-сектор винчестера проделывает те же действия, что и boot-сектор дискеты.

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

Заражение дискет производится единственным известным способом: вирус записывает свой код вместо оригинального кода boot-сектора дискеты. Винчестер заражается тремя возможными способами: вирус записывается либо вместо кода MBR, либо вместо кода boot-сектора загрузочного диска (обычно диска С:), либо модифицирует адрес активного boot-сектора в Disk Partition Table, расположенный в MBR винчестера.

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

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

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

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

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

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

Второй способ – запись данных за пределами физического разбиения диска. В случае жестких дисков вирусу для этого приходится форматировать на диске дополнительный трек (метод нестандартного форматирования), например, 40-й трек на 360 Кб дискете или 80-й трек на 1,2 Мб и 1,4 Мб дискетах. Имеются вирусы, записывающие свой код за пределами доступного пространства винчестера, если, разумеется, это допускается установленным оборудованием.

Макровирусы

Макровирусы (macro viruses) являются программами на языках (макроязыках), встроенных в некоторые системы обработки данных (текстовые редакторы, электронные таблицы и т. д.). Для своего размножения такие вирусы используют возможности макроязыков и при их помощи переносят себя из одного зараженного файла (документа или таблицы) в другие. Наибольшее распространение получили макровирусы для Microsoft Word и Excel.

Для существования вирусов в конкретной системе необходимо наличие встроенного в систему макроязыка с возможностями:

1) привязки программы на макроязыке к конкретному файлу;

2) копирования макропрограмм из одного файла в другой;

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

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

Большинство известных Word-вирусов при запуске переносят свой код (макросы) в область глобальных макросов документа ("общие" макросы), для этого они используют команды копирования макросов MacroCopy, Organizer.Сору либо при помощи редактора макросов. Вирус вызывает его, создает новый макрос, вставляет в него свой код, который и сохраняет в документе.

При выходе из Word глобальные макросы (включая макросы вируса) автоматически записываются в DOT-файл глобальных макросов (обычно это NORMAL.DOT). Таким образом, при следующем запуске Word вирус активизируется в тот момент, когда WinWord грузит глобальные макросы, т. е. сразу.

Затем вирус переопределяет (или уже содержит в себе) один или несколько стандартных макросов (например, FileOpen, FileSave, FileSaveAs, FilePrint) и перехватывает команды работы с файлами. При вызове этих команд вирус заражает файл, к которому идет обращение. Для этого вирус конвертирует файл в формат Template (что делает невозможным дальнейшие изменения формата файла, т. е. конвертирование в какой-либо не-Template-формат) и записывает в файл свои макросы, включая автомакрос.

Таким образом, если вирус перехватывает макрос FileSaveAs, то заражается каждый DOC-файл, сохраняемый через перехваченный вирусом макрос. Если перехвачен макрос FileOpen, то вирус записывается в файл при его считывании с диска.

Второй способ внедрения вируса в систему используется значительно реже. Он базируется на так называемых Add-in-файлах, т. е. файлах, являющихся служебными дополнениями к Word. В этом случае NORMAL.DOT не изменяется, a Word при запуске загружает макросы вируса из файла (или файлов), определенного как Add-in. Этот способ практически полностью повторяет заражение глобальных макросов за тем исключением, что макросы вируса хранятся не в NORMAL.DOT, а в каком-либо другом файле.

Методы размножения Excel-вирусов в целом аналогичны методам Word-вирусов. Различия заключаются в командах копирования макросов (например, Sheets.Copy) и в отсутствии NORMAL.DOT, его функцию (в вирусном смысле) выполняют файлы в STARTUP-каталоге Excel.

Сетевые вирусы

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

Наибольшую известность приобрели сетевые вирусы конца 80-х, их также называют сетевыми червями (worms). К ним относятся вирус Морриса, вирусы Cristmas Tree и Wank Worm. Для своего распространения они использовали ошибки и недокументированные функции глобальных сетей того времени. Вирусы передавали свои копии с сервера на сервер и запускали их на выполнение. Эпидемия вируса Морриса захватила в свое время несколько глобальных сетей в США

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

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

Вновь проблема сетевых вирусов возникла лишь в начале 1997 г. с появлением вирусов Macro.Word.ShareFun и Win.Homer. Первый из них использует возможности электронной почты Microsoft Mail. Он создает новое письмо, содержащее зараженный файл-документ (ShareFun является макровирусом), затем выбирает из списка адресов MS-Mail три случайных адреса и рассылает по ним зараженное письмо. Поскольку многие пользователи устанавливают параметры MS-Mail таким образом, что при получении письма автоматически запускается MS Word, то вирус "автоматически" внедряется в компьютер адресата зараженного письма.

Этот вирус иллюстрирует первый тип современных сетевых вирусов, которые объединяют возможности встроенного в Word и Excel языка Бейсик, протоколы и особенности электронной почты и функции автозапуска, необходимые для распространения вируса.

Второй вирус (Homer) использует для распространения протокол FTP (File Transfer Protocol) и передает свою копию на удаленный ftp-сервер в каталог Incoming. Поскольку сетевой протокол FTP не позволяет запускать файлы на удаленном сервере, этот вирус можно охарактеризовать как полусетевой, однако это реальный пример возможностей вирусов по использованию современных сетевых протоколов и поражению глобальных сетей.

Наши рекомендации