
                            3. КЛАССИФИКАЦИЯ
                          КОМПЬЮТЕРНЫХ ВИРУСОВ

                           "Я никаким насекомым не радуюсь,
                            потому что я их боюсь,- призналась Алиса.-
                            ... Но я могу вам сказать, как их зовут."
                           "А они, конечно, идут, когда их зовут?"
                            - небрежно заметил Комар.
                           "Нет, кажется, не идут."
                           "Тогда зачем же их звать, если они не идут?"
                           "Им это ни к чему, а нам все-таки нужно.
                           Иначе зачем вообще знать, как что называется"
                                                            Льюис Керрол

   Cерьезность и долговременный характер проблемы защиты от компьютерных
вирусов уже  практически ни у кого не вызывают сомнений. Поэтому необхо-
димо организовать оперативный обмен информацией по данной проблеме и на-
ладить взаимодействие  работающих в  этой области  специалистов. Это,  в
свою очередь,  требует решения  ряда подзадач, одной из которых является
выработка стандартной классификации компьютерных вирусов.

   Стандартная классификация  существенно облегчает накопление и распро-
странение знаний  в любой области, и компьютерные вирусы не являются ис-
ключением. Применительно к компьютерной вирусологии она помогает решению
такой важной  задачи, как однозначное определение типа обнаруженного ви-
руса. При  этом должен  использоваться ограниченный  набор  сравнительно
простых и  непротиворечивых признаков, не требующих проведения глубокого
анализа зараженных программ и элементов операционной системы. Существую-
щие в  настоящее время  классификации, как  правило, основаны  на "клич-
ках" -- распространенных среди программистов названиях, отражающих то или
иное свойство  вируса. Анализируя имеющиеся неформальные названия, можно
выявить четыре  основные тенденции  их образования.  Первая основана  на
указании места  обнаружения или  разработки вируса  (Lehigh,  Jerusalem,
Vienna, Alameda), вторая -- на содержащихся в теле вируса текстовых стро-
ках (Vacsina,  Eddie, Dark  Avenger, Disk  Killer, sUMsDos), третья -- на
вызываемом вирусом эффекте (Time Bomb, DOS-62, Cascade, Black Fridaу) и,
наконец, четвертая --  на длине тела вируса или на приращении длины файла
при заражении  (524, 648, 1800, 2000 и т.д.). При этом один и тот же ви-
рус может  иметь множество  названий, и  новое название,  использованное
разработчиком той  или иной антивирусной программы, далеко не всегда со-
ответствует новому вирусу.

   Для широко известных вирусов перечень названий напоминает список имен
арабского шейха.  Например, автор встречал более десяти названий вируса,
обнаруженного в  декабре  1987 г.  в  Иерусалимском  университете  (RСE-
1813.IER по предлагаемой ниже классификации), среди которых три: Israeli
virus (Израильский),  Jerusalem (Иерусалим)  и PLO  (ООП) -- относятся  к
первому типу, два названия (sUMsDos и sU) -- ко второму типу, и, наконец,
еще четыре:  Black Hole  (Черная дыра),  Black Friday  (Черная пятница),
Friday 13 (Тринадцатая  пятница) и  Вирус замедления --  к третьему  типу
(данный вирус  "вырезает" в  левом углу  экрана черную дыру, удаляет все
запускаемые файлы  по пятницам,  пришедшимся на  13 число и, кроме того,
примерно через  20 мин после  запуска зараженной  программы искусственно
замедляет работу компьютера в несколько сотен раз).

   Конечно же,  такое многообразие названий создает определенные затруд-
нения, особенно если учитывать, что данный вирус имеет несколько отлича-
ющихся по  деталям функционирования  штаммов. Поэтому необходим какой-то
выход из создавшейся ситуации. На определенном этапе среди разработчиков
антивирусных средств  наблюдалась стихийная  тенденция к использованию в
качестве основных  названий, применяемых известным зарубежным полидетек-
тором Scan  (фирма McAfee  Associates, США); однако он, естественно, за-
паздывает с  классификацией болгарских  вирусов, не говоря уже о вирусах
отечественного изготовления.  Поэтому набор обнаруживаемых им вирусов не
соответствует советским условиям, а используемые строки для контекстного
поиска (сигнатуры)  часто неудачны (например, дают много ложных срабаты-
ваний). При этом для ранних версий Scan неоднократно наблюдались случаи,
когда наиболее актуальные для нас вирусы могут классифицироваться невер-
но (как  это было с подгруппой Vacsine группы ТР-вирусов) или попадали в
две группы сразу (например, Vacsine и Yankee Doodle). В последнем случае
создавалось ложное  впечатление о  том, что  файл заражен двумя вирусами
сразу. Кроме  того, недавно появился другой достаточно мощный полидетек-
тор TNTVirus  (фирма Carmel Software Engineering), в котором в ряде слу-
чаев используются  другие названия. Не исключено, что будет третий, чет-
вертый и  т.д. Поэтому необходим какой-то менее субъективный и учитываю-
щий нашу информационную изолированность (отсутствие сетей, слабое разви-
тие и низкое качество телефонной связи) подход.



                 3.1. Принцип построения классификации

   По мнению  автора, основным требованием к приемлемой для всех класси-
