Загрузочные
вирусы
Загрузочные вирусы заражают загрузочный (boot) сектор флоппи-диска
и boot-сектор или Master Boot Record (MBR) винчестера. Принцип
действия загрузочных вирусов основан на алгоритмах запуска операционной
системы при включении или перезагрузке компьютера - после необходимых
тестов установленного оборудования (памяти, дисков и т.д.) программа
системной загрузки считывает первый физический сектор загрузочного
диска (A:, C: или CD-ROM в зависимости от параметров, установленных
в BIOS Setup) и передает на него управление.
В случае дискеты или компакт-диска управление получает boot-сектор,
который анализирует таблицу параметров диска (BPB - BIOS Parameter
Block) высчитывает адреса системных файлов операционной системы,
считывает их в память и запускает на выполнение. Системными файлами
обычно являются MSDOS.SYS и IO.SYS, либо IBMDOS.COM и IBMBIO.COM,
либо других в зависимости от установленной версии DOS, Windows
или других операционных систем. Если же на загрузочном диске отсутствуют
файлы операционной системы, программа, расположенная в boot-секторе
диска выдает сообщение об ошибке и предлагает заменить загрузочный
диск.
В случае винчестера управление получает программа, расположенная
в MBR винчестера. Эта программа анализирует таблицу разбиения
диска (Disk Partition Table), вычисляет адрес активного boot-сектора
(обычно этим сектором является boot-сектор диска C:), загружает
его в память и передает на него управление. Получив управление,
активный boot-сектор винчестера проделывает те же действия, что
и boot-сектор дискеты.
При заражении дисков загрузочные вирусы "подставляют"
свой код вместо какой-либо программы, получающей управление при
загрузке системы. Принцип заражения, таким образом, одинаков во
всех описанных выше способах: вирус "заставляет" систему
при ее перезапуске считать в память и отдать управление не оригинальному
коду загрузчика, но коду вируса.
Заражение дискет производится единственным известным способом
- вирус записывает свой код вместо оригинального кода boot-сектора
дискеты. Винчестер заражается тремя возможными способами - вирус
записывается либо вместо кода MBR, либо вместо кода boot-сектора
загрузочного диска (обычно диска C:), либо модифицирует адрес
активного boot-сектора в Disk Partition Table, расположенной в
MBR винчестера.
При инфицировании диска вирус в большинстве случаев переносит
оригинальный boot-сектор (или MBR) в какой-либо другой сектор
диска (например, в первый свободный). Если длина вируса больше
длины сектора, то в заражаемый сектор помещается первая часть
вируса, остальные части размещаются в других секторах (например,
в первых свободных).
Существует несколько вариантов размещения на диске первоначального
загрузочного сектора и продолжения вируса: в сектора свободных
кластеров логического диска, в неиспользуемые или редко используемые
системные сектора, в сектора, расположенные за пределами диска.
Если продолжение вируса размещается в секторах, которые принадлежат
свободным кластерам диска (при поиске этих секторов вирусу приходится
анализировать таблицу размещения файлов - FAT), то, как правило,
вирус помечает в FAT эти кластеры как сбойные (так называемые
псевдосбойные кластеры). Этот способ используется вирусами "Brain",
"Ping-Pong" и некоторыми другими.
В вирусах семейства "Stoned" задествован другой метод.
Эти вирусы размещают первоначальный загрузочный сектор в неиспользуемом
или редко используемом секторе - в одном из секторов вничестера
(если такие есть), расположенных между MBR и первым boot-сектором,
а на дискете такой сектор выбирается из последних секторов корневого
каталога.
Некоторые вирусы записывают свой код в последние сектора винчестера,
поскольку эти сектора используются только тогда, когда винчестер
полностью заполнен информацией (что является довольно редким явлением,
если учесть размеры современных дисков). Однако такие вирусы приводят
к порче файловой системы OS/2, которая в некоторых случаях хранит
активный boot-сектора и системные данные как раз в последних секторах
винчестера.
Реже используется метод сохранения продолжения вируса за пределами
диска. Достигается это двумя способами. Первый сводится к уменьшению
размеров логических дисков: вирус вычитает необходимые значения
из соответствующих полей BPB boot-сектора и Disk Partition Table
винчестера (если заражается винчестер), уменьшает таким образом
размер логичесного диска и записывает свой код в "отрезанные"
от него сектора.
Второй способ - запись данных за пределами физического разбиения
диска. В случае флоппи-дисков вирусу для этого приходится форматировать
на диске дополнительный трек (метод нестандартного форматирования),
например, 40-й трек на 360K дискете или 80-й трек на 1.2M и 1.4M
дискетах. Существуют вирусы, записывающие свой код за пределами
доступного пространства винчестера, если, разумеется, это допускается
установленным оборудованием (см. вирус "Hare").
Конечно, существуют и другие методы размещения вируса на диске,
например, вирусы семейства "Azusa" содержат в своем
теле стандартный загрузчик MBR и при заражении записываются поверх
оригинального MBR без его сохранения.
При заражении большинство вирусов копирует в код своего загрузчика
системную информацию, хранящуюся в первоначальном загрузчике (для
MBR этой информацией является Disk Partition Table, для Boot-сектора
дискет - BIOS Parameter Block). В противном случае система окажется
неспособной загрузить себя, поскольку дисковые адреса компонент
системы высчитываются на основе этой информации. Такие вирусы
довольно лекго удаляются переписыванием заново кода системного
загрузчика в boot-секторе и MBR - для этого необходимо загрузиться
с незараженной системной дискеты и использовать команды SYS для
обезвреживания дискет и логических дисков винчестера или FDISK/MBR
для лечения зараденного MBR-сектора.
Однако некоторые 100%-стелс вирусы не сохраняют эту информацию
или даже более того - преднамеренно шифруют ее. При обращении
системы или других программ к зараженным секторам вирус подставляет
их незараженные оригиналы, и загрузка системы происходит без каких-либо
сбоев, однако лечение MBR при помощи FDISK/MBR в случае такого
вируса приводит к потере информации о разбиении диска (Disk Partition
Table). В этом случае диск может быть "оживлен" либо
переформатированием с потерей всей информации, либо восстановлением
Disk Partition Table "вручную", что требует определенной
квалификации.
Следует также отметить тот факт, что загрузочные вирусы очень
редко "уживаются" вместе на одном диске - часто они
используют одни и те же дисковые сектора для размещения своего
кода/данных. В результате код/данные первого вируса оказываются
испорченными при заражении вторым вирусом, и система либо зависает
при загрузке, либо зацикливается (что также приводит к ее зависанию).
Пользователям новых операционных систем (Novell, Win95, OS/2)
загрузочные вирусы также могут доставить неприятности. Несмотря
на то, что перечисленные выше системы работают с дисками напрямую
(минуя вызовы BIOS), что блокирует вирус и делает невозможным
дальнейшее его распространение, код вируса все-таки, хоть и очень
редко, получает управление при перезагрузке системы. Поэтому вирус
"March6", например, может годами "жить" в
MBR сервера и никак не влиять при этом на его (сервера) работу
и производительность. Однако при случайной перезагрузке 6-го марта
этот вирус полностью уничтожит все данные на диске.
Файловые
вирусы
К данной группе относятся вирусы, которые при своем размножении
тем или иным способом используют файловую систему какой-либо (или
каких-либо) ОС.
Внедрение файлового вируса возможно практически во все исполняемые
файлы всех популярных ОС. На сегодняшний день известны вирусы,
поражающие все типы выполняемых объектов стандартной DOS: командные
файлы (BAT), загружаемые драйверы (SYS, в том числе специальные
файлы IO.SYS и MSDOS.SYS) и выполняемые двоичные файлы (EXE, COM).
Существуют вирусы, поражающие исполняемые файлы других операционных
систем - Windows 3.x, Windows95/NT, OS/2, Macintosh, UNIX, включая
VxD-драйвера Windows 3.x и Windows95.
Существуют вирусы, заражающие файлы, которые содержат исходные
тексты программ, библиотечные или объектные модули. Возможна запись
вируса и в файлы данных, но это случается либо в результате ошибки
вируса, либо при проявлении его агрессивных свойств. Макро-вирусы
также записывают свой код в файлы данных - документы или электронные
таблицы, - однако эти вирусы настолько специфичны, что вынесены
в отдельную группу.
Назад
- Далее