                      Академия наук Украины
             Институт кибернетики имени В.М.Глушкова



                                               На правах рукописи


                   БЕЗРУКОВ Николай Николаевич

УДК 683.1

                    КОМПЬЮТЕРНАЯ ВИРУСОЛОГИЯ


          05.13.16 - Применение вычислительной техники,
     математического моделирования и математических методов
                     в научных исследованиях



                           Автореферат
             диссертации на соискание ученой степени
                    доктора технических наук











                           Киев - 1992


Работа выполнена в Киевском институте инженеров гражданской  авиа-
ции


Научные консультанты:    член-корреспондент АН Украины,
                         профессор ЮЩЕНКО Е.Л.,

                         доктор технических наук,
                         профессор НАГОРНЫЙ Л.Я.


Официальные оппоненты:   доктор технических наук,
                         профессор НИКИТИН А.И.,

                         доктор физико-математических наук,
                         профессор АНИСИМОВ А.В.,

                         доктор технических наук,
                         профессор САМОФАЛОВ К.Г.


Ведущая организация:     Московский государственный
                         университет имени М.В.Ломоносова.



Защита состоится " "_____________ 199__ г. в ____ часов на заседа-
нии cпециализированного совета Д 016.45.03 при Институте  киберне-
тики имени  В.М.Глушкова АН  Украины по  адресу: 252207  Киев 207,
проспект Академика Глушкова, 40.

С диссертацией можно ознакомиться в научно-техническом архиве  ин-
ститута.


Автореферат разослан  "    " _____________ 199__ г.



Ученый секретарь
специализированного совета                               РЫБАК В.И.




                     ОБЩАЯ ХАРАКТЕРИСТИКА РАБОТЫ

   Актуальность проблемы.  По мере  развития и усложнения компьютерных
систем и программного обеспечения возрастает объем и повышается уязви-
мость хранящихся в них данных. Одним из факторов, резко повысивших эту
уязвимость, является  появление нового  класса криминальных программ -
компьютерных вирусов.  Наибольшая опасность, возникающая при заражении
программного обеспечения компьютерными вирусами, состоит в возможности
искажения или  уничтожения хранящихся в компьютере программ и баз дан-
ных. Последнее может привести не только к финансовым и временным поте-
рям, но и вызвать человеческие жертвы.
   В настоящее  время ни  в уголовном  кодексе Украины, ни в уголовных
кодексах других  республик, входивших в состав СССР, компьютерные пре-
ступления не  определены. Таким  образом, компьютерных  преступлений в
юридическом смысле  пока не существует. Тем не менее с социологической
точки зрения  многие традиционные преступления модифицировались с уче-
том возможностей  вычислительной техники, и, кроме того, появились но-
вые, основанные исключительно на применении компьютера.
   Уровень раскрываемости  компьютерных преступлений  довольно  низок.
Работа следователя  по раскрытию  компьютерных  преступлений  обладает
значительной спецификой  и требует специальной подготовки. При рассле-
довании компьютерных преступлений, в частности, случаев заражения ком-
пьютерными вирусами,  возникает проблема  в проведении  обычных  след-
ственных действий, таких, как, например, обыск и сбор вещественных до-
казательств. Специальное программное обеспечение, необходимое для ана-
лиза программ  криминальной направленности,  в настоящее  время отсут-
ствует. Поэтому  представляется целесообразным проведение соответству-
ющих исследований.
   В настоящее  время компьютерные  вирусы являются  наиболее массовой
разновидностью компьютерной  преступности. На  конец 1991  г. выявлено
порядка тысячи вирусов и их штаммов, из которых более 200 обнаружено в
СНГ. В  ряде случаев разработчики вирусов (техно-крысы, как их принято
называть) предусматривают  средства противодействия  имеющимся антиви-
русным средствам  и изощренные  методы маскировки, с тем чтобы затруд-
нить его обнаружение и уничтожение. Некоторые техно-крысы предусматри-
вают в  вирусах компоненты,  уничтожающие или искажающие хранящуюся на
дисках информацию.  При этом,  как и  в случае таких преступлений, как
поджог, преступников,  как правило, не беспокоит совокупный ущерб, на-
несенный их  действиями. Все это свидетельствует о том, что компьютер-
ные вирусы  представляют значительную  и реальную  угрозу  целостности
хранящихся в  компьютере данных  и достоверности  проводимых операций.
Так или  иначе, компьютерные вирусы стали частью действительности, ок-
ружающей программистов,  да и не только программистов. Одним из свиде-
тельств этого является тот факт, что последние издания словаря Вебсте-
ра (Webster's  Ninth New  College Dictionary)  включает термин  "вирус
компьютерный".
   Начиная с 1988 г. во всем мире наблюдается активное развитие иссле-
дований, посвященных  проблеме защиты  компьютеров от  вирусов. Состо-
ялось несколько конференций по проблеме защиты от вирусов, в том числе
две на  Украине. Появились  периодические издания, в значительной мере
или полностью ориентированные на освещение проблемы компьютерных виру-
сов. Количество фирм и отдельных разработчиков, предлагающих различно-
го рода антивирусные продукты, исчисляется сотнями. Все это ставит во-
прос о формировании новой инженерной дисциплины - компьютерной вирусо-
логии, рассматриваемой  как совокупность  методов и  приемов  изучения
компьютерных вирусов и разработки эффективных средств их анализа и за-
щиты от  них. В  связи с  этим можно говорить о появлении области про-
граммирования, ориентированной на раскрытие и затруднение компьютерных
преступлений.    Эту    область    принято    называть    компьютерной
криминалистикой, и  в настоящее  время она развивается весьма быстрыми
темпами. Часть  компьютерной вирусологии,  направленная на анализ ком-
пьютерных вирусов с целью определения их характеристик и выработки оп-
тимальной методики защиты, называется компьютерной вирусологией.
   Цель и задачи работы. Целью диссертационной работы  является созда-
ние комплексной  методики защиты  от компьютерных  вирусов. В соответ-
ствии с поставленной целью основные задачи работы состоят в следующем.
   1. Разработать классификационную систему компьютерных вирусов.
   2. Создать основы классификации антивирусных программ и методов за-
щиты от вирусов.
   3. Выработать методику анализа компьютерных вирусов, снижающую тру-
доемкость создания средств защиты от них.
   4. Проанализировать инструментальные  средства вирусолога, разрабо-
тать методику анализа компьютерных вирусов, а также вопросы интеграции
разрозненных средств  анализа компьютерных  вирусов в инструментальный
комплекс.
   5. Получить теоретические  результаты относительно модулей, имеющих
произвольную структуру графа управления.
   Теоретическими основами  проведенных исследований  являются  теория
компиляции, теория  операционных систем и теория схем программ, обрат-
ная инженерия (reverce engineering) и компьютерная криминалистика.
   Основные результаты, вынесенные на защиту, заключаются в следующем:
   1) проведен анализ  наиболее распространенных в MS DOS компьютерных