фикации является ее объективность, т.е. классификация должна основывать-
ся на  фиксированном наборе  непротиворечиво измеряемых  или наблюдаемых
признаков. В идеальном случае эти признаки должны быть выбраны так, что-
бы, скажем, два разработчика антивирусных средств, независимо работающих
в Киеве  и Москве, использовали одно и то же название для одинаковых ви-
русов и  разные названия для разных вирусов. Это обеспечивало бы быстрое
выявление новых штаммов вирусов и новых, еще не исследованных, разновид-
ностей. Очевидно,  что объективная  классификация существенно  облегчает
систематизацию, распространение  и накопление знаний, а также выбор про-
граммных средств для борьбы с тем или иным вирусом.

   Однако важно  не только наличие классификации как таковой, а и приня-
тие ее в качестве стандартной. Уже сейчас отсутствие стандартной класси-
фикации приводит к ряду нежелательных эффектов. Во-первых, у разработчи-
ков наблюдается  тенденция по-своему  называть обнаруженный  или сравни-
тельно малораспространенный  вирус, а  в дальнейшем продолжать использо-
вать  собственное  название  (см.,  например,  документацию  к  полифагу
Aidstest Д.Н.Лозинского).  В результате получается, что каждый разработ-
чик антивирусных средств использует в определенной степени свою уникаль-
ную классификацию.  Поэтому для  пользователей, столкнувшихся с вирусом,
необнаруживаемым тем  или иным  детектором или  полифагом, часто неясно,
относится ли он к какой-то разновидности уже известного вируса, что дает
возможность в значительной степени предсказать его свойства, или это со-
вершенно новый, еще не исследованный вирус. Во-вторых, у самих пользова-
телей наблюдается  тенденция аппроксимировать  общее количество  вирусов
общим количеством  названий,  используемых  в  имеющемся  у  них  наборе
средств защиты и прежде всего программ-фагов. Такая аппроксимация приво-
дит к  существенной переоценке  общего количества имеющихся компьютерных
вирусов, однако человек быстро "рационализирует" этот факт путем разбие-
ния одного  реального вируса на несколько "виртуальных", приписывая каж-
дому свой набор признаков. Так, автору приходилось сталкиваться с "само-
дельной" классификацией,  в которую вирусы С-648.VEN и RСE-1813.IER вхо-
дили в  двух "ипостасях" каждый (в каждом случае со своими фагами), при-
чем второй  ипостаси вируса  С-648.VEN приписывались  черты вируса  RСE-
1813.IER (замедление работы компьютера).

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

   Классификационный код  вируса. В  предлагаемой схеме  каждому  вирусу
присваивается код,  состоящий из буквенного префикса, количественной ха-
рактеристики и  факультативного буквенного  суффикса. Например,  в  коде
RCE-1813c RСE --  префикс, 1813 -- корень (характеристика), а c -- суффикс.
Кроме того,  факультативное расширение,  записываемое в конце кода через
точку, характеризует группу, к которой относится данный вирус. Например,
RCE-1813.IER означает,  что данный вирус относится к иерусалимской груп-
пе.

   Главным требованием к классификационному коду вируса является возмож-
