"Классические" болгарские вирусы - группа TP-вирусов
🕛 12.02.2009, 19:02
Данная группа резидентных вирусов включает вирус TP-44, первым из болгарских получивший глобальное распространение. В связи с этим она может рассматриваться как классический продукт "болгарского вирусного взрыва". По данным В.Бончева, все вирусы, входящие в данную группу, написаны техно-крысой из софийского вуза ВМЕИ им. В.И.Ленина (теперь Технический университет). В СССР попали 12 вирусов этой группы. Вирусы разработаны в конце 1988 - начале 1989 г. Впервые эти вирусы были описаны В.Бончевым (окончившим, кстати, ВМЕИ им. В.И.Ленина в 1984 г.), который, по его собственному признанию, знаком с написавшей их техно-крысой. Обращают на себя внимание некоторые факты. В статье [Бончев89б] В.Бончев утверждает, что заражение EXE-файла несколько сложнее, чем COM-файла, но возможно, хотя на самом деле сложность заражения COM- и EXE-файлов примерно одинакова. Действительно, первые штаммы вирусов данной группы заражают EXE-файл специальным, более сложным способом, основанным на предварительной переделке EXE-файла в COM-файл. Кроме того, бросается в глаза подробность, с которой В.Бончевым описаны технические решения, использованные в ряде штаммов этой группы, причем само описание ведется с характерной скорее для разработчика, чем для исследователя точки зрения. В частности, в статье указана такая "тонкая" подробность, как "вытеснение" старшими штаммами группы штаммов с меньшими номерами в зараженных файлах, хотя в самой статье упоминаются только вирусы подгруппы VACSINE, для которых "вытеснение" имеет место лишь в оперативной памяти. В статье указывается, что автором создан и фаг для этой группы вирусов, а единственным известным болгарским полифагом для данной группы является программа TP48CLS В.Бончева. И, наконец, по оценке большинства исследователей, вирусы написаны специалистом высокой квалификации. Ни один из вирусов этой группы не ориентирован на нанесение вреда данным или программам на зараженном им компьютере.Для большинства представителей этой группы отличительным признаком является строка F47Ah в начале и конце (кроме версии TP-45 (Yankee Doodle-2D)) вируса. При этом в конце вируса за этой строкой следует номер штамма. Как видно из приводимых ниже дампов, байт F4h расположен со смещением 4 от конца, а байт 7Ah - со смещением 3. Следующий за этой парой байтов (F4h, 7Ah) байт и определяет номер штамма.
Штаммы, входящие в данную группу, можно разделить на три подгруппы.
1. Подгруппа Vacsina (TP-4, TP-5 и TP-16). Это первые представители данной группы, разработанные примерно в конце 1988 г. Все они содержат строку "VACSINA", выполняют преобразование EXE-файлов в COM-файлы в два этапа и не заражают файлов размером больше 64К. 2. Подгруппа музыкальной перезагрузки (ТР-24 и TР-25). Штаммы, входящие в данную подгруппу, играют мелодию "Yankee Doodle Dandy" при перезагрузке. Ограничение на размер заражаемых EXE-файлов сохраняется. 3. Подгруппа музыкальных самоедов (TP-33, TP-34, TP-38, TP-39, TP-41, TP-44 и TP-45). Штаммы, входящие в данную подгруппу, разработаны примерно в марте - апреле 1989 г. Они играют указанную выше мелодию в 17 ч, а начиная с TP-38, обладают средствами обхода резидентных фильтров и защиты от трассировки на зараженной машине. Размер заражаемых EXE-файлов не ограничен, заражение ведется общепринятым способом.
В первом приближении "динамика" изменений свойств данной группы вирусов может быть представлена следующим образом (изложение базируется на материалах Д.Н.Лозинского): до версии TP-05 при заражении портится дата создания файла; до TP-09 включительно при заражении COM-файла требуется, чтобы первой командой программы была 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. Одновременно в начале вируса дублируется сигнатура F47Ah и номер версии. Версия TP-45 при заражении EXE-программы в конец файла эту информацию не пишет. С версии TP-24 размножение не обнаруживается резидентными антивирусными программами, следящими за записью в программные файлы, поскольку вирус передает управление непосредственно в BIOS, обходя сторожей. С версии TP-33 вирусы принимают меры защиты от трассировки. В предыдущей главе описан нерезидентный вирус E-1961, называемый Scan "Yankee Doodle Short", однако с данной группой его объединяет только общность играемой мелодии.
Для данного семейства вирусов просматривается прямая аналогия с описанной выше игрой Animal, хотя конструктивная цель в данном случае отсутствует. Номер версии вируса используется данным вирусом для идентификации себя в оперативной памяти и возвращается резидентными частями вируса при выполнении функции С500h прерывания 21h для версий 19h, 21h, 22h или функции C600h для версий 26h, 29h, 2Сh. При этом, если запускать поочередно файлы, зараженные вирусами разных версий в порядке возрастания версий, то в оперативной памяти будет создана как бы цепочка резидентных вирусов, причем при запуске незараженной программы она будет инфицирована версией вируса с наибольшим номером. Если же начать загружать зараженные программы в порядке убывания версии вируса, то версии с меньшими номерами не будут становиться резидентными. Используя эту идею, В.В.Пономаренко создал резидентную поливакцину NeatVac (см. Софтпанорама, т.2, No. 7), позволяющую блокировать заражение оперативной памяти данным вирусом.
Кроме того, и это существенно усиливает аналогию с игрой Animal, резидентный вирус, входящий в подгруппу самоедов, при попытке заражения некоторой программы не только контролирует, заражена уже эта программа или нет, но и определяет номер версии, если программа уже заражена одним из вирусов данной группы. Дальнейшие действия вируса зависят от того, больше этот номер версии его собственного номера или нет. Если программа заражена вирусом с меньшим номером, то вирус заменит эту версию на свою, предварительно "выкусив" старую. Поскольку вирус при этом проверяет только последние байты файла, можно вакцинировать файл от большинства вирусов этой группы, дописав в конец строку F4 7A FF 00.
Полидетектор Scan называет представителей данной группы вирусов "Vacsina virus [Vacs]" или "Yankee Doodle Virus [Doodle]", причем ранние (до 66) версии Scan часто выдают для зараженного файла оба имени одновременно, что обычно не означает заражения модуля двумя вирусами, а связано с несовершенством используемых в нем сигнатур.