
КАТАЛОГ БУТОВЫХ ВИРУСОВ                            (C) Д.А.МАКАРОВ, Москва 1992
_______________________________________________________________________________

                 BOOTCAT - КОТ В САПОГАХ - ПРОТИВ ТЕХНО-КРЫС!

                                ОБЩИЕ ЗАМЕЧАНИЯ

     Устройство и  работа  бутовых вирусов в основном одинаковы (с точностью до
порядка выполняемых действий) и описаны ниже.  Статьи каталога представляют со-
бой уточнения этой общей спецификации.

     УСТАНОВКА. Любой бутовый вирус является резидентным,  поэтому основная его
часть - модули обработки прерываний,  среди которых основное место обычно зани-
мает обработчик прерывания 13h, ответственный за заражение дискет. Другой необ-
ходимый модуль - установщик,  получающий управление при загрузке и занимающийся
обустройством  вируса  в  памяти  (установка в резидент,  перехват прерываний и
т.п.), а также нередко и заражением жесткого диска. Кроме того, вирус может со-
держать подпрограммы и области данных, совместно используемые разными модулями.
Фрагменты, связанные с фазой проявления, могут быть встроены в любые модули.
     Установщик получает управление, когда компьютер подготовлен к работе стар-
товыми  программами  BIOS (протестированы устройства,  сформированы и заполнены
относящиеся к BIOS области данных и таблицы прерываний), но DOS еще не загруже-
на.  BIOS  загружает  и  запускает  бутсектор  (т.е.  голову  вируса)  с адреса
0000:7C00.  Установщик уменьшает на несколько килобайт размер доступной DOS ба-
зовой памяти (слово по адресу 0040:0013),  создавая скрытую память для резиден-
та, копирует туда свой код и передает управление резидентной копии. Затем чита-
ется  в  скрытую память продолжение вируса (если оно есть),  а на место прежней
копии - исходный бут или MBR (если он  сохранен).  Перехватываются  необходимые
прерывания (первые вирусы иногда заводили при этом новые прерывания для обраще-
ния к BIOS;  сейчас этот метод устарел).  Если вирус имеет счетчик загрузок, то
он корректируется,  и вирус перезаписывается с новым значением счетчика. Многие
вирусы пытаются при установке заразить жесткий диск,  чтобы не возиться  с  ним
потом.  Наконец,  вирус запускает исходный бут или MBR (либо самостоятельно вы-
полняет его функции), продолжая нормальную загрузку.

     ЗАРАЖЕНИЕ. Территориальное деление вируса никак не связано с  функциональ-
ным.  По расположению на диске бутовый вирус делится на голову и хвост.  Голова
обязательно записывается в бутсектор или MBR (иначе вирус не  получит  управле-
ния) и потому занимает всегда 1 сектор, т.е. 512 байт. Хвост содержит продолже-
ние вируса (если оно есть), а также исходный бут или MBR (если он сохранен); он
может иметь любую длину и храниться разными способами.  Наиболее распространен-
ный на ранних стадиях (во времена длинных вирусов) способ - записать  хвост  на
свободное место и пометить занятые им кластеры как сбойные (bad). Длинный хвост
на дискете мог храниться также на дополнительной (обычно 40-й) дорожке,  специ-
ально для этого отформатированной вирусом. Сейчас вирусы стали покороче и часто
целиком умещаются в голове.  У таких вирусов хвост содержит лишь копию правиль-
ного бутсектора или MBR, имеет длину 1 сектор и называется вырожденным. На дис-
кетах этот хвост чаще всего записывается в  конец  корневого  каталога  (обычно
последние  его секторы пусты),  реже - в последний сектор области данных (в на-
дежде, что он не будет использован). Разумеется, расположение этих мест зависит
от  формата дискеты,  однако большинство вирусов не утруждают себя проверками и
просто записывая хвост по некоторому  фиксированному  адресу,  нередко  попадая
пальцем  в небо.  На жестком диске хвост модно хранить в неиспользуемой области
между MBR и первым разделом (не проверяя ее наличия).  В  описаниях  координаты
секторов даются в стандартном виде:  цилиндр/сторона/сектор. Могут быть и более
экзотические способы хранения - например,  в файле. Наконец, хвост может вообще
отсутствовать - в этом случае вирус должен самостоятельно выполнять функции за-
тертого бутсектора или MBR.
     Кроме собственно программы начальной загрузки, в бутсекторах и MBR хранит-