ность определения  большинства входящих  в него  свойств на незараженном
компьютере. Выполнение каких-либо действий по исследованию вируса на за-
раженном компьютере  является наиболее  распространенной и  одновременно
наиболее грубой  ошибкой, которую допускают неопытные пользователи. Сле-
дует подчеркнуть, что любые действия на компьютере, зараженном неизвест-
ным вирусом, сопряжены с определенным риском вызвать срабатывание троян-
ской компоненты вируса. Кроме того, резидентный вирус с целью маскировки
может перехватывать  запросы и искажать выдаваемую информацию. В настоя-
щий момент  известен ряд вирусов, обладающих указанным свойством. Напри-
мер, группа  файловых вирусов, известная под названием TP-вирусов, начи-
ная с  вируса TP-34  (члены этой группы имеют номера, хранящиеся в пред-
последнем байте  вируса в 16-ричном виде), обладает свойством "самовыку-
сывания": при  попытке трассировать зараженную программу резидентный ви-
рус выполняет  "выкусывание" вируса из программы, "подсовывая" отладчику
уже излеченную  программу. Аналогично  бутовые вирусы, входящие в группу
пакистанских (Brain, Ashar), при попытке просмотреть бут-сектор на зара-
женном компьютере  "подсовывают" пользователю  оригинальный  бут-сектор,
сохраненный вирусом  в одном  из секторов,  помеченных как дефектный (и,
тем самым, исключенным из распределения под файлы).

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

   1) файловые (голова вируса располагается в COM-, EXE-файлах и оверле-
ях -- символы  С, Е в префиксе. При этом дополнительную букву, отражающую
заражение оверлеев  в префикс вводить не будем, чтобы избежать его пере-
усложнения, а вынесем в дескриптор);

   2) бутовые (голова вируса  располагается в бут-секторе или  блоке MBR
-- символы B, D или M в префиксе);

   3) пакетные (голова  вируса расположена  в пакетном файле, т.е. пред-
ставляет собой строку или программу на языке управления заданиями опера-
ционной системы -- префикс J).

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

   Характеристика вируса  представляет  собой  количественно  измеряемое
свойство вируса,  допускающее простое  определение  и  отличающееся  для
большинства типов вирусов. Например, для файловых вирусов в качестве ха-
рактеристики может  использоваться величина  приращения длины файлов при
заражении ("инфективная длина"), хотя здесь имеются определенные трудно-
сти.

   Суффикс используется, когда два разных вируса или два штамма одного и
того же  вируса имеют одинаковый префикс и характеристику. В этом случае
для того,  чтобы получить уникальные коды, будем использовать в качестве
суффикса латинскую  букву. Например,  в коде  RС-1704f буква  f означает
"штамм-f".

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

   Дескриптор представляет  собой систематизацию  основных характеристик
вируса в закодированном виде. Кодировка состоит из групп символов, начи-
нающихся с заглавной латинской буквы, за которой следуют строчные латин-
ские буквы  или цифры. При этом заглавная латинская буква определяет вид
характеристики, а  следующие за ней маленькие буквы или цифры -- значение
характеристики для  конкретного вируса.  Например, в дескрипторе "Хab Yc
Zdmt" имеются три свойства: Х -- со значением "аb", Y -- со значением "c",
и Z -- со значением "dmt".

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

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

   Очевидно, что  сигнатура, соответствующая участку, содержащему коман-
ды, надежнее  сигнатуры участка, содержащего данные, например, текстовые
строки (последние  могут быть  модифицированы). Поэтому  выбор сигнатуры
целесообразно выполнять  на основе анализа дизассемблированного кода ви-
руса. Длина  сигнатуры не должна быть слишком большой, поскольку длинную
сигнатуру труднее  правильно набить  вручную. В то же время при недоста-
точной длине  или выборе нехарактерных участков кода сигнатура будет вы-
зывать много  ложных срабатываний,  что весьма  нежелательно. Правильная
сигнатура не  должна содержаться ни в одной из наиболее распространенных
в MS DOS  системных программ,  включая, конечно, сами компоненты MS DOS.
Таким образом, для выбора отвечающей указанным требованиям сигнатуры не-
обходим ряд  экспериментов, а  сами сигнатуры  могут являться  предметом
сравнения и анализа.

   В настоящее время имеется ряд программ, обеспечивающих детектирование
