                                                            Приложение 1



    КЛАССИФИКАЦИОННАЯ ТАБЛИЦА ФАЙЛОВЫХ ВИРУСОВ, ОБНАРУЖЕННЫХ В CCCР

   В таблице собраны сведения о файловых вирусах, обнаруженных в СССР по
состоянию  на  10.01.91.  Ниже  следуют  замечания  по  ее  структуре  и
организации.

   1. В графе  "Классификационный код  вируса" вертикальной чертой слева
от кода  помечены  вирусы,  информация  о  которых  была  дополнена  или
изменена  по   сравнению  с   предыдущими  редакциями   (в  том   числе,
электронными редакциями  по 5.5  включительно), а  двойной  вертикальной
чертой --  вирусы, впервые включенные в таблицу (обычно информация по ним
неполна и  может содержать  ошибки). Вирусы  упорядочены по  возрастанию
классификационной характеристики (инфективной длины вируса).

   2. В графе "Группа" указано, к какой группе принадлежит данный вирус.
Это трехсимвольное расширение рекомендуется использовать с кодом вируса.
Если перед  обозначением группы стоят один-три восклицательных знака, то
данный  вирус  относится  к  классу  вирусов-вандалов  и  его  опасность
оценивается   по    трехбальной   шкале   (в   соответствии   с   числом
восклицательных знаков).  В случае,  когда вирус принадлежит к некоторой
подгруппе основной  группы, соответствующие  имена  отделяются  друг  от
друга косой чертой (как каталоги).

   3. В графе "Распр." указана степень распространенности вируса (оценка
автора) по  пятибальной шкале  (1 --  обнаружен только в одном городе и о
других случаях  информация не поступала, 2 -- в нескольких городах, 3 -- в
нескольких крупных  городах, включая  столицы союзных  республик, 4 -- во
многих  крупных   городах,  включая  Москву  и  Киев,  5  --  практически
повсеместно).

   4. В графе  "Динамика" указывается  динамика распространения  данного
вируса на  момент составления  таблицы ("<" -- нарастание эпидемии, "*" --
пик эпидемии,  ">"  --  спад  эпидемии,  "~"  --  практически  повсеместно
уничтожен).

   5. В графе  "Дескрипторы, сигнатуры  и фаги"  подграфа "Вид" содержит
обозначения соответствующих полей (см.ниже).

   5.1. Для  удобства восприятия  дескриптор вируса  разбит на несколько
составляющих, для которых используются следующие обозначения:

   DM -- главный дескриптор;

   DP -- предикат  заражения (для удобства восприятия записан в близкой к
алгебраической нотации);

   DR (только для резидентных вирусов) -- положение в оперативной памяти,
реакция на теплую перезагрузку и размер занимаемой памяти;

   DH --  перехватываемые   прерывания   (в   шестнадцатиричной   системе
счисления).

   5.1.1. В  главном дескрипторе (DM) вируса отражены следующие свойства
(для вирусов типа CE соответствующие пары разделяются дефисом):


            A -- деструктивные действия, выполняемые вирусом:

   a (alter) -- модифицирует информацию в управляющих таблицах (MBR, бут-
сектор, FAT,  каталогах), включая  переименование, создание вместо файла
каталога, обнуление некоторых параметров, см. также z;

   b (block) -- блокирует выполнение запускаемой программы или команды MS
DOS;

   c (corrupt) -- повреждает или искажает файлы данных;
   d (delete) -- удаляет отдельные загрузочные файлы;

   e (extended) --  повреждает   расширенные  EXE-файлы,  т.е.  такие,  у
которых длина,  указанная в элементе оглавления, больше длины, указанной
в заголовке.  При запуске  таких программ в память загружается только то
количество байтов,  которое определено  в  заголовке  файла.  Оставшаяся
область дискового  пространства может  использоваться как  буфер или как
неявный оверлей;

   f (format) -- выполняет форматирование дисков;

   i (ignore) --  заменяет   операции  записи   на  операции  чтения  или
верификации;

   h (hang) -- "подвешивает" систему (действие может быть предусмотрено в
коде вируса,  или возникать как побочный эффект, например из-за ошибок в
коде, см. также b);

   k (kill) --  повреждает   отдельные  загрузочные   файлы,  см.   также
выделенный отдельно важный частный случай t;

   l (low format) -- выполняет  низкоуровневое форматирование  части  или
всего диска;

   m (merge) -- выполняет сращивание цепочек в FAT;

   р (parallel port) --   искажает    информацию,   передаваемую    через