вирусов и  разработана система их классификации. На базе указанной си-
стемы классификации созданы и опубликованы классификационные таблицы и
каталог описаний наиболее распространенных вирусов;
   2) проведен анализ средств защиты от вирусов и разработана комплек-
сная методика защиты, включающая три основных уровня: дисковый, файло-
вый и действий, выполняемых программой;
   3) разработана методика  анализа загрузочных модулей, ориентирован-
ная на  разбор криминальных программ, в особенности компьютерных виру-
сов. Методика  предусматривает два уровня анализа: микроуровень и мак-
роуровень.  Проведена   классификация  и  дан  обзор  инструментальных
средств каждого уровня. Предложены методика использования гипертексто-
вого представления  листинга анализируемого  модуля, а  также методика
использования для  анализа программ  аутлайнеров. Разработана методика
использования универсальной  CУБД в комплексе инструментальных средств
для анализа программного обеспечения;
   4) разработан новый  метод дизассемблирования,  получивший название
дизассемблирования методом логической раскраски;
   5) обобщены ранее  известные результаты  в области  теории обратной
трансляции. Предложено новое определение понятия "обратная программа".
Описана модификация метода щелевой оптимизации Маккимана для использо-
вания при конденсировании ассемблерного листинга. Разработан эффектив-
ный метод восстановления инфиксной записи из ПОЛИЗ;
   6) предложена модификация  последовательной декомпозиции  схем про-
грамм, названная  усиленной последовательной  декомпозицией и позволя-
ющая значительно увеличить степень декомпозиции схем программ, имеющих
"широкозахватные" обратные дуги. В качестве точек сочленения предложе-
но использовать стволовые узля деревьев пре(пост) доминирования. Пока-
зано, что  последовательность стволовых узлов дерева постдоминирования
является инверсией стволовых узлов дерева постдоминирования;
   7) разработан   метод   квантовой   декомпозиции   схем   программ,
базирующийся на деревьях пре- и постдоминирования и обладающий преиму-
ществами по сравнению с ранее известным методом декомпозицией программ
на гамаки.  Выявлен ряд свойств квантовой декомпозиции, являющейся но-
вым, перспективным  методом анализа  потока управления,  применимым, в
частности, в  оптимизирующих компиляторах  с языков  высокого  уровня.
Предложен синтаксис управляющих структур, основанных на квантах;
   8) разработана методика сопоставления программ на языке ассемблера,
позволяющая выявлять  участки, являющиеся плагиатом. Введены концепции
базы сопоставления, нормализации при сопоставлении, двухуровневого со-
поставления со  слабой эквивалентностью  и выделен  специальный случай
поиска объектов,  имеющих единичное  расстояние Ливенштейна в принятой
базе операций  сопоставления. Рассмотрены  алгоритмы  сопоставления  и
предложена модификация  алгоритма Хеккеля  для случая близких текстов,
основанная на  выделении опорных точек с помощью диграмм или триграмм.
Введен новый класс программ, названных нормализаторами и предназначен-
ных для использования в качестве препроцессоров в программах сопостав-
ления.
   Практическая ценность  работы. Разработанная  система классификации
компьютерных вирусов  получила значительное распространение и в насто-
ящее время  используется рядом разработчиков антивирусных средств. На-
чиная с сентября 1989 г. автор выпускает электронный бюллетень Софтпа-
норама, в котором оперативно публиковались результаты проводимых авто-
ром исследований,  включая аналитические  разборы новых вирусов, так и
соответствующие антивирусные  программы. В  настоящее время  бюллетень
Софтпанорама является  наиболее авторитетным  русскоязычным источником
информации по методам и средствам защиты от вирусов и используется бо-
лее чем в 200 организациях - подписчиках бюллетеня Софтпанорама.
   Разработанная комплексная методика защиты позволяет значительно со-
кратить вероятность  повреждения программ и файлов компьютерными виру-
сами. Внедрение  методики осуществлялось  как  через  упомянутый  выше
электронный бюллетень  Софтпанорама, так и через существующий с начала
1989 г. межреспубликанский ежемесячный семинар "Системное программиро-
вание", работа  которого в какой-то мере координирует усилия разработ-
чиков антивирусных средств на территории бывшего СССР.
   Апробация работы. Основные результаты диссертационной работы докла-
дывались и  обсуждались на I Всесоюзной конференции "Методы и средства
защиты от  вирусов в операционной системе MS DOS", республиканском се-
минаре по  методам и  средствам защиты  от вирусов (Киев, февраль 1991
г.), семинарах  по проблеме  "Кибернетика" Института  кибернетики  им.
В.М.Глушкова АН Украины.
   Публикации. Основные результаты диссертации опубликованы в двух мо-
нографиях, четырех брошюрах и 14 статьях общим объемом более 50 печат-
ных листов.
   Структура и объем работы. Диссертация состоит из введения, 10 глав,
заключения, списка  использованной литературы и трех приложений. Объем
работы -  320 стр.,  в том  числе 21 рисунок, список литературы из 370
названий.



                          СОДЕРЖАНИЕ РАБОТЫ

   Введение содержит  постановку задачи, обзор основных проблем, изло-
женных в диссертации, и обзор содержания глав.
   В первой  главе "Происхождение и историческое развитие компьютерных
вирусов" дан обзор истории возникновения и развития нового типа крими-
нальных программ  - компьютерных  вирусов. Рассмотрены  такие  предше-
ственники компьютерных  вирусов как  самовоспроизводящиеся  программы,
программы-вандалы, троянские программы. Описано появление компьютерных
вирусов для  IBM PC  - самого  массового компьютера в истории вычисли-
тельной  техники,   появление  вирусов   в  СССР   вирусов  и   первых
русскоязычных антивирусных программ. Приведены, представляющие истори-
ческий интерес  программа и заключительное обращение I Всесоюзной кон-
ференции "Методы  и средства защиты от компьютерных вирусов в операци-
онной системе MS DOS" (Киев, октябрь 1991 г.), а также результаты про-
веденного в рамках конференции второго Всесоюзного конкурса антивирус-
ных программ,  распространяемых бесплатно. Дана краткая характеристика
современной обстановки.
   Во второй  главе описаны  структура и функционирование компьютерных