вирусов путем  поиска в  файлах соответствующих  строк, и используемые в
них сигнатуры естественно "принять за основу". Наибольшую ценность пред-
ставляют строки, используемые в известном зарубежном детекторе Scan фир-
мы McAfee Associates (США), поскольку новые версии этого детектора появ-
ляются регулярно  и охватывают  практически все  вирусы, появляющиеся за
рубежом. Из  других зарубежных детекторов следует отметить Virscan фирмы
IBM и  TNTVirus фирмы Carmel (Израиль). Для определенности назовем стро-
ку, используемую  Scan, М-сигнатурой, строку, используемую Virscan, -- I-
сигнатурой, а  строку, используемую  TNTVirus, -- С-сигнатурой.  В то  же
время необходимо отметить, что сигнатуры для ряда вирусов, разработанных
в нашей стране, в существующих версиях этих программ отсутствуют, а сиг-
натуры для  болгарских вирусов  часто неудачны. В таких случаях в данной
работе используются выбранные автором сигнатуры, которые обозначены бук-
вой B (B-сигнатуры), или так называемые J-сигнатуры. Последние представ-
ляют собой  начальные байты кода вируса (т.е. первые исполняемые команды
тела вируса).  Опыт показывает,  что они достаточно специфичны и в боль-
шинстве случаев  позволяют отличать  один вирус от другого. При этом для
файловых вирусов,  дописывающих свое  тело в конец файла, будем считать,
что J-сигнатура  начинается с  байта, на который передает управление ко-
манда JMP.  Кроме того, в теле некоторых вирусов встречаются характерные
текстовые строки.  Такие строки будем называть T-сигнатурами и использо-
вать как вспомогательные.

   Следует отметить, что контекстный поиск может использоваться не толь-
ко для  поиска зараженных  вирусом программ,  но и для поиска программ и
файлов, уничтоженных или поврежденных вирусом. Например, вирус С-648.VEN
при определенных значениях таймера вместо заражения программы уничтожает
ее, записывая в первые 5 байтов строку, соответствующую переходу на под-
программу перезагрузки  BIOS. Для  поиска уничтоженных  вирусом программ
можно использовать  строку "EAF0FF00F0".  Аналогично вирус  RCE-1800.DAV
уничтожает сектора  на винчестере,  записывая в  первые байты  сообщение
"Eddie livesЄ  somewhere in  time". По  этому сообщению с помощью Norton
Utilities или  PC Tools  можно выявить  все пораженные сектора и опреде-
лить, к каким файлам они относятся.

   При наличии  сигнатуры проверку  зараженности файлов  вирусом данного
типа удобно  выполнять, используя  специальные программы, из которых, по
мнению автора, наиболее удачной является программа TBScan (см. Софтпано-
рама, т.2,  No. 10), позволяющая  проводить поиск  в каталоге или заданных
его ветвях. Неплохим отечественным детектором, основанным на контекстном
поиске заданных строк является программа VL (см. прил.3). В случае обна-
ружения зараженных  программ целесообразно  дополнительно проконтролиро-
вать результаты  с помощью  Norton Utilities  (NU) или  PCTools, которые
всегда под  рукой (для  просмотра всех  файлов можно  использовать режим
глобального поиска  по диску). Особенно важен такой контроль, когда най-
дена всего одна якобы зараженная программа. Это вполне может быть связа-
но с  ложным срабатыванием  контекстного детектора, который, в сущности,
является весьма  примитивной программой.  Характерным  примером  паники,
возникающей при некритическом отношении к выдаваемой детектором диагнос-
тике, является случай с программой Tаlker, описанный в предыдущей главе.



                  3.2. Классификация файловых вирусов

   Файловые вирусы являются наиболее распространенным типом компьютерных
вирусов; они  составляют примерно 80% от общего числа компьютерных виру-
сов, известных для компьютеров, совместимых с IBM PC. Этот класс компью-
терных вирусов  обладает весьма  высокой инфицирующей  способностью. При
отсутствии противодействия  они вызывают настоящие эпидемии. Так, напри-
мер, произошло  с вирусом  RCE-1813.IER, известным  также под названиями
Jerusalem (Иерусалим), Black Friday (Черная пятница) и др. Классификаци-
онная таблица файловых вирусов, обнаруженных в СССР, приведена в прил.1.

   Группы файловых  вирусов. Большинство  распространенныx файловыx  ви-
русoв имеют штаммы, незначительно отличающиеся от базовой версии. Поэто-
му можно  говорить о группах файловых вирусов и, соответственно, группо-
вых дескрипторах  и групповых  сигнатурах. В  настоящее время количество
найденных в  СССР файловых вирусов превысило сто, поэтому запоминание их
классификационных кодов существенно облегчается, если они используются с
расширением, показывающим, к какой группе принадлежит данный вирус. Наи-
более распространенными группами файловых вирусов являются следующие:

   1) Венская группа (расширение VEN). Первым представителем этой группы
был вирус  С-648.VEN, обнаруженный  в Вене примерно в 1987 г. Его дизас-
семблированный код был опубликован и распространялся в виде файла на ди-
скетах с соответствующими антивирусными программами, поэтому попытки его
модификации наиболее многочисленны.

   2) Группа CASCADE (расширение CAS). Первым представителем этой группы
