ZF

              Антивирусная защита. Взгляд изнутри.
                            by Redarc

    1. Введение. В статье <Антивирусная защита. Взгляд со стороны> была
рассмотрена эволюция антивирусного программного обеспечения  на примере
наиболее  распространенных  методов  защиты.  Анализ  этих традиционных
методов защиты показал,  что наибольшая степень  защиты  обеспечивается
только при комплексном использовании антивирусных средств.
    В данной работе хотелось бы сделать прогнозы  относительно будущего
антивирусных  средств.  Разумеется,  что  для  этого необходимо было бы
сделать  обзор  вредоносных  объектов,  от  которых  призваны  защищать
антивирусные  средства,  методы  их  проникновения,  среду  обитания  и
прочее.  Однако один только этот обзор привратится из статьи в книгу, а
уж  обсуждение  правомерности  включения тех или иных объектов в разряд
вредоносных и вовсе может  привести  к  дискуссии  в  несколько  томов.
Поэтому  я с легкостью в сердце отправляю дотошных читателей к вирусным
энциклопедиям  Бончева  и  Касперского  и  рекомендую  ознакомиться   с
соответствующей литературой, посвященной как раз этим вопросам.
    Ниже будет представлен мой взгляд на  развитие  комплексных  систем
антивирусной защиты. Это не технический труд и не бульварный рассказ об
ужасах, творимых вирусами над домохозяйками. Это всего лишь продолжение
знаменитой  фразы  <Кто  виноват?>  и  <Что  делать?>.  На  вопрос <Кто
виноват?>,  то есть <Почему современная антивирусная защита не является
панацеей?>,  я  надеюсь,  что  ответил  в  статье <Антивирусная защита.
Взгляд со стороны>. Теперь попробуем ответить на второй вопрос.

    2. Прототипы  антивирусной  защиты  нового  поколения.   Как   было