вирусов. Описан  процесс заражения,  структура основных разновидностей
компьютерных вирусов:
   - файлового нерезидентного вируса;
   - файлового резидентного вируса;
   - бутового вируса;
   - файлово-бутового вируса;
   - файлово-дискового вируса.
   Описан жизненный  цикл компьютерных  вирусов,  даны  характеристики
среды его обитания, симптомов заражения, вызываемых вирусами эффектов.
Акцентируется внимание  на возможности  повторного заражения и эффекте
оседания, наблюдаемого в организациях, использующих большое количество
компьютеров.
   В третьей главе описана разработанная автором классификация компью-
терных вирусов.  В условиях быстро возрастающих количества и типов ви-
русов, необходима унификация терминологии, используемой при обмене ин-
формацией между  разработчиками и пользователями, а также между самими
разработчиками. До  последнего времени  практически каждый разработчик
антивирусных средств  создавал собственную  классификацию компьютерных
вирусов, которая обычно оказывалась мало согласованной с классификаци-
ей других разработчиков. Сейчас среди неформальных названий конкуриру-
ют названия,  используемые в  полидетекторе Scan фирмы "Макафи ассоши-
эйтс" (McAfee  Associates, США), названия, используемые в издаваемом в
Великобритании Virus  Bulletin и названия, используемые разработчиками
отдельных антивирусных  средств (американские  фирмы Semantec, Central
Point Software  и др.).  Очевидно, что  эти названия охватывают только
вирусы, детектируемые или пересылаемые в США, а набор вирусов, распро-
страняющихся в США, отличается от имеющего хождение на территории СНГ.
Кроме того в некоторых случаях присваиваемые названия крайне неудачны.
Поэтому наряду  с неформальной классификацией необходима и формальная,
позволяющая пользователям  самостоятельно определить классификационный
код обнаруженного  вируса. Автором  создана  формальная  классификация
компьютерных вирусов, значительно упрощающая их идентификацию рядовыми
пользователями. На  базе разработанной  классификации автором  созданы
классификационные таблицы,  приведенные в прил.1,2 диссертационной ра-
боты.
   В предлагаемой схеме каждому вирусу присваивается код, состоящий из
буквенного префикса,  количественной характеристики  и факультативного
буквенного суффикса.  Например, в коде RCE-1813c RСE - префикс, 1813 -
корень (характеристика),  а c  - суффикс.  Кроме того,  факультативное
расширение, записываемое в конце кода через точку, характеризует груп-
пу, к которой относится данный вирус. Например, RCE-1813.IER означает,
что данный вирус относится к иерусалимской группе.
   Главным требованием  к классификационному коду вируса является воз-
можность определения  большинства имеющихся  у него свойств на незара-
женном компьютере.  Выполнение каких-либо действий по исследованию ви-
руса на зараженном компьютере является наиболее распространенной и од-
новременно наиболее  грубой ошибкой, которую допускают неопытные поль-
зователи. Следует подчеркнуть, что любые действия на компьютере, зара-
женном неизвестным  вирусом, сопряжены  с определенным  риском вызвать
срабатывание троянской компоненты вируса.  Префикс характеризует место
расположения головы вируса и состоит из букв и цифр, начиная с пропис-
ной буквы.  Будем различать  следующие типы  вирусов  (рассматриваются
только реально существующие типы, а не все принципиально возможные):
   1) файловые (голова вируса располагается в COM-, EXE-файлах и овер-
леях - символы С, Е в префиксе. При этом дополнительную букву, отража-
ющую заражение  оверлеев, в  префикс вводить  не будем, чтобы избежать
его переусложнения, а вынесем в дескриптор);
   2) бутовые (голова вируса располагается в бут-секторе или блоке MBR
- символы B, D или M в префиксе);
   3) драйверные (голова вируса располагается в драйвере - символ S);
   4) дисково-каталоговые (голова  вируса вставлена в качестве первого
кластера в цепочке кластеров, относящихся к данному файлу - символ F);
   5) пакетные (голова вируса расположена в пакетном файле, т.е. пред-
ставляет собой строку или программу на языке управления заданиями опе-
рационной системы - символ J в префиксе);
   Как уже отмечалось, наряду с "чистыми" вирусами, использующими одну
среду, в  настоящее время  появились "гибридные" - сочетающие свойства
файловых и  бутовых вирусов.  В префикс кода таких вирусов будем вклю-
чать соответствующую букву префикса бутового вируса, например BRCE или
MRCE.
   Характеристика вируса  представляет собой  количественно измеряемое
свойство вируса,  допускающее простое  определение и  отличающееся для
большинства типов  вирусов. Например,  для файловых вирусов в качестве
характеристики можно использовать величину приращения длины файлов при
заражении ("инфективную длину"), хотя здесь имеются определенные труд-
ности.
   Суффикс используется, когда два разных вируса или два штамма одного
и того  же вируса  имеют одинаковый  префикс и  характеристику. В этом
случае, для  того чтобы получить уникальные коды, будем использовать в
качестве суффикса  латинскую букву.  Например, в коде RС-1704f буква f
означает "штамм-f".
   Конечно, предложенный код вируса не охватывает, да и не может охва-
тывать его основные свойства. В то же время систематизация свойств ви-
русов представляет  значительный интерес как для разработчиков антиви-
русных программ,  так и  для их пользователей, поскольку позволяет ин-
тегрировать разнородные  факты, относящиеся к поведению того или иного
вируса в  систему, тем  самым облегчая их запоминание и сопоставление.
Поэтому автором в качестве второго элемента классификации предлагается
так называемый дескриптор.
   Дескриптор представляет собой систематизацию основных характеристик
вируса в  закодированно виде. Кодировка состоит из групп символов, на-
чинающихся с  заглавной латинской  буквы, за  которой следуют строчные
латинские буквы  или цифры. При этом заглавная латинская буква опреде-
ляет вид характеристики, а следующие за ней строчные буквы или цифры -
значение характеристики для конкретного вируса. Например, в дескрипто-
ре "Хab  Yc Zdmt" имеются три свойства: Х со значением "аb", Y со зна-
чением "c" и Z со значением "dmt".
   Поскольку подавляющее большинство известных в настоящее время виру-