был вирус RС-1701.CAS, обнаруженный примерно в середине 1988 г.

   3) Иерусалимская группа  (расширение IER). Первым представителем этой
группы был вирус RCE-1813.IER, обнаруженный в Иерусалимском университете
в конце  1987 г. Данная  группа имеет  значительное число штаммов (более
десятка).

   4) Группа TP-вирусов (расширение TP). Большинство представителей этой
группы имеют характерный "хвост" длиной четыре байта, в котором за двумя
первыми байтами (F4FAh) следует байт с 16-ричным значением версии вируса
(как уже указывалось, этот байт является предпоследним байтом в заражен-
ной программе).  В свою  очередь, эта группа разбивается на три подгруп-
пы -- "VACSINE"  (TP-4, TP-5,  TP-16), "музыкальной перезагрузки" (TP-24,
TP-25) и  "самоедов" (TP-34 и старше). Две последние подгруппы часто на-
зывают "Yankee  Doodlе" (Янки дудль), поскольку они при определенных ус-
ловиях проигрывают  мелодию "Yankee  Doodlе Dandy".  Данная группа имеет
наибольшее количество  штаммов -- порядка  двух десятков  (не все  номера
версий соответствуют реальным вирусам).

   5) Группа Dark  Avenger (расширение  DAV). Представители этой группы,
включающей в  настоящее время около двух десятков вирусов, созданы изве-
стной  болгарской   техно-крысой,  скрывающейся   под  псевдонимом  Dark
Avenger. Это  изощренно написанные  вирусы, многие  из которых  получили
глобальное распространение. Большинство обладает более высокой инфициру-
ющей способностью  по сравнению с вирусами, входящими в предыдущие груп-
пы, поскольку заражают файлы не только при выполнении, но и при открытии
и чтении.  Некоторые представители этой группы относятся к опасным виру-
сам-вандалам.

   Расширения для  остальных групп  вирусов приведены  в прил.1. Следует
отметить, что  на базе  некоторых вирусов  начинают образовываться новые
группы. Фактически  это происходит  с каждым  вирусом, получившим значи-
тельное распространение.

   Классификационный код файлового вируса. Как уже указывалось, файловые
вирусы можно разделить на резидентные и нерезидентные, что во многом оп-
ределяет поведение  вируса и, прежде всего, его инфицирующую способность
(резидентные вирусы обладают существенно более высокой инфицирующей спо-
собностью, чем нерезидентные). Поэтому код резидентных вирусов будем на-
чинать с префикса R, например RC-1701.CAS.

   Префикс. Помимо символа R, классификационный код файлового вируса мо-
жет включать символы С и Е или их сочетание. Как уже указывалось, симво-
лы С  и E  определяют типы  файлов, заражаемых данным вирусом. Например,
если резидентный вирус заражает COM- и EXE-файлы, то его классификацион-
ный код будет иметь префикс RCE.

   Количественная характеристика.  К непосредственно  наблюдаемым объек-
тивным свойствам файловых вирусов прежде всего относится приращение дли-
ны файлов  при заражении. Это приращение, обусловленное наличием вируса,
можно использовать  для определения  его типа.  Здесь есть  две основные
проблемы. Во-первых, величина приращения может варьироваться в зависимо-
сти от длины заражаемого файла (многие вирусы при дописывании своего ко-
да в  конец заражаемого  файла выравнивают свое тело на ближайший адрес,
кратный 16,  т.е. на  границу параграфа). Во-вторых, величина приращения
может не совпадать для COM-файлов и EXE-файлов. Поэтому в качестве коли-
чественной характеристики необходимо использовать нормированное прираще-
ние, называемое  инфективной длиной (infective length) и определяемое по
следующим правилам.

   1) Для вирусов  с префиксом С и CE (RC, RCE) характеристика классифи-
кационного кода  принимается равной  минимальному приращению длины зара-
женного COM-  (для вирусов  типа С  и CE)  или EXE- (для вирусов типа Е)
файла.

   2) Для вирусов,  не изменяющих длину файла, указывается ноль, а через
тире действительная длина тела вируса, например RC-0-346.LEH.

   3) Для вирусов,  маскирующих увеличение длины файла на зараженной ма-
шине к  характеристике, определенной  по правилам п.1, слева добавляется
незначащий ноль (например, RCE-02000.DAV).

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

   Для определения инфективной длины не требуется проведение специальных
