1. "Eddie lives...somewhere in time" (в начале вируса, т.е. сра-
зу после конца зараженного СOM-файла).
2. "This program was written in the city of Sofia (C) 1988-89
Dark Avenger".
Формально RCE-1800 является файловым резидентным вирусом, пора-
жающим как файлы типа СОМ, так и файлы типа EXE. Это первый
попавший в СССР вирус, стратегия размножения которого
предусматривает заражение программ не только при их выполнении, но
и при других операциях доступа к соответствующим файлам. Поэтому,
при отсутствии противодействия, RCE-1800 размножается гораздо быс-
трее ранее рассмотренных вирусов. Помимо заражения при запуске
программ на выполнение, файлы заражаются при создании, переимено-
вании, открытии и закрытии (прерывания 21-4Bh, 21-3Ch, 21-5Bh, 21-
56h, 21-3Dh, 21-2h). Такая стратегия размножения делает этот вирус
весьма опасным, поскольку, если в зараженной системе запустить
программу, систематически просматривающую файлы во всех подкатало-
гах (например, ревизор), то большая часть СOM- и EXE-файлов будет
в результате заражена.
При запуске зараженной программы вирус сначала проверяет наличие
в оперативной памяти своей копии. При этом копия проверяется пол-
ностью и в случае обнаружения изменений с этого места в память за-
писывается исходный код вируса. Это существенно затрудняет нейтра-
лизацию вируса в оперативной памяти. Если вирус не нашел в опера-
тивной памяти своей копии, то он загружается в верхнюю область си-
стемной памяти, а затем резервирует для себя участок памяти путем
манипуляций с MCB и используя функции MS DOS (выделения, освобож-
дения и изменения размеров выделенной памяти). При загрузке в
старшие адреса памяти вирус затирает транзитную часть COMMAND.COM.
Поэтому при первой же команде с консоли транзитная часть вызывает-
ся повторно, что и приводит к ее заражению.
На фазе инсталляции вирус определяет расположение в ПЗУ обработ-
чика прерывания 13h как для дискеты, так и для жесткого диска. Все
необходимые сведения для этой цели он берет из векторов 40h и 41h,
где содержатся, соответственно, адрес обработчика прерывания 13h
в ПЗУ и адрес таблицы параметров для винчестера. Алгоритм опреде-
ления адреса прерывания 13 в ПЗУ, используемый вирусом не универ-
сален и он работает не для всех типов IBM-совместимых компьютеров.
Помимо прерывания 13h, вирус перехватывает прерывания 21h и 27h.
Прерывание 21h используется стандартным образом (отслеживаются
приведенные выше подфункции), а прерыванием 27h вирус пользуется
для того, чтобы проверять, не изменился ли вектор 21h, и при необ-
ходимости восстанавливать его.
Вирус работоспособен на версиях 3.х и 4.х MS DOS. Проверка номе-
ра версии в теле вируса не выполняется.
Зараженные COM-файлы увеличиваются в размере на 1800 байтов,
причем дата их создания и атрибуты остаются неизменными. Заражение
выполняется однократно. При заражении вирус дописывает свое тело в
конец файла, вставляя в первые три байта команду перехода на нача-
ло вируса. Выравнивание на границу параграфа для COM-файлов не вы-
полняется. Инфицируются COM-файлы длиной от 1775 (6Fh) до 63148
(F6ACh) байтов. В силу сказанного выше, COMMAND.COM является наи-
более подверженной заражению данным вирусом программой. Для версии
3.3 зараженный COMMAND.COM имеет размер 27107 байтов (если его
первоначальный размер был 25307 байтов). Очевидно, что при зараже-
нии не имеет значения, где расположен командный процессор, лишь бы
диск был доступен для записи.
Заражение EXE-файлов выполняется стандартно, за исключением то-
го, что вирус не сохраняет в своем теле исходной длины заражаемого
файла. Однако восстановление длины программы все же возможно, по-
скольку вирус запоминает в теле некоторый байт. При заражении EXE-
файлов вирус дописывается в конец файла с выравниванием на границу
параграфа (т.е. приращение длины колеблется в диапазоне 1800..1815
байтов). Инфицируются EXE-файлы длиной больше 1775 (6Fh) байтов.
Помимо COM- и EXE-файлов, вирус иногда заражает файлы данных.
Это свойство характерно не только для данного вируса, но и для лю-
бого вируса, который заражает открываемые файлы. Зараженные таким
образом файлы данных можно лечить обычным фагом, указав соответст-
вующее расширение.
Фаза проявления данного вируса связана с разрушением
опеределенных секторов винчестера и наступает после определенного
количества инсталляций вируса (запусков первой зараженной програм-
мы после перезагрузки системы, в ходе которых он становится рези-
дентным). При зараженном COMMAND.COM количество инсталляций равно
количеству перезагрузок машины после заражения. Вирус ведет
счетчик инсталляций в байте со смещением 0Аh (10) бутсектора. Чте-
ние бутсектора выполняется с помощью прерывания 25h, что возможно
только для ОС, не поддерживающей диски размером более 32M. Сразу
после очередной инсталляции вирус анализирует 2 байта (8-й и 10-й)
бутсектора диска, с которого была запущена зараженная программа.
Десятый байт используется в качестве счетчика, который вирус уве-
личивает на 1 при каждой инсталляции, сохраняя увеличенное значе-
ние в том же байте. При каждой 16-ой инсталляции он уничтожает со-
держимое одного из секторов винчестера (номер, по-видимому, выби-
рается случайно и зависит от значения 8-го байта бутсектора), за-
писывая туда первые 512 байтов своего тела. При этом первые байты
запорченного сектора будут содержать фразу "Eddie
lives...somewhere in time", что позволяет выявить все уничтоженные
сектора глобальным контекстным поиском по диску. При заражении
файлов или уничтожении секторов вирус использует прерывание 13
"напрямую" -- управление передается в ПЗУ, минуя текущий обработчик
прерывания. Это позволяет обходить проверки резидентных сторожей.
Вирус предпринимает ряд мер по маскировке своего наличия в опе-
ративной памяти. При старте любой программы вирус помечает про-
граммный сегмент как последний и становится невидимым для этой
программы, по окончании работы программы вирус помечает программ-
ный сегмент как не последний. При завершении программы вирус вос-
станавливает первоначальное значение прерывания 21h, если оно было
изменено программой. Вирус вставляет себя первым в цепочку про-
грамм, получающих управление по прерыванию 21h, а в дальнейшем не
позволяет программам встать раньше него в указанном списке. Этот
метод "всплытия" позволяет обойти простейшие резидентные сторожа.
Вирус обходит контроль программ, следящих за прерыванием 13h, оп-
ределяя значение этого вектора при инсталляции и в дальнейшем на-
прямую обращаясь по соответствующему адресу .
Исторические замечания. Впервые вирус описал В.Бончев [13]. Если
исходить из приведенной выше строки, то RCE-1800 имеет болгарское
происхождение и написан в первой половине 1989 г. В Киеве появился
вместе с компьютерами, приобретенными у одного из московских коо-
перативов в сентябре 1989 г. Одним из первых этот вирус выделил
В.О.Ткаченко. Фактически данный вирус был первым вирусом, который
мог уничтожать информацию в базах данных, а не только выполняемые
файлы, и ряд организаций серьезно пострадали в результате повреж-
дения вирусом их баз данных. Первые фаги для данного вируса не
проверяли его наличие в оперативной памяти, поэтому наблюдались
случаи, когда при запуске фага при резидентном вирусе фаг обнару-
живал зараженный файл, "выкусывал" вирус, а при закрытии файла он
снова оказывался зараженным. Более того, при запуске детектора или
ревизора, не проверявших наличие вируса в оперативной памяти, за-
ражались все проверявшиеся файлы, которые еще не были заражены.
Поэтому основной особенностью борьбы с данным вирусом являлось бы-
строе распространение понимания необходимости нейтрализации рези-
дентного вируса у разработчиков фагов и не менее быстрое понимание
необходимости проводить "лечение", только загрузившись с эталон-
ной, защищенной от записи дискеты, у пользователей. В силу особой
опасности заражения данным вирусом многие организации перешли на
сплошной входной контроль поступающего программного обеспечения.
В Москве получил распространение штамм вируса, в котором сообще-
ние "Eddie lives somewere in time" заменено на "B O R O D A мстит
во времени".
Неформальные названия. Полидетектор SCAN называет данный вирус
"Dark Avenger virus [Dav]". Помимо приведенных в заголовке,
используются названия Avenger (Мститель), Sofia (София), Diana
(Диана). Последнее название связано с тем, что в теле вируса со-
держится строка "Diana P".
Программные средства защиты. См. прил.1. Выявление поврежденных
файлов можно выполнить с помощью глобального контекстного поиска
по диску, обеспечиваемого, например, PCTools. Любые действия по
анализу содержимого диска следует выполнять только при условии
предварительной загрузки операционной системы с эталонной, защи-
щенной по записи, дискеты. При исследовании вируса автор пренебрег
этим правилом, запустив после заражения COMMAND.COM программу под-
счета контрольных сумм и анализа каталогов на винчестере. В ре-
зультате, оставаясь резидентным, вирус последовательно заразил по-
рядка 50 COM- и EXE-файлов. Исходя из этого, легко представить се-
бе последствия прогона батареи фагов на зараженной машине.
Фрагмент дампа дрозофилы, зараженной вирусом RCE-1800
000: E955079090909090 9090909090909090 .U..............
010: 9090909090909090 9090909090909090 ................
*** последующие строки идентичны предыдущей ***
6F0: 4564646965206C69 7665732E2E2E736F Eddie lives...so
700: 6D65776865726520 696E2074696D6521 mewhere in time!
710: 00009023121E8CC3 83C3102E039CFF06 ...#............
720: 2E899C53002E8B9C FD062E899C51008C ...S.........Q..
730: C383C3102E039C03 078ED32E8BA40107 ................
740: EA00000000BF0001 81C60507A4A58B26 ...............&
750: 060033DB53FF64F5 E800005E81EE6B00 ..3.S.d....^..k.
760: FC2E81BC05074D5A 740EFA8BE681C408 ......MZt.......
770: 08FB3B26060073CD 5006561E8BFE33C0 ..;&..s.P.V...3.
780: 508ED8C4064C002E 8984F4062E8C84F6 P....L..........
... .. .. .. .. .. .. .. .. .. .. .. ..
D50: 164F072E8C1E5107 33DB8EDBC7068400 .O....Q.3.......
D60: EE028C0E86005A5B 581FC35053B462E8 ......Z[X..PS.b.
D70: 72FD8CC8484B8EDB F9131E03003BD872 r...HK.......;.r
D80: F55B58C3A15B07BA 1000F7E2C3546869 .[X..[.......Thi
D90: 732070726F677261 6D20776173207772 s program was wr
DA0: 697474656E20696E 2074686520636974 itten in the cit
DB0: 79206F6620536F66 6961202843292031 y of Sofia (C) 1
DC0: 3938382D38392044 61726B204176656E 988-89 Dark Aven
DD0: 6765720080FC0375 0F80FA807305EAC8 ger....u....s...
DE0: 0EFD18EAC80EFD18 EAC80EFD18000121 ...............!
DF0: 0090909090909090 ........
5.4.2. Вирус RCE-02000
(V2000, Anti-Bontchev -- Анти-Бончев)
Вирус RCE-2000 получил свое название в связи с тем, что в теле
вируса содержатся две достаточно длинные текстовые строки:
1. "Zopy me -- I want to travel" (в начале вируса, т.е. сразу по-
сле конца зараженной программы).
2. "(c) 1989 by Vesselin Bontchev" (в конце тела вируса, т.е. в
последнем блоке зараженного файла).
По некоторым данным, вирус вызывает зависание MS DOS при запу-
ске программм, содержащих строку "(c) 1989 by Vesselin Bontchev."
В теле вируса имеется также строка "Диана П." (в альтернативной
кодировке). Данный вирус является довольно сильно "доработанным"
штаммом RCE-1800 и является первым попавшем в СССР вирусом,
маскирующем приращение длины зараженных файлов. Маскировка
основана на том, что вирус помечает зараженные файлы, проставляя
значение 62 с. в дате создания файла, как вирусы венской группы
(С-648) и при считывании. Контролируя функции MS DOS типа