сов допускают  детектирование с  помощью контекстного поиска, одной из
важных задач  классификации является составление списка строк для кон-
текстного поиска  (сигнатур). Знание  сигнатур позволяет проверять по-
ступающее программное обеспечение на их наличие, тем самым существенно
повышая степень  защищенности ЭВМ.  Стандартизация  сигнатур  особенно
важна, когда  вирус имеет  много штаммов,  поскольку формальные схемы,
подобные описанным выше классификационному коду и дескриптору, облада-
ют тем  недостатком, что некоторые штаммы будут неразличимы в заданном
пространстве признаков.  В то  же время  сравнительно легко обеспечить
уникальность сигнатуры,  по крайней  мере для подавляющего большинства
вирусов, известных на территории бывшего СССР, хотя имеются вирусы, не
содержащие ни  одной постоянной сигнатуры, т.е. которые нельзя найти с
помощью контекстного поиска.
   Хотя в дальнейшем в качестве сигнатур используются только текстовые
строки, для них применимы и регулярные выражения. Последние существен-
но устойчивее  к некоторым  мутациям и,  кроме того, при меньшей длине
обеспечивают лучшее  качество распознавания (меньшее количество ложных
срабатываний). Все  это делает  их предпочтительнее  простых текстовых
строк, в особенности для вирусов с самомодифицирующимся инсталлятором.
   Очевидно, что  сигнатура, соответствующая  участку, содержащему ко-
манды, надежнее  сигнатуры участка,  содержащего данные, например тек-
стовые строки  (последние могут  быть модифицированы).  Поэтому  выбор
сигнатуры целесообразно  выполнять на основе анализа дизассемблирован-
ного кода  вируса. Длина сигнатуры не должна быть слишком большой, по-
скольку длинная  сигнатура чувствительна к мутациям. В то же время при
недостаточной длине  или выборе  нехарактерных участков кода сигнатура
будет вызывать  много ложных  срабатываний, что  весьма  нежелательно.
Правильная сигнатура не должна содержаться ни в одной из наиболее рас-
пространенных в MS DOS системных программ, включая, конечно, сами ком-
поненты MS  DOS. Таким образом, для выбора отвечающей указанным требо-
ваниям сигнатуры  необходим ряд  экспериментов, а сами сигнатуры могут
являться предметом сравнения и анализа.
   В настоящее время имеется ряд программ, обеспечивающих детектирова-
ние вирусов  путем поиска  в файлах соответствующих строк, и использу-
емые в  них сигнатуры  естественно "принять  за основу".  Значительную
ценность представляют  строки, используемые в известном зарубежном де-
текторе Scan  фирмы "Макафи  ассошиэйтс", поскольку новые версии этого
детектора появляются  регулярно и  охватывают практически  все вирусы,
обнаруживаемые за рубежом. Из других зарубежных детекторов следует от-
метить Virscan  фирмы IBM  и TNTVirus фирмы Carmel. Для определенности
назовем строку,  используемую Scan, М-сигнатурой, строку, используемую
Virscan, - I-сигнатурой, а строку, используемую TNTVirus, - С-сигнату-
рой. В  то же  время необходимо отметить, что сигнатуры для ряда виру-
сов, разработанных  в нашей  стране, в  существующих версиях этих про-
грамм отсутствуют,  а сигнатуры для болгарских вирусов часто неудачны.
В таких  случаях в данной работе используются выбранные автором сигна-
туры, которые обозначены буквой B (B-сигнатуры), или так называемые J-
сигнатуры. Последние  представляют собой  начальные байты  кода вируса
(т.е. первые  выполняемые команды  тела вируса).  Опыт показывает, что
они достаточно  специфичны и  в большинстве случаев позволяют отличать
один вирус  от другого.  При этом  для файловых  вирусов, дописывающих
свое тело  в конец  файла, будем считать, что J-сигнатура начинается с
байта, на  который передает управление команда JMP. Кроме того, в теле
некоторых вирусов  встречаются  характерные  текстовые  строки.  Такие
строки будем  называть T-сигнатурами  и использовать как вспомогатель-
ные.
   Файловые вирусы являются наиболее распространенным типом компьютер-
ных вирусов;  они составляют примерно 80% от общего числа вирусов, из-
вестных для  ПЭВМ, совместимых с IBM PC. Этот класс компьютерных виру-
сов обладает  весьма высокой инфицирующей способностью. При отсутствии
противодействия они  вызывают настоящие  эпидемии. Так, например, про-
изошло  с   вирусом  RCE-1813.IER,   известным  также  под  названиями
Jerusalem (Иерусалим), Black Friday (Черная пятница) и др. Классифика-
ционная  таблица   некоторых  из  файловых  вирусов,  обнаруженных  на
территории бывшего СССР, приведена в прил.1. диссертации.
   Можно говорить  о группах файловых вирусов и соответственно группо-
вых дескрипторах и групповых сигнатурах. Летом 1991 г. количество най-
денных на  Украине файловых вирусов превысило 150, поэтому запоминание
их классификационных кодов существенно облегчается, если они использу-
ются с расширением, указывающим, к какой группе принадлежит данный ви-
рус. Приведем несколько примеров групп компьютерных вирусов:
   1) венская (расширение  VEN). Первым представителем этой группы был
вирус С-648.VEN,  обнаруженный в Вене примерно в 1987 г. Его дизассем-
блированный код был опубликован и распространялся в виде файла на дис-
кетах с  соответствующими антивирусными  программами, поэтому  попытки
его модификации наиболее многочисленны;
   2) CASCADE (расширение  CAS). Первым представителем этой группы был
вирус RС-1701.CAS, обнаруженный примерно в середине 1988г.;
   3) иерусалимская (расширение IER). Первым представителем этой груп-
пы был вирус RCE-1813.IER, обнаруженный в Иерусалимском университете в
конце 1987 г.  Данная группа  имеет значительное  число штаммов (более
десятка);
   4) TP-вирусов(расширение TP). Большинство представителей этой груп-
