"теплого рестарта", делая тем самым программу в соответствующем
СОМ-файле неработоспособной. "Убитые" вирусом программы не могут
быть восстановлены без наличия информации о начале программы, а
зараженные могут "излечиваться" с помощью соответствующего фага.
Формально вирус С-648 є файловый нерезидентный вирус, поражающий
файлы типа СОМ. Функционирует на версиях MS DOS, начиная с 2.0.
Стратегия заражения є поиск файла с расширением СOM в каталогах,
сцепленных в PATH. Заражение СOMMAND.COM выполняется так же, как и
заражение любого другого COM-файла: никаких механизмов по поиску
размещения командного процессора вирус не содержит. При заражении
он дописывается в конец программы и одновременно вставляет в пер-
вые три байта COM-файла команду перехода на тело вируса. При этом
размер файла увеличивается на 648 байтов, дата создания файла и
атрибуты файла не меняются. Заражение выполняется однократно. Ми-
нимальный размер заражаемых файлов є 10 байтов (0Ah), максималь-
ный є (FA00h). Поскольку вирус определяет тип файла только по рас-
ширению, заражение EXE-файлов с расширением COM выполняется непра-
вильно. Это приводит к потере работоспособности зараженных файлов
указанного типа: их запуск обычно ведет к зависанию системы. После
обработки такой программы фагом работоспособность восстанавливает-
ся.
Для отличения зараженных файлов от незараженных используются
младшие четыре бита времени создания файла (для зараженных файлов
они все устанавливаются в единицу, что соответствует несуществую-
щему количеству секунд є 62 с.). Следует отметить, что как команда
DIR, так и распространенные оболочки типа Norton Commander не по-
казывают поле секунд, выдавая содержимое каталога на экран. Поэто-
му это изменение достаточно хорошо скрыто от пользователя.
При запуске инфицированной программы управление сначала получает
сам вирус. Получив управление, вирус устанавливает свою область
передачи данных, осуществляет поиск файлов типа COM на всех дисках
и во всех каталогах, сцепленных с помощью команды PATH. При нахож-
дении такого файла вирус прежде всего проверяет его время созда-
ния, по которому определяет, заражен уже этот файл или нет. Если
файл отмечен как незараженный и его длина больше десяти байтов, то
он рассматривается как "потенциальная жертва" и вирус приступает к
его заражению. При этом вирус не проверяет, не является ли файл на
самом деле файлом типа EXE (начинающимся с "MZ"), ошибочно или на-
меренно "замаскированным" под файл типа COM. Указанные файлы в
случае заражения уничтожаются.
Следует отметить, что защита файлов атрибутами READ ONLY и
HIDDEN в MS DOS недостаточно эффективна, поскольку вирус легко из-
меняет эти атрибуты. Сначала вирус запоминает атрибуты, дату и
время создания заражаемого файла. Затем сбрасывает атрибут READ
ONLY, если он был установлен, открывает файл на запись и считывает
текущее время. Если выданное по прерыванию 21-2С содержимое реги-
стра DH содержит в последних трех битах нули (т.е. системные часы
показывают 0, 8, 16, 24, 32, 40, 48 или 56 с.), то вирус предпри-
нимает попытку уничтожения "потенциальной жертвы". Иначе выполня-
ется попытка заражения. Другими словами, приблизительно в 12% по-
раженных вирусом программ уничтожены первые пять байтов.
Уничтожение выполняется путем записи в первые пять байтов коман-
ды перехода на подпрограмму перезагрузки BIOS (переход по адресу
F000:FFF0). В дальнейшем при попытке выполнить "пораженную" про-
грамму вместо ее выполнения будет выполняться перезагрузка MS DOS.
Если при этом программа входит в AUTOEXEC.BAT, то при загрузке
произойдет зацикливание и с винчестера или данной системной диске-
ты загрузиться нельзя без корректировки AUTOEXEC.BAT.
При заражении, которое выполняется, только если хотя бы один из
последних трех битов времени создания файла равен единице, вирус
переписывает свой код в конец файла и заносит в первые три байта
команду JMP для передачи ему управления. После этого С-648 восста-
навливает дату, время и атрибуты уже зараженного файла, и управле-
ние передается программе-вирусоносителю. При восстановлении даты
количество секунд устанавливается равным 62 (т.е. последним четы-
рем битам присваиваются значение 1111). По этому значению вирус
отличает зараженные файлы от незараженных, что обеспечивает
однократность заражения. Впрочем, при архивировании зараженных
файлов поле секунд может теряться (количество секунд во времени
создания файла не выдается ни одной командой MS DOS), что приведет
к повторному заражению.
Поскольку вирус C-648 не проверяет, находится ли заражаемый или
уничтожаемый файл на защищенной дискете или нет, то в этом случае
выдается обычное сообщение операционной системы:
Write protect error writing device <лог.имя.устр.>
Abort, Retry, Ignore, Fail?
в ответ на которое неопытные пользователи часто снимают защитную
заклейку прорези дискеты, тем самым разрешая вирусу заразить оче-
редную программу. Этот эффект представляет интерес как наглядная
демонстрация того непреложного факта, что человек является важней-
шим звеном в любой системе обеспечения безопасности.
Исторические замечания. Данный вирус появился в США в 1987 г. и
получил широкое распространение в Западной Европе в 1988 г. Об
этом, в частности, свидетельствует тот факт, что среди средств
борьбы с этим вирусом имеются немецкие, польские, чешские и авст-
рийские программы.
В СССР вирус С-648 появился приблизительно в августе 1988 г.,
когда он был обнаружен в лаборатории Института программных систем
(Переславль-Залесский). Возможно, он попал туда во время проведе-
ния институтом (совместно с ЮНЕСКО) Международного детского компь-
ютерного летнего лагеря. Поскольку этот вирус к середине 1988 г.
был уже довольно распространен в Западной Европе, включая соцстра-
ны, он несомненно завозился в СССР неоднократно, c различного рода
новыми версиями программного обеспечения и компьютерными играми. В
Киеве этот вирус появился в конце 1988 г., а наибольшее распрост-
ранение получил примерно в апреле 1989 г., после чего его эпидемия
пошла на убыль, что прежде всего связано с достаточной распростра-
ненностью средств защиты от этого вируса. Одним из переносчиков
этого вируса в Киеве являлся адаптированный вариант программы
SideKick (шестерка). К сожалению, по стране распространяется от-
комментированный исходный текст данного вируса, который, в частно-
сти, был включен В.Бончевым в его "вирусную" дискету. Доступность
исходных текстов сделало этот вирус базой для многочисленных штам-
мов и несколько таких штаммов уже выявлено в СССР(см. ниже описа-
ние вирусов С-534 и С623).
Первыми антивирусными программами, попавшими в Киев и ориентиро-
ванными на борьбу с этим вирусом, были зарубежные программы, рас-
пространявшиеся в виде случайного набора набора на дискете. Среди
них наибольшей популярностью на начальном этапе пользовались де-
тектор DIAG и фаг CURE Д.Сопчека (ПНР), DR_NO, FAG_OM и др. Отече-
ственные средства появились несколько позднее, однако со временем
основным средством борьбы стали такие отечественные полифаги, как
AIDSTEST, DOCTOR, VDEATH и др.
Неформальные названия. Данный вирус имеет не менее десятка не-
формальных названий. Среди них: Vienna (Вена), DOS-62, Time Bomb
(Часовая мина), Flea (Блоха), вирус перезагрузки, VHP-648',
RESTART (Рестарт є О.Котик), Rebooter (Перезагрузчик), P-virus,
Omega (Омега). Полидетектор SCAN называет данный вирус "Vienna
(DOS 62) Virus є Version A [Vienna]".
Программные средства защиты. Для данного вируса имеется огромное
количество программ типа детекторов и фагов. При этом большинство
из них не указывают, для какого типа вируса они предназначены. По-
этому очень часто в "батарее антивирусных средств", составляемых
на многих ВЦ, используется несколько эквивалентных по своим функ-
циональным возможностям детекторов или фагов для этого типа виру-
са. Уничтоженные вирусом файлы, т.е. файлы, в которых вместо пер-
вых пяти байтов записана команда безусловного перехода на перезаг-
рузку MS DOS (EA F0 FF 00 F0), можно восстановить, только если
первые байты программы были предварительно записаны в справочном
файле программой-ревизором (типа CRCDOS). В настоящее время все
полидетекторы и все полифаги обрабатывают программы, зараженные
данным вирусом. Автор рекомендует полифаг AIDSTEST. Защита винче-
стера от данного вируса облегчается при использовании программы
Advanced Disk Manager, которая позволяет устанавливать защиту за-
писи и для разделов винчестера. Вакцина от данного вируса может
быть создана двумя способами. Во-первых, поскольку при поиске сло-
ва PATH вирус фактически ищет подстроку "PATH=", его можно "наве-
сти на ложный аэродром", вставив в AUTOEXEC.BAT строку вида
SET XPATH = Х:\DUMMY до "настоящей" строки SET PATH=. В приведен-
ном примере DUMMY є несуществующий каталог, а первая (или несколь-
ко первых) букв в имени ловушки могут быть произвольными. В этом
случае вирус "поймает" первую букву "P", входящую в слово XPATH и
будет пытаться искать файлы на несуществующем диске Х и несущест-
вующем каталоге DUMMY. Аналогичную ловушку можно ставить и на
COMSPEC, и хотя для данного вируса она не нужна, важно понимать,
что данную идею "обмана" вирусов можно развить в нескольких на-
правлениях. Другими словами, она может быть обобщена до некоторого
универсального приема использования особенностей кодировки соот-
ветствующих частей вируса. Кроме того, целесообразно создать ката-
лог BAT (имя может быть произвольным) и записать в него пакеты для
вызова часто используемых программ в виде BATCH-файлов. В этом
случае достаточно указать в PATH только этот каталог, что вполне
безопасно, поскольку ни одного файла типа COM в нем нет. Этот спо-
соб, наряду с повышением безопасности, ускоряет вызов программ,
позволяет настроить среду и передать стандартные параметры. Поэто-
му его стоит использовать как можно шире.
Второй способ вакцинирования состоит в записи в последние четыре
бита времени создания файла четырех единиц для всех файлов типа
COM. Это соответствует невозможному количеству секунд (62) во вре-
мени создания (последние четыре бита хранят половинное количество
секунд). Именно так вирус помечает зараженные им файлы. Правда,
здесь существует опасность, что при обработке тем или иным фагом
последний может принять чистые файлы за зараженные, однако эта
проблема носит скорее теоретический, чем практический характер.
Фрагмент дампа дрозофилы, зараженной вирусом C-648
+-------- команда передачи управления телу
+----+ вируса
000: E90D009090909090 9090909090909090 ................
+- ****** -------- J-сигнатура (звездочками поме-
| чены изменяемые вирусом байты)
010: 51BA0903FC8BF281 C60A00BF0001B903 Q...............
020: 00F3A48BF2B430CD 213C007503E9C701 ......0.!<.u....
030: 06B42FCD21899C00 008C84020007BA5F ../.!.........._
040: 009003D6B41ACD21 06568E062C00BF00 .......!.V..,...
050: 005E5681C61A00AC B90080F2AEB90400 .^V.............
060: ACAE75EDE2FA5E07 89BC16008BFE81C7 ..u...^.........
... .. .. .. .. .. .. .. .. .. .. .. .. ..
1E0: 00BA1F009003D6CD 211EB41A8B940000 ........!.......
1F0: 8E9C0200CD211F59 33C033DB33D233F6 .....!.Y3.3.3.3.
200: BF00015733FFC2FF FF8000ED251B0121 ...W3.......%..!
210: 002000909090E90D 002A2E434F4D001C . .......*.COM..
220: 002006504154483D 473634382E434F4D . .PATH=G648.COM
230: 2020202020202020 2020202020202020
*** последующие строки идентичны предыдущей ***
260: 2020202020202020 033F3F3F3F3F3F3F .???????
270: 3F434F4D030500EE 0200000000201B01 ?COM......... ..
280: 2100100000004736 34382E434F4D004D !.....G648.COM.M