Принцип построения классификации
По мнению автора, основным требованием к приемлемой для всех классификации является ее объективность, т.е. классификация должна основываться на фиксированном наборе непротиворечиво измеряемых или наблюдаемых признаков.
🕛 11.02.2009, 12:44
В идеальном случае эти признаки должны быть выбраны так, чтобы, скажем, два разработчика антивирусных средств, независимо работающих в Киеве и Москве, использовали одно и то же название для одинаковых вирусов и разные названия для разных вирусов. Это обеспечивало бы быстрое выявление новых штаммов вирусов и новых, еще не исследованных, разновидностей. Очевидно, что объективная классификация существенно облегчает систематизацию, распространение и накопление знаний, а также выбор программных средств для борьбы с тем или иным вирусом.Однако важно не только наличие классификации как таковой, а и принятие ее в качестве стандартной. Уже сейчас отсутствие стандартной классификации приводит к ряду нежелательных эффектов. Во-первых, у разработчиков наблюдается тенденция по-своему называть обнаруженный или сравнительно малораспространенный вирус, а в дальнейшем продолжать использовать собственное название (см., например, документацию к полифагу 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, описанный в предыдущей главе.