пы имеют характерный "хвост" длиной 4 байта, в котором за двумя первы-
ми байтами  (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-0346.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 диссертационной  работы. Для  удобства дескрипторы
разбиты на  несколько составляющих, для которых используются следующие
обозначения:
  DM - главный дескриптор;
  DP - предикат заражения;
  DS - стратегия заражения;
  DR (только для  резидентных вирусов) - положение в оперативной памя-
   ти, реакция на теплую перезагрузку и размер занимаемой памяти;
  DH - перехватываемые прерывания (в 16-ричной системе счисления).
  В главном  дескрипторе (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-файлы начинаются
   с 16-ричного кода 4D5A ("MZ") или 5A4D ("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) - не обнаруживается  сторожами,  контролирующими  состояние
   векторов прерывания (обычно 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.
  Предикат заражения  (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, путем
   замены адреса перехода в этой команде.
  Стратегия заражения  (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.
  В дескрипторе положения вируса в оперативной памяти (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);
  <целое> - объем оперативной памяти, резервируемый вирусом.
  В дескрипторе перехватываемых прерываний DH перечислены перехватыва-
емые вирусом прерывания.
   Сигнатура файлового вируса. Как уже указывалось, для сигнатур целе-
сообразно использовать  16-ричные строки,  соответствующие характерным
последовательностям команд в теле вируса. Как уже отмечалось, T-сигна-
туры существуют не для всех файловых вирусов. Удобными сигнатурами для
большинства файловых  вирусов являются J-сигнатуры. Их можно очень бы-
стро определить с помощью любого отладчика (Debug, Turbo Debugger, AFD
и т.д.).  Пользователи, не  умеющие работать  с отладчиками, могут ис-
пользовать для  определения J-сигнатур программу "маскоискатель", вхо-
дящую в пакет VL.
   При наличии  сигнатуры проверку зараженности файлов вирусом данного
типа  удобно   выполнять,  используя  специальные  программы-детекторы
(Scan, TBScan, Virscan, VL и др.), позволяющие проводить поиск в ката-
логе или заданных его ветвях. Неплохим отечественным детектором, осно-
ванным на  контекстном поиске  заданных строк,  является программа VL,
однако пользоваться им можно только после перезагрузки с эталонной за-
клеенной дискеты.
   Следует отметить,  что контекстный поиск можно использовать для по-
иска не  только зараженных  вирусом программ,  но и программ и файлов,
уничтоженных или  поврежденных вирусом.  Например, вирус С-648.VEN при
определенных значениях  таймера вместо  заражения программы уничтожает
ее, записывая  в первые  5 байтов  строку, соответствующую переходу на
подпрограмму перезагрузки  BIOS. Для  поиска уничтоженных вирусом про-
грамм можно  использовать строку  "EAF0FF00F0". Аналогично  вирус RCE-
1800.DAV уничтожает  секторы на  винчестере, записывая  в первые байты
сообщение "Eddie  livesЄ somewhere  in time". По этому сообщению с по-
мощью Norton  Utilities или PC Tools можно выявить все пораженные сек-
торы и определить, к каким файлам они относятся.
   Как и  для файловых вирусов, будем выделять группы бутовых вирусов,
а для  каждого отдельного вируса - классификационный код, дескриптор и
сигнатуры. Классификационная таблица некоторых из бутовых вирусов, об-
наруженных на  территории бывшего СССР, приведена в прил.2 диссертаци-
онной работы.
   Группы бутовых  вирусов. Большинство  распространенны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-AltDel. Это  свойство мы  будем
обозначать буквой  W (survive Warm reboot) в префиксе. Все бутовые ви-
русы заражают  дискеты, однако  некоторые из них заражают винчестер, а
другие -  нет. Вирусы, инфицирующие только дискеты(Brain,Den Zuk), бу-
дем обозначать префиксом D.
   При заражении бут-сектора возможны два случая: заражение бутсектора
раздела С  винчестера (префикс  B) и заражение MBR - исполняемой части
таблицы разделов  (префикс M). Поскольку одним из наиболее распростра-
ненных случаев расположения хвоста бутового вируса является его распо-
ложение в псевдосбойных кластерах (что легко определить, просмотрев их
содержимое с помощью Norton Utilities).
   Количественная характеристика бутового вируса. Выбор количественной
характеристики для  бутовых вирусов имеет определенную специфику: если
для файловых вирусов наиболее характерным признаком заражения является
увеличение длины файла, то для бутовых вирусов аналогичную роль играет
уменьшение размеров  оперативной памяти, доступной для MS DOS. Однако,
как указывалось  выше, важным требованием к выбору свойств вируса, ис-
пользуемых для  классификации, является  возможность их определения на
незараженной машине.  Количество блоков памяти, занимаемых бутовым ви-
русом, этому  критерию не  отвечает, и от этой характеристики пришлось
отказаться. Поэтому  выбрана другая "доступная для обозрения" характе-
ристика бутового  вируса - содержимое зараженного бут-сектора. Точнее,
в качестве  характеристики принято  значение второго байта зараженного
бут-сектора, поскольку  его содержимое  различно для  известных автору
бутовых вирусов.  В то  же время содержимое этого байта записывается в
16-ричной системе  счисления, что  создает определенную  несогласован-
ность с  характеристикой файловых  вирусов, являющейся десятичным чис-
лом. Именно  поэтому в  предлагаемом варианте  классификационного кода
вируса прeфикс и характеристика разделяются знаком "-"(минус).
   Подчеркнем, что просматривать содержимое бут-сектора следует только
предварительно загрузившись с защищенной от записи резервной дискеты с
операционной системой и требуемыми антивирусными программами, посколь-
ку сама  операция просмотра на зараженной машине может либо перехваты-
ваться вирусом  для подстановки  "чистого" бут-сектора (так, например,
маскируется вирус  Dx3-E9.BRN (Brain)),  либо, что  еще хуже,  служить
триггером для  каких-то несанкционированных действий. Поэтому рекомен-
дуется использовать  так называемую "холодную" перезагрузку (с помощью
клавиши RESET,  если она  есть, или  путем выключения питания, если ее
нет), а  не "теплую"  перезагрузку (нажатием клавиш CTRL-ALT-DEL). Это
требование основано на том, что ряд бутовых вирусов перехватывает пре-
рывание от клавиатуры и при "теплой" перезагрузке сохраняет себя в па-
мяти, даже если перезагрузка идет с защищенной системной дискеты.
   Дескриптор бутового  вируса. Главный дескриптор бутового вируса от-
ражает  несколько  отличный  от  дескриптора  файлового  вируса  набор
свойств:
A - деструктивные действия, выполняемые вирусом:
  c (corrupt) - повреждает  или искажает  файлы данных  или  отдельные
   секторы, распределенные MS DOS;
  f (format) - выполняет форматирование дисков;
  i (ignore) - заменяет операции записи на операции чтения или верифи-
   кации;
  h (hang) - "подвешивает" систему;
  р (parallel port) - искажает  информацию, передаваемую  через парал-
   лельный порт;
  r (reboot) - вызывает внезапную перезагрузку системы;
  s (sector destruction) - уничтожает отдельные секторы диска;
  v (video effects) - искажает информацию в видеопамяти;
  w (write port) - пишет в порты;
  x - создает сбойные секторы;
  z (zip) - стирает информацию в файлах или на диске, а также в управ-
   ляющих таблицах, например в таблице FAT.
В - проявления вируса:
  a (abort) - появление  запроса Abort,  Retry, Ignore при попытке за-
   разить защищенную от записи дискету;
  m (music) - исполняет  мелодию или  имеет какой-либо другой звуковой
   эффект;
  v (video effects) - создает визуальный эффект(ы);
  t (text message) - выдает на экран текстовые сообщения.
L - длины головы и хвоста вируса (байт), разделенные знаком "+".
М - маскировка при наличии вируса в памяти:
  r (redirection) - при  попытке просмотреть голову на диске резидент-
   ный вирус  перехватывает соответствующую  операцию чтения и перена-
   правляет ее на сектор, где хранится "оригинал" бут-сектора или MBR;
  c - тело вируса закодировано;
  w - блокирование записи в секторы, занимаемые вирусом;
  n - маскировка отсутствует.
N - номер первого несовпадающего байта при сопоставлении зараженного и
нормального секторов начальной загрузки.
S - стратегия заражения:
  Метод выбора жертвы:
  r (read) - при любом обращении к дискете;
  в (boot) - при мягкой перезагрузке.
  Место хранения  "хвоста" вируса  и  оригинальной  копии  бут-сектора
   (указывается через  черточку в  порядке "расположение  на дискете -
   "расположение на винчестере"; при совпадении адресов для винчестера
   и дискеты адрес указывается один раз):
  xN - в N кластерах, помеченных вирусом как дефектные;
  tl - на последней дорожке дискеты или винчестера;
  t<цифра> - на дополнительной дорожке, например t40;
  N.N.N - по  абсолютному адресу  (цилиндр.головка.сектор) на  дискете
   или винчестере.
R (resident) - положение в оперативной памяти, реакция на теплую пере-
загрузку и размер занимаемой памяти:
  u (upper) - в  старших адресах  памяти с соответствующим уменьшением
   общего объема доступной системе оперативной памяти;
  w (survive Warm reboot) - "выживание"  при теплой перезагрузке (воз-
   можно, в основном, для вирусов, инсталлирующихся по типу u);
  <целое> - объем оперативной памяти, резервируемый вирусом.
Z - побочные проявления действий вируса:
  e - появление  ошибок типа  деления на  нуль, переполнения  стека  и
   т.п.;
  f (FAT) - искажения FAT;
  h (hang) - зависания системы;
  v (video) - мерцание монитора или выдача на экран каких-то случайных
   последовательностей символов.
   Сигнатура бутового вируса. Для бутовых вирусов M-, I- и B-сигнатуры
будут использоваться  аналогично тому, как это было для файловых виру-
сов, а  J-сигнатура - в несколько измененном виде. В отличие от J-сиг-
натуры для файловых вирусов, в которой байты, соответствовавшие коман-
де перехода,  не учитывались, здесь они будут учитываться. Это связано
с тем,  что первой командой бут-сектора всегда является команда обхода
таблицы параметров  диска, размер которой в отличие от размера заража-
емого файла не меняется. Поэтому для бутовых вирусов мы преимуществен-
но будем  использовать J-сигнатуру,  состоящую из  первых трех  байтов
бут-сектора, и лишь при необходимости дополнять ее, продолжая с байта,
на который выполняется команда перехода.
   Для незараженного  бут-сектора MS  DOS версии 3.3 J-сигнатура равна
EB3490h (объектный  код двухбайтовой  команды JMP, служащий для обхода
таблицы параметров и команды NOP). Ценность этой эталонной J-сигнатуры
состоит в  том, что она сравнительно легко запоминается. Поэтому несо-
впадение первых  трех байтов  анализируемого бут-сектора  с  указанной
эталонной J-сигнатурой свидетельствует о зараженности бут-сектора (от-
метим, что совпадение еще ни о чем не говорит).
   В главах  4-7 дан краткий каталог некоторых наиболее распространен-
ных компьютерных  вирусов. При  описании каждого  вируса  используется
разработанная автором  достаточно гибкая схема, позволяющая достаточно
полно охватывать весь спектр необходимой для борьбы с ним информации.
   В 8-й главе приведены классификация антивирусных программ и предла-
гаемая автором  комплексная методика  защиты от  компьютерных вирусов.
Последняя предполагает  сочетание входного  контроля поступающего про-
граммного обеcпечения  с использованием различного рода средств защиты
(ревизоров, детекторов,  фагов) и систематическим архивированием. Рас-
сматриваются три основных уровня защиты:
   - уровень логического диска;
   - уровень файла;
   - уровень выполняемых программой действий.
   Следует подчеркнуть,  что без  отлаженной системы архивирования ин-
формации любая  защита от  вирусов является иллюзорной. В связи с воз-
можностью повреждения или даже уничтожения вирусами информации на вин-
честере, обсуждается методика восстановления данных.
   В 9-й главе "Элементы компьютерной криминалистики " рассмотрены во-
просы анализа  программ криминальной  направленности. Дан исторический
обзор дизассемблеров и динамических анализаторов. Также описаны  такие
инструменты как  сопоставители, абстракторы,  документаторы,  обратные
трансляторы и  гипертекстовые системы.  Далее в  главе рассматриваются
инструментальные средства  и технология  дешифровки компьютерных виру-
сов. Выделяется  два уровня анализа: микроуровень и макроуровень и об-
суждаются инструментальные  средства каждого уровня. Приводится разра-
ботанный автором подход, в котором данные динамического анализа комби-
нируются с  данными статического  анализа на  основе специальной  базы
данных.
   Формулируется проблема  конденсирования листинга.  Применительно  к
проблеме анализа резидентных вирусов рассмотрены проблема зондирования
оперативной памяти и методы "раздевания" вирусов, использующих различ-
ные меры противодействия анализу. Обсуждается использование  программ,
специально рассчитанных  на заражение  вирусом(дрозофил) и связанные с
их сопоставлением  проблемы. Подчеркивается роль сопоставления методом
1:1 снимков памяти при анализе вирусов. Приводятся краткие сведения об
имеющихся инструментальных средствах для выполнения этой операции.
   Далее рассматриваются методы и инструментальные средства макроуров-
ня. Приводится методика анализа потока управления. Подчеркивается важ-
ность аннотирования  процедур. Обсуждаются  определение типов  данных,
слайсинг и  абстрагирование структур данных. Отмечается роль выявления
нелокальных планов для понимания программы и связанные с этим подходом
операции преобразования текста (слайсинг, гипертекст). В связи с боль-
шими объемами  документации обсуждается проблема представления листин-
гов в аутлайнере, рассматриваемом в качестве нового инструмента анали-
за и  исследования программ.  Выделяется два  основных подхода к пред-
ставлению данных  о программе:  энциклопедический и  картографический.
Обсуждаются имеющиеся инструментальные средства и возможность комбини-
рованного представления  результатов анализа, а также вопросы визуали-
зации базы данных и ведения словарей-справочников данных анализируемой
программы.
   В 10-й главе предпринята попытка изложить некоторые элементы теории
компьютерной криминалистики, прежде всего те из них, которые представ-
ляют интерес, как теоретическая база методов изучения компьютерных ви-
русов и других криминальных программ. Рассмотрен новый метод дизассем-
блирования, получивший название "дизассемблирования методом логической
раскраски" и позволяющий выполнять дизассемблирование на основе комби-
нирования результатов исследования программы различными методами. Рас-
смотрена проблема  обратной трансляции. Для произвольной программы (P)
дано новое  определение понятия "обратная программа"(Q). При этом вме-
сто тождества  P(Q(X))=Q(P(X)), как это было предложено Д.Грисом в мо-
нографии  "Наука   программирования"  (1988),  использовано  тождество
P(Q(P(X)))=P(X). Последнее тождество можно интерпретировать как требо-
вание совпадения  результатов применения программы Р к исходным и вос-
становленным данным.  Это определение  более точно  отражает специфику
реально существующих  обратных программ.  В частности, если программу,
восстановленную дизассемблером, повторно транслировать ассемблером, то
в результате будет получен объектный модуль, идентичный исходному.
   Понятие обратной  трансляции введено  на базе  понятия уровня языка
программирования. Возможны  три случая  соотношения уровней  исходного
(Level(S)) и объектного (Level(O)) языков:
   1. Level(S) >  Level(O). Наиболее  хорошо изученный вид трансляции,
включающий макрогенерацию,  компиляцию языков высокого уровня и ассем-
блирование.
   2. Level(S) =  Level(O). Менее изученный, но достаточно распростра-
ненный вид трансляции, включающий перевод программы с одного языка вы-
сокого уровня  на другой,  с одного диалекта на другой или оптимизиру-
ющую трансляцию  на тот  же язык. Этот вид трансляции называют перено-
сом, горизонтальной трансляцией, конвертированием или трансформацией.
   3. Level(S) <  Level(O). Наименее  изученный вид  трансляции, един-
ственными распространенными  представителями которого  являются  диза-
ссемблеры. Этот  вид трансляции  назовем обратной трансляцией (детран-
сляцией), а  соответствующий транслятор  - обратным  транслятором  или
детранслятором.
   Подчеркивается, что  данная классификация  условна, так как понятие
уровня языка  трудно определить  математически. Кроме  того, равенство
уровней не  всегда имеет место даже при трансляции в тот же самый язык
(например, при оптимизирующей трансляции с Фортрана на Фортран уровень
обычно падает),  а для  двух разных языков соотношение уровней зависит
от типа  эталонной программы  и меняется  для разных конструкций сопо-
ставляемых языков.  Тем не менее важность и малая изученность третьего
типа трансляции неоспорима.
   Далее в  главе рассматривается  случай, когда  исходным языком  для
детрансляции является  язык ассемблера, а объектным языком - некоторый
компилируемый язык высокого уровня (Фортран, Паскаль, Си и т.д.). Этот
частный случай обратной трансляции назван декомпиляцией.
   Как и  в случае компиляции, процесс декомпиляции предполагает реше-
ние ряда  задач, которые можно решать и изучать практически независимо
друг от друга. Выделены 4 основные задачи декомпиляции:
   - выявление имеющихся управляющих конструкций;
   - реконструкция арифметических выражений;
   - восстановление типов данных;
   - восстановление структур данных.
   Каждая из  этих задач рассмотрена отдельно. Наиболее интересные ре-
зультаты получены  при решении  задачи декомпиляции  управляющих  кон-
струкций. Автором  предложен новый  расширяемый базис управляющих кон-
струкций.   В отличие  от статических базисов, хорошо изученных в кон-
тексте проблем  структурного программирования  (в частности  базис IF-
THEN-ELSE, DO-WHILE,  DO-UNTIL), расширяемый  базис фиксирует не пере-
чень управляющих  конструкций, а  их структурные свойства. Такого типа
базисы еще  сравнительно мало  исследованы и немногочисленны. К ним, в
частности, можно  отнести интервалы  и сильно связанные зоны, хотя они
никогда не  применялись в качестве синтаксически оформленных конструк-
ций в  языках программирования  высокого уровня.  Автором  исследуется
расширяемый базис, в котором в качестве базовых элементов используются
так называемые  кванты - обобщенные конструкции с одним входом и одним
выходом, не  допускающие разложения на более простые. Кванты классифи-
цируются по  количеству базисных блоков (порядку кванта). Предлагается
использовать кванты  как управляющие  структуры специальных  языков, в
частности, машинно-ориентированных  языков типа PL/x. Обсуждаются про-
блемы создания синтаксиса управляющих структур, основанных на квантах.
   Декомпозиция граф-схемы программы на кванты позволяет разбить зада-
чу декомпиляции управляющих конструкций на две подзадачи:
   1. Выделение квантов.
   2. Классификация полученных квантов.
   Такой подход  представляет интерес  как при декомпиляции, так и при
создании оптимизирующих  компиляторов. В  частности, возможно создание
языково-независимого оптимизатора типа "ассемблер в ассемблер".
   Приведен разработанный  автором метод  квантовой декомпозиции  схем
программ, основанный  на использовании деревьев пре- и постдоминирова-
ния, обладающий  преимуществами по сравнению с известной декомпозицией
программ на  гамаки. Выявлен ряд свойств квантовой декомпозиции, явля-
ющейся новым,  перспективным методом анализа потока управления, приме-
нимым, в  частности, в  оптимизирующих компиляторах  с языков высокого
уровня.
   Кванты представляют собой новый класс математических объектов, изу-
чение которых  представляет значительный  теоретический и практический
интерес. Прежде  всего кванты  обладают рядом свойств, сближающих их с
простыми числами.  В частности, квантовую декомпозицию схемы программы
можно рассматривать как своего рода аналог разложения числа на простые
множители. Интересной  нерешенной теоретической задачей является вывод
зависимости количества  квантов от  степени. Автором  исследованы лишь
кванты второй  и третьей степени (существует 3 кванта второй степени и
17 квантов  третьей степени).  Кроме того, кванты имеют ряд интересных
структурных свойств, заслуживающих дополнительного изучения.
   В таблице  приведен каталог  квантов порядка 2 и 3. Подобно простым
числам, количество квантов составляет лишь небольшой процент от общего
количества схем  программ с  данным количеством базисных блоков. Кроме
того, некоторые  из квантов,  приведенных в таблице представляют собой
распространенные, хотя и "неклассические" управляющие конструкции, на-
пример цикл  WHILE-UNTIL (∙ 3),  COR -  "короткозамкнутое ИЛИ" (∙ 10),
LSEARCH - "линейный поиск"(∙ 12), BSEARCH - "бинарный поиск" (∙  15).
   Далее в  главе рассмотрены поход к детрансляции, основанный на обо-
бщении алгоритмов  типа свертки,  и вопросы применимости продукционных
языков, в  частности языка  Флойда-Эванса для  решения задач  обратной
трансляции. Приведен  эффективный алгоритм декомпиляции арифметических
выражений по обратной польской записи.
   Обсуждается роль  сопоставления текстов  в процессе  анализа крими-
нального программного обеспечения с целью выявления плагиата (участков
ранее разработанных  вирусов). Введен  новый тип  системных программ -
программы-нормализаторы и  предложено их использование при анализе ас-
семблерных программ.  Подробно обсуждается  возможность двухуровневого
сопоставления с нормализацией на каждом уровне. Выделено несколько ме-
тодов нормализации,  которые существенно  расширяют возможности  сопо-
ставления ассемблерных программ. Дана классификация методов нормализа-
ции и  подробно рассмотрен  класс лексических  методов нормализации, в
которых в качестве нормализующего звена выступает конечный автомат ти-
па применяемых  для лексического  анализа. Рассмотрены некоторые алго-
ритмы сопоставления.  Предложена модификация алгоритма Хеккеля, позво-
ляющая применять  его для  близких текстов  и основанная  на выявлении
опорных точек с помощью диграмм и триграмм.
   В заключении сформулированы основные результаты диссертационной ра-
боты, вынесенные на защиту.

   Основные положения диссертации опубликованы в следующих работах:
   1. Безруков Н.Н.  Neatpl -  cредство облегчения отладки программ на
языке ПЛ-1 // Программирование.- 1978.- ∙ 5.- С.87-93.
   2. Бeзpyкoв H.H.  Moдификaция языкa Флoйдa-Эвaнca // Там жe.- 1979.
- ∙ 4.- С.53-64.
   3. Бeзpyкoв H.H.  Teкcтoвый peдaктop c paзвитoй cиcтeмoй кoмaнд для
OC EC // Там жe.- 1981. - ∙ 3.- C.39-48.
   4. Безруков Н.Н. Синтаксически-ориентированный метод программирова-
ния ввода  и контроля  исходных данных // Там жe.- 1983. - ∙ 4.- С.38-
50.
   5. Безруков Н.Н. Инструментальный комплекс для программистов, рабо-
тающих на  языке ПЛ-1  // Системное и теоретическое программирование.-
Кишинев: Изд-во Кишинев. ун-та, 1983.- С.54-56.
   6. Безруков Н.Н.  Простой метод организации реляционной базы данных
о состоянии  разработки больших программных комплексов // Программиро-
вание.- 1985. - ∙ 2.- С.44-53.
   7. Безруков Н.Н. Инструментальная поддержка разработки программного
обеспечения АС  УВД //  Прикладные вопросы  надежности программного  и
технического обеспечения  вычислительных систем.-  Киев: КИИГА, 1985.-
С.23-30.
   8. Безруков Н.Н.  Повышение качества дизассемблирования путем орга-
низации дизассемблера  как экспертной  системы // Вопросы оценки каче-
ства функционирования  программного обеспечения  вычислительных систем
реального времени.- Там жe, 1986.- С.16-24.
   9. Безруков Н.Н.  Некоторые вопросы  теории обратной  трансляции //
Вопросы повышения  качества функционирования  программного обеспечения
вычислительных систем реального времени.- Там жe, 1987.- С.10-21.
   10. Безруков Н.Н. Эвристические методы повышения качества дизассем-
блирования      //       Программирование.       -       1988.       -
∙ 4.- С.81-93.
   11. Безруков Н.Н. Квантовая декомпозиция схемы программы на простые
гамаки //  Эксплуатация программного обеспечения вычислительных систем
реального времени, построенных на базе микро и мини ЭВМ.- Киев: КИИГА,
1988.- С. 3-17.
   12. Безруков Н.Н. Классификация компьютерных вирусов и средства за-
щиты от  них //  Эксплуатация программного  обеспечения вычислительных
систем реального  времени, построенных на базе микро- и мини-ЭВМ.- Там
жe, 1989.- С.3-21.
   13. Безруков Н.Н.  Классификация компьютерных  вирусов в  МС ДОС //
Программирование.- 1990.- ∙ 3.- С.3-22.
   14. Безруков Н.Н.  Классификация вирусов: попытка стандартизации //
Интеркомпьютер.- 1990.- ∙ 2.- С.37-39; ∙ 3.- С.38-47.
   15. Безруков Н.Н. Классификация компьютерных вирусов MS DOS и мето-
ды защиты  от них.-  М.: СП "Информэйшн Компьютер Энтерпрайз", 1990. -
48 с.
   16. Безруков Н.Н.,  Лященко Ю.П.  Информационные системы для сопро-
вождения и  разработки программного  обеспечения.-  М.:  ВЦ  АН  СССР,
1990.- 69 с.
   17. Безруков Н.Н.  Компьютерная вирусология.-  Киев: Укра. сов. эн-
цик., 1991. - 416 с.
   18. Безруков Н.Н. Технология защиты программ и данных от компьютер-
ных вирусов. - Киев: Об-во "Знание" УССР, 1991. - 64 с.
   19. Безруков Н.Н.  Технология применения  средств защиты от вирусов
// В  кн.: Файл заражен! - М.: Знание, 1991, - С.3-36.-(Новое в жизни,
науке, технике. Сер. "Вычислительная техника и ее применение"; ∙ 8).
   20. Безруков Н.Н. Компьютерные вирусы.- М.: Наука, 1991.- 159 с.