экспериментов по  заражению файлов.  Обычно ее достаточно просто опреде-
лить, сопоставив  приращения длин  двух или более зараженных файлов типа
COM. Чаще  всего файловые  вирусы заражают  командный  процессор  MS DOS
(файл COMMAND.COM)  и программы,  вызываемые в  файле AUTOEXEC.BAT.  При
анализе нескольких зараженных файлов возможны два наиболее типичных (хо-
тя и не единственно возможных) случая.

   Если приращения  длин двух  или более  зараженных файлов совпадают, а
остатки от  деления длин исходных файлов на 16 отличны друг от друга, то
скорее всего  вирус не выполняет выравнивание своего кода на границу па-
раграфа и  полученное приращение является инфективной длиной данного ви-
руса. Если  приращения отличны, то скорее всего вирус выполняет выравни-
вание своего  тела на  границу параграфа,  и инфективную длину L данного
вируса можно получить по формуле


                          L = D - (16-mod(LEN,16))

т.е. путем  вычитания из  полученного приращения  (D) дополнения (до 16)
остатка  от   деления  исходной   длины  файла  на  16.  Например,  файл
COMMAND.COM, который  файловые вирусы  обычно поражают в числе первых, в
наиболее распространенной  в настоящее  время версии  MS DOS 3.3  обычно
имеет длину  25307. При  этом mod(25307,16)=11,  т.е. остаток от деления
25307 на  16 равен 11. Очевидно, что дополнение до 16 равно 5, и для вы-
равнивания на  границу параграфа  требуется вставка  пяти дополнительных
байтов. В  этом случае инфективная длина будет на 5 меньше, чем прираще-
ние длины файла COMMAND.COM. Достоинством принятого подхода является то,
что, за  редким исключением (например, вирус RCE-1813.IER), определенная
таким образом инфективная длина совпадает с длиной кода вируса.

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

   1) Использование в  качестве количественной характеристики длины кода
вируса, определенной  по константе,  содержащейся во  фрагменте, который
обеспечивает дописывание  кода вируса  в заражаемый  файл (эту константу
можно сравнительно  легко определить, анализируя дизассемблированный код
вируса). Такая характеристика является объективной, поэтому ее часто ис-
пользуют разработчики антивирусных программ, достаточно хорошо владеющие
языком ассемблера.  Однако определенная  таким образом  характеристика в
ряде случаев  не совпадает  с наблюдаемым значением приращения длин фай-
лов, что  снижает ее  ценность с  точки зрения использования при попытке
классификации пользователем, не владеющим языком ассемблера, нового, еще
неизвестного ему  вируса. Hапример,  для упомянутого выше иерусалимского
вируса длина  кода вируса составляет 1808 байтов, а приращение длины при
заражении файлов  типа СОМ -- 1813 байтов, что объясняется дополнительным
дописыванием в  конец зараженного  файла типа COM пятибайтовой константы
"MsDos" (используется как признак зараженности файла).

   2) Использование в  качестве количественной характеристики приращения
длины какого-то  конкретного файла, полученного в результате его зараже-
ния. В  ранних редакциях  данной работы  автор использовал  этот подход,
причем в  качестве эталонного  был выбран  файл COMMAND.COM  версии  3.3
MS DOS. Этот действительно удобный подход утратил свою привлекательность
с появлением  ряда вирусов,  не заражающих  командный процессор, а также
распространением версии  4.0 MS DOS,  в которой  длина файла COMMAND.COM
составляет 37637.

   Суффикс. Возможны  случаи, когда два разных вируса или два штамма од-
ного и  того же вируса имеют одинаковые префикс и характеристику. В этом
случае, для того, чтобы получить уникальные классификационные коды виру-
сов, будем использовать в качестве суффикса одну букву. Например, в коде
RС-1704f буква f означает "штамм-f".

   Дескриптор файлового вируса. Используемые характеристики вирусов при-
ведены в прил.1. Для удобства дескрипторы, приведенные в прил.1, разбиты
на части.

   Сигнатура файлового вируса. Как уже указывалось, для сигнатур целесо-