ся служебная информация,  используемая другими программами. Грамотно написанный
вирус заботится о сохранении Partition Table при заражении MBR, BPB - при зара-
жении бута.
     Стратегия заражения у разных вирусов различна.  Попытка заражения жесткого
диска часто (но не всегда) делается один  раз  в  процессе  установки.  Дискеты
обычно  заражаются  обработчиком  прерывания 13h при обращении к ним,  причем у
многих вирусов - лишь при некоторых операциях (как  правило,  чтения  или  чте-
ния/записи). Впрочем, перехватывать прерывание 13h не обязательно - можно, нап-
ример,  сесть на таймер и ждать рождения DOS, после чего перехватить прерывание
21h,  что характерно больше для файлово-бутовых вирусов. Все вирусы перед зара-
жением проверяют,  не была ли дискета уже заражена этим вирусом (а иногда и не-
которыми другими) по специальной метке или участку кода, приводимым в описании.
     Попытки заражать дискету при каждом обращении (и даже каждой операции чте-
ния)  должны  при интенсивной работе приводить к резкому увеличению подвижности
головок и замедлению дисковых операций. Чтобы избежать этого, многие вирусы при
обращении  к  дискете проверяют мотор дисковода и не пытаются заразить дискету,
если мотор включен.  Это обеспечивает достаточный интервал  между  попытками  и
позволяет почти совершенно скрыть лишние движения головки.
     После перехвата прерывания его вектор указывает  на  принадлежащий  вирусу
обработчик. При  этом сегмент зависит от размера памяти компьютера,  а величина
смещения обычно неизменна и зависит от типа вируса, так что может использовать-
ся для его идентификации и приведена в описаниях.  Насколько мне известно,  эта
важная характеристика бутового вируса была введена в обращение А.В.Сессой.
     В печати уже обсуждался вопрос о том,  что считать длиной бутового вируса.
У файловых вирусов длина является важнейшей характеристикой, на которой основа-
на их классификация. На мой взгляд, для бутовых вирусов не существует аналогич-
ного понятия длины,  пригодного для той же цели, и вопрос приобретает несколько
абстрактный характер.  Для характеристики размера бутового вируса можно исполь-
зовать три величины:  (1) количество секторов,  занимаемое  вирусом  на  диске,
включая  голову вируса,  его продолжение в хвосте,  сектор под исходный бут или
MBR и оставшиеся  неиспользованными  сектора  созданных  вирусом  псевдосбойных
кластеров или файлов;  (2) количество скрытых килобайт базовой памяти;  (3) для
вирусов с вырожденным хвостом - количество байт, которые вирус копирует в скры-
тую  память при создании резидентной копии (характеристика,  формально наиболее
приемлемая, но абсолютно бессодержательная). В описаниях даны все три. Я считаю
наиболее  разумным  понимать  под длиной бутового вируса первую характеристику,
причем в секторах, а не в байтах.

     МАСКИРОВКА. Основной способ маскировки вирусов в настоящее время - исполь-
зованние stealth-технологии. Под этим термином сейчас понимается множество раз-
ных  маскировочных механизмов (что ненормально),  поэтому постараюсь предложить
точное определение.  Stealth-технолгией для компьютерного вируса называется со-
вокупность  средств,  с помощью которых вирус эмулирует незараженный компьютер.
Замечу,  что эмуляция,  в отличие от других видов маскировки,  предполагает  не
внешнее сходство, а полное совпадение результатов работы программ на зараженном
и незараженном компьютере. Конкретнее, под stealth-технологией понимается сово-
купность  средств,  с  помощью  которых вирус контролирует обращение программ к
участкам диска или памяти,  модифицированным самим вирусом или другими програм-
мами (например, DOS) вследствие наличия вируса, и имитирует обращение к немоди-
фицированному участку, т.е. принимает меры к тому, чтобы все результаты обраще-
ния  программы  к такому участку в точности совпадали с теми,  которые были бы,
если бы эти участки не были модифицированы. Разумеется, полностью удовлетворить
этому определению проблематично,  и чаще встречаются случаи частичной имитации,
когда контролируются обращения не ко всем  модифицированным  участкам  (а  лишь
критичным,  и только на диске),  эмулируются не все операции (например,  только
чтение),  имитируются не все последствия (а лишь важные для  сокрытия  вируса).
Все это будем называть элементами stealth-технологии, а вирус, использующий та-
кие элементы - stealth-вирусом.  Полных stealth-вирусов, в частности, блокирую-
щих свое обнаружение при просмотре дампа памяти, я пока не знаю.
     Stealth-механизм у бутовых вирусов выражается обычно в том, что все опера-
