     О НЕКОТОРЫХ НАПРАВЛЕНИЯХ РАЗВИТИЯ ВРЕДОНОСНОГО ПРОГРАММНОГО
     ОБЕСПЕЧЕНИЯ

                         Гайкович В.Ю.


     Защита процесса  обработки  информации,  осуществляемого  с
помощью компьютеров, была всегда достаточно актуальной. В  связи
с широкомасштабным внедрением в практику персональных  ЭВМ,  ло-
кальных и глобальных сетей связи актуальность этой проблемы  еще
более увеличилась. По данным журнала "Datamation" только в  1988
году зафиксировано (!) более 400 вирусных атак, в результате че-
го было выведено из строя более 90000 компьютеров [1].
     Обработка информации в компьютере осуществляется при помощи
программного обеспечения (ПО). В связи с этим  основным  каналом
проникновения элементов, нарушающих процесс обработки информации
в компьютере, являются программы. В дальнейшем, в отличии от ПО,
обеспечивающего обработку информации  ,  программы  такого  рода
будем называть вредоносным программным обеспечением  (ВПО).  Под
ВПО будем понимать такие программы, которые прямо  или  косвенно
дезорганизуют  процесс  обработки  информации  или  способствуют
утечке или искажению информации. Таким  образом  выделяется  три
направления воздействия ВПО : дезорганизация процесса  обработки
информации (управления), искажение информации (в оперативной или
долговременной памяти) и утечка информации. Конечным итогом воз-
действия компонент ВПО, относящихся к первому направлению, явля-
ется "зависание" или перезагрузка компьютера, то есть  невозмоз-
можность дальнейшей обработки  информации,  появление  помех  на
устройствах отображения, вплоть до невозможности ввода команд  и
данных с их помощьюи и др. Конечным  итогом  воздействия  компо-
нент, относящихся ко второму  направлению,  является  явное  или
скрытое искажение данных в файлах. И, наконец, с помощью  компо-
нент, относящихся к третьему направлению ,  производится  несан-
кционированный вывод данных (паролей пользователей сети или сис-
темы, таблиц разграничения доступа и т.д.).
     В настоящее время разработано достаточно большое количество
конкретных программ ВПО. В связи с этим целесообразно произвести
классификацию компонент ВПО , выявить общие и специфические осо-
бенности с тем, чтобы определить основные направления и  тенден-
ции их развития. Это позволит определить основные направления  и
требования к организации защиты программного обеспечения  выпол-
няющего обработку информации.
     К ВПО будем относить "троянского коня" (trojan horse), ком-
пьютерный вирус (computer viruse) и компьютерного червя (worm).
     "Троянский конь" - это программа, маскирующаяся под  полез-
ную, но выполняющая разрушительную функцию. Эти программы  обла-
дают одной особенностью - они распространяются опосредованно, то
есть через человека. Поэтому в настоящее время они  ,  вероятнее
всего, будут использоваться в качестве "носителей" вирусов.
     Структурa "троянского коня" приведена на рис.1.  Компонента
прикрытия необходима для того, чтобы невозможно было сразу обна-
ружить истинное назначение программы.  Деструктивная  компонента
предназначена для внесения изменений (чаще всего необратимых)  в
ОС, файловую систему и т.п.  Компонента  распространения  вируса
предназначена для скрытия факта проникновения вируса в  систему.
Она может содержать вирус в виде  ,  который  не  обнаруживается
антивирусными программами. На рисунке  она  показана  пунктиром,
так как в настоящее время отсутствует.
     В литературе существует много различных определений  вируса
[1,2,3,4].  Наиболее  полное,на мой взгляд ,  приведено  в  [1].
Компьютерный вирус - это самораспространяющиеся программы, кото-
рые прикрепляют себя к прикладным программам или другим выполня-
емым компонентам системы и дезорганизуют работу  компьютера  или
сети ЭВМ.
     Структурa вируса приведена на рис.2. Каждая из составляющих
вируса имеет свои строго определенные  функции  .  Деструктивная
компонента вируса аналогична по выполняемым функциям деструктив-
ной компоненте "троянского  коня".  Деструктивная  компонента  у
вирусов может и не уничтожать или портить  данные  на  диске,  а
просто досаждать пользователю (например как в вирусах  "Ball"  и
"Falling Letters").
     Наличие компоненты размножения отличает вирус от "троянско-
го коня". В ней можно выделить две основные составляющие :  ком-
поненту внедрения на магнитный диск  и  компоненту  внедрения  в
оперативную память компьютера. Первая отвечает  за  "заражение",
то есть за присоединение вируса к выполняемым программам, а вто-
рая - за "выделение" вируса из зараженной программы и размещение
его в компьютера. Последняя компонента может отсутсвовать (  ви-
рус DOS-62 ) .
     Компонента изменения текста вируса предназначена для  дина-
мической модификации текста вируса с целью затруднить его  обна-
ружение  антивирусными  программами. В существующих вирусах она,
зачастую, отсутствует (кроме "Falling Letters").
     Из определения вируса вытекают следующие ,свойственные ему,
ограничения [1]:
     программа - жертва должна быть выполняемым сегментом опера-
ционной системы ;
     заражение системы как на диске, так и в памяти  , оставляют
следы ;
     при заражении другой программы существует такая часть виру-
са, которая не изменяется от заражения к заражению .
     Это наиболее общие ограничения , свойственные вирусу, кото-
рые не зависят как от типа ЭВМ и ОС , на которой вирус  реализо-
ван , так и от конкретного типа вируса. На основе этих ограниче-
ний строятся антивирусные программы .
     Особо стоит выделить такого представителя ВПО  как  компью-
терные черви. Компьютерный червь - это программа как часть прог-
раммного обеспечения использует имеющиеся в системе ресурсы  для
своих целей.
     Червь не является вирусом, так  как  не  заражает  программ
своей копией [2]. По сравнению со своими собратьями это наиболее
интеллектуальный представитель  ВПО. Его возможное  назначение -
программный шпионаж . В частности, в сетях ЭВМ или во многополь-
зовательских системах он может быть применен  для  распознавания
паролей других пользователей сети или системы.
     Структурa червя приведена на рис.3. Компонента  размножения
у червя имеет иной характер,чем у вируса . Существенным отличием
червя от других представителей ВПО является  наличие  компоненты
управления ресурсами. Она предназначена для захвата  неиспользу-
емых ресурсов в компьютере или компьютерной сети и использовани-
ем их для своих целей.Возможно самоизменение  текста  червя  для
предотвращения обнаружения. Компонента разведки является  доста-
точно сложной и реализует нетривиальный способ  вскрытия  защиты
от несанкционированного доступа. Компонента доставки  информации
предназначена для доставки "хозяину" червя необходимой  информа-
ции. Отметим, что у червей как таковая отсутствует деструктивная
компонента. Но на мой взгляд черви должны относиться к ВПО,  так
как они могут нанести большой  косвенный  ущерб.  Следует  также
отметить, что в настоящее время отсутствуют данные о проникнове-
нии червя, поэтому они плохо изучены.
     Предметный анализ конкретных разработок ВПО позволяет  сде-
лать в предварительном плане следующие общие выводы об его  эво-
люции  :
     1. Развитие ВПО осуществляется одновременно в двух  направ-
лениях : по вертикали (от троянских коней к компьютерным  чер-
вям) и по горизонтали (внутри каждого вида).
     2. При развитии ВПО по вертикали снижается прямой, но  воз-
растает косвенный ущерб , наносимый ВПО.
     3. При развитии по горизонтали у "троянских коней" наблюда-
ется перепрофилирование их в носители вирусов, у вирусов - появ-
ление новых составляющих, затрудняющих борьбу с ними, у червей -
можно предположит усиление компоненты разведки.
     Понятно, что эволюция ВПО будет определяться не только  но-
выми возможностями операционных систем и технических средств, но
изобретательностью программистов, их уровнем знания слабых  мест
конкретной сети или системы, а также возможностями системы защи-
ты .
     Для того, чтобы более точно определить  возможности  защиты
от ВПО , подробно рассмотрим способы построения этих программ  .
Анализ проведем для вирусов, так  как  ,во-первых,  в  настоящее
время  вирусы  являются  наиболее  разрушительными  программами,
и,во-вторых, методы ,предотвращающие проявления  вирусов,  могут
быть использованы и для защиты от других видов ВПО.
     При дальнейшем изложении материала используются сведения  о
вирусах для ПК , совместимых с IBM PC, работающих в среде MS-DOS
(PC-DOS) старше 3.0 .  Под  системным  программным  обеспечением
(СПО) в дальнейшем будем понимать базовую  систему  ввода-вывода
(БСВВ), загружаемую с диска (модуль IBMBIO.COM (IO.SYS)) , прог-
рамму обработки прерывания  (  модуль  IBMDOS.COM(MSDOS.COM))  ,
сектор загрузки диска и  драйверы  устройств  .  Под  прикладным
программным обеспечением (ППО) будем понимать остальные програм-
мы, включая командный процессор COMMAND.COM.
     Проведем классификацию компьютерных вирусов с целью опреде-
ления тенденций и перспектив их  развития,  для  чего  в  основу
классификации положим способы их построения и функционирования.
     Для классификации вирусов выделим следующие признаки : спо-
соб прикрепления вируса к заражаемой программе, способ  размеще-
ния вируса в оперативной памяти, способ получения управления для
реализации своих функций и способ нанесения ущерба.

     Способы прикрепления вируса к заражаемым программам

     Вирусы могут заражать как СПО , так и ППО. Реально возможны
три способа прикрепления вируса к заражаемым  программам:  внеш-
нее, внутреннее и смешанное.
     Внешнее прикрепление - это такое  прикрепление,при  котором
вирус,   рассматривая   заражаемую   программу   как   неделимое
целое,записывает себя либо в конец нее (тогда необходимо  перес-
тавить  на  себя  указатели  для  того  чтобы  первым   получить
управление),либо в начало программы,а испорченную область  пред-
варительно сохраняет в той же программе.  Естественно,  что  при
таком прикреплении увеличивается размер заражаемой программы. Но
это наиболее просто осуществимый способ размножения вируса.  По-
давляющее большинство вирусов на сегодняшний момент прикреплятся
именно таким способом ( например "Yankee Doodle","Dark  Avenger"
и многие другие ). Этот способ прикрепления приведен на рис. 4 (
вирус дописывает себя в конец программы).
     Внутреннее прикрепление - это такое прикрепление , при  ко-
тором вирус ,располагая информацией о структуре программы, поме-
щает себя ее в свободные области памяти , либо заменяет какую-то
ее часть без существенного изменения функций, выполняемых  прог-
раммой. Это наиболее сложный вид прикрепления , но в то же время
он и наиболее эффективный, так как не увеличивается размер зара-
жаемой программы и в отдельных случаях может удаться  "подгонка"
контрольной суммы к эталонному значению. Этот способ  прикрепле-
ния приведен на рис. 5. (в COM-файле вирус размещается в области
статических данных и получает управление перед выполнением прог-
раммы, а в EXE-файле вирус располагается между заголовком и тек-
стом программы).
     При смешанном прикреплении вирус  может  располагаться  как
полностью в программе, так и частично в программе ,  а  частично
вне ее. При этом испорченная часть программы либо сохраняется  в
неиспользуемых секторах диска, либо не сохраняется вовсе.  Ярким
примером вируса, использующего такой способ прикрепления являет-
ся вирус "Lehigh" [1,3]. Этот способ  прикрепления  приведен  на
рис. 6 (в COM-файле вирус размещается в области статических дан-
ных ,получает управление перед выполнением программы и  частично
выходит за пределы программы).
     Для прикрепления к СПО вероятнее всего вирус будет  исполь-
зовать последние два способа, так как СПО имеет  строго  опреде-
ленную структуру и достаточное количество свободной памяти (осо-
бенно модуль IBMBIO.COM (IO.SYS)). К тому же первые примеры  уже
существуют - это вирусы, получающие управление при  перезагрузке
системы ( "Ball","Pakistani Brain").
     Для прикрепления к ППО  ,наоборот,  вероятнее  всего  будут
использоваться первый и третий способы. Но,однако, возможно так-
же использование и второго способа , так как исполняемые модули,
генерируемые компиляторами всех языков  высокого  уровня,  имеют
фиксированную структуру для одной и той же модели памяти. К тому
же принципиально возможно внедрение вируса в .LIB-файлы не прос-
тым добавлением еще одного раздела, а заменой определенного раз-
дела библиотеки на текст вируса. Также возможно размещение виру-
са в статических областях памяти прикладных программ  независимо
от того, на каком языке программирования они были  написаны.  Из
этого следует принципиальная возможность создания распределенно-
го вируса, то есть вируса который распределен по всей  программе
при хранении и собирается в единое целое при выделении из  прик-
ладной программы.
     Выше были рассмотрены способы логического хранения  вирусов
на диске. Но вирусы могут находится и не в файлах или в  секторе
загрузки. Они могут размещаться также  и  в  свободных  секторах
диска, помеченных как сбойные. Именно это обстоятельствоб а так-
же многообразие методов хранения вирусов  на  диске  существенно
затруднит их обнаружение и,тем более,  их  удаление  при  помощи
антивирусных программ.

         Способы размещения вирусов в памяти компьютера

     В оперативной памяти вирусы могут  располагаться  следующим
образом : в областях ОС, как дополнение к ОС, в конце поля  опе-
ративной памяти, как дополнение  к  резидентной  программе,  как
отдельная резидентная программа.
     Для своих целей операционная система резервирует достаточно
большое количество оперативной памяти (в зависимости от конфигу-
рации до 40 Кбайт) . Поэтому весьма вероятно, что  новые  вирусы
могут находится и там. Вирусы ,находящиеся в системной  области,
найти достаточно трудно -  ведь  производители  ОС  постарались,
чтобы структуру этих областей знало как можно меньшее количество
людей.
     Вирус может также прикреплять себя к  ОС  и  в  оперативной
памяти. Это становится возможным только тогда, когда вирус рас-
положен в одном из загружаемых драйверов устройств или  в  одном
из модулей ОС.
     Часто вирусы располагаются в конце поля оперативной памяти,
модифицируя количество логически доступной памяти. Это  делается
для того, чтобы загружаемые программы не могли  затереть  вирус.
Данный прием используется ,в частности, вирусами "Ball" и  "Yan-
kee Doodle". Этот способ не очень скрытен, так как в любое время
можно сравнить обьем физической (полученной при помощи системных
переключателей ) и логической (полученной из переменной) памяти.
Их несоответствие и может служить сигналом к поиску вируса.
     Сравнительно легко реализовать присоединение вируса к рези-
дентной программе, уже находящейся в оперативной памяти.  Однако
здесь определенные сложности возникнут при выделении  вируса  из
зараженной программы. Но для COM-файлов это препятствие обходит-
ся сравнительно легко. Этот способ в известных вирусах не реали-
зован .
     И последний способ размещения вируса в оперативной памяти -
в виде отдельной резидентной программы. Так  поступает  большин-
ство известных вирусов. При выделении  из  зараженной  программы
вирус без обращения к ОС модифицирует управляющие  блоки  памяти
(MCB), либо использует функцию DOS (31h - Keep  and  stay  resi-
dent), отводит необходимый для себя участок оперативной  памяти.
После завершения программы освобождается вся память, которая  ей
принадлежала, а вирус остается в памяти. Так поступают следующие
всемирно известные вирусы как "Falling Letters", "Israeli Virus"
и их многочисленные "мутации".
     Однако существуют вирусы, которые не выделяются из програм-
мы и заражают другие  файлы  при  запуске  зараженной  программы
(например DOS-62). Они опасны тем, что  обнаружить  их  возможно
либо на диске, либо непосредственно перед самим выполнением  за-
раженной программы.

                  Способы получения управления

     Для активизации вирус должен получить управление. Это может
достигаться при внешнем прикреплении  к  программе  путем  явной
передачи управления (при помощи команды JMP), либо путем  перес-
тановки на себя определенных полей в заголовке EXE-файла. Первый
способ применяется для COM-файлов, а второй для EXE-файлов.  При
этом вирус  получает  управление  перед  выполнением  зараженной
программы .
     При внутреннем или смешанном прикреплении к программе вирус
может воспользоваться как одним из двух описанных выше способов,
так получить управление и из ее тела. Для этого необходимо знать
структуру заражаемой программы. Исходя из анализа способов  раз-
мещения вирусов в памяти необходимо отметить ,  что  первые  два
способа перехвата управления свойственны вирусам, которые  будут
присоединяться к резидентным программам.  Все  остальные  вирусы
могут использовать третий способ.
     Для размножения вирусу необходимо перехватить управление  у
операционной системы. Конечно , существуют вирусы, которые  раз-
множаются сразу же при получении  управления  (DOS-62).  Но  это
весьма неэффективно по времени. Существуют два способа перехвата
управления у операционной системы : перехват векторов прерываний
и  подключение  непосредственно  к  телу  операционной  системы.
Исключительное    большинство    вирусов    используют    первый
вариант.("Yankee Doodle Virus", "Falling Letters",  "Alameda"  и
др.). Это сделано для того, чтобы вирус не зависел от версии ОС.
Но  в   результате   исследований   было   обнаружено,   что   в
MS-DOS(PC-DOS) существуют определенные  точки,  подключившись  к
которым, можно осуществлять контроль деятельность системы с  еще
большими возможностями. Но самое неприятное заключается  в  том,
что эти точки могут быть найдены при помощи простого алгоритма в
любой  версии  MS-DOS(PC-DOS)  старше  3.10  (включая  и  4.01).
Поэтому существует большая вероятность создания вируса,  который
будет контролировать работу системы оставаясь незамеченным.

                    Способы нанесения ущерба

     Конечной целью вируса является дезорганизация  работы  ком-
пьютера. Для этого в вирусе существует деструктивная компонента.
Она может реализовывать свои функции как при помощи ОС  и  БСВВ,
находящейся в ПЗУ, так и автономно от них. Первый способ исполь-
зуется довольно часто ("Israeli Virus","DOS-62"). Второй  способ
сложнее первого, но и возможностей по  нанесению  вреда  у  него
гораздо  больше.  Его  используют  такие  вирусы,  как  "Falling
Letters","Ball","Pakistani Brain" и  другие  печально  известные
вирусы. Третий способ наиболее сложен для реализации. Он предус-
матривает непосредственное обращение к аппаратуре  (контроллерам
дисков , контроллеру дисплея и т.д). Но зато и  проследить  этот
метод практически невозможно (если все сделано правильно).  Зато
этот способ дает возможность сильно влиять на работу устройств,и
при этом оставаться незамеченным. Вирусы, использующие этот спо-
соб, к сожалению, существуют и с этим надо считаться.
     Приведенный выше анализ и полученная при этом классификации
показывают, что вирусы находятся только в начале  своего  разви-
тия. Большинство перечисленных способов построения  вирусов,  их
размещения на диске и в памяти, еще не использованы, что и  дает
возможность заключить о необходимости разработки соответствующих
методических разработок по созданию  и  построению  антивирусных
программ.


                           ЛИТЕРАТУРА

     1. McAfee J. The virus cure // Datamation, 1989,  v.35,No 4,
pp.29-40
     2. R.Greenburg "How Thy Viral Enemy", Byte,June 1989
     3. Распространение компьютерного "вируса" и меры  борьбы  с
ним.,Аналитический обзор (по материалам зарубежных источников за
1987-88г.г), Г.К. Пискова, ВИМИ, М., 1988.
     4. Чижов А.А. Некоторые соображения по поводу  компьютерных
вирусов  //  В  мире  персональных  компьютеров,  1988,  N   1.-
С.121-124