образно использовать шестнадцатиричные строки, соответствующие характер-
ным последовательностям  команд в  теле вируса.  Расположение сигнатур в
прил.1 подчиняется  правилу: если  M-сигнатура входит  в V-сигнатуру, то
она приводится  после V-сигнатуры. Как уже указывалось в предыдущей час-
ти, T-сигнатуры существуют не для всех файловых вирусов. Одной из наибо-
лее удобных сигнатур для файловых вирусов являются J-сигнатуры. Их можно
очень  быстро  определить  с  помощью  любого  отладчика  (Debug,  Turbo
Debugger, AFD  и т.д.). Пользователи, не умеющие работать с отладчиками,
могут использовать для определения J-сигнатур программу "маскоискатель",
входящую в пакет VL (см. прил.3).

   Следует отметить,  что контекстный поиск можно использовать не только
для поиска  зараженных вирусом программ, но и для поиска программ и фай-
лов, уничтоженных  или поврежденных  вирусом. Например,  вирус С-648.VEN
при определенных значениях таймера вместо заражения программы уничтожает
ее, записывая в первые 5 байтов строку, соответствующую переходу на под-
программу перезагрузки  BIOS. Для  поиска уничтоженных  вирусом программ
можно использовать  строку "EAF0FF00F0".  Аналогично вирус  RCE-1800.DAV
уничтожает сектора  на винчестере,  записывая в  первые байты  сообщение
"Eddie lives ... somewhere in time". По этому сообщению с помощью Norton
Utilities или  PC Tools  можно выявить  все пораженные сектора и опреде-
лить, к каким файлам они относятся.



                   3.3. Классификация бутовых вирусов

   Как и  для файловых вирусов, будем выделять группы бутовых вирусов, а
для каждого отдельного вируса -- классификационный код, дескриптор и сиг-
натуры.

   Группы бутовых  вирусов. Большинство распространенныx бутовых вирусoв
имеют штаммы,  которые можно объединить в группы. Среди наиболее распро-
страненных групп бутовых вирусов отметим следующие:

   1) итальянская или группа Ping-pong (расширение PIN). Первым предста-
вителем вирусов этой группы был вирус Bx1-1C.PIN, появившийся примерно в
конце 1987 г.;

   2) пакистанская (расширение  BRN). В  нее входят вирусы Brain, Ashar.
Первым представителем  этой группы был вирус Dx3-E9.BRN (Brain-86), раз-
работанный в 1986 г. в Лахоре (Пакистан));

   3) новозеландская (расширение STN). Родоначальником этой группы явля-
ется один из наиболее распространенных  в мире бутовых вирусов --  вирус
M-05.STN (Stoned);

   4) индийская (расширение JSH). Пока в СССР обнаружен один  представи-
тель этой группы WM-1F.JSH (Joshy).

   Классификационный код  бутового вируса  состоит из префикса и количе-
ственной характеристики.

   Префикс. Поскольку  все бутовые вирусы являются резидентными, исполь-
зование символа R в префиксе их классификационного кода нецелесообразно.
Наиболее важным  свойством бутовых  вирусов, сопоставимым  по значению с
резидентностью файловых  вирусов, является спосoбность некоторых бутовых
вирусов сохраняться  в памяти  после "мягкой" пeрезагрузки путем нажатия
комбинации клавиш  Ctrl-Alt-Del. Это свойство мы будем обозначать буквой
W (survive Warm reboot) в префиксе. Все бутовые вирусы заражают дискеты,
однако некоторые  из них заражают винчестер, а другие нет. Вирусы, инфи-
цирующие только дискеты (Brain, Den Zuk), будем обозначать префиксом D.

   При заражении  бут-сектора возможны два случая: заражение бут-сектора
раздела С  винчестера (префикс  B) и  заражение MBR --  исполняемой части
таблицы разделов (префикс M). Поскольку одним из наиболее распространен-
ных случаев  расположения хвоста бутового вируса является его расположе-
ние в  псевдосбойных кластерах  (что легко определить, просмотрев их со-
держимое с помощью Norton Utilities), то для таких вирусов в суффикс бу-
дем включать  букву х, за которой следует количество этих кластеров, на-
пример Bx1.

   Количественная характеристика  бутового вируса.  Выбор количественной
