программы была JMP (т.е. файл начинался с кода E9).
До TP-16 заражение EXE программ произходит в два этапа. На
первом этапе EXE-программа трансформируется в COM-формат, путем
дописывния специального "псевдозагрузчика" размером 132 байта,
присоединяющегося по типу вируса, но лишенного способности к
самостоятельному размножению. Следует отметить, что преобразование
EXE-файла в COM-файл, выполняемое вирусом, отличается от
преобразования, выполняемого утилитой EXE2COM и, тем самым,
представляет некоторый самостоятельный интерес. На втором этапе
получившийся агрегат заражается как обычный COM-файл (полифаг
AIDSTEST распознает такой "агрегат" и помечает его в протоколе как
(FL)).
Следующие версии, включая TP-34, также преобразуют файлы типа
EXE в файлы типа COM, однако делают это в один прием. По-видимому,
штаммов от TP-16 до TP-24 вообще не существует. Начиная с версии
TP-35 EXE-программы сохраняют свой формат, причем во всех заражае-
мых модулях со смещением 12h от начала стоит расстояние до начала
вируса, деленное на 16. Одновременно в начале вируса дублируется
сигнатура F47A и номер версии. Версия TP-45 при заражении EXE-про-
граммы в конец файла эту информацию не пишет. С версии TP-24 раз-
множение не обнаруживается резидентными антивирусными программами,
следящими за записью в программные файлы, поскольку вирус передает
управление непосредственно в BIOS, обходя сторожей. С версии TP-33
вирусы принимают меры защиты от трассировки. В предыдущей главе
описан нерезидентный вирус E-1961, называемый SCAN Yankee Doodle
Short длиной 1961 байт, однако с данной группой его объединяет
только общность играемой мелодии.
Для данного семейства вирусов просматривается прямая аналогия с
описанной выше игрой Animal, хотя конструктивная цель в данном
случае отсутствует. Номер версии вируса используется данным виру-
сом для идентификации себя в оперативной памяти и возвращается ре-
зидентными частями вируса при выполнении прерывания 21-C500 для
версий 19h, 21h, 22h или 21-C600 для версий 26h, 29h, 2Сh. При
этом, если запускать поочередно файлы, зараженные вирусами разных
версий в порядке возрастания версий, то в оперативной памяти будет
создана как бы цепочка резидентных вирусов, причем при запуске не-
зараженной программы она будет инфицирована версией вируса с наи-
большим номером. Если же начать загружать зараженные программы в
порядке убывания версии вируса, то версии с меньшими номерами не
будут становиться резидентными. Используя эту идею, В. Пономаренко
создал резидентную поливакцину NEATVAC (СП 2-7), позволяющую бло-
кировать заражение оперативной памяти данным вирусом.
Кроме того, и это существенно усиливает аналогию с игрой Animal,
резидентный вирус, входящий в подгруппу самоедов, при попытке за-
ражения некоторой программы не только контролирует, заражена уже
эта программа или нет, но и определяет номер версии, если програм-
ма уже заражена одним из вирусов данной группы. Дальнейшие дейст-
вия вируса зависят от того, больше этот номер версии его собствен-
ного номера или нет. Если программа заражена вирусом с меньшим но-
мером, то вирус заменит эту версию на свою, предварительно "выку-
сив" старую. Поскольку вирус при этом проверяет только последние
байты файла, можно вакцинировать файл от большинства вирусов этой
группы, дописав в конец строку F4 7A FF 00.
Полидетектор SCAN называет представителей данной группы вирусов
"Vacsina virus [Vacs]" или "Yankee Doodle Virus [Doodle]", причем
ранние (до 66) версии SCAN часто выдают для зараженного файла оба
имени одновременно, что обычно не означает заражения модуля двумя
вирусами, а связано с несовершенством используемых в нем сигнатур.
5.3.1. Подгруппа Vacsina
Данная подгруппа получила свое название в связи с тем, что все
входящие в нее штаммы содержат строку "VACSINA". Заражаются как
COM-, так и EXE-файлы, причем максимальная длина зараженных файлов
не превышает 64К. Заражение файлов происходит при запуске на вы-
полнение соответствующих программ. При заражении вирусы данной
подгруппы дописывают свое тело в конец COM- и EXE-файлов. Штаммы
подгруппы работоспособны на любой версии MS DOS. Проверка номера
версии в теле вируса не выполняется. Перехватывают прерывание 21h.
Заражаются только COM-файлы, имеющие размер мeнее 63К и начинаю-
щиеся с команды перехода (первый байт файла должен содержать E9h).
Дата создания и атрибуты остаются неизменными. Заражение выполня-
ется однократно. При заражении вирус дописывает тело в конец фай-
ла, вставляя в первые три байта команду перехода на начало вируса.
Длина зараженного файла увеличивается до значения, кратного 16,
поэтому при лечении недостаточно укорачивать файл на стандартную
величину -- исходная длина файла должна быть извлечена из тела ви-
руса. В конце тела вируса хранятся байты F4h, 7Ah, по которым ви-
рус определяет, что данный СOM-файл уже заражен.
Как уже отмечалось, заражение EXE-файлов выполняется данной
группой очень своеобразно: в заголовок заражаемого EXE-файла запи-
сывается команда перехода на тело вируса (в данном случае тело
представляет собой часть вируса размером 132 (84h), обеспечивающую
загрузку EXE-файлов, т.е. по сути выполняет функции системного за-
грузчика). Таким образом, вирус переделывает зараженный EXE-файл в
COM-файл. Этот "псевдозагрузчик" EXE-файлов обеспечивает настройку
загруженного в память файла и передачу на него управления. Для ле-
чения такого файла достаточно восстановить первые три байта с уче-
том первоначальной длины файла и укоротить файл на 132 байта. EXE-
файлы, требующие не всю свободную память системы (не равна FFFF
переменная MaxMem в заголовке), данным вирусом не заражаются. Кро-
ме того, вирус не заражает файлы, размер которых больше 64К или
размер которых превысил бы 64К при заражении. Поскольку после за-
ражения EXE-файл фактически превращается в COM-файл, возможно его
вторичное заражение вирусом, уже как файла типа COM.
5.3.1.1. Вирус RСE-1206 (ТР-05, VACSINA-5)
Данный вирус является наиболее распространенным в подгруппе, по-
этому рассмотрение подгруппы мы начнем именно с него. Формально
вирус RСE-1206 является файловым резидентным вирусом, поражающим
как файлы типа СОМ, так и файлы типа EXE. Зараженный COMMAND.COM
имеет размер 26509 байтов (если его первоначальный размер был
25307 байтов). Длина вируса составляет 1206 (4B6h) байтов. Заража-
ются COM-файлы длиной от 1206 (4B6h) до 62867 (F593h) байтов и
EXE-файлы длиной до FDB3h байтов при загрузке их в память для вы-
полнения (21-4Bh).
Инсталляция вируса выполняется обычным образом. При выполнении
зараженной COM-программы управление командой JMP (Е9h) передается
на начало вируса. Первыми командами вирус узнает длину исходного
файла и проверяет наличие своей копии в памяти компьютера. Если
компьютер не заражен, то вирус копирует всю программу в свободное
место в памяти и, таким образом, остается резидентным. Затем вирус
перехватывает прерывание 21h. В результате при запуске любой про-
граммы вирус получает управление, проверяет, является ли запускае-
мая программа зараженной, и если нет, то заражает данную программу
на диске. Определение зараженности программы основано на считыва-
нии последних 3 байтов зараженной программы.
У заражаемого COM-файла вирус проверяет первый байт. Если этот
байт не равен E9h (JMP), то файл не заражается. При заражении дли-
на файла увеличивается до значения, кратного параграфу (16 бай-
тов), к файлу добавляются 1206 байтов вируса и изменяются первые 3
байта файла (JMP на тело вируса). При заражении EXE-файла к нему
дописываются 132 байта из тела вируса и изменяются первые 3 байта
файла (JMP на тело вируса), при этом файл преобразуется в формат
COM. Дописанные к файлу 132 байта не распространяют вирус и лишены
способности к размножению. Их действие заключается в настройке ад-
ресов программы при ее запуске (псевдозагрузчик).
Фаза проявления для данного вируса привязана к моменту заражения
файла: при заражении файла раздается звуковой сигнал (BELL).
Резидентная часть вируса обнаруживается путем просмотра списка
резидентных программ (с помощью утилит MAP, SMAP, MMAP и т.д.).
При этом видна "подозрительная" дополнительная программа, не имею-
щая ни имени, ни родителя и имеющая размер 1200 байт. Являясь ре-
зидентным, вирус распознает случаи загрузки программ с защищенных
от записи дискет или разделов винчестера и не пытается заражать
такие файлы.
При запуске вирус создает на диске скрытый файл, который, по-ви-
димому, никакого назначения не выполняет и, возможно, использовал-
ся при отладке.
Исторические замечания. По данным статьи Бончева [11], вирус
имеет болгарское происхождение и разработан в конце 1988 г. В Мос-
кве вирус появился весной 1989 г. В Киеве появился вместе с компь-
ютерами, приобретенными у одного из московских кооперативов в сен-
тябре 1989 г. Из советских авторов вирус RСЕ-1206 впервые, по-ви-
димому, описал О.Котик в документации к полифагу ANTI-KOT, который
был первым фагом против данного вируса, широко использовавшимся в
Киеве.
Неформальные названия. Помимо приведенных выше названий,
используется название Sina.
Программные средства защиты. Фаги см. прил.1. Вакцина -- NEATVAC.
Фрагмент дампа дрозофилы, зараженной вирусом RCE-1206
100 E9C90A9090909090 9090909090909090 ................
110 9090909090909090 9090909090909090 ................
*** Далее следуют строки, идентичные предыдущей ***
810 9090909090909090 9090909090C31A90 ................
820 4D07004B00000000 0000000000000000 M..K............
830 60020B105605AB0E 2000050090909090 `...V... .......
840 9090C31A00564143 53494E4120202020 .....VACSINA
850 0000800000000000 7C1137A80040C200 ........|.7..@..
860 460A000000000000 0020202020202020 F........
870 2020202020202020 2020202020E80000 ...
880 5B508CC00510008B 0E0E0103C8894FFB [P............O.
890 8B0E160103C8894F F78B0E1001894FF9 .......O......O.
8A0 8B0E1401894FF58B 3E18018B160801B1 .....O..>.......
8B0 04D3E28B0E0601E3 1726C5B5000183C7 .........&......
8C0 048CDD26032E0801 03E88EDD0104E2E9 ...&............
8D0 0E1FBF00018BF281 C600018BCB2BCEF3 .............+..
8E0 A458FA8E57FB8B67 F9FBFF6FF5B003CF .X..W..g...o....
8F0 9C3D004B74069D2E FF2E0000061E5557 .=.Kt.........UW
900 56525153508BECB8 2435CD212E8C0606 VRQSP...$5.!....
910 002E891E04000E1F BABD00B82425CD21 ............$%.!
920 0E1FBA1400B40FCD 21B800438E5E0E8B ........!..C.^..
930 5606CD217303E9DA 012E890E0800B801 V..!s...........
940 4380E1FECD217303 E9C801B8023D8E5E C....!s......=.^
950 0E8B5606CD217303 E9A8012EA30A008B ..V..!s.........
960 D80E1FBA0C00B906 00B43FCD2172193D ..........?.!r.=
970 060075142E813E0C 004D5A7503E9B501 ..u...>..MZu....
... .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
C80 2E8B162C004A8EC2 268C0E0100B82135 ...,.J..&.....!5
C90 53CD21368C060200 36891E00005BB821 S.!6....6....[.!
CA0 258CD28EDABAC000 CD21B800008EC026 %........!.....&
CB0 C706C5007F3926C6 06C700058CC88ED8 ....9&.........
CC0 B41ABA5000CD212E 8B47FBE94EFF1F07 ...P..!..G..N...
CD0 0502F47A0500 ...z..
+----+
сигнатура
Пример карты памяти зараженного компьютера
Addr Program Parent Sg Bytes Hooked Vectors
------ -------- -------- -- ------ -----------------
(1111) DOS N/A 2 3536
(17E8) DOSEDIT DOS 2 2016 21
(11F9) DOSEDIT DOS 2 2032
(127B) BETA DOS 2 4064
(137B) N/A DOS 1 3808 03 43
(146A) N/A DOS 1 928 10
(14A5) N/A DOS 1 1264