2. Загрузочные вирусы
Иногда загрузочные вирусы называют бутовыми вирусами.
Загрузочные вирусы записывают себя
в загрузочный сектор диска (Boot Record, BR) -сектор),
в сектор, содержащий системный загрузчик жесткого диска, системной дискеты или загрузочного компакт-диска (Master Boot Record), подменяя находящиеся в них программы начальной загрузки и загрузки операционной системы своим кодом.
Исходное содержимое этих секторов при этом сохраняется в одном из свободных секторов диска или непосредственно в теле вируса.
В случае CD-диска управление получает boot-сектор диска, который анализирует таблицу параметров диска (ВРВ — BIOSParameterBlock), высчитывает адреса системных файлов ОС, считывает их в память и запускает на выполнение. Если же на загрузочном диске отсутствуют файлы операционной системы, программа, расположенная в boot-секторе диска, выдает сообщение об ошибке и предлагает заменить загрузочный диск. В случае винчестера управление получает программа, расположенная в MBR (MasterBootRecord) винчестера. Она анализирует таблицу разбиения диска (DiskPartitionTable), вычисляет адрес активного boot-сектора (обычно этим сектором является boot-сектор диска С:), загружает его в память и передает на него управление. Получив управление, активный boot-сектор винчестера проделывает те же действия, что и boot-сектор дискеты.
При заражении дисков загрузочные вирусы подставляют свой код вместо какой-либо программы, получающей управление при загрузке системы. Принцип заражения, таким образом, одинаков во всех описанных выше способах: вирус "заставляет" систему при ее перезапуске считать в память и отдать управление не оригинальному коду загрузчика, а коду вируса.
Заражение дисков производится единственным известным способом: вирус записывает свой код вместо оригинального кода boot-сектора дисков.
Способы заражения винчестера:
вирус записывается либо вместо кода MBR (Master Boot Record),
либо вместо кода boot-сектора загрузочного диска (обычно диска С),
либо модифицирует адрес активного boot-сектора в Disk Partition Table, расположенный в MBR винчестера.
После заражения MBR, являющегося первым сектором нулевой головки нулевого цилиндра жесткого диска, вирус получает управление сразу по завершении работы процедуры проверки оборудования (POST), программы BIOS Setup (если она была вызвана пользователем), процедур BIOS и его расширений.
Аналогичным образом работает и загрузочный вирус в BR, замещая программу загрузки операционной системы.
Обычной формой заражения компьютера загрузочным вирусом является случайная попытка загрузки с несистемной дискеты, загрузочный сектор которой заражен вирусом. Эта ситуация возникает, когда зараженный диск остается в дисководе при выполнении перезагрузки операционной системы. После заражения главного загрузочного сектора жесткого диска вирус распространяется при первом обращении к любому незараженному диску. В связи с тем, что загрузочные сектора магнитных дисков имеют небольшой размер (512 байт), при их заражении сложным вирусом необходимо найти дополнительные места размещения той части его кода, которая не поместилась в зараженных объектах.
Существует несколько вариантов размещения на диске первоначального загрузочного сектора и продолжения вируса:
занесение кода вируса в свободные сектора диска с пометкой их как дефектных для защиты от перезаписи (псевдосбойные сектора);
помещение кода вируса в редко занимаемые свободные сектора в конце одного из разделов жесткого диска, которые остаются помеченными как свободные;
перенос части кода вируса в зарезервированные для последующего применения операционной системой сектора диска сектора;
в сектора, расположенные за пределами диска.
Короткие вирусы могут уместиться в один сектор загрузчика и полностью взять на себя функции MBR.
Если продолжение вируса размещается в секторах, которые принадлежат свободным кластерам диска (при поиске этих секторов вирусу приходится анализировать таблицу размещения файлов — FAT), то, как правило, вирус помечает в FAT эти кластеры как сбойные (так называемые "псевдосбойные" кластеры).
Некоторые вирусы записывают свой код в последние сектора винчестера поскольку они используются только тогда, когда винчестер полностью заполнен информацией, что бывает довольно редко, если учесть размеры современных дисков
Следует также отметить тот факт, что загрузочные вирусы очень редко уживаются вместе на одном диске. Часто они используют одни и те же дисковые сектора для размещения своего кода/данных. В результате код/данные первого вируса оказываются испорченными при заражении вторым вирусом, и система либо зависает при загрузке, либо зацикливается (что также приводит к ее зависанию).
Алгоритм работы загрузочного вируса
Получив управление, загрузочный вирус выполняет следующие действия:
копирование своего кода в конец оперативной памяти компьютера, уменьшая тем самым размер ее свободной части;
переопределение «на себя» нескольких прерываний BIOS, в основном связанных с обращением к дискам;
загрузка в оперативную память компьютера истинной программы начальной загрузки, в функции которой входит просмотр таблицы разделов жесткого диска, определение активного раздела, загрузка и передача управления программе загрузки операционной системы активного раздела;
передача управления истинной программе начальной загрузки.