ции чтения (иногда и записи), относящиеся к сектору с головой вируса, переадре-
суются обработчиком прерывания 13h на сектор,  содержащий исходный бут или MBR.
Некоторые  вирусы  предпочитают просто блокировать запись вместо ее переадреса-
ции. Хвост, как правило, вовсе не маскируется. Основным (и достаточным) резуль-
татом такой маскировки является то, что при чтении бутсектора на зараженной ма-
шине пользователь увидит (или программа получит) сохраненный  вирусом  исходный
бутсектор, а вовсе не голову вируса, находящуюся там в действительности.
     Вследствие безграмотной реализации stealth-механизма возникает ряд  побоч-
ных эффектов (указанных в описаниях), из которых рассмотрим два наиболее харак-
терных. Первый заключается в том, что после окончания работы прерывания 13h ре-
гистры  cx  и dx не содержат исходных значений,  а указывают на сохраненный бут
(настоящий обработчик гарантирует их сохранность,  и некоторые  программы  этим
пользуются). Второй эффект, весьма забавный, возникает из-за переадресации всей
операции целиком,  так что при чтении нескольких секторов подряд вместо  секто-
ров,  следующих за бутом (на дискете это FAT) прочитаются секторы, следующие за
его сохраненной копией. Такая вот маскировочка...
     Кроме использования stealth-технологии,  существует ряд других маскировоч-
ных средств,  мешающих обнаружение вируса.  К числу средств, затрудняющих визу-
альное опознание,  относится отсутствие подозрительных текстовых строк (выводи-
мые  на экран сообщения шифруются),  а также копирование в зараженный бутсектор
участков исходного бута с характерными текстами  (начальные  байты,  содержащие
OEM ID - метку форматтера,  и конечные байты,  содержащие обычно имена файлов и
тексты сообщений). Если в теле вируса имеются характерные текстовые строки, они
приводятся  в  описании  буквально (количество пробелов может измениться,  если
текст переформатирован).  Тексты, имитирующие загрузчик DOS, могут и не копиро-
ваться,  а просто составлять часть тела вируса. Аккуратно замаскированный таким
образом вирус очень трудно отличить по внешнему виду,  поскольку  от  исходного
бута отличается лишь участок с кодом.
     В числе приемов, затрудняющих обнаружение вирусов программными средствами,
необходимо прежде всего отметить способность ВСЕХ бутовых вирусов обходить раз-
ного рода резидентных сторожей прерывания 13h, поскольку эти сторожа всегда ус-
танавливаются позже и вызовы прерывания из вируса через них не  проходят.  Воз-
можно отрезание сторожей и других прерываний (в т.ч. 40h), поскольку вирусу из-
вестны адреса всех обработчиков в BIOS.  Принципиальным  новшеством  последнего
времени  является способность некоторых вирусов проверять состояние флага трас-
сировки и блокировать попытки разного рода ревизоров получить адрес  прерывания
13h в BIOS трассировкой его вызова (по методу TP-вирусов).  К этой же категории
относится шифровка кода (в бутовых вирусах  почему-то  непопулярная),  а  также
обычные антиотладочные фокусы.  Вообще, установщик вируса рассчитан на работу в
заданных адресах, и попытка проходить его отладчиком в резиденте может привести
к непредсказуемым последствиям без всяких специальных мер защиты. У большинства
вирусов установщик  сразу  передает управление на стандартное расположение бута
(0000:7C00), и попытка трассировать (проходить в отладчике)  резидентную  копию
просто выкинет Вас из нее. В описаниях об этом специально не говорится.
     Особо следует сказать о способности отдельных бутовых вирусов выживать при