характеристики для  бутовых вирусов  имеет определенную  специфику: если
для файловых  вирусов наиболее  характерным признаком заражения является
увеличение длины  файла, то  для бутовых вирусов аналогичную роль играет
уменьшение размеров  оперативной памяти,  доступной для  MS DOS. Однако,
как указывалось  выше, важным  требованием к  выбору свойств вируса, ис-
пользуемых для классификации, является возможность их определения на не-
зараженной машине.  Количество блоков памяти, используемых бутовым виру-
сом, этому критерию не отвечает, поэтому от этой характеристики пришлось
отказаться. Было  решено использовать  другую "доступную  для обозрения"
характеристику  бутового  вируса --  содержимое  зараженного  бут-сектора
(точнее, первых его байтов). Вместе с тем, анализ объема памяти, сообща-
емого MS DOS, является очень полезным диагностическим приемом, и при по-
дозрении на заражение тем или иным вирусом вызов программы CHKDSK, сооб-
щающей это значение (а также ряд других полезных сведений, включая объем
памяти, занятый на диске сбойными кластерами), целесообразно вставлять в
файл AUTOEXEC.BAT.

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

   Следует еще раз подчеркнуть, что просматривать содержимое бут-сектора
следует только,  предварительно загрузившись  с защищенной от записи ре-
зервной дискеты  с операционной системой и требуемыми антивирусными про-
граммами, поскольку  сама операция  просмотра на зараженной машине может
либо перехватываться вирусом для подстановки "чистого" бут-сектора (так,
например, маскируется вирус Dx3-E9.BRN (Brain), либо, что еще хуже, слу-
жить триггером  для каких-то  несанкционированных действий.  Следует ис-
пользовать так  называемую "холодную"  перезагрузку (с  помощью  клавиши
RESET, если  она есть,  или путем выключения питания, если ее нет), а не
"теплую" перезагрузку (нажатием клавиш CTRL-ALT-DEL). Это требование ос-
новано на том факте, что ряд бутовых вирусов перехватывает прерывание от
клавиатуры и при "теплой" перезагрузке сохраняет себя в памяти, даже ес-
ли перезагрузка идет с защищенной системной дискеты.

   Дескриптор бутового  вируса. Структура  дескриптора  бутового  вируса
приведена в прил.2.

   Сигнатура бутового  вируса. Для  бутовых вирусов M-, I- и B-сигнатуры
будут использоваться аналогично тому, как это было для файловых вирусов,
а J-сигнатура --  в несколько  измененном виде.  В отличие от J-сигнатуры
для файловых вирусов, в которой байты, соответствовавшие команде перехо-
да, не  учитывались, здесь они будут учитываться. Это связано с тем, что
первой командой бут-сектора всегда является команда обхода таблицы пара-
метров диска (см. прил.4), размер которой, в отличие от размера заражае-
мого файла,  не меняется. Поэтому для бутовых вирусов мы преимущественно
будем использовать  J-сигнатуру, состоящую  из первых  трех байтов  бут-
сектора, и  лишь при необходимости дополнять ее, начиная с байта, на ко-
торый выполняется команда перехода.

   Для незараженного  бут-сектора MS DOS  версии 3.3  J-сигнатура  равна
EB3490h (объектный код команды JMP, служащий для обхода таблицы парамет-
ров). Ценность  этой  эталонной  J-сигнатуры  состоит  в  том,  что  она
сравнительно легко запоминается. Поэтому несовпадение первых трех байтов
анализируемого бут-сектора с указанной эталонной J-сигнатурой свидетель-
ствует о  зараженности бут-сектора (отметим, что совпадение еще ни о чем
не говорит).



    3.4. Использование классификационных таблиц для контроля работы
                               детекторов
                                                    Доверяй, но проверяй
                                                               Пословица

   Как уже отмечалось, несовершенство существующих детекторов обуславли-
вает наличие  многих ложных  срабатываний. Это  прежде всего относится к
полидетектору Scan,  как одному  из  наиболее  распространенных  средств
входного контроля поступающего программного обеспечения. Классификацион-
ные таблицы  позволяют  контролировать  работу  детектора,  предоставляя
пользователю выбор  нескольких сигнатур для одного и того же вируса. Это
особенно важно,  когда диагностика  детектора относится к одному-единст-
венному файлу, что часто бывает при входном контроле поступающих дискет.
В этом случае целесообразно использовать Norton Utilities или PC Tools с
предлагаемыми в прил.1,2 сигнатурами. Кроме того, классификационные таб-
лицы позволяют  определить точку прикрепления тела вируса к программе и,
таким образом,  проконтролировать не только содержание, но и положение в
файле той или иной сигнатуры. Например, если исключить аномальные случаи
и возможность  заражения файла несколькими вирусами сразу, то для файло-
вых вирусов, однократно заражающих файл и дописывающих свое тело в конец
файла, J-сигнатура  должна находиться  от конца  файла на расстоянии, не
превышающем длину тела вируса.

              3.5. Использование классификационных таблиц
                      в качестве части документации
                        к антивирусным программам

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

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