КОМПЬЮТЕРНАЯ ВИРУСОЛОГИЯ
бутсектора дискеты на незараженном компьютере легко видеть измене-
ния загрузчика (дамп стандартного бутсектора приведен в прил.6).
Структура стандартного загрузчика лишь незначительно меняется от
версии к версии MS DOS, поэтому изменения легко выявить визуально
(особенно первых трех байтов, содержащих команду JMP на начало
загрузчика) или с помощью подходящей программы (Scan, Aidstest и
др.). Такая проверка должна обязательно проводиться для всех по-
ступающих дискет.
Как уже указывалось, файловые вирусы обычно состоят из одного
сегмента. Впрочем, первую команду JMP, подставляемую большинством
файловых вирусов, дописывающих свое тело в конец COM-файла, можно
рассматривать как вырожденный сегмент. Бутовый вирус всегда состо-
ит из нескольких сегментов. Обычно таких сегментов два и мы будем
называть их головой и хвостом.
Положение головы бутового вируса на дискете определено однознач-
но: она всегда расположена в бутсекторе и занимает ровно сектор.
На винчестере ситуация немного сложнее: голова бутового вируса мо-
жет располагаться в одном из его двух бутсекторов — главном (MBR -
Master Boot Record, расположенный по абсолютному дисковому адресу
0/0/1) или бутсекторе логического диска С, обычно занимающего пер-
вый сектор соответствующего логического диска. Для наиболее рас-
пространенных 40 M винчестеров это обычно абсолютный сектор 18
(при 17 секторах на трек его адрес равен 1/0/1).
Хвост бутового вируса может располагаться в разных местах, на-
пример: кластерах, отмеченных на диске как сбойные и тем самым ис-
ключенных из дальнейшего распределения (псевдосбойные кластеры);
последних физических секторах дискеты или винчестера, поскольку
они обычно всегда свободны (например, 40/39/8 для обычных 360К ди-
скет); в неиспользуемых блоках FAT, главного каталога или одного
из подкаталогов; дополнительных дорожках дискеты или винчестера
(41 и последующие дорожки для 360К дискет).
В любом случае хвост вируса должен содержать копию оригинального
бутсектора, и если она хранится не в закодированном виде, то поло-
жение хвоста в большинстве случаев можно определить глобальным
контекстным поиском по дискете или винчестеру (исключением являет-
ся случай использования для хвоста дополнительных дорожек на дис-
кете или винчестере). В минимальном варианте хвост может состоять
только из одного сектора с оригинальным бутсектором.
Для всех бутовых вирусов механизм заражения однотипен. Когда MS
DOS загружается с зараженного диска, бутовый вирус получает управ-
ление и сначала копирует себя в старшие адреса памяти. Затем он
уменьшает размер памяти, заменяя значение вектора прерываний A2h с
тем, чтобы защитить резидентную часть вируса, и 13h с тем, чтобы
перехватывать обращения к диску. Таким образом, при любом обраще-
нии к диску управление получает обработчик этого прерывания, со-
ставляющий основную часть тела вируса. После этих действий вирус
запускает стандартный системный загрузчик, который загружает
IBMBIO.COM и IBMDOS.COM (или IO.SYS и MSDOS.SYS), т.е. происходит
стандартная загрузка системы.
Получив управление по прерыванию по чтению, вирус анализирует,
относится ли оно к дискете или к винчестеру. Если это прерывание
относится к дискете, то сначала вирус проверяет, заражена уже дан-
ная дискета или нет. Для этой цели считывается бутсектор и прове-
ряется его содержимое. Если дискета еще не заражена, то вирус за-
ражает дискету, а затем обрабатывает команду READ. В случае, если
дискета уже заражена, вирус сразу переходит к обработке команды
READ; так же он поступает в случае, если дискета защищена от запи-
си.
Что касается места, в котором бутовый вирус прячет свой хвост,
то как было отмечено выше, оно различается от вируса к вирусу.
Наиболее часто бутовые вирусы размещают свой хвост в свободном
кластере(ах), который помечается как сбойный. Последнее необходимо
для того, чтобы занятый вирусом кластер(ы) не был использован MS
DOS при создании нового файла и вместе с тем является неплохим ме-
тодом маскировки, поскольку пользователи обычно плохо представляют
структуру диска и не следят за количеством сбойных кластеров на
нем.
Еще раз подчеркнем, что бутовые вирусы инфицируют любые дискеты,
а не только системные. Как уже указывалось, это связано с тем, что
с несистемной дискеты также может выполняться попытка загрузки MS
DOS. Чаще всего такая ситуация возникает после зависания операци-
онной системы. Если при перезагрузке инфицированная дискета ока-
жется в «готовом» дисководе А, то естественно, загрузка будет сна-
чала выполняться с нее. В этом случае программа начальной загрузки
считывает зараженный ВООТ и передает ему управление. Вирус загру-
жает себя в оперативную память и имитирует сообщение, выдаваемое в
этом случае стандартным загрузчиком:
Non system disk
При этом, если пользователь откроет дисковод с дискетой и нажмет
клавишу Enter (Ввод), то вирус останется в памяти, заразит винче-
стер и в дальнейшем будет заражать все вставляемые дискеты, к ко-
торым производится хотя бы одно обращение (достаточно команды
DIR). Все бутовые вирусы перехватывают 13 прерывание (см. прил. ![]()
и поэтому обычно конфликтуют с драйверами, поддерживающими нестан-
дартные форматы (например, 720 K). В лучшем случае при этом проис-
ходит зависание системы или выдача сообщения о делении на нуль. В
худшем случае операционная система остается работоспособной, на
дискету что-то пишется, но потом ничего прочитать с нее нельзя.
Особое внимание стоит обратить на тот факт, что некоторые бутовые
вирусы перехватывают прерывание с клавиатуры и могут пережить в
оперативной памяти мягкую перезагрузку (т.е. перезагрузку с по-
мощью нажатия клавиш Ctrl-Alt-Del). Из выявленных в CCCР вирусов к
этому типу относится вирус WM-1F (Joshy).
Как уже отмечалось, голова бутового вируса всегда находится в
бутсекторе и для контроля дискет на зараженность можно просто про-
смотреть содержимое бутсектора. В целом даже это не является необ-
ходимым. Поскольку подавляющее большинство дискет не является за-
гружаемыми, можно профилактически разрушать содержимое бутсектора
таких дискет. В частности, там можно хранить информацию о времени
и источнике получения дискеты или какие-то указания по ее исполь-
зованию. Достаточно разрушить первые три байта бутсектора, чтобы
нейтрализовать любой бутовый вирус. Это можно сделать с помощью
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128