Вирус RCE-1800 (Dark Avenger - Черный мститель; Eddie - Эдди)
🕛 01.03.2009, 11:45
Вирус RCE-1800 получил свое название в связи с тем, что в теле вируса содержатся две достаточно длинные текстовые строки: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 размножается гораздо быстрее ранее рассмотренных вирусов. Помимо заражения при запуске программ на выполнение, файлы заражаются при создании, переименовании, открытии и закрытии (прерывания 21h-4Bh, 21h-3Ch, 21h-5Bh, 21h-56h, 21h-3Dh, 21h-2h). Такая стратегия размножения делает этот вирус весьма опасным, поскольку, если в зараженной системе запустить программу, систематически просматривающую файлы во всех подкаталогах (например, ревизор), то большая часть СOM- и EXE-файлов будет в результате заражена.
При запуске зараженной программы вирус сначала проверяет наличие в оперативной памяти своей копии. При этом копия проверяется полностью, и в случае обнаружения изменений с этого места в память записывается исходный код вируса. Это существенно затрудняет нейтрализацию вируса в оперативной памяти. Если вирус не нашел в оперативной памяти своей копии, то он загружается в верхнюю область системной памяти, а затем резервирует для себя участок памяти, манипулируя с MCB и используя функции MS DOS (выделения, освобождения и изменения размеров выделенной памяти). При загрузке в старшие адреса памяти вирус затирает транзитную часть COMMAND.COM. Поэтому при первой же команде с консоли транзитная часть вызывается повторно, что и приводит к ее заражению.
На фазе инсталляции вирус определяет расположение в ПЗУ обработчика прерывания 13h как для дискеты, так и для жесткого диска. Все необходимые сведения для этой цели он берет из векторов 40h и 41h, где содержатся, соответственно, адрес обработчика прерывания 13h в ПЗУ и адрес таблицы параметров для винчестера. Алгоритм определения адреса прерывания 13h в ПЗУ, используемый вирусом, не универсален, и он работает не для всех типов IBM-совместимых компьютеров. Помимо прерывания 13h, вирус перехватывает прерывания 21h и 27h. Прерывание 21h используется стандартным образом (отслеживаются приведенные выше подфункции), а прерыванием 27h вирус пользуется для того, чтобы проверять, не изменился ли вектор 21h, и при необходимости восстанавливать его.
Зараженные 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", что позволяет выявить все уничтоженные сектора глобальным контекстным поиском по диску. При заражении файлов или уничтожении секторов вирус использует прерывание 13h "напрямую" - управление передается в ПЗУ, минуя текущий обработчик прерывания. Это позволяет обходить проверки резидентных сторожей.
Вирус предпринимает ряд мер по маскировке своего наличия в оперативной памяти. При старте любой программы вирус помечает программный сегмент как последний и становится невидимым для этой программы, по окончании работы программы вирус помечает программный сегмент как непоследний. При завершении программы вирус восстанавливает первоначальное значение прерывания 21h, если оно было изменено программой. Вирус вставляет себя первым в цепочку программ, получающих управление по прерыванию 21h, а в дальнейшем не позволяет программам встать раньше него в указанном списке. Этот метод "всплытия" позволяет обойти простейшие резидентные сторожа. Вирус обходит контроль программ, следящих за прерыванием 13h, определяя значение этого вектора при инсталляции и в дальнейшем напрямую обращаясь по соответствующему адресу.
Вирус работоспособен на версиях 3.х и 4.х MS DOS. Проверка номера версии в теле вируса не выполняется. На компьютерах с процессором 80386 вирус неработоспособен.
Исторические сведения. Впервые вирус описал В.Бончев [Бончев89г]. RCE-1800 написан в первой половине 1989 г., причем техно-крыса активно распространяла его исходный текст. В Киеве появился вместе с компьютерами, приобретенными у одного из московских кооперативов в сентябре 1989 г. Одним из первых этот вирус выделил В.О.Ткаченко. Фактически данный вирус был первым попавшим в СССР вирусом, который мог уничтожать информацию в базах данных, а не только выполняемые файлы, и ряд организаций серьезно пострадал в результате повреждения вирусом их баз данных. Первые фаги для данного вируса не проверяли его наличие в оперативной памяти, поэтому наблюдались случаи, когда при запуске фага при резидентном вирусе фаг обнаруживал зараженный файл, "выкусывал" вирус, а при закрытии файла он снова оказывался зараженным. Более того, при запуске детектора или ревизора, не проверявших наличие вируса в оперативной памяти, заражались все проверявшиеся файлы, которые еще не были заражены. Поэтому основной особенностью борьбы с данным вирусом являлось быстрое распространение понимания необходимости нейтрализации резидентного вируса у разработчиков фагов и не менее быстрое понимание необходимости проводить "лечение", только загрузившись с эталонной, защищенной от записи дискеты. В силу особой опасности заражения данным вирусом многие организации перешли на сплошной входной контроль поступающего программного обеспечения.
В Москве получил распространение штамм вируса, в котором сообщение "Eddie lives... somewhere in time" заменено на "B O R O D A мстит во времени".
Неформальные названия. Полидетектор Scan называет данный вирус "Dark Avenger virus [Dav]". Помимо приведенных в заголовке, используются названия Avenger (Мститель), Sofia (София), Diana (Диана). Последнее название связано с тем, что в теле вируса содержится строка "Diana P".
Методы и средства защиты. Зараженность файла легко определить визуальным просмотром дампа. Для входного контроля следует использовать любой из рекомендованных в прил.1 фагов в сочетании с полидетектором Scan. Выявление поврежденных файлов можно выполнить с помощью глобального контекстного поиска по диску, обеспечиваемого, например, 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 ..