параллельный порт;

   r (reboot) -- вызывает внезапную перезагрузку системы;

   s (sector destruction) --  уничтожает   отдельные  сектора  диска (см.
также z);

   t (trojanize) -- троянизирует другие программы;

   v (video effects) -- искажает информацию в видеопамяти;

   w (write port) -- пишет в порты;

   x -- создает сбойные сектора;

   z (zap) --  повреждает (стирает)   информацию   в   управляющих   таб-
лицах (MBR, бут-сектор, FAT, каталоги), cм. также а,s.


                         В -- проявления вируса:

   a (abort) -- наблюдается  появление запроса  Abort, Retry,  Ignore при
попытке  заразить  программу,  расположенную  на  защищенной  от  записи
дискете;

   b (boot) -- при  заражении программ, запускаемых в файле AUTOEXEC.BAT,
наблюдается зацикливание процесса загрузки;

   e (error) -- появление ошибок типа деления на нуль, переполнения стека
и т.п.;

   m (music) -- исполняет  мелодию или  имеет какой-либо  другой звуковой
эффект;

   n (new files) -- создает новые файлы;

   r (remove or change attR) -- изменяет  атрибуты  при  заражении  файла
(список атрибутов указывается в скобках, например r(h) -- снимает атрибут
HIDDEN, r(r) -- атрибут READ ONLY, r(z) -- снимает все атрибуты);

   o (overlay) --  нарушает   функционирование  программ   с   оверлейной
структурой,  например,  возникают  ошибки  при  загрузке  отдельных  фаз
оверлейной программы;
   v (video effects) -- создает  визуальный эффект(ы),  вызывает мерцание
монитора или  появление на экране каких-то случайных последовательностей
символов;

   t (text message) -- выдает на экран текстовые сообщения;

   s (slow down) -- замедляет работу компьютера.


             С -- механизм заражения командного процессора:

   y -- заражает файл с именем COMMAND.COM как обычный COM-файл;

   n -- не заражает файл с именем COMMAND.COM;

   о -- заражает командный процессор, не меняя его длины;

   s -- заражает  командный процессор  независимо от его имени (например,
используя информацию из системной переменной COMSPEC);

   t -- разрушает  транзитную части  (при инсталяции  или специально),  а
затем заражает.

   D -- изменение даты и времени создания файла:

   i (infection date) -- изменяет дату и время на дату и время заражения;

   m (month) -- изменяет месяц в дате создания файла;

   n -- не изменяет дату и время;

   r (random) -- изменяет дату и время случайным образом;

   s -- изменяет только значение секунд времени создания файла;

   s<целое> --  изменяет   значение  секунд  времени  создания  файла  на
указанное;

   t (time) -- изменяет время;

   x (eXpression) -- используется  некоторое выражение,  связывающее год,
минуты или секунды (в частном случае константа);

   y (year) -- заменяет значение года.


                   E -- способ определения типа файла:

   . (точка) -- по расширению имени файла;

   h (header) -- по  содержимому первых двух байтов (EXE-файлы начинаются
с шестнадцатиричного кода 4D5A или 5A4D, т.е. c символов MZ или ZM).


           I -- (insertion of virus body in infected program)
                  место и тип имплантации тела вируса:

Первая буква пары -- тип имплантации:

   o (overwriting) -- перезаписывает начало файла, не сохраняя затираемую
часть программы;

   f (first block) -- записывает тело или его часть в первый блок файла с
перемещением оригинального первого блока в конец;

   h (head) --  записывает   тело  в   начало  файла  со  смещением  всей
заражаемой программы в область старших адресов;

   m (middle) -- записывает тело в середину файла;
   t (tail) -- дописывает тело в конец файла;

   b (biplacement) -- двухсегментное  размещение (в  голову  и  хвост)  с
перенесением начальных байтов в второй сегмент;

   c (COM-twin) -- создание  COM-файла с  тем же именем, что и заражаемый
EXE-файл;

   х -- нестандартный.

Вторая буква пары -- тип приращения:

   с -- постоянное;

   p (padding) --   изменяется   из-за   выравнивания   на   определенную
границу (по умолчанию  границу параграфа).  Если  выравнивание  идет  на
границу, отличную  от кратной  16, указывается  соответствующее числовое
значение, например p51 означает выравнивание до величины, кратной 16;

   v -- меняется случайным образом в определенных пределах;

   n -- отсутствует;

   х -- нестандартное.


          F -- (flow manipulation) метод получения управления:

