КЛАССИФИКАЦИЯ КОМПЬЮТЕРНЫХ ВИРУСОВ. Серьезность и долговременный характер проблемы защиты от компьютерных вирусов уже практически не у кого не вызывают сомнений. Поэтому необходимо организовать оперативный обмен информацией по данной проблеме и наладить взаимодействие работающих в этой области специалистов. Это, в свою очередь, требует решения ряда подзадач, одной из которых является выработка стандартной классификации компьютерных вирусов. Стандартная классификация существенно облегчает накопление и распространение знаний в любой области, и компьютерные вирусы не являются исключением. Применительно к компьютерной вирусологии она помогает решению такой важной задачи, как однозначное определение типа обнаруженного вируса. При этом должен использоваться ограниченный набор сравнительно простых и непротиворечивых признаков, не требующих проведения глубокого анализа зараженных программ и элементов операционной системы. Существующие в настоящее время классификации, как правило, основаны на "кличках" - распространенных среди программистов названиях, отражающих то или иное свойство вируса. Анализируя имеющиеся неформальные названия, можно выявить четыре основные тенденции их образования.Первая основана на указании места обнаружения или разработки вируса (Lehiqh, Jerusalem, Vienna, Alameda), вторая - на содержащихся в теле вируса текстовых строках (Vacsina, Eddie, Dark, Disk Killer, sUVsDos), третья - на вызываемом вирусом эффекте (Time Bomb, DOS - 62, Cascade, Black Friday) и, наконец, четвертая - на длине тела вируса или на приращении длины файла при заражении (524,648,1800,2000 и т.д.). При этом один и тот же вирус может иметь множество названий, и новое название, использованное разработчиком той или иной антивирусной программы, далеко не всегда соответствует новому вирусу. Для широко известных вирусов перечень названий напоминает список имен арабского шейха. Например, автор встречал более десяти названий вируса, обнаруженного в декабре 1987 г. в Иерусалимском университете (RCE -1813. IER по предлагаемой ниже классификации), среди которых три: Israeli virus (Израильский), Jerusalem (Иерусалим) и PLO (ООП) - относятся к первому типу, два названия (sUMsDos и sU) -ко второму типу, и, наконец, еще четыре: Black Hole (Черная дыра), Black Friday (Черная пятница), Friday 13(Тринадцатая пятница) и Вирус замедления - к третьему типу (данный вирус "вырезает" в левом углу экрана черную дыру, удаляет все запускаемые файлы по пятницам, пришедшимся на 13 число и, кроме того, примерно через 20 мин. после запуска зараженной программы искусственно замедляет работу компьютера в несколько сотен раз. Конечно же,такое многообразие названий создает определенные затруднения, особенно если учитывать, что данный вирус имеет несколько отличающихся по деталям функционирования штаммов. Поэтому необходим какой-то выход из создавшейся ситуации. На определенном этапе среди разработчиков антивирусных средств наблюдалась стихийная тенденция к использованию в качестве основных названий, применяемых известным зарубежным полидетектором Scan (фирма McAfee Associates, США); однако он, естественно, запаздывает с классификацией болгарских вирусов, не говоря уже о вирусах отечественного изготовления. Поэтому набор обнаруживаемых им вирусов не соответствует советским условиям, а используемые строки для контекстного поиска (сигнатуры) часто неудачны (например, дают много ложных срабатываний).При этом для ранних версий Scan неоднократно наблюдались случаи, когда наиболее актуальные для нас вирусы могут классифицироваться неверно (как это было с подгруппой Vacsine группы ТР-вирусов) или попадали в две группы сразу (например,Vacsine и YankeeDoodle). В последнем случае создавалось ложное впечатление о том, что файл заражен двумя вирусами сразу. Кроме того,недавно появился другой достаточно мощный полидетектор TNTVirus (фирма Carmel Software Enqineerinq), в котором в ряде случаев используются другие названия. Не исключено, что будет третий, четвертый и т.д. Поэтому необходим какой-то менее субъективный и учитывающий нашу информационную изолированность (отсутствие сетей, слабое развитие и низкое качество телефонной связи) подход. Принцип построения классификации. По мнению автора, основным требованием к приемлемой для всех классификации является ее объективность, т.е. классификация должна основываться на фиксированном наборе непротиворечиво измеряемых или наблюдаемых признаков. В идеальном случае эти признаки должны быть выбраны так, скажем, два разработчика антивирусных средств, независимо работающих в Киеве и Москве, использовали одно и то же название для одинаковых вирусов и разные названия для разных вирусов. Это обеспечивало бы быстрое выявление новых штаммов вирусов и новых, еще не исследованных, разновидностей. Очевидно, что объективная классификация существенно облегчает систематизацию, распространение и накопление знаний, а также выбор программных средств для борьбы с тем или иным вирусом. Однако важно не только наличие классификации как таковой, а и принятие ее в качестве стандартной. Уже сейчас отсутствие стандартной классификации приводит к ряду нежелательных эффектов. Во-первых, у разработчиков наблюдается тенденция по-своему называть обнаруженный или сравнительно малораспространенный вирус, а в дальнейшем продолжать использовать собственное название (см., например, документацию к полифагу Aidstest Д.Н.Лозинского). В результате получается, что каждый разработчик антивирусных средств использует в определенной степени свою уникальную классификацию. Поэтому для пользователей, столкнувшихся с вирусом, необнаруживаемом тем или иным детектором или полифагом, часто неясно, относится ли он к какой-то разновидности уже известного вируса, что дает возможность в значительной степени предсказать его свойства, или это совершенно новый, еще не исследованный вирус. Во-вторых, у самих пользователей наблюдается тенденция аппроксимировать общее количество вирусов общим количеством названий, используемых в имеющемся у них в наборе средств защиты и прежде всего программ-фагов. Такая аппроксимация приводит к существенной переоценке общего количества имеющихся компьютерных вирусов, однако человек быстро "рационализирует" этот факт путем разбиения одного реального вируса на несколько "виртуальных", приписывая каждолму свой набор признаков. Так, автору приходилось сталкиваться с "самодельной" классификацией, в которую вирусы C-648. VEN и RCE - 1813. IER входили в двух "ипостасях" каждый (в каждом случае со своими фагами), причем второй ипостаси вируса C-648 .VEN приписывались черты вируса RCE -1813.IER (замедление работы компьютера. В процессе чтения лекций и проведения семинаров по данной проблеме автором была выработана схема классификации, включающая три основных элемента: код вируса (несколько напоминающий схему классификации транзисторов); дискриптор вируса (формализованный список основных свойств); сигнатуру вируса (строка для контекстного поиска данного вируса в зараженной программе). Классификационный код вируса. ---------------------------В предлагаемой схеме каждому вирусу присваивается код, состоящий из буквенного префикса, количественной характеристики и факультативного буквенного суффикса. Например,в коде RCE -префикс, 1813 - корень (характеристика), а с - суффикс. Кроме того, факультативное расширение, записываемое в конце кода через точку, характеризует группу, к которой относится данный вирус. Например, RCE -1813. IER означает, что данный вирус относится к иерусалимской группе. Главным требованием к классификационному коду вируса является возможность определения большинства входящих в него свойств на незараженном компьютере. Выполнение каких-либо действий по исследованию вируса на зараженном компьютере является наиболее распространенной и одновременно наиболее грубой ошибкой, которую допускают неопытные пользователи.Следует подчеркнуть, что любые действия на компьютере, зараженном неизвестным вирусом, сопряжены с определенным риском вызвать срабатывание троянской компоненты вируса. Кроме того,резидентный вирус с целью маскировки может перехватывать запросы и искажать выдаваемую информацию.В настоящий момент известен ряд вирусов, обладающих указанным свойством.Например,группа файловых вирусов, известная под названием TP- вирусов, начиная с вируса TP- 34 (члены этой группы имеют номера, хранящиеся в предпоследнем байте вируса в 16-ричном виде),обладает свойством "самовыкусывания" при попытке трассировать зараженную программу резидентный вирус выполняет "выкусывание" вируса из программы, "подсовывая" отладчику уже излеченную программу.Аналогично бутовые вирусы, входящие в группу пакистанских (Brain,Ashar), при попытке просмотреть бут-сектор на зараженном компьютере "подсовывают" пользователю оригинальный бут-сектор, сохраненный вирусом в одном из секторов, помеченных как дефектный (и, тем самым, исключенным из распределения под файлы). Префикс характеризует место расположения головы и состоит из букв и цифр, начиная с прописной буквы.В соответствии с этим будем различать следующие типы вирусов (будем рассматривать только реально существующие типы, а не все принципиально возможные): 1) Ъ1файловые Ъ0(голова вируса располагается в COM-, EXE -файлах и оверлеях - символы C,E в префиксе. При этом дополнительную букву, отражающую заражение оверлеев в префикс вводить не будем, чтобы избежать его переусложнения, а вынесем в дескриптор); 2) Ъ1бутовые Ъ0(голова вируса располагается в бут-секторе или блоке MBR - символы B,D или М в префиксе); 3) Ъ1пакетные Ъ0(голова вируса расположена в пакетном файле, т.е. представляет собой строку или программу на языке управления заданиями операционной системы -префикс j). Как уже отмечалось, наряду с "чистыми" вирусами, использующими одну среду, в настоящее время появились "гибридные" - сочетающие свойства файловых и бутовых вирусов. В таких вирусах вместо первой буквы R будем использовать соответствующую букву префикса бутового вируса, например BCE или MCE ( как и бутовые, смешанные вирусы не могут быть нерезидентными). Ъ1Характеристика Ъ0вируса представляет собой количественно измеряемое свойство вируса, допускающее простое определение и отличающееся для большинства типов вирусов. Например,для файловых вирусов в качестве характеристики может использоваться величина приращения длины файлов при заражении("инфективная длина"), хотя здесь имеются определенные трудности. Ъ1Суффикс Ъ0используется, когда два разных вируса или два штамма одного и того же вируса имеют одинаковый префикс и характеристику. В этом случае для того, чтобы получить уникальные коды, будем использовать в качестве суффикса латынскую букву. Например, в коде RC -1704f буква f означает "штамм-f". Дескриптор вируса. ----------------Конечно, предложенный код вируса не охватывает, да и не может охватить основные свойства вируса. В то же время систематизация свойств вирусов представляет значительный интерес, как для разработчиков антивирусных программ, так и их пользователей, поскольку позволяет интегрировать разнородные факты, относящиеся поведению того или иного вируса в систему тем самым облегчая их запоминание и сопоставление. Поэтому автором в качестве второго элемента классификации предлагается так называемый дескриптор. Дескриптор представляет собой систематизацию основных характеристик вируса в закодированном виде. Кодировка состоит из групп символов, начинающихся с заглавной латинской буквы, за которой следуют строчные латинские буквы или цифры. При этом заглавная латинская буква определяет вид характеристики, а следующие за ней маленькие буквы или цифры - значение характеристики для конкретного вируса. Например, в дескрипторе "Xab Yc Zdmt" имеются три свойства: X- со значением "ab", Y - со значением "c", и Z - со значением "dmt". Сигнатура вируса. ---------------Поскольку подавляющее большинство известных в настоящее время вирусов допускают детектирование с помощью контекстного поиска, одной из важных задач классификации является составление списка строк для контекстного поиска (сигнатур). Значение сигнатур позволяет проверять поступающее программное обеспечение на их наличие, тем самым существенно повышая степень защищенности ЭВМ. стандартизация сигнатур особенно важна, когда вирус имеет много штаммов, поскольку формальные схемы, подобные описанным выше классификационному коду и дескриптору, обладат тем недостатком, что некоторые штаммы будут неразличимы в заданном пространстве признаков.В то же время сравнительно легко обеспечить уникальность сигнатуры, по крайней мере для подавляющего большинства вирусов, известных в СССР, хотя имеются вирусы, не содержащие ни одной постоянной сигнатуры, т.е. которые нельзя найти с помощью контекстного поиска. Хотя в дальнейшем в качестве сигнатур используются только текстовые строки, для них применимы и регулярные выражения. Последние существенно устойчивее к некоторым мутациям и, кроме того, при меньшей длине обеспечивают лучшее качество распознавания (меньшее количество ложных срабатываний). Все это делает их предпочтительнее простых текстовых строк. Версию приводимых ниже таблиц с сигнатурами из регулярных выражений автор надеется опубликовать несколько позднее. Очевидно, что сигнатура, соответствующая участку, содержащему команды, надежнее сигнатуры участка, содержащего данные, например, текстовые строки (последние могут быть модифицированы). Поэтому выбор сигнатуры целесообразно выполнять на основе анализа дизассемблированного кода вируса. Длина сигнатуры не должна бьыть слишком большой, поскольку длинную сигнатуру труднее правильно набить вручную. В то же время при недостаточной длине или выборе нехарактерных участков кода сигнатура будет вызывать много ложных срабатываний, что весьма нежелательно. Правильная сигнатура не длжна содержаться ни в одной из наиболее распространенных в MS DOS системных программ,включая, конечно, сами компоненты MS DOS. Таким образом, для выбора отвечающей указанным требованиям сигнатуры необходим ряд экспериментов, а сами сигнатуры могут являться предметом сравнения и анализа. В настоящее время имеется ряд программ, обеспечивающих детектирование вирусов путем поиска в файлах соответствующих строк, и используемые в них сигнатуры естественно "принять за основу". Наибольшую ценность представляют строки, используемые в известном зарубежном детекторе Scan фирмы MsAfee Associates (США), поскольку новые версии этого детектора появляются регулярно и охватывают практически все вирусы, появляющиеся за рубежом. Из других зарубежных детектров следует отметить Virscan фирмы IBM и TNTVirus фирмы Carmel (Израиль). Для определенности назовем строку, используемую Virscan, I-сигнатурой, строку, используемую Scan - M-сигнатурой, а строку, используемую TNTVirus, - С -сигнатурой. В то же время необходимо отметить, что сигнатуры для ряда вирусов, разработанных в нашей стране, в существующих версиях этих программ отсутствуют, а сигнатуры для болгарских вирусов часто неудачны. В таких случаях в данной работе используются выбранные автором сигнатуры, которые обозначены буквой В ( В-сигнатуры), или так называемые j- сигнатуры. Последние паредставляют собой начальные байты кода вируса (т.е. первые исполняемые команды тела вируса). Опыт показывает, что они достаточно специфичны и в большинстве случаев позволяют отличить один вирус от другого.При этом для файловых вирусов, дописывающих свое тело в конец файла, будем считать, что j- сигнатура начинается с байта, на который передает управление команда JMP. Кроме того, в теле некоторых вирусов встречаются характерные текстовые строки. Такие строки будем называть Т-сигнатурами и использовать как вспомогательные. Следует отметить, что контекстный поиск может использоваться не только для поиска зараженных вирусом программ, но и для поиска программ и файлов, уничтоженных или поврежденных вирусом. Например, вирус С-648.VEN при определенных значениях таймера вместо заражения программы уничтожает ее, записывая в первые 5 байтов строку, соответствующую переходу на подпрограмму перезагрузки BIOS. Для поиска уничтоженных вирусом программ можно использовать строку "EAFOFFOOFO". Аналогично вирус RCE -1800.DAV уничтожает сектора на винчестере, записывая в первые байты сообщение "Eddie lives...somewhere in time". По этому сообщению с помощью Norton Utilites или РС Tools можно выявить все пораженные сектора и определить, к каким файлам они относятся. При наличии сигнатуры проверку зараженности файлов вирусом данного типа удобно выполнять, используя специальные программы, из которых, по мнению автора, наиболее удачной является программа TBScan (см. Софтпанорама, т.2, N 10), позволяющая проводить поиск в каталоге или заданных его ветвях. Неплохим отечественным детектором, основанным на контекстном поиске заданных строк является программа VL (см.прил.3). В случае обнаружения зараженных программ целесообразно дополнительно проконторолировать резулиьтаты с помощью Norton Utilites (NU) или PCTools, которые всегда под рукой (для просмотра всех файлов можно использовать режим глобального поиска по диску).Особенно важен такой контроль, когда найдена якобы одна зараженная программа. Это вполне может быть связано с ложным срабатыванием контекстного детектора, который, в сущности, является весьма примитивной программой. Характерным примером паники, возникающей при некритическом отношении к выдаваемой детектором диагностике, является случай с программой Talker, описанной в предыдущей главе. Классификация файловых вирусов. -----------------------------------Файловые вирусы являются наиболее распространенным типом компьютерных вирусов; они составляют примерно 80% от общего числа компьютерных вирусов, известных для компьютеров, совместимых с IBM PC. Этот класс компьютерных вирусов обладает весьма высокой инфицирующей способностью.При отсутствии противодействия они вызывают настоящие эпидемии. Так, например, произошло с вирусом RCE - 1813. IER, известным также под названиями Jerusalem (Иерусалим), Black Friday (Черная пятница) и др. Классификационная таблица файловых вирусов, обнаруженных в СССР, приведена в прил.1. Группы файловых вирусов. -----------------------Большинство распространенных файловых вирусов имеют штаммы, незначительно отличающиеся от базовой версии. Поэтому можно говорить о группах файловых вирусов и,соответственно, групповых дескрипторах и групповых сигнатурах. В настоящее время количество найденных в СССР файловых вирусов превысило сто, поэтому запоминание их классификационных кодов существенно облегчается, если они используются с расширением, показывающим, к какой группе принадлежит данный вирус. Наиболее распространенными группами файловых вирусов являются следующие: 1) Ъ1Венская группа Ъ0(расширение VEN). Первым представителем этой группы был вирус С-648.VEN, обнаруженный в Вене примерно в 1987г. Его дизассемблированный код был опубликован и распространялся в виде файла на дискетах с соответствующими антивирусными программами, поэтому попытки его модификации наиболкее многочисленны. 2) Ъ1Группа CASCADE (Ъ0расширение CAS). первым представителем этой группы был вирус RC-1701.CAS, обнаруженный примерно в середине 1988 г. 3) Ъ1Иерусалимская группа Ъ0(расширение IER).Первым представителем этой группы был вирус RCE -1813.IER, обнаруженный в Иерусалимском университете в конце 1987 г. Данная группа имеет значительное число штаммов (более десятка). 4) Ъ1Группа ТР-вирусов Ъ0(расширение ТР). Большинство представителей этой группы имеют характерный хвост" длиной четыре байта, в котором за двумя первыми байтами (F4FAh) следует байт с 16-ричным значением версии вируса (как уже указывалдось, этот байт является предпоследним байтом в зараженной программе). В свою очередь, эта группа разбивается на три подгруппы - "VACSINE" (ТР-4,ТР-5, ТР-16),"музыкальной перезагрузки" (ТР-24, ТР-25) и "самоедов" (ТР-34 и старше). Две последние подгруппы часто называют "Yankee Doodle Dendy" данная группа имеет наибольшее количество штаммов - порядка двух десятков (не все номера версий соответствуют реальным вирусам). 5) Ъ1Группа Dark Avenqer Ъ0(расширение DAV). Представители этой группы, включающей в настоящее время около двух десятков вирусов, созданы известной болгарской техно-крысой, скрывающейся под псевдонимом Dark Avenqer. Это изощренно написанные вирусы, многие из которых получили глобальное распространение. Большинство обладает более высокой инфицирующей способностью по сравнению с вирусами, входящими в предыдущие группы, поскольку заражают файлы не только при выполнении,но и при открытии и чтении. Некоторые представители этой группы относятся к опасным вирусам-вандалам. Расширения для остальных групп вирусов приведены в прил.1. Следует отметить, что на базе некоторых вирусов начинают образовываться новые группы. Фактически это происходит с каждым вирусом, получившим значительное распространение. Классификационный код файлового вируса. --------------------------------------Как уже указывалось,файловые вирусы можно разделить на резидентные и нерезидентные, что во мн6огом определяет поведение вируса и, прежде всего, его инфицирующую способность (резидентные вирусы обладают существенно более высокой инфицирующей способностью, чем нерезидентные). Поэтому код резидентных вирусов будем начинать с префикса R, например RC -1701.CAS. Ъ1ПрефиксЪ0. Помимо символа R, классификационный код файлового вируса может включать символы С и Е или их сочетание.Как уже указывалось, символы С и Е определяют типы файлов, заражаемых данным вирусом. Например, если резидентный вирус заражает COM- и EXE-файлы, то его классификационный код будет иметь префикс RCE. Ъ1Количественная характеристикаЪ0. К непосредственно наблюдаемым объективным свойствам файловых вирусов прежде всего относится приращение длины файлов при заражении. Это приращение, обусловленное наличием вируса, можно использовать для определения его типа. Здесь есть две основные проблемы. Во-первых, величина приращения может варьироваться в зависимости от длины заражаемого файла (многие вирусы при дописывании своего кода в конец заражаемого файла выравнивают свое тело на ближайший адрес, кратный 16, т.е. на границу параграфа). Во-вторых, величина приращения может не совпадать для COM -файлов и EXE- файлов. Поэтому в качестве количественной характеристики необходимо использовать нормированное приращение, называемое Ъ1инфективной длиной (Ъ0infective lenqth) и определяемое по следующим правилам. 1) Для вирусов с префиксом С и СЕ (RC, RCE ) характеристика классификационного кода принимается равной минимальному приращению длины зараженного COM- (для вирусов типа С и СЕ) или 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) Использование в качестве количественной характеристики длины кода вируса, определенной по константе, содержащейся во фрагменте, который обеспечивает дописывание кода вируса в заражаемый файл (эту константу можно сравнительно легко определить, анализируя дизассемблерованный код вируса). такая характеристика является объективной, поэтому ее часто используют разработчики антивирусных программ, достаточно хорошо владеющие языком ассемблера. Однако определенная таким образом характеристика в ряде случаев не совпадает с наблюдаемым значением приращения длин файлов, что снижает ее ценность с точки зрения использования при попытке классификации пользователем, не владеющим языком ассемблера, новогро, еще неизвестного ему вируса. Например, для упомянутого выше иерусалимского вируса длина кода вируса составляет 1808 байтов, а приращение длины при заражении файлов типа COM -1813 байтов,что объясняется дополнительным дописыванием в конец зараженного файла типа COM пятибайтовой константы "MsDos" (используется как признак зараженности файла). 2) Использование в качестве количественной характеристики приращения длины какого-то конкретного файла, полученного в результате его заражения. В ранних редакциях данной работы автор использовал этот подход, причем в качестве эталонного был выбран файл COMMAND.COM версии 3.3 MS DOS. Этот действительно удобный подход утратил свою привлекательность с появлением ряда вирусов, не заражающих командный процессор, а также распространением версии 4.0 MS DOS, в которой длина файла COMMAND.COM составляет 37637. Ъ1СуффиксЪ0. Возможны случаи, когда два разных вируса или два штамма одного и того же вируса имеют одинаковые префикс и характеристику. В этом случае, для того, чтобы получить уникальные классификационные коды вирусов, будем использовать в качестве суффикса одну букву. Например, в коде RC-1704f буква f означает "штамм-f". Дискриптор файлового вируса. ---------------------------Используемые характеристики вирусов приведены в прил.1. Для удобства дескрипторы, приведенные в прил.1, разбиты на части. Сигнатура файлового выируса. ---------------------------Как уже указывалось, для сигнатур целесообразно использовать шеснадцатиричные строки, соответствующиек характерным последовательностям команд в теле вируса. Расположение сигнатур в прил.1 подчиняется правилу: если М-сигнатура входит в V-сигнатуру, то она приводится после V-сигнатуры. Как уже указывалось в предыдущей части, Т-сигнатуры существуют не для всех файловых вирусов. Одной из наиболее удобных сигнатур для файловых вирусов являются j-сигнатуры. Их можно очень быстро определить с помощью любого отладчика (Debuq,Turbo, Debuqqer, ADF и т.д.). Пользователи, не умеющими работать с отладчиками, могут использовать для определения j-сигнатуры программу "маскоискатель", входящую в пакет VL (см.прил.3). Следует отметить, что контекстный поиск можно использовать не только для поиска зараженных вирусом программ, но и для поиска программ и файлов, уничтоженных или поврежденных вирусом. Например,вирус С-648.VEN при определенных значениях таймера вместо заражения программы уничтожает ее, записывая в первые 5 байтов строку, соответствующую переходу на подпрограмму перезагрузки BIOS.Для поиска уничтоженных вирусом программ можно использовать строку "EAFOFFOOFO". Аналогично вирус RCE -1800.DAV уничтожает сектора на винчестере, записывая в первые байты сообщение "Eddite lives...somewhere in time". По этому сообщению с помощью Norton Utilites или РС Tools можно выявыить все пораженные сектора и определить, к каким файлам они относятся. Классификация бутовых вирусов. Как и для файловых вирусов, будем выделять группы бутовых вирусов, а для каждого отдельного вируса - классификационный код, дескриптор и сигнатуры. Группы бутовых вирусов. ---------------------Большинство распространенных бутовых вирусов имеют штаммы, которые можно объединить в группы. Среди наиболее распространенных групп бутовых вирусов отметим следующие: 1) Ъ1итальянская или группа Pinq-ponq Ъ0(расширение PIN).Первым представителем этой группы был вирус Bx1-1C.PIN, появившийся примерно в конце 1987 г.; 2) Ъ1пакистанская Ъ0(расширение BRN). В нее входят вирусы Brain, Ashar. Первым представителем этой группы был вирус Dx-3-E9.BRN (Brain-86), разработанный в 1986 г. в Лахоре (Пакистан); 3) Ъ1новозеландская Ъ0(расширение STN). Родоначальником этой группы является один из распространенных в мире бутовых вирусов - М-05.STN (Stoned); 4) Ъ1индийская Ъ0(расширение JSH). Пока в СССР обнаружен один представитель этой группы WM -1F.JSH (joshy). Классификационный код бутового вируса состоит из префикса и количественной характеристики. Ъ1Префикс. Ъ0Поскольку все бутовые вирусы являются резидентными, использование символа R в префиксе их классификационного кода нецелесообразно. Наиболее важным свойством бутовых вирусов, сопоставимым по значению с резидентностью файловых вирусов, является способность некоторых бутовых вирусов сохраняться в памяти после "мягкой" перезагрузки путем нажатия комбинации клавиш Ctrl-Alt-Del. Это свойство мы будем обозначать буквой W (survive Warm reboot) в префиксе. Все бутовые вирусы заражают дискеты, однако некоторые из них заражают винчестер, а другие нет. Вирусы, инфицирующие только дискеты (Brain, Den Zuk), будем обозначать префиксом D. При заражении бут-сектора возможны два случая: заражение бут-сектора раздела С винчестера (префикс В) и заражение MBR - исполняемой части таблицы разделов (префикс М). Поскольку одним из наиболее распространенных случаев расположения хвоста бутового вируса является его расположение в псевдосбойных кластерах (что легко определить, просмотрев их содержимое с помощью Norton Utilites), то для таких вирусов в суффикс будем включать букву x, за которой следует количество этих кластеров, например Bx1 Ъ1Количественная характеристика Ъ0бутового вируса. Выбор количественной характеристики для бутовых вирусов имеет определенную специфику: если для файловых вирусов наиболее характерным признаком заражения является увеличение длины файла, то для бутовых вирусов аналогичную роль играет уменьшение размеров оперативной памяти, доступной для MS DOS. Однако, как указывалось выше, важным требованием к выбору свойств вируса, используемых для классификации, является возможность их определения на незараженной машине. Количество блоков памяти, используемых бутовым вирусом, этому критерию не отвечает, поэтому от этой характеристики пришлось отказаться. Было решено использовать другую "доступную для обозрения" характеристику бутового вируса - содержимое зараженного бут-сектора (точнее, первых его байтов). Вместе с тем, анализ объема памяти, сообщаемого MS DOS, является очень полезным диагностическим приемом, и при подозрении на заражение тем или иным вирусом вызов программы CHKDSK, сообщающей это значение (а также ряд других полезных сведений, включая объем памяти на диске сбойными кластерами),целесообразно вставлять в файл AUTOEXEC.BAT. В качестве характеристики выбрано значение второго байта зараженного бут-сектора, поскольку его содержимое различно для известных автору бутовых вирусов. В то же время содержимое этого байта записывается в 16-ричной системе счисления что создает определенную несогласованность с характеристикой файловых вирусов, являющейся десятичным числом. Именно поэтому в предлагаемом варианте классификационного кода вируса префикс и характеристика разделяються знаком "-" (минус). Следует еще раз подчеркнуть, что просматривать содержимое бут-сектора счледует только, предварительно загрузившись с защищенной от записи резервной дискеты с операционной системой и требуемыми антивирусными программами, поскольку сама операция просмотра на зараженной машине может либо перехватываться вирусом для постановки "чистого" бут-сектора (так, например, маскируется вирус Dx3-E9.BRN (Brain), либо, что еще хуже, служить триггером для каких-то несанкционированных действий. Следует использовать так называемую "холодную" перезарузку (с помощью клавиши RESET, если она есть, или путем выключения питания, если ее нет), а не "теплую" перезагрузку (нажатием клавиш CTRL-ALT-DEL). Это требование основано на том факте, что ряд бутовых вирусов перехватывает прерывание от клавиатуры и при "теплой" перезагрузке сохраняет себя в памяти, даже если перезагрузка идет с защищенной системной дискеты. Сигнатура бутового вируса. -------------------------Для бутовых вирусов М-,I-, и В-сигнатуры будут использоваться аналогично тому, как это было для файловых вирусов, а j-сигнатура - в несколько измененном виде. В отличие от j-сигнатуры для файловых вирусов, в которой байты, соответствовавшие команде перехода, не учитывались, здесь они будут учитываться. Это связано с тем, что первой командой бут-сектора всегда является команда обхода таблицы параметров диска (см.прил.4), размер которой, в отличие от размера зарважаемого файла, не меняется.Поэтому для бутовых вирусов мы преимущественно будемиспользовать j-сигнатуру, состоящую из первых трех байтов бут-сектора, и лишь при необходимости дополнять ее, начиная с байта,на который выполняется команда перехода. Для незараженного бут-сектора MS DOS версии 3.3 j-сигнатура равна ЕВ3490h (объектный код команды JMP, служащий для обхода таблицы параметров) Ценность этой эталонной j-сигнатуры состоит в том, что она сравнительно легко запоминается. Поэтому несовпадение первых трех байтов анализируемого бут-сектора с указанной эталонной j-сигнатурой свидетельствует о зараженности бут-сектора (отметим, что совпадение еще ни о чем не говорит). Использование классификационных таблиц для контроля работы детекторов. ------------------------------------------------------------Как уже отмечалось, несовершенство существующих детекторов обуславливает наличие многих ложных срабатываний. Это прежде всего относится к полидетектору Scan, как одному из наиболее распространенных средств входного контроля поступающего программного обеспечения. Классификационные таблицы позволяют контролировать работу детектора, предоставляя пользователю выбор нескольких сигнатур для одного и того же вируса. Это особенно важно, когда диагностика детектора относится к одному-единственному файлу, что часто бывает при входном контроле поступающих дискет. В этом случае целесообразно использовать Norton Utilites или PC Tools с предлагаемыми в прил.1,2 сигнатурами. Кроме того, классификационные таблицы позволяют определить точку прикрепления тела вируса к программе и, таким образом, проконтролировать не только содержание, но и положение в файле той или иной сигнатуры. Например, если исключить аномальные случаи и возможность заражения файла несколькими вирусами сразу, то для файловых вирусов, однократно заражающих файл и дописывающих свое тело в конец файла, j-сигнатура должна находиться от конца файла на расстоянии, не превышающим длину тела вируса. Использование классификационных таблиц в качестве части документации к антивирусным программам. ------------------------------------------------------------ В заключение отметим, что предлагаемая классификация является, по существу, одной из первых попыток стандартизации, поэтому она, конечно, не лишена недостатков, и естественно, должна совершенствоваться. В то же время любой классификации присущи те или иные недостатки, и ожидание идеальной классификации глубоко ошибочно. Здесь, как и в большинстве областей программирования (например, в языках высокого уровня), пожалуй, важнее вовремя сделать ставку на какой-то более или менее приемлемый вариант, чем самому тратить время и силы на разработку более удачной альтернативы. Поэтому разработчикам антивирусных программ имеет смысл использовать описанную классификацию при подготовке документации и выдаче диагностических собщений, даже имея некоторые возражения к принятому подходу. Поскольку автор регулярно обновляет приведенные таблицы вирусов, основанные на предложенной классификации, их использование в качестве части документации к распространяемым программам не только повысит полноту и качество последней, но и сэкономит время на последующую корректировку, которая может быть выполнена путем замены предыдущей редакции таблиц на текущую. Использование в антивирусных программах кода и дескриптора вируса упрощает программирование ряда компонент и создает некоторые нетривиальные возможности. В простейшем случае дескриптор вируса можно рассматривать как способ упаковки файла оперативной подсказки сведений о найденном вирусе. При выдаче информации о вирусе по клавише HELP (F1) содержащуюся в нем информацию можно развернуть до практически полного описания найденного вируса путем замены значения каждого из полей дескриптора на соответствующие ему стандартные фазы на русском или английском языке. В этом случае вместо двух-трех малоинформативных фраз, выдаваемых на экран в виде оперативной подсказки (по принцыпу "получи и отвяжись"), пользователь получает действительно полезную информацию.