теплой перезагрузке (Alt-Ctrl-Del),  так что для гарантированной очистки памяти
от  вирусов необходимо использовать выключение питания (даже кнопка "Reset" вы-
зывает сейчас сомнения).  Действия,  выполняемые при отслеживании Alt-Ctrl-Del,
могут  быть  самыми  разными (от попытки заразить диск перед обращением к BIOS,
чтобы потом тут же загрузиться с него снова,  до самостоятельной эмуляции пере-
загрузки с погашением экрана,  чтением и запуском бута), так что говорить о ти-
пичных механизмах здесь не приходится.  Впрочем,  таких вирусов очень  мало,  и
сейчас это не в моде.

     ПРОЯВЛЕНИЯ бутовых вирусов,  как и всех прочих, делятся на аудиовизуальные
и деструктивные. Разумеется, они могут сочетаться, однако и здесь действует ги-
потеза Обухова:  чем изощреннее аудио/видеоэффекты, тем реже деструктивные ком-
поненты. Первые зарубежные бутовые вирусы были большей частью безвредны, и даже
пресловутый Disk Killer, "убивая" диски, заботился о возможности восстановления
информации.  Зато видеоэффекты были весьма нетривиальны: бегающий по экрану мя-
чик,  эффектная визитная карточка в графическом режиме, и даже банальное "Happy
Birthday Joshy" не иначе,  как полноэкранной картинкой в цвете и с рамочками. К
сожалению,  среди  новых студенческих вирусов местного производства значительно
больше вандалов, и они более свирепы. Видимо, эта тенденция является закономер-
ным результатом социальной обстановки и отражает общее движение нашего общества
(в том числе, увы, студенчества) к вандализму...
     В настоящее  время у бутовых вирусов видеоэффекты заключаются обычно в вы-
воде на экран какого-либо умного сообщения (в процессе загрузки или перед зати-
ранием  диска),  а аудиоэффекты почему-то совсем не встречаются.  Деструктивные
действия могут быть взрывными,  когда вирус сразу разрушает информацию, уничто-
жая весь диск или его системные области (бут,  MBR,  FATы, корневой каталог), а
могут быть распределенными,  когда вирус вносит в информацию мелкие  изменения.
Последние,  вопреки  распространенному среди пользователей заблуждению,  значи-
тельно более опасны,  так как их намного труднее обнаружить и исправить,  и они
часто носят троянизирующий характер (например, периодические мелкие изменения в
базе данных медицинского учреждения будут иметь значительно более  тяжкие  пос-
ледствия, чем ее единовременное уничтожение).

     ПОБОЧНЫЕ ЭФФЕКТЫ - это разного рода проявления (в основном деструктивные),
не предусмотренные специально автором вируса.  Они могут быть  следствием  либо
ошибок,  либо не всегда выполняющихся предположений о среде обитания (например,
о типе дискеты),  причем последних значительно больше. Опишем самые характерные
из них.
     Наиболее часто встречающиеся эффекты связаны с убежденностью некоторых ав-
торов,  что в мире не существует никаких дискет,  кроме DS/DD (360 Кб).  Так, с
легкой руки Stoned распространилась мода хранить исходный бут в секторе  0/1/3.
На дискетах DS/DD это последний сектор корневого каталога,  на QD - его середи-
на,  а на HD - начало.  С такой же неприятностью сталкиваются вирусы,  хранящие
хвост в секторе 39/1/9(8).  На DS/DD это (пред)последний сектор дискеты,  и на-
дежды автора на то,  что этот сектор не занят (и не  будет  занят),  еще  можно
счесть  оправданными,  однако  на 80-дорожечных дискетах этот сектор окажется в
середине области данных.  Замечу кстати, что при записи на дискету какой-нибудь
развесистой игрушки (вроде Karateka) даже последний сектор DS/DD может оказать-
ся занятым; в этом случае при просмотре каталога в нем обнаружатся файлы с неу-
добопроизносимыми именами - это лежит хвост вируса.
     Аналогичная ситуация возникает на жестком диске,  где многие вирусы хранят
хвост между MBR и началом первого раздела (особенно часто - по примеру того  же
Stoned - в секторе 0/0/7).  При стандартной разметке это большая неиспользуемая
область.  Однако на многих дисках с нестандартной разметкой превый раздел начи-
нается сразу за MBR,  и при этом хвост оказывается в FAT. Кроме того, некоторые
дисковые драйверы хранят в этой области свою служебную информацию.
     Еще одна неприятность,  связанная с популярностью сектора 0/1/3 и особенно