COM-файлы:

   b (before) -- подставляет тело в начало программы;

   i (iterative jump) -- выполяет итеративную обработку команд перехода;

   j (jump) -- заменяет  первые байты  на команду  перехода к телу вируса
(наиболее распространенный способ);

   m (modify) -- выполняет перенастройку адреса перехода имеющейся первой
команды перехода на тело вируса;

   n (new) -- заменяет первые команды программы на новые команды.

EXE-файлы:

   h -- замена CS:IP в заголовке;

   r -- манипуляция с таблицей настройки;

   c -- преобразование в COM-файл.


                     К -- кратность заражения файла:

   <целое число> -- заражает файлы указанное число раз;

   m -- заражает  файлы многократно  (для вирусов  типа CE  первая  цифра
указывает кратность заражения COM-файлов, а вторая -- EXE-файлов).


  L -- (infective length) нормированное приращение длины программы при
                           заражении (байт):

   <целое число> -- длина равна указанному числу в байтах;

   <список> -- одно из указанных значений;

   i -- совпадает с приведенной в коде вируса.
    M -- действия вируса по маскировке своего присутствия в системе и
                           зараженных файлах:

   a (automodification) --   автомодификация    инсталлятора   с    целью
затруднить обнаружение детекторами, основанными на контекстном поиске;

   с (cipher) -- шифровка части программы, исключая часть инсталлятора;

   d (antiDebugging tricks) -- защита от трассировки;

   e (enter point) -- сохранение точки входа в EXE-программах;

   f (fag) -- самоизлечивается при попытке выполнить операции типа чтения
зараженной программы при резидентном вирусе;

   h (hook) -- не обнаруживается сторожами типа FluShot+, контролирующими
состояние векторов прерывания (обычно 13h и 21h);

   i (increment) -- имплантация  тела в программу без увеличения размеров
файла;

   j (jump) -- cохранение первого перехода в COM-файлах;

   l (length) -- маскировка  увеличения  длины  зараженных  файлов  путем
подмены значения соответствующего поля элемента оглавления при операциях
FindFirst и  FindNext (21h-11h  и 21h-12h)  с предварительным вычитанием
длины вируса.  При этом утилиты, которые не используют указанные функции
DOS, работая  с каталогами непосредственно (например, Norton Commander),
будут показывать увеличенную длину, а команда DIR -- уменьшенную;

   m (message) -- кодирование текстовых сообщений;

   о (overlay) --  сегментация  тела  вируса  на  несколько  подгружаемых
частей;

   р (polyinfection) -- заражение как файлов, так и исполняемых системных
блоков (бут-сектор, MBR);

   r (redirection) -- перехват  и модификация  дисковых операций  с целью
скрыть изменения в зараженной программе или, чаще, отдельных исполняемых
блоках (бут-сектор, MBR);

   s (space) -- корректировка резидентным вирусом общего объема свободной
памяти на  диске с  целью скрыть  его изменение  в результате  заражения
вирусом программ;

   t (tsr) -- не  обнаруживается системными  средствами просмотра  списка
резидентных программ.


  T -- дополнительные расширения заражаемых файлов, помимо указанных в
                        классификационном коде:

   a (any) -- любое;

   b -- BIN;

   o -- OVL, OVR;

   s -- SYS.



   5.1.2. Предикат  заражения (DP) описывает критерии выбора "жертвы". В
нем используются поля:

   Name -- имя файла;

   Atr -- атрибуты (R -- READ ONLY, H -- HIDDEN);
   LenC,  LenE,   LenCE  --   длины  файлов   типа  COM,  EXE  и  COM&EXE
соответственно; MaxC  -- максимальная  длина  COM-файла,  длина  которого
после инфицирования  данным вирусом  не превысит  64 Кбайт (MaxC = 64K --
<длина вируса>);

   Date -- дата создания файла (например Date != Current -- дата не должна
совпадать с текущей);

   Time -- время создания файла;

   Start -- первые  байты COM-файла, например Start=Jmp -- заражает только
те COM-файлы,  в которых  первой командой  является команда JMP, заменяя
адрес перехода в этой команде.

   5.1.3. Стратегия  заражения (DS)  описывает метод  поиска  заражаемых
файлов. Используются следующие обозначения:

Стратегии, основанные на поиске файла:

   all --  заражает все файлы (метод выбора заражаемых файлов указывается
в квадратных скобках, например All[cur-cat(*.COM)]);

   cur-cat -- заражает файлы в текущем каталоге;

   find -- заражает  файл в  каталоге, где находится файл, запускаемый на
выполнение (function 11h,12h,4Eh,4Fh;

   main-catalog -- заражает файлы в главном каталоге;

   path -- заражает файлы, путь доступа к которым указан в команде PATH;

   tree -- просматривает  дерево каталогов  и заражает по одному случайно
выбираемому файлу в каждом каталоге;

Стратегии, основанные на перехвате выполняемой с файлом операции:

   close -- заражает файлы при закрытии (function 10h,3Eh);

   create  -- заражает файлы при создании (function 16h,5Bh);

   exec -- заражает файлы, запускаемые на выполнение (function 4Bh);

   open -- заражает  любые открываемые  файлы с  подходящими расширениями
(function 0Fh,3Dh);

   rename -- заражает файлы при переименовании (function 17h);

   read -- заражает  файлы,  для  которых  выполняется  чтение  (function
14h,3Fh);

   set attr  --   заражает  файлы  при  установке  или  чтении  атрибутов
(function 43h);

   x -- нестандартная стратегия.

Сетевые стратегии:

   l -- имеет средства распространения по локальной сети Novell.



   5.1.4. В дескрипторе  положения  вируса  в  оперативной  памяти  (DR)
используются следующие обозначения:

   a (available) --  в   неиспользуемой  части   оперативной  памяти  (не
создавая MCB и не изменяя объема свободной оперативной памяти;

   d -- в "дыре" MS DOS;

   i (interrupt table) -- в старших адресах таблицы векторов прерываний;
   l (low) -- в  младших адресах,  после последней  загруженной  к  этому
моменту резидентной программы;

   b (buffer) -- в буферах MS DOS;

   h (high) -- в старших адресах свободного участка оперативной памяти;

   s (segmented installation) -- сегментированная инсталляция;

   u (upper) -- в  старших адресах  памяти с  соответствующим уменьшением
общего объема доступной системе оперативной памяти (по типу бутвируса);

   t (TSR) --  вирус   создает  дополнительный   MCB,  видный   в  списке
резидентных  программ   как  дополнительная   "паразитная"   резидентная
программа;

   v (videomemory) -- в  области видеопамяти (в  адресах за первыми 640K,
т.е больших А000:0000);

   w (survive Warm reboot) --   "выживание"   при   теплой   перезагрузке
(возможно, в основном, для вирусов, инсталлирующихся по типу u);

   <целое> -- объем оперативной памяти, резервируемый вирусом.

   5.1.5. В  дескрипторе   перехватываемых  прерываний   DH  перечислены
перехватываемые вирусом прерывания.

   5.2. Для полей,  начинающихся с  буквы S  (сигнатуры), подграфы "Вид"
графы "Дескрипторы,  сигнатуры и  фаги"  приняты  следующие  обозначения
(символом "+" обозначены продолжения длинных сигнатур):

   SM --  M-сигнатура  (используемая  полидетектором  Scan  фирмы  McAfee
Associates, США);

   SI -- I-сигнатура (используемая полидетектором VirScan, фирмы IBM);

   SB -- B-сигнатура,  предлагаемая автором  в случаях,  когда  M-  и  I-
сигнатуры отсутствуют  или не совсем удачны (например, для ТР-вирусов В-
сигнатура получена  путем дописывания шестнадцатиричного номера штамма к
строке F47A);

   SC -- C-сигнатура (используемая полидетектором TNTVirus, фирмы Carmel,
Израиль);

   SV -- V-сигнатура  (опубликованная в  журнале  Virus  Bulletin,  Вели-
кобритания);

   5.3. В  списке  Еnv  дается  формальная  характеристика  среды  функ-
ционирования вируса  (версии  операционной  системы,  тип  процессора  и
других компонент компьютера, на которых вирус остается работоспособным).

   5.4. В списке  Fag дается  перечень фагов, распространяемых бесплатно
или  по   цене  Shareware,   "выкусывающих"  данный   вирус.  При   этом
предполагается использование  версий, соответствующих или более поздних,
чем последние версии, приведенные в прил.3.

   6. В графе  "Неформальные названия" неформальные названия, помеченные
символом "*",  используются в  полидетекторе  Scan  при  обнаружении  М-
сигнатур, символом  "#" -- в Virus Information Summary List, составленном
Патрицией М.Хоффман,  а символом  "$" --  полидетектором TNTVirus  (фирмы
Carmel).
