*******************************************************************************
                          R E A D . M E 
*******************************************************************************

         В настоящее время наиболее распространеными програмными средствами
   защиты от вирусов являются следующие :  ревизоры, фильтры, вакцины, фаги
   ( о значении этих терминов смотри Безруков Н.Н.'Классификация компьютер-
   ных вирусов в MS DOS и методы защиты от них' ). Авторы здесь не касаются
   "административных" методов ( входной контроль, архивирование, карантин и
   др.),  эффективность которых в отдельных случаях чрезвычайно высока,  но
   далеко не стопроцентна.
         Однако все существующие методы не позволяют  восстановить исходное
   состояние  файла после заражения произвольным файловым вирусом,  так как
   существующие фаги "выкусывают" лишь известные им вирусы, а остальные ме-
   тоды  контроля  файлов могут лишь констатировать сам факт изменения фай-
   лов,  но не востановить их.  Вакцинирование требует тщательного изучения
   работы вируса,  причем существует возможность того,  что появятся группы
   вирусов, использующие одни и те же алгоритмы проверки присутствия с раз-
   личными возвращаемыми кодами.  Вакцинирование тогда возможно лишь против
   одного вируса из этой группы одновременно.  Например,  мы встретились  с
   вирусом RCE-1813, у которого вместо подписи MsDos стояла подпись Peter с
   полной идентичностью  в  остальном.  Естественно,  что  стандартная  для
   RCE-1813 вакцинация файла приписыванием к нему в конце подписи MsDos бы-
   ла бесполезной,  требовалась подпись Peter. Создает проблемы и использо-
   вание резидентных фильтров:  нужна достаточная квалификация. чтобы в по-
   токе их сообщений выделить действительно важные, и часто пользователь, в
   1001 раз разрешая какой - либо программе остаться резидентной, разрешает
   это вирусу.
         Нами сделана попытка разработать антивирусную систему,  объединяю-
   щую все эти методы и лишенную по возможности их недостатков.  Предлагае-
   мый здесь пакет CERBER версии 1.00 является предварительной версией, ре-
   ализующей лишь часть разработанных алгоритмов.  В частности, она борется
   только с файловыми вирусами, оставляя ( пока ) борьбу с бутовыми на долю
   других программ.  В борьбе же с файловыми вирусами  авторы  надеются  на
   универсальность программы , так как ее алгоритмы не привязаны к конкрет-
   ному вирусу, используя лишь самые общие сведения о структуре выполняемых
   файлов MSDOS.  Испытания со всеми имеющимися у авторов вирусами показали
   ее полную работоспособность.  Однако эта версия экспериментальная, и ав-
   торы  с благодарностью примут любые пожелания и замечания по работе сис-
   темы, а также образцы вирусов, с которыми она не справилась. Кроме того,
   судя по рекламным сообщениям в печати,  мы не одиноки в попытке создания
   таких систем ( Таня, Страж, Караул ) и были бы рады установить контакт с
   их разработчиками.
         Перейдем собственно к нашей системе CERBER.  Ее ядром является ал-
   горитм отсечения вируса и восстановления передачи управления при загруз-
   ке восстановленной программе.  С теоретической точки зрения задача лече-
   ния  зараженного  вирусом файла сводится к выделению из файла собственно
   содержащейся в нем программы и вируса.  Для этого  необходима  некоторая
   информация,  и абсолютное большинство существующих фагов использует зна-
   ние конкретного вируса, что делает их независимыми от программы, кокорую
   они  лечат,  но привязывают к излечиваемому ими вирусу.  Отсюда следует,
   что , пытаясь создать вирусонезависимый фаг, необходимо иметь информацию
   об исходном состоянии тех файлов, которые он должен лечить. В простейшем
   случае на этом основываются 'самоизлечивающиеся' и  'самовосстанавливаю-
   щиеся' программы.  В случае же фага, который должен лечить не только се-
   бя, но и другие программы, задача резко усложняется, так как a priori не
   известно,  какую информацию и в каком объеме необходимо хранить ( причем
   самый надежный способ - хранить ВСЮ программу на  резервном  носителе  с
   регулярной сверкой и восстановлением).  Однако, учитывая структуру EXE -
   файла и те методы, которыми, как правило, внедряются в него вирусы, мож-
   но существенно ( до десятков байт на файл ) сократить объем хранимой ин-
   формации. Вероятность проникновения вируса в EXE - файл другими способа-
   ми  низка  в  связи  с  объемом  требуемого для них кода,  трудоемкостью
   написания и большим объемом необходимых дисковых операций при заражении,
   что  резко  уменьшает скрытность вируса.  Косвенным подтверждением этого
   служит то,  что все существующие EXE - вирусы  используют,  в  сущности,
   один  и  тот  же путь 'приклейки' к заражаемому файлу.  Однако у авторов
   есть средства борьбы с вирусами,  проникающими в файл некоторыми метода-
   ми,  отличными  от  стандартных  ( хотя существование таких вирусов пока
   проблема чисто теоретическая по вышеуказанным причинам).  Сложнее ситуа-
   ция с COM - файлами,  имея жесткую структуру, они допускают самые разно-
   образные способы внедрения.  CERBER в этой версии преобразует их в EXE -
   формат с полным сохранением функциональных свойств.  Итак,  преобразовав
   при необходимости COM файлы в EXE, мы можем затем выделить из них ту ин-
   формацию, которая будет необходима для лечения. Возникает вопрос: где ее
   хранить ?  Вести отдельный файл - тогда возникают проблемы поиска в  нем
   нужной информации,  а также корректировки ее при удалении файла, переме-
   щении его в другой подкаталог или его переименовании.  Напрашивается ес-
   тественный  путь  - связать эту информацию с самим файлом,  записав ее в
   какое - либо место файла.
         Учитывая все вышесказанное, для защититы файла, нужно, при необхо-
   димости преобразовав его в EXE формат, вакцинировать его одной из специ-
   ализированной  вакцин CERBERа,  которая будет хранить в себе необходимую
   информацию, а также выполнять динамический контроль (см. ниже). Для это-
   го  служит  программа CERBERUS - интерактивный интерфейс системы CERBER.
   При этом размер преобразованного COM файла увеличивается на 63  байта, а
   вакцинированного  EXE  файла - на 91 байт ( плюс выравнивание на границу
   параграфа ).  Пожертвовав этим незначительным пространством Вы получаете
   возможность  в  любой момент в режиме просмотра программы CERBERUS прос-
   мотреть состояние всех файлов и при необходимости  их  вылечить,  причем
   при  наличии нескольких вирусов они рассматриваются как один и вылечива-
   ются за одну операцию.  Вообще здесь корректнее говорить не о лечении от
   вируса  или вирусов,  а о восстановлении файла к состоянию до заражения.
   Естественно, вылечены будут только предварительно вакцинированные файлы.
   Кроме того понятно,  что файл будет вылечен лишь от тех вирусов, которые
   попали в него ПОСЛЕ вакцинации,  поэтому надо убедиться стандартными ме-
   тодами,  что они здоровы при вакцинации. Единственный файл, который сис-
   тема откажется преобразовавать в EXE и вакцинировать - это командный ин-
   терпретатор  MsDos  COMMAND.COM.  Его  проверкой  и восстановлением
   занимается  езидентная часть системы.
         Особого внимания  требуют  при  этом нестандартные файлы,  то есть
   такие файлы,  у которых длина загружаемой части,  указанная в  заголовке
   EXE  -  файла,  не  совпадает  с  длиной  файла ( меньше нее ).  Таковы,
   например,  файлы с отладочной  информацией  TURBO  DEBUGGERа,  файлы  со
   встроенными  оверлеями  (  например,  созданные  TURBO  PASCAL),  self -
   extract архивы и некоторые другие.  Это  требуется  для  того,  чтобы  в
   память  был  загружен  не весь файл,  а его часть.  После вакцинирования
   файлы становятся стандартными,  и в память будет загружен весь  файл.  В
   случае достаточной памяти это никак не отразится на его работе,  если же
   файл очень велик или возникают еще  какие  -  либо  проблемы  -  снимите
   CERBERUSом вакцину и ждите следующих версий системы.  При снятии вакцины
   файл восстанавливается полностью и вы  можете  быть  уверенны  в  полной
   идентичности  его с исходным.  На обработку каждого нестандартного файла
   выдается отдельный запрос.
          CERBERUS - программа статического контроля в систеие CERBER.  Ре-
    комендуется 1  раз  в  день  запускать  в  режиме  просмотра  программу
    CERBERUS на все рабочие диски.
         Однако со статическим контролем можно и опоздать,  за время  между
   статическими  проверками  может сработать троянская компонента вновь по-
   павшего вируса,  а пользователь не узнает еще даже об измененных файлах.
   Для  исключения этой ситуации служат модули динамической проверки. Таких
   модуля существует три:
         - BASIN - нерезидентный модуль,  одна из вакцин CERBERа, добавляю-
   щийся к файлу при вакцинировании и производящий контроль и при необходи-
   мости самовосстановление;  не требует резидентной части и целиком содер-
   жится в защищенном файле,  может быть с ним передан на другую  машину  и
   обеспечивать защиту на ней без других компонент системы CERBER.
          Два остальных модуля работают во  взаимодействии  со  стандартной
   вакциной CERBERа:
          - CerbDrv.EXE - резидентный модуль, вызываемый стандартной вакци-
    ной; обеспечивает контроль и при необходимости самовосстановление;
          - CerbDrv.SYS - резидентный модуль, загружаемый через CONFIG.SYS;
    вызывается стандартной вакциной;  обеспечивает контроль и при необходи-
    мости самовосстановление,  а также контроль за резидентными программами
    и пересадкой прерываний и следит за заражением COMMAND.COM.
          Наиболее мощной из них является третий модуль, поэтому опишем его
    подробно.
         Модуль CerbDrv.SYS представляет собой драйвер символьного устройс-
   тва  ( без имени ),  поддерживающий работу системы CERBER в динамическом
   режиме.  При запуске защищенной программы управление ДО выполнения прог-
   раммы получает вакцина,  которая передает управление драйверу. Он прове-
   ряет целостность файла,  при необходимости в диалоге с пользователем ле-
   чит его и передает управление пользовательской программе.
         В системе приняты меры против зарвжения файлов при операциях с ни-
   ми  самой  системы CERBER,  достаточно сказать,  что CerbDrv.SYS успешно
   тестирует и лечит программы при активном в памяти вирусе  RE  -  1800  (
   Dark  Avenger).  Это  одна из мер,  предпринятых для повышения живучести
   системы.
          В случае заражения защищенной программы проявляется еще один цен-
    ный эффект системы CERBER : вирус, стартовавший с защищенной программы,
    теряет управление.  Это происходит за счет того, что зараженная вирусом
    защищенная программа представляет собой 'бутерброд'  следующего состава
    ( в порядке получения управления ):
               - вирус
               - ВАКЦИНА
               - пользовательская программа
   Так как вакцина получает управление ПОСЛЕ вируса, но ДО пользовательской
   программы,  она к моменту начала выполнения  пользовательской  программы
   восстанавливает все вектора прерываний такими, какими они были до работы
   вируса,  и его инсталляционная часть отрабатывает 'впустую' - управление
   отбивается.  При этом не имеет значения,  меняются ли вектора прерываний
   через 25h функцию 21h прерывания или путем записи по  абсолютному адресу
   в таблицу прерываний. Этот метод не требует от пользователя какой - либо
   квалификации в определении того,  программа пересаживает на себя  вектор
   прерывания или вирус - в этом разберется CERBER. Представим себе, напри-
   мер, резидентную программу управления экраном, пересаживающую на себя 10
   h прерывание,  зараженную вирусом,  который также перехватывает прерыва-
   ние.  CERBER не задаст Вам ни одного вопроса, но вирус потеряет управле-
   ние,  а программа будет продолжать работу.  Эта часть драйвера корректно
   борется даже с таким изощренным вирусом, как RE - 1800.
          Однако, если драйвер постоянно загружен в память,  такая ситуация
    возникает редко - как правило,  заражение существующими RE  -  вирусами
    происходит  в момент запуска программы,  а если она вакцинированна,  то
    сразу же самоизлечивается.  К сожалению,  отбив прерывания  от  вируса,
    CERBER  пока  не удаляет из памяти его тело,  и оно продолжает занимать
    место в ОЗУ, что, впрочем, в связи с как правило малыми размерами виру-
    са, обычно не мешает работе.
          Каким же образом может попасть в систему АКТИВНЫЙ, получающий уп-
    равление вирус, если при запуске с защищенных программ он 'убивается' ?
    Это может произойти, если вы запустили незащищенную программу. Но долго
    ли  продлится  у него активное состояние ?  Нет.  При запуске первой же
    вакцинираванной программы драйвер  'убьет'  в  памяти  все  резидентные
    программы, запущенные после предыдущей вакцинированной. Например, запу-
    щена следующая последовательность программ:
          - какая - либо вакцинированная программа
          - невакцинированный  TALKER.COM  (  пересаживает  на   себя   21H
    прерывание; (C)CompactSoft, см. СОФТПАНОРАМУ 2.5(9) )
                 теперь  TALKER  активен и выдает свои
                 сообщения при задании неверной команды.
          - любую вакцинированную программу
                  TALKER  потерял управление,
                  на неверные команда выдается стандартные
                  сообщения COMMAND.COM.
    Если же TALKER.COM преобразован в EXE - формат и  вакцинирован,  то  он
    будет продолжать работу.

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

          А что же делать, если необходимо запустить программу, пересажива-
    ющую прерывания, которую по каким - либо причинам нежелательно вакцини-
    ровать,  но необходимо не дать ей потерять управление, как в вышеприве-
    денном случае с TALKERом ?  Тогда можно ее запустить с полным контролем
    действий по изменению векторов прерываний с помощью программы SAFE.EXE.
          Задайте команду SAFE < program > < program's parameters >
    - и SAFE запустит Вашу программу с  требуемыми  параметрами,  а  по  ее
    окончании запросит подтверждения изменения каждого прерывания, ею пере-
    саженного.  Отвечая на запрос, можно разрешить изменение каждого из них
    или восстановить старое.
          Если же нужно разрешить по умолчанию пересадку какого - либо пре-
    рывания всем запускаемым таким образом программам,  считая это безвред-
    ным ( например,  прерывания 22h,  24h, 9h, 10h, 16h ) - нужно запустить
    программу  INITSAFE,  которая предложит ввести список этих прерываний и
    запомнит его. В дальнейшем о разрешении их пересадки запросов не будет.

          Однако напрастны попытки 'отобрать' у  драйвера  используемое  им
    для  работы прерывание 21H так,  чтобы драйвер потерял управление - при
    запуске первой же вакцинированной программы оно восстановится.  В  этом
    не помогут даже программы типа 2113.EXE ( (C) BIS, СОФТПАНОРАМА 2.3(7)),
    вне зависимости от того,  вакцинированны  они  или  нет,  запускает  их
    COMMAND.COM непосредственно или программа SAFE.EXE.

    Таковы основные черты антивирусной системы CERBER

          В настоящее  время  идет активная доработка системы.  В следующих
    версиях будут реализованы :

          - контроль и лечение COM - файлов БЕЗ их преобразования в  EXE  -
    формат;

    В CerbDrv.SYS:
          - контроль и восстановление MBR, BOOT - сектора;
          - контроль и восстановление скрытых файлов системы и COMMAND.COM;
          - повышение живучести;
          - встроенный модуль просмотра распределения ОЗУ, таблицы прерыва-
    ний;
          - очистка памяти, распределенной 'убитым' вирусам;
          - сообщение о параметрах вируса ( длина, вектора прерываний);
          - настройка драйвера CerbDrv.SYS на нужный режим работы ( уровень
    диалога, разрешенные действия ) из командной строки;

    В CERBERUS.EXE:
          - повышение скорости обработки файлов в 6 раз;
          - поддержка LIM EMS для ускорения работы;
          - поддержка работы на зараженной машине;
          - выделение штамма вируса;

          Все соответствующие алгоритмы разработаны авторами и  испытаны на
    отдельных программах, не входящих в систему CERBER.

          Примечание 1:  в  настоящее  время  CERBERUS.EXE,  в  отличии  от
    CervDrv.SYS, не может корректно работать на зараженной некоторыми виру-
    сами ( RE - 1800 ).  Проверить, здорова ли в данный момент операционная
    система,  чрезвычайно просто : при загруженном в память CervDrv.SYS за-
    пустите любую защищенную программу, например, сам CERBERUS.EXE. Если не
    появилось сообщения о заражении,  значит,  с большой долей вероятности,
    система здорова ( либо запущенный Вами файл почему - либо не понравился
    вирусу,  что бывает редко). Запуск нескольких файлов резко повышает эту
    вероятность,  а  если  Вы успешно запустили несколько десятков файлов -
    доводит ее до 100%.

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

          Примечание 3:  Для  работы системы необходимы следующие системные
    ресуры:  IBM PC,  с ОЗУ не менее 128 KB,  MS DOS версии 2.0 и выше  для
    работы  в статическом режиме ( CERBERUS.EXE ) или версии 3.0 и выше для
    работы в динамическом режиме  (CerbDrv.SYS).  Кроме  того,  резидентная
    часть CerbDrv.SYS постоянно требует около 1.5 Kb в ОЗУ. Все исполняемые
    модули  системы  CERBER   вакциниованны  нестандатной   вакциной,    не
    обнаруживаемой  программой  CERBERUS.  Это  сделано для того, чтобы они
    оставались защищенными при любых действиях пользователя.



         ЛИТЕРАТУРА:

          1. Безруков  Н.Н.  КОМПЬЮТЕРНАЯ  ВИРУСОЛОГИЯ.  Часть   1:   Общие
    принципы    функционирования,    классификация   и   каталог   наиболее
    распространенных вирусов в операционной системе MS DOS /  Редакция  3.5
    от 14.06.90.- 1990.  - 170 с.  Ил. 11, список лит.: 270 назв., табл. 8,
    прил. 4.

          2. Безруков Н.Н.  Классификация компьютерных вирусов в MS  DOS  и
    средства  защиты  от них.- М.:  СП "Интернэшинел Компьютер Энтерпрайс",
    1990.- 47 с.

          3. Чижов  А.А.  Некоторые  соображения  по  поводу   компьютерных
    вирусов // В мире персональных компьютеров, 1988, N 1.- С.121-124

*******************************************************************************