0/0/7,  заключается в том, что вирусы, использующие этот сектор, начинают конф-
ликтовать друг с другом.  При заражении таким вирусом  диска,  уже  зараженного
другим подобным вирусам,  в сектор 0/0/7 (или 0/1/3) переносится голова первого
вируса, записанный там правильный бут или MBR теряется, и диск перестает загру-
жаться.  В  последнее  время  в связи с этим наблюдается отход от сектора 0/0/7
(особенно в 0/0/6), тем более, что он ничем не лучше соседних.
     Некоторые вирусы  заражают дискеты при всяком обращении к ним через преры-
вание 13h.  Большинство из них неправильно обрабатывают запрос о замене дискеты
(функция 16h), так как пытаются заразить ее перед выполнением операции и потому
всегда возвращают отрицательный результат. При этом DOS не заметит смены диске-
ты, что  может  иметь весьма неприятные последствия (например,  будет использо-
ваться старый FAT).
     Разумеется, все  бутовые  вирусы,  перехватывающие  прерывание 13h,  могут
конфликтовать с разного рода нестандартными дисковыми  драйверами  (типа  "800"
A.Pasquale) и нестандартными форматами дискет с непредсказуемыми последствиями.
В описаниях это не указывается, за исключением специфических случаев.
     Ряд побочных  эффектов  (уже описанных выше) возникает из-за безграмотного
использования stealth-технологии.

     ИСТОРИЯ. В этом разделе описаний собрана разнообразная информация,  не во-
шедшая в предыдущие разделы.  Это сведения о месте и времени обнаружения, пред-
полагаемые родственные связи, сведения, полученные из литературы и фольклора, а
также общие впечатления и т.п. Под "зарубежными источниками" при этом понимает-
ся в основном "Virus Summary List" (P.Hoffman),  а также документация к некото-
рым  антивирусам.  С  некоторых  пор к ним относится также киевский электронный
бюллетень "Софтпанорама". Использовалась также монография Н.Н.Безрукова "Компь-
ютерная  вирусология"  (подготовленная,  вышедшая в свет и прочитанная мною еще
при жизни СССР,  поэтому неясно,  в какой степени ее следует считать зарубежным
источником). Ссылки на литературу в описаниях, как правило, не даются.
     Здесь же  приводятся  сведения об известных автору версиях и их отличия от
варианта, описанного как основной. В каталоге не ставится цель классифицировать
вирусы по группам (отрядам,  семействам,  родам,  видам). Строгая классификация
такого типа представляется невозможной, поскольку вирус может содержать приемы,
заимствованные из многих других,  не родственных между собой, и генеалогическое
древо вирусов вовсе не является деревом (в смысле теории графов), так что груп-
пы будут сильно пересекаться. Поэтому для каждого вируса просто указываются все
источники заимствования (в т.ч. концептуального), которые удалось установить.
     В каталоге не приводятся фамилии людей, обнаруживших вирусы, поскольку по-
нятие обнаружения весьма условно. Обычно это происходит примерно так. Пользова-
тель A,  запустив ревизор, написанный программистом B, обнаружил нечто странное
и сообщил начальнику машины C.  Тот посмотрел, сделал умный вид и вызвал своего
подчиненного D, которого там держат за системщика. D заподозрил вирус и показал
подозрительное место знакомому специалисту E,  который признал  его  подозрения
обоснованными и  переслал все это вирусологу F,  подтвердившему наличие вируса.
Кто из них обнаружил вирус ?
     В каталоге не приводятся методы защиты от вируса,  поскольку все необходи-
мое следует из спецификации.  Не указаны также детекторы и фаги (кроме несколь-
ких, перечисленных  в  разделе "имя") и особенности их работы с вирусом,  кроме
возможной путаницы в названиях.  Иногда указывается количество версий по  доку-
ментации к полидетектору SCAN (J.McAfee), однако следует помнить, что его оцен-
ки могут быть несколько... завышены.
     Сигнатуры в описаниях отсутствуют,  поскольку каталог является приложением
к полидетектору-ревизору BootChecker,  точно распознающему все описанные (и  не
описанные) здесь вирусы.
     Замечание: термин "СССР" употребляется (в обычном понимании) в связи с со-
бытиями, происходившими в период, когда такое государство действительно сущест-
вовало.
