Способ раннего обнаружения загрузочных вирусов
А. Захарченко
В эпоху расцвета макровирусов и троянцев тема загрузочных и файлово-загрузочных (boot и multi) вирусов может показаться неактуальной. Действительно, массовый переход на Windows создал значительные трудности для выживания DOS-ориентированных программ, особенно если они должны заботится об этом сами. Тем не менее в списке WildList (www.wildlist.org) в разделе часто встречающихся вирусов еще до недавнего времени присутствовали AntiExe, AntiCMOS и OneHalf. Резервациями для них служат компьютеры публичного доступа (учебные заведения, игротеки и т.д.) под управлением Win95/98, и заброшенные "тетрисодромы" - компьютеры допентиумной эры, превращенные в склад всякого хлама.
Для обнаружения загрузочных вирусов в BIOS была введена проверка записи в сектор главной загрузочной записи (MBR) диска (Virus Warning). По умолчанию эта опция отключена. Кроме того, инструкция по установке Windows также требует ее отключения, иначе нормальный ход установки прекращается без объяснений (на самом деле предупреждение о записи в загрузочный сектор просто не выводится на экран и необходимо нажать клавишу "Y", чтобы установка продолжилась). Таким образом скрытый доступ к MBR и ее изменение все еще возможны на компьютерах с Win95/98.
В задачу MBR входит определение загрузочного (активного) раздела жесткого диска и передача управления загрузчику операционной системы (ОС). Стандартная MBR вместе с таблицей частей (Partition Table), описывающей структуру жесткого диска, размещается на винчестере в 1 секторе, на 0-й дорожке 0-го цилиндра. Ее загрузку в оперативную память осуществляет BIOS после успешного завершения теста оборудования. В этот момент процессор находится в реальном режиме работы, когда разрешено бесконтрольное выполнение любых команд.
Это предопределило появление DOS-вирусов, использующих в своем жизненном цикле загрузочную запись. Она модифицируется таким образом, чтобы вместо операционной системы управление сначала получал вирусный код. Только после своего размещения в оперативной памяти вирус возобновляет нормальный ход загрузки. Сложности программирования (а до загрузки ОС можно использовать только функции BIOS и прямую работу с "железом") с избытком компенсируются выгодами контроля над работой операционной системы и относительной невидимостью для антивирусных программ.
Даже если загрузочный вирус не содержит деструктивных функций он крайне опасен. Ошибки программированя приведут к неустойчивости работы ОС, потере данных, а загрузка "неродной" ОС даст вообще непредсказуемый результат. Сохранность информации зависит от раннего обнаружения злонамеренного кода (malicious code). Разнообразие вирусных алгоритмов и многочисленные просчеты в проектировании системного обеспечения не позволяют разработать универсальных методов диагностики.
Загрузочные вирусы представляют исключение. Их можно обнаружить по перехваченным векторам прерываний до загрузки ОС. Дело в том, что в момент передачи управления на MBR все прерывания обрабатываться только BIOS, а значит попадают во вполне определенный диапазон адресов. Внедрившийся вирус обязательно перехватывает некоторые прерывания для обеспечения своей работы. Обычно это комбинация из 13h (диск), 9h (клавиатура), 8h и/или 1Ch (таймер), 17h (принтер), 21h (MS DOS), 12h (размер памяти). Если в момент старта MBR какие-либо из перечисленных прерываний перехвачены, то можно с уверенностью говорить о присутствии boot-вируса. Для проверки достаточно немного изменить загрузчик (см. Приложение).
В приведенном примере в код MBR вводятся инструкции для просмотра элементов таблицы прерываний. В случае обнаружения обработчика вне сегмента F000h на экран выводится предупреждение. Более правильным будет поиск обработчиков прерываний вне диапазона адресов, в которых могут находиться внешние модули ROM и BIOS (сегменты C800h - F000h). Вирус в любом случае никак не может повлиять на диагностику. Ему мешают те же особенности работы процессора, которые он использует сам.
Некоторые вирусы не сохраняют оригинальную MBR и обрабатывают таблицу частей сами. В этом случае признаком заражения станет исчезновение подписи самотестирующегося загрузчика при старте компьютера. Таким образом, появление загрузочных вирусов можно обнаружить уже при первом перезапуске системы, независимо от его новизны и изощренности стелс-средств.
[an error occurred while processing this directive]
[an error occurred while processing this directive]