отмечено   ранее,   наиболее   действенными   средствами   современного
антивирусного ПО являются три  аспекта:  эмулятор  кода,  эвристический
анализ  и  комплексный  подход  (интеграция  отдельных средств в единую
систему).  Насколько  бы  не  были  эти  средства  различными,  но   их
совершенствование обязательно приведет к одному результату. Дело в том,
что идеальный эмулятор - это сам  компьютер  с  операционной  системой.
Идеальный эвристический анализатор - анализ последствия различного рода
воздействий  (смена  даты  и  времени,  выполнение  различных  файловых
операций, нажатия комбинаций клавиш, J на исследуемый код в защищенном
виртуальном мирке,  а еще лучше - на подопытном компьютере с подопытной
операционной   системой.  Комплексный  подход  в  идеале  -  интеграция
антивируса в операционную систему и: в потроха компьютера.
    Я надеюсь,  что никто не станет оспаривать аксиому <лучший эмулятор
компьютера - это сам компьютер>.  Давно известно,  что самыми  сложными
вирусами  являются  сложно  зашифрованные  (полиморфные) вирусы.  Новые
(неизвестные антивирусному ПО) зашифрованные вирусы используют  в  коде
своих    расшифровщиков   (декодеров)   ограничения   эмуляторов   кода
антивирусов для проникновения в систему.
    Я надеюсь,  что  никто  не   станет   оспаривать   аксиому
<маленький   удачный   эксперимент   лучше   грандиозной,   но
голословной гипотезы>.  Дело  в  том,  что в последнее время наметилась
тенденция  усложнения  алгоритмов  вирусов  в  сторону   их   (вирусов)
интеграции  с  кодом  жертвы  (инфицируемой  программы),  использования
плавающих точек входа  в  отдельные  части  вирусов  (технология  UEP),
расшифровка  и использование плагинов в зависимости от ряда условий,  :
Например,  вирус может внедрить (не  путать  с  <присоединить>)  в  код
жертвы  себя  в виде вполне самостоятельных подпрограмм,  которые могут
быть  зашифрованы  полиморфными  алгоритмами  и   активизироваться   из
случайного  места в случайное время самой программой - жертвой. Лечение
таких файлов может оказаться невозможным, хотя жертва может быть вполне
работоспособной  в  нормальных  условиях.  Поэтому  определение <уровня
дружелюбности>  программы  возможно  только  при  проведении  над  этой
программой   полной   серии   запусков   во  всех  мыслимых  ситуациях.
Разумеется,   что   проводить   такие   эксперименты   на   компьютерах
пользователей   с   полными  дисками  ценной  информации  абсолютно  не
возможно.  Это не рекомендуется делать еще и  потому,  что  последствия
работы  деструктивных  компонент  таких вирусов,  как Win95.CIH,  могут
оказаться фатальными для комьютера.  Да и  нет  никакой  гарантии,  что
конкретный  вирус  будет  работать  на подопытном компьютере.  Он может
оказаться избирательным  и  проявляться  в  зависимости  от  типа  ЦПУ,
размера  оперативной  памяти,  структуры  дерева каталогов диска,  даты
файла C:\AUTOEXEC.BAT и многих других факторов.  А  купить  целый  парк
компьютеров для экспериментов вряд ли кто сможет себе позволить.
    Я надеюсь,  что никто не станет  оспаривать  аксиому  <в  дедовской
фуражке  с автоматом на перевес невозможно пройти таможню в аэропорту>.
Дело в том,  что встроенная в BIOS защита от  загрузочных  вирусов  при
правильной реализации может оказаться непреодолимым препятствием. Таким
же непреодолимом препятствием окажется аппаратно-программная  защита на
пути к инфицированию защищаемых объектов.
    Как уже  было  отмечено  ранее,  современные  антивирусные   защиты
обеспечивают  не только разовые ревизии защищаемых объектов при запуске
ревизоров,  инспекторов и полифагов,  но и стремятся сделать эту защиту
постоянной   с   помощью   резидентных   мониторов.  Однако  реализация
постоянной  защиты  на  современном  этапе  развития  антивирусного  ПО
оставляет  желать  лучшего,  так  как приходится выбирать между отловом
только известных вирусов и полной паранойей защиты.  Такая защита  мало
подходит   для  большинства  пользователей,  заметно  замедляет  работу
компьютера, неоправданно расходует ресурсы компьютера, да и по большому
счету  является  бессмысленной.  Это как пустить незнакомого человека к
себе в квартиру и с помощью замаскированной видеокамеры следить  за его
поведением.  Гораздо  правильнее  не  пользоваться  вообще  файлами  из
непроверенных  источников   или,   хотя   бы,   проверять   эти   файлы
антивирусными сканерами перед первым использованием. Что же получается?
Не использование резидентных мониторов  сильно  ослабляет  антивирусную
защиту, а их применение приносит издержки, не оправдывающие пользу. Как
мне кажется,  все дело в неправильной реализации <недремлющего ока>. Но
к  этому  вопросу  мы вернемся немного позже.  А пока давайте зададимся
вопросом о  том,  неужели  все  так  плохо  и  нет  ли  примеров  более
правильной защиты информации?
    Оказывается - есть!  И примеров тому великое множество.  Просто эти
системы  защиты  информации  были  разработаны  в  качестве  защиты  от
несанкционированного доступа,  а уж антивирусный эффект  получился  сам
собой.  И  название  этим системам - разграничение полномочий на уровне
ресурсов и пользователей.  Опять же  я  не  буду  приводить  здесь  все
прелести такого подхода,  а просто отправлю читателей к книгам по UNIX,
LINUX,  OS/2,  WINDOWS  NT  и  т.д.  Здесь  же  я  кратко  поясню  идею
разграничения доступа.
    Разграничение доступа   -   раздача    системным    администратором
привилегий  пользователям на чтение и изменение информации,  а также на
доступ к системным ресурсам. Правильная раздача привилегий и правильная
реализация  поддержки  разграничения  доступа  на  уровне  операционной
системы уже является достаточным средством для защиты  информации.  Мне
кажется,  что  разграничение  доступа  к  ресурсам компьютера на уровне
программ должно быть необходимым условием для антивирусной защиты.
    Таким образом,  если операционная система может разграничить доступ
пользователей к каталогам и файлам на диске,  то почему бы антивирусной
защите не ограничить доступ к файлам между программами?  Допустим,  что
некоторая программа нуждается только в чтении конкретного *.cfg-файла и
в  изменении  только  конкретного *.ini-файла.  Было бы вполне логичным
ограничить эту программу доступом только к этим файлам, а все остальные
действия  программы  считать  нарушением привилегий.  Другое дело,  кто
должен назначать привилегии, из каких соображений он должен это делать,
какими   могут  быть  привилегии,  кто  будет  следить  за  соблюдением
привилегий,  какие санкции будут применяться  к  <нарушителям>  и  т.д.
Ответить на все эти вопросы однозначно не представляется возможным.
    Однако цель данной статьи не в том,  чтобы  побиться  об  заклад  о
конфегурации конкретного антивируса через пару лет, а о том, чтобы дать
ответ на вопрос <Что делать?>, неявно задаваемый в статье <Антивирусная
защита. Взгляд со стороны>. Еще раз хочу подчеркнуть, что данная работа
выражает лишь мнение автора,  а  читатели  вольны  соглашаться  или  не
соглашаться с этим мнением.
    Итак мы подошли к тому, что лучшим антивирусом должно являться что-
то   близкое  к  операционной  системе,  интегрированной  с  некоторыми
антивирусными   комплектующими   компьютера.   То    есть    прототипом
антивирусной  защиты  нового  поколения может являться интеграция всего
лучшего,  что было сделано в антивирусной индустрии,  с тем лучшим, что
было  сделано  вообще в индустрии защиты данных от несанкционированного
использования.

    Для дальнейшего изложения материала мне придется  ввести  несколько
понятий:
    Администратор - системный администратор,  который все знает  и  все
умеет.
    Пользователь - приставка к компьютеру,  которая ничего не знает, но
хочет работать.
    Привратник - резидентная программа,  интегрированная в операционную
систему, , осуществляющая аудит за привилегиями программ.
    Привилегии -  разрешения  для  программ  на  доступ   к   системным
ресурсам.
    Реакции - собственно,  реакции привратника на нарушение  программой
своих привилегий.

    Общая идея  антивирусной  защиты заключается в том,  что привратник
следит за соблюдением программами своих привилегий,  выполняет  реакции
на   нарушения  и  может  быть,  позволяет  администратору  настраивать
привилегии для программ.  Привратник может <сотрудничать>  с  некоторой
аппаратной  защитой,  которая  может  блокировать доступ к базам данных
привратника для всех,  кроме самого привратника.  Остальные  компоненты
антивирусной  защиты  могут  применяться  в  основном  лишь  для  сбора
информации привратнику (для определения новых программ на диске  и  для
помощи  администратору  при  выборе  необходимых привилегий программе),
проверке новых  файлов  на  наличие  известных  вирусов,  а  также  для
осуществления реакции привратником.
    Более подробно на конфигурации этой абстрактной антивирусной защиты
мы  остановимся  несколько позже.  Сейчас же было бы разумным пояснить,
что же такое привилегии и реакции.

    3. Привилегии  доступа.  Прежде  чем  более  конкретно  говорить  о
привилегиях,  следует  составить  хотя бы примерный список объектов,  к
которым  программы  вообще  могут   иметь   доступ,   который   следует
ограничивать.  Кроме того, в данном случае следует исходить из принципа
- все,  что не разрешено - запрещено. Однако в списке привилегий всегда
нужно  иметь  резервные  позиции  для  ввода  новых  разрешений.  Итак,
приведем примерный список объектов:
    1. доступ к загрузочной информации на диске
    2. доступ к системным разделам операционной системы
    3. доступ к реестру на запись
    4. доступ к реестру на чтение
    5. доступ к файлам на чтение
    6. доступ к файлам на запись
    7. доступ к файлам на переименование
    8. доступ к файлам на удаление
    9. доступ к файлам на перемещение
    10. доступ к портам винчестера
    11. ограничение на запрос ресурсов оперативной памяти
    12. доступ к сетевым ресурсам
    13. доступ к периферийным устройствам
    14. доступ к активным процессам
    15. доступ к определенным функциям API
    16. :
    Список можно   продолжать   и  конкретизировать  в  зависимости  от
требований  к  безопасности,  возможностей  и  фантазии   разработчиков
антивирусного   ПО.   Список  можно  разделить  на  группы  привилегий,
например,  так:  системные задачи, прикладные задачи и пользовательские
задачи.  Разумеется,  что  системные  задачи могут иметь доступ ко всем
необходимым объектам,  прикладные задачи  (Microsoft  Office,  MathCad,
CorelDraw,  J  могут  иметь  доступ к ограниченному кругу объектов,  а
пользовательские задачи -  только  к  минимально  необходимому.  Каждая
группа  привилегий  может  иметь минимально конфигурируемые стандартные
подгруппы  привилегий  и  задаваемые  пользователем  (администратором).
Минимальная   конфигурация   стандартных  подгрупп  может  заключаться,
например,  в выборе формата (расширения) файлов, к которым будет открыт
доступ. Пользовательские подгруппы могут настраиваться полностью.
    Итак, под термином <привилегия> можно понимать  список  объектов  к
которым  разрешен или запрещен доступ.  Привилегии могут быть разделены
на группы и подгруппы  для  упрощения  назначения  реакций  привратника
(например,  одинаковая  реакци  для  группы или подгруппы).  Привилегии
могут назначаться как к набору программ,  так и к конкретной  рограмме.
Может  быть  задана  привилегия,  используемая  по  умолчанию для новых
программ, еще не прошедших регистрацию в системе защиты.

    4. Реакции на нарушение привилегий.  Если с привилегиями более  или
менее  понятно,  то реакции привратника могут находиться в диапазоне от
стандартных до экзотических.
    Стандартные реакции  могут  зависеть  как  от  группы или подгруппы
привилегий,  так  и  быть  выбранными  непосредственно  на   усмотрение
администратора. К стандартным реакциям можно отнести следующее:
    1. автоматически повысить уровень привилегий для программы
    2. заблокировать работу программы
    3. проверить  антивирусом и в случае отсутствия подозрений
- повысить  временно  уровень  привилегий  (в противном случае - другая
реакция)
    4. срочно  обновить антивирусную базу (автоматическое обновление) и
сделать все как в предыдущем пункте
    5. удалить программу
    6. :
    Кроме того,  (опционально)  можно  послать  сообщение  пользователю
(вывести Message Box) и  сообщить  администратору  (послать  запрос  по
e-mail и дождаться выбора реакции непосредственно человеком).
    Коммерчески доступные   реакции   могут   зависеть    от    желания
разработчиком   антивирусного  ПО  обеспечить  более  гибкую  поддержку
пользователей или стремление сорвать побольше денег.  К таким  реакциям
можно отнести следующее:
    1. отправить подозрительную программу на  сайт  разработчиков  и  в
режиме ON LINE проверить ее самой свежей версией антивируса
    2. отправить  разработчику  антивируса  на  FTP  или  по  E-MAIL  с
указанием  текущих привилегий и требуемых программой (а вдруг это вирус
злой?)
    3. Особенно   интересна  здесь  вторая  реакция.  Привратник  может
заблокировать программу и с некоторой периодичностью  пытаться получить
от  разработчиков  антивируса  ответ.  Этот  ответ  может заключаться в
следующем  (в  зависимости  от  того,  заплатил  за   такую   поддержку
пользователь или нет):
    1. эту  программу  разработчики  получают  по   100   раз   в   час
(оказывается,  что  этой программе действительно нужно повысить уровень
привилегий или создать новую специальную привилегию)
    1.1. это сообщается администратору
    1.2. это  делается  автоматически  в  виде  специального  сообщения
привратнику
    2. программа содержит ошибку (сообщение об ошибке  сообщается, если
это  возможно,  разработчику  программы,  например,  фирме Microsoft) и
пользователю предлагается на выбор:  обновить программу,  обратиться  к
разработчикам программы или удалить программу
    3. программа   содержала    вирус    или    троянскую    компоненту
(соответственно,  обновляется база антивируса и сканер патчит программу
для удаления вируса или троянской компоненты)
    Экзотическими можно  назвать  также некоторые коммерческие реакции.
Например,  если администратор в отпуске  -  греет  пупок  на  солнечном
пляже,   то   было  бы  возможным  скинуть  ему  на  мобильный  телефон
SMS-сообщение.
    Реакции могут   быть   настроены   для  всех  программ,  для  групп
привилегий,  для  конкретной   программы.   Реакции   могут   содержать
уведомления  пользователя  или  администратора,  а могут и не содержать
уведомления.  С некоторым периодом привратник может выдавать статистику
нарушений программами своих привелегий...


         ...Статья не закончена, продолжение следует...

--------------------------------------------------------------      (c)
RedArc


(C) NF, 1998-2004