Классификация вирусов
История компьютерных вирусов уходит своими корнями в прошлый век. С каждым следующим годом, со дня появления вредоносного программного обеспечения, его количество увеличивалось и увеличивалось. Зловреды приобретали всё новые способности и возможности. И, естественно, стандартного определения "компьютерный вирус" стало не хватать. Поэтому и появилась необходимость классификации вредоносного программного обеспечения. Сегодня компьютерный вирус является всего лишь одним из видов зловредных программ. Ну так что же к чему относится? Давайте попробуем разобраться в этом и займёмся классификацией вредоносного ПО. При построении последней мы будем опираться на классификацию ЗАО "Лаборатория Касперского".
Существуют четыре основных вида зловредов: классические компьютерные вирусы, троянские программы, сетевые черви и остальное (хакерские утилиты, джоук-вирусы и т.п.). Теперь давайте по порядку...
Computer Virus
Когда профессионал говорит "вирус", то он имеет в виду именно этот тип вредоносных программ. Вирусы, в отличие от червей, не пользуются сетевыми сервисами для распространения своих копий. Компьютерный вирус, как правило, попадает на компьютер-жертву по причинам, не зависящим от функционала кода. Обычно виноват пользователь, который не проверяет антивирусной программой информацию, попадающую на компьютер, в результате чего, собственно, и происходит заражение. Способов "подцепить" классический вирус довольно много:
- внешние носители информации;
- интернет-ресурсы;
- файлы, распространяющиеся по сети (LAN, Internet).
Классический компьютерный вирус может иметь свойства других типов вредоносного ПО (например, троянскую процедуру удаления информации на диске).
Вирусы делятся на классы по среде обитания, а эти классы, в свою очередь, делятся на подклассы по способу заражения. Итак, по среде обитания вирусы делятся на: файловые, загрузочные, макро и скриптовые.
Файловые вирусы для заражения пользуются файловой системой операционной системы. Они различными способами внедряются в исполняемые файлы, создают файлы-двойники и т.д.
- Паразитические вирусы (Parasitic)
К таковым относятся все вирусы, которые изменяют содержимое файла, но при этом оставляют его работоспособным. Основными типами являются вирусы, записывающиеся в начало файлов (prepending), в конец файлов (appending) и в середину файлов (inserting). В свою очередь, внедрение вирусов в середину файлов происходит различными методами - путём переноса части файла в его конец или копирования своего кода в заведомо неиспользуемые данные файла (cavity-вирусы).
При записывании кода в начало файла вирус может воспользоваться двумя способами. Первый - это перенос начала файла в конец и дописывание собственного кода в освободившееся место. Второй - дописывание кода файла к своему коду. В обоих случаях при запуске файла управление получает вирус, а потом, во избежание подозрений, управление передается обратно файлу-жертве.
При внедрении кода вируса в конец файла используется способ дописывания. Код вируса дописывается в конец файла-жертвы, при этом головная часть файла изменяется таким образом, что управление, опять же, первым получает вирус, ну а потом файл.
При внедрении в середину файла вирус может воспользоваться несколькими вариантами. Первый - это перенос части файла, вместо которой предполагается расположить код вируса, в конец. Второй - так называемое "раздвижение" кода файла. Третий - замещение не исполняемых областей файла кодом вируса. Но каким бы из способов вирус не воспользовался, ему опять придется изменять головную часть файла-жертвы.
Изменение головной части кода файла происходит двумя способами. Наиболее распространен способ, при котором вирус меняет точку входа, "перенося" её на участок, принадлежащий ему. Но некоторые могут просто добавить команду передачи управления, таким образом, файл стартует с оригинальной точки входа, а потом (по дописанной команде) передаёт управление коду вируса.
- Перезаписывающие вирусы (Overwriting)
Самый распространенный способ заражения. Вирус переписывает код программы (заменяет его своим), после чего, естественно, файл перестает работать. Файл, заражённый данным способом, восстановлению не подлежит. Перезаписывающий вирус быстро обнаруживает себя, так как заражённая система (или программа) перестаёт функционировать.
- Вирусы-компаньоны (Companion)
Данный способ подразумевает создание файла двойника, при этом код файла-жертвы не изменяется. Обычно вирус изменяет расширение файла (например, с .exe на .com), потом создаёт свою копию с именем, идентичным имени файла-жертвы, и даёт ему расширение, тоже идентичное. Ничего не подозревающий пользователь запускает любимую программу, которая является вирусом. Вирус, в свою очередь, заражает ещё несколько файлов и запускает программу, затребованную пользователем.
Существуют и ещё способы заражения, но они настолько редко встречаются, что мы остановимся только на их перечислении: вирусы, заражающие объектные модули (OBJ); вирусы, заражающие библиотеки компиляторов (LIB); вирусы, заражающие исходные тексты программ.
Известные на текущий момент загрузочные вирусы заражают загрузочный сектор гибкого диска и boot-сектор или Master Boot Record (MBR) винчестера. Принцип действия загрузочных вирусов основан на алгоритмах запуска операционной системы при включении или перезагрузке компьютера - после необходимых тестов установленного оборудования (памяти, дисков и т.д.) программа системной загрузки считывает первый физический сектор загрузочного диска (A:, C: или CD-ROM в зависимости от параметров, установленных в BIOS Setup) и передаёт на него управление.
При заражении дисков загрузочные вирусы "подставляют" свой код вместо какой-либо программы, получающей управление при загрузке системы. Принцип заражения, таким образом, одинаков во всех описанных выше способах: вирус "заставляет" систему при её перезапуске считать в память и отдать управление не оригинальному коду загрузчика, но коду вируса.
Заражение дискет производится единственным известным способом - вирус записывает свой код вместо оригинального кода boot-сектора дискеты. Винчестер заражается тремя возможными способами - вирус записывается либо вместо кода MBR, либо вместо кода boot-сектора загрузочного диска (обычно диска C:), либо модифицирует адрес активного boot-сектора в таблице разделов диска (Disk Partition Table), расположенной в MBR винчестера.
При инфицировании диска вирус в большинстве случаев переносит оригинальный boot-сектор (или MBR) в какой-либо другой сектор диска (например, в первый свободный). Если длина вируса больше длины сектора, то в заражаемый сектор помещается первая часть вируса, остальные части размещаются в других секторах (например, в первых свободных).
Макровирусы, в основном, заражают документы MS Office. При этом вирус добавляет свой код в область макросов документа.
Скрипт-вирусы - это вирусы, написанные на скрипт-языках (VBS, JS, BAT, PHP и т.д.). Заражают они файлы довольно большого диапазона расширений: от .exe до .html.
(Продолжение следует)
Евгений КУЧУК,
q@sa-sec.org
SASecurity gr.