ZF

                   АНТИВИРУСНАЯ ЗАЩИТА. ВЗГЛЯД СО СТОРОНЫ.
                                  by Redarc

                                  Аннотация

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


                                   Введение

     Прежде, чем перейти к средствам защиты,  следует представить  себе
от чего мы собираемся защититься и что конкретно мы стараемся защитить.

     К объектам защиты по тем или иным причинам относится следующее:
     - пользователь   персонального   компьютера   (психологическое   и
физическое состояние);
     - персональный компьютер (системный блок,  монитор,  клавиатура  и
прочая периферия);
     - внешние носители данных (дискеты, CD-диски, кассеты, и прочее);
     - информация на жестких дисках (программы, документы, ...).

     Перечисленные выше объекты могут пострадать в результате природных
катаклизм    (например,    наводнение),    собственной    неисправности
оборудования   (например,   плохая   изоляция   электрических  частей),
заводского  брака  (например,  дискеты  могут  не  форматирова   ться),
физического  износа  (например,  может  выгореть  люминофор  на  экране
монитора),  халатности отношения пользователя (например,  если во время
обеда   на   клавиатуру   вылить   нечаянно   чашку   горячего   кофе),
некомпетентности  пользователя  (например,  выдергивание   интерфейсных
устройств   во   время   работы   компьютера),  злонамеренных  действий
пользователя   (например,   при   ударе    молотком    по    принтеру),
несовместимости  комплектующих компьютера (затрудняюсь привести пример,
но такое тоже не исключено),  несовместимости програ ммного обеспечения
и  устройств  компьютера  (например,  при  работе  в MS DOS на дисках с
большой емкостью), несовместимости программного обеспечения между собой
(например, при установке приложений баз данных, разработанных в Delphi,
в систему, где уже устано влен BDE от Visual C++), ошибок в программном
обеспечении  (например,  если  Windows  98 повиснет,  а рисунок в Corel
Draw,  над которым вы  работали,  еще  не  сохранен),  целенаправленных
деструктивных   действий  программ  или  фрагментов  программного  кода
(например, троянских компонент).

     Существует и ряд других менее вероятных причин, по которым тот или
иной  рассматриваемый  объект может быть поврежден или уничтожен прямым
или косвенным воздействием.  Однако вернемся к теме  нашей  статьи.  Из
всех перечисленных выше причин неблагопри ятного воздействия на объекты
защиты нас интересует только последняя.  Как вы уже успели  заметить  -
это далеко не самая главная и не самая вероятная угроза.  Так почему же
именно  этой  проблеме  уделяется  столь  много   внимания?   Попробуем
рассмотреть  эту  причи  ну  применительно  к указанным объектам защиты
через призму остальных причин.  Программы  или  фрагменты  программного
кода  из-за  которых  возникает  рассматриваемая  угроза будем называть
вредоносным кодом.

     Пользователь персонального   компьютера   может   быть   подвержен
опасности   физического  воздействия  на  свой  организм  в  результате
неисправности    какой-либо    части    компьютера    или     опасности
психологического  стресса  в  результате  безвозвратной утери ценных да
нных.  Теоретически вредоносный код может вывести  из  строя  некоторые
части  оборудования,  например монитор,  в результате чего пользователю
будет нанесен вред здоровью (частичная  или  полная  потеря  зрения,  в
случае  порчи  монитора).  Вредоносный  код  может прив ести в движение
некоторые части компьютера (например,  раскрутить CD-диск и сразу после
этого  открыть  CD-дисковод)  и  косвенно  оказаться причиной нанесения
телесных  повреждений  пользователю.  Теоретически  возможны   побочные
эффекты  от  воздействия вредоносног о кода (вспомним шумиху с эффектом
25-кадра).  Однако на сегодняшний  день  не  известен  ни  один  случай
физического  нанесения  ущерба пользователю от воздействия вредоносного
кода.  Другое  более  вероятное  воздействие   вредоносного   кода   на
пользователя   -   это   пси  хологический  эффект.  С  одной  стороны,
пользователь всегда находится в страхе за  свои  ценные  данные  и  это
выражается  в  дополнительную  негативную  нагрузку  на него.  С другой
стороны,  пользователь может пережить как сильный шок,  так и  получить
урон  своему пс ихическому состоянию в результате деструктивных функций
вредоносного  кода,  направленного  на   ценные   данные   пользователя
(например,   удаление   файлов  с  информацией,  накопленной  годами  и
имеющейся  всего  в  одном  экземпляре   на   носителе,   подвергшегося
нападению)   .   К  менее  страшным,  но  более  реалистичным  факторам
негативного  воздействия  на  пользователя,   следует   отнести   кражу
информации   с  компьютера  пользователя  (воровство  паролей  сетевыми
червями,  воровство  файлов  с  коммерческой   информацией   троянскими
программами  типа BO,  воровство файлов с приватной перепиской и т.д.).
При таком  воздействии  вполне  вероятен  ущерб  финансовому  состоянию
пользователя  или  даже  крупной фирме,  а так же разглашение секретной
информации,  которая  может  повлиять  как  на  социальное  положени  е
пострадавшего,   так  и  на  мировые  взаимоотношения  в  целом  (кража
секретной информации с военных компьютеров).  Следует так  же  отметить
еще  одну не столь важную,  но столь очевидную причину неблагоприятного
воздействия на пользователя -  это  нанесения  урона  репутации.  Здесь
возможно два случая воздействия.  Первый и самый простой - это когда от
подвергшегося   воздействию   пользователя   будет   поступать   другим
пользователям  искаженная,  подтасованная или инфицированная информация
(к вопросу инфицирования мы вернем ся чуть позже). Так, например, может
быть  искажена  информация  на  странице пользователя в Internet или по
электронной почте будет выслан  заказчику  отказ  от  контракта,  в  то
время,  как  сам  пользователь наоборот желает заключить этот контракт.
Второй  способ  нанесения  урона  репутации  заключается  в  том,   что
вредоносный  код  может  не  только воровать данные пользователя,  но и
транспортировать от своего хозяина (автора или  владельца  вредоносного
кода) компрометирующую или ложную информацию. В этом случае
     - на электронные адреса партнеров, заказчиков или начальства может
поступать    информация,    порочащая   имя   подвергаемого   нападению
пользователя;
     - от   имени  пользователя  будут  несанкционированно  рассылаться
порочащие самого пользователя письма;
     - самому   пользователю   будут  приходить  письма  от  партнеров,
заказчиков или начальства с ложной информацией.

     Персональный компьютер так же может служить объектом нападения для
вредоносного   кода.   К  воздействиям  на  компьютер  следует  отнести
фатальную и ложную деструкцию.  К фатальной деструкции относятся случаи
физической  порчи  оборудования  под  воздействие  м  вредоносного кода
(сжигание люминофора в мониторе,  ломание  головок  об  ограничители  в
дисководах,  ускоренный  износ  жесткого  диска,  порча Flash Bios).  К
ложной деструкции следует  отнести  случаи  имитации  аппаратных  сбоев
(внесение ошибок во время копирова ния/сохранения информации,  отказ от
обслуживания  дисковода,  порча  изображения   на   экране   программно
[переворот  экрана  или  символов] или аппаратно [изменение палитры или
воздействие на регистры видеокарты]).

     Вредоносный код может воздействовать и на внешние носители данных.
Так,  например,  особый  вид  вредоносного  кода - компьютерные вирусы,
используют  внешние  носители  данных  для   собственного   размножения
(паразитируют).  Некоторые  представители  компьюте  рных вирусов могут
уничтожить  данные  на  носителе,  с  которого  идет  загрузка  системы
(Stoned.Michelangelo)  или  при определенных условиях уничтожают данные
форматированием именно на сменных носителях (Search.377).  Если внешний
носитель   информации  использует  ся  для  переноса  данных  с  одного
компьютера на другой, то пользователь может потерять время на повторное
копирование.  В случае же,  если такие носители данных используются для
архивирования (длительного хранения данных),  то эти данные могут  быть
безвозврат но утеряны.  Известно,  что операционная система Windows без
санкции   пользователя   запускает   программы,   указанные   в   файле
autorun.inf,  который  может  находится  в  корневом каталоге CD-диска.
Вредоносный код может использовать этот эффект для своего размножени я.
Так,  когда пользователь записывает на CD-диск информацию,  вредоносный
код может создать файл autorun.inf  и  программу  запуска  вредоносного
кода,  а в дальнейшем способствовать обязательной записи этих файлов на
лазерный диск. Результат плачевен и очевид ен.

     Особое внимание  следует  уделить  вредоносному   воздействию   на
информацию,   хранимую   на  жестком  диске.  Именно  эта  угроза  чаще
становится катастрофой как для  пользователя,  так  и  для  компьютера.
Именно   на   жестких   дисках   живут   и   размножаются   большинство
представителей   вредоносной   фауны,   воруется   и    подтасовывается
информация,  уничтожаются  файлы,  и  именно с жестких дисков наступают
последствия вредоносного  воздействия  на  защищаемые  объекты.  Именно
здесь зарождается и развивается то зло,  о котором мы сейч ас и говорим
и именно здесь находят применение те  системы  антивирусной  защиты,  о
которых дальше и пойдет речь.

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


     И так,  как мы видим,  не столь важная причина угрозы безопасности
защищаемым объектам вызывает самые  ужасные  последствия.  О  средствах
защиты от вредоносного кода и пойдет речь в данной работе.


     Вакцины, индикаторы детекторы, фаги с сигнатурным поиском и мониторы

     При появлении первых представителей вредоносной фауны  и появились
первые средства защиты от нее.  К самым первым экземплярам вредоносного
кода принято относить сетевых червей Морриса  и  Happy  New  Year.  Это
программы,  созданные  с  единственной  целью - саморазмножение.  Такой
класс  вредоносного  кода  называют  червями.  Название  происходит  от
аналогичных  биологических  животных.  Черви  (в  начальный  период  их
появления) ничего  дурного,  на  первый  взгляд,  не  делают  -  просто
рассылают  свои  копии  по сетевым адр есам,  найденным на подвергшемся
нападению компьютере. Объекты, подвергшиеся нападению вредоносного кода
будем  называть  инфицированными.  При инфицировании других компьютеров
черви забивали  каналы  связи,  а  при  ошибках  в  определении  своего
присутствия  в  пам  яти,  они  забивали  всю оперативную память своими
копиями.  В результате инфицированные компьютеры замедляли свою  работу
до  полного  зависания,  а сетевая инфраструктура становилась полностью
неработоспособной в связи с непосильной загрузкой каналов связи.

     Первым же антивирусом против таких  червей  становились...  другие
черви,  которые распространялись теми же путями, но не содержали ошибок
и сообщали исходным червям,  что компьютер уже инфицирован. Это было не
самое лучшее решение, но оно было. И сам ое интересное, что этот способ
борьбы с вредоносным кодом часто применяется до сих пор. Подобный прием
борьбы  называется  вакцинацией.  То есть,  код,  сообщающий настоящему
вредоносному  коду  информацию  о  том,  что  объект  уже  инфицирован,
называют   вакциной.   В   акцина  применяется  в  тех  случаях,  когда
вредоносный код изучен,  но готового решения для борьбы с  ним  еще  не
существует.  Вакцина  может  быть  пассивной  или  активной.  Пассивная
вакцина располагается только на защищаемом  объекте.  Активная  вакцина
подобна   вред   оносному  коду  -  сама  себя  размножает  на  еще  не
инфицированные  объекты  или   замещает   собой   вредоносный   код   в
инфицированном объекте, но несет в себе минимальное зло, по сравнению с
тем,  с  чем  она  должна  бороться.  Для  новых   или   видоизмененных
вредоносных  ко  дов  вакцина не пригодна,  так как не может обеспечить
полноценной защиты.  Еще одна слабость вакцины заключается в  том,  что
для   каждого   представителя   или   небольшой  группы  представителей
вредоносного кода (при условии отсутствия других технологий  защиты)  н
еобходимо иметь отдельные вакцины. При сегодняшнем количестве известных
представителей   вредоносного   кода   вакцинация    является    весьма
сомнительным средством.

     В кругах  заинтересованных  лиц  шли долгие споры о том,  может ли
программный  код  сам  себя  размножать  и  паразитировать  на   других
объектах,  кроме памяти.  Примечательно,  что Питер Нортон отрицательно
ответил на существование компьютерных вирусов, хотя уже через некоторое
время  был  вынужден  начать проект Norton Antivirus.  А все началось с
публикации в американском журнале исходного кода простейшего алгоритма,
саморазмножающегося  и  паразитирующего на COM-программах.  А уже через
некоторое время модифици рованный код этого алгоритма был  обнаружен  в
Венском университете.  Так началась эра нового типа вредоносного кода -
компьютерных  вирусов.  И  первым  представителем  этих  вирусов   стал
простенький   вирус  Vienna.  В  последствии  этот  алгоритм  претерпел
множество модификаций и  целое  семейство  вирусов  с  общим  названием
Vienna разбрелось по всему миру.

     В связи  с  доступностью  и  простотой начального кода и алгоритма
вируса и появлением многочисленных его модификаций  пришлось отказаться
от вакцинации вообще. Зато появились более прогрессивные способы борьбы
- индикаторы заражения,  детекторы измене  ний  и  фаги  с  сигнатурным
поиском.  Задача  индикатора  сводилась  к  минимуму - располагаться на
диске  в  общедоступных  местах  и  декларировать   факт   собственного
изменения.  Как  таковой  защитой  индикация не является,  однако лучше
знать о начале компьютерного нап адения и что-нибудь  предпринять,  чем
разглядывать  "дымящиеся"  свидетельства  окончания работы вредоносного
компонента.  Индикация собственного заражения применяется до сих пор  в
известных  полифагах  и  некоторых коммерческих программах,  например в
текстовом редакторе W&D.  Индикация изменения собственного кода полезна
и  для  контроля  систем  защиты  от несанкционированного копирования и
использования, но лишь как одна из мер. Другой, более продвинутой мерой
индикации стали детекторы.  Они запоминали начало защищ аемых программ,
их  длину  и  контрольную  сумму  байт.  Эта  информация  хранилась   в
специальных  файлах  и использовалась для контроля целостности объектов
при каждом  запуске  детектора.  Это  была  более  совершенная  система
защиты,  так  как  могла констатировать не т олько факт агрессии,  но и
позволяла быстро находить измененные, удаленные и новые объекты. Однако
такая  система  не  слишком  хорошо  помогала  в ликвидации последствий
компьютерного нападения и не позволяла пресечь  агрессию  на  начальном
уровне.  Детекторы изм енения в системе охраняемых объектов применяются
до сих пор как  в  виде  файлов  с  контрольными  суммами  программ  (в
основном зарубежные антивирусные защиты для MS DOS), так и в виде более
мощных систем,  типа ADInf и AVP Inspector (в основном отечественные  а
нтивирусы).  Для  усиления  слабого звена этой защиты такие современные
антивирусные  системы  используют  дополнительный  модуль  Cure-Module,
который  позволяет восстановить измененный объект в состояние на период
начала его защиты.  Однако восстановление гарант  ируется  не  во  всех
случаях  изменений,  а  для  повышения вероятности восстановления такие
системы требуют больше временных ресурсов и больше места на  диске  для
увеличения  размера  своих  баз.  В  идеале,  чтобы  гарантировать 100%
восстановление данных, этим защи там необходимо иметь полные копии всех
защищаемых объектов, что в современных условиях нереально. Поэтому, при
достаточно большом количестве внесенных изменений вредоносным  кодом  в
защищаемый объект,  даже Cure-Module оказываются бессильными.  Еще один
мин ус этой технологии защиты заключается в том,  что они  констатируют
именно факт агрессии и пытаются принять меры уже по факту, а это иногда
бывает поздно.  Например,  если в  период  между  проверками  объектов,
активизируется  троянская  компонента  и удалит все з ащищаемые объекты
(форматирует диск),  то ни один ревизор или инспектор уже не сможет вам
помочь, да и сам он скорее всего падет жертвой такой деструкции. Однако
в качестве инструмента для контроля за изменениями на диске,  то есть в
качестве продвинутого индикатора-детектора, такие системы защиты вполне
годятся,  но не более.  Кстати,  именно  как  индикатор-детектор  такая
система  очень  хороша,  так как известно очень мало фактов обмана этих
систем вредоносным кодом.  И так,  возникла необходимость детектировать
вирусную   опасность  еще  на  этапе  проникновения  ее  на  защищаемый
компьютер.  И вот в качестве такой системы  защиты  и  были  предложены
первые  антивирусы-фаги.  Они  так  же  имели  свои  базы,  но  в базах
(зачастую  встроенных  в  код  самого  фага)  хранились  не  данные   о
защищаемых  объектах,  а данные о известных представителях вредоносного
кода.  В качестве таких данных выступали небольшие фрагменты  вирусного
кода  (сигнатуры)  и  контрольная  сумма  постоянных байт вируса (CRC).
Такая технология защиты позволяла находить вр едоносный  код  до  того,
как  он  сможет  инфицировать  защищаемые  объекты  или  сработает  его
деструктивная  компонента.  С  помощью  фагов  можно   было   проверять
поступающие  в компьютер файлы и поступать с найденными инфицированными
программами в зависимости  от  возм  ожностей  фага  и  ценности  файла
(удалить  файл  или  удалить  вирус  из файла).  Разумеется,  что кроме
проверки  поступающих  файлов  стало  возможным  проверять   и   другие
потенциально  опасные  объекты - загрузочные сектора и память.  Причем,
фаг можно было использоват ь не только для предупреждения  агрессии, но
и лечить объекты в уже инфицированном компьютере.  Главное отличие фага
от ревизора диска  заключается  в  том,  что  у  ревизора  база  данных
привязана  только  к  защищаемому  компьютеру,  а  у  фага она является
универсаль ной (то есть один и тот же фаг можно использовать с одними и
теми  же  базами  на  любых  компьютерах  в  любой ситуации).  Так же к
достоинствам фага следует отнести 100% гарантию излечения файлов при их
инфицировании  известными  вирусами  и  нахождение  новых  моди фикаций
вируса при несовпадении  CRC-вируса.  Еще  более  мощную  защиту  можно
построить на совместном применении фага и детектора.  Так всем известен
симбиоз пар антивирусных программ DrWeb и ADInf, AVP и AVPI. Но следует
учесть,  что  при появлении новой основ ательной модификации известного
вируса и тем более нового вируса,  фаг уже не  сможет  детектировать  и
лечить  вредоносный  код  даже в том случае,  если детектор зафиксирует
факт агрессии на компьютер.  Современные антивирусные  фирмы  стараются
залатать  эту  дыру  путем  частого  обновления  и  дополнения баз фага
(обычно,  когда фаг "знает в лицо" более одного  вируса,  его  называют
полифагом).  Эту особенности не следует относить ни к достоинствам и ни
к недостаткам фагов,  это мера для  борьбы  с  ограничением  технологии
фагов в целом.

     Как бы  ни  были хороши фаги и тем более их симбиоз с детекторами,
все равно не решилась одна важная проблема - непрерывность антивирусной
защиты.  Даже фаги обеспечивают защиту только во время своей работы.  В
промежутках  между  их  запусками   компьюте   р   остается   абсолютно
беззащитным.  Поэтому  следующим  шагом  на  пути развития антивирусных
технологий явились мониторы  -  резидентные  фаги.  Такие  антивирусные
мониторы  после  запуска  остаются  резидентными  в памяти компьютера и
проверяют все файлы,  к которым п роисходит обращение, на наличие в них
известных  вредоносных  кодов.  В  принципе,  к  мониторам  относятся и
резидентные детекторы,  которые при обращениях к файлам проверяют их на
соответствие  данным  в  базе детектора и при обнаружении изменений или
при отсутст вии  данных  в  базе  сообщают  об  этом  пользователю  или
нерезидентному  полифагу.  Однако  они  уступают в эффективности защиты
резидентным  полифагам.  Создание  антивирусных  мониторов  еще  больше
усилило  надежность  защиты,  так как кроме поиска сигнатур в файлах ст
ало  возможным  отслеживать  и  подозрительные  действия  программ.   К
подозрительным   действиям   обычно  относят  любые  файловые  операции
(модификация,  чтение,  изменение атрибутов,  удаление,  и т.д.). Таким
образом,   можно   не   только  обнаруживать  известные  вирусы,  но  и
неизвестные ранее вирусы,  а так же активизацию троянских  компонент  и
предотвращать   компьютерную   агрессию   в   целом.  Но  как  и  любая
антивирусная технология, мониторы имеют свои ограничения:
     - они перехватывают вектора прерываний OS, но вирус может вызывать
прерывания по оригинальным адресам в обход антивирусной защиты;
     - они  блокируют  трассировку векторов прерываний,  но вирус может
противодействовать блокировке или применять другие  способы  нахождения
оригинальных адресов (см. статью DrMad'а в журнале MooN BuG);
     - они перехватывают вектора на момент своей активизации,  а  вирус
мог активизироваться раньше и монитор его не заметит;
     - они  могут  проверять  вектора  прерываний  на  то,  чтобы   они
указывали  в сегмент OS,  а вирус может применить сплайсинг (объяснение
вирусных терминов выходит за рамки статьи);
     - они являются частью операционной системы, а вирус может работать
с дисками через BIOS или через порты;
     - они  очень  назойливы и подозрительны (могут выдавать сообщения,
типа "Программа DN.COM пытается удалить программу KILL_ME.EXE Разрешить
ей это сделать?"),  существенно замедляют работу операционной системы и
очень часто пользователь вынужден сокращать об  ъем  такой  защиты  или
вовсе ее отключать на время работы.


                       Эвристический анализ и эмуляторы

     Даже при применении комплекса антивирусной защиты из перечисленных
выше элементов,  остается нерешенной проблема защиты от новых вирусов и
основательной  модификации  уже  известных.  А  эта  проблема  является
наиболее  актуальной,  так  как  заранее  не  изв естно чего ожидать от
вероятного  вредоносного   кода   в   новой   компьютерной   программе.
Детектирование  неизвестных  вирусов,  положенное  в основу резидентных
мониторов,  не всегда приемлемо из-за явных ограничений и самой сути  -
реагирование  по факту недружелюбн ого поведения.  Каждому пользователю
хотелось бы обезопасить себя еще до того момента,  когда на неизвестную
программу  встанет курсор Norton Commander и палец опустится по клавишу
Enter.  Да  и  самим  вирусологам  (людям,  работающим  над   созданием
антивирусной  защиты)  хотелось  бы отсеивать и автоматизировать работу
над файлами с явными вкраплениями  вредоносного  кода,  чтобы  выделить
больше  времени  на  сложные  зашифрованные  вирусы  и вирусы для новых
платформ. Так и появился широко разрекламированный эвристический анализ
- новая возможность полифагов.

     Эвристический анализ  заключается  в  поиске  небольших фрагментов
кода, используемых в известных вирусах и троянских компонентах. К таким
фрагментам  могут  относиться  маска  файлов для поиска (*.com,  *.exe,
*.bat,  и т.д.),  проверка формата файла,  запи сь в  файл,  дешифровка
участка программы, размещение резидентного кода, удаление файлов и т.д.
Антивирус просматривает файл на наличие заложенных в него  фрагментов и
по их наличию и количеству делает предположение о наличии в проверяемом
файле  вируса  (воз  можно  инфицирован   COM.EXE.TSR.CRYPT   вирусом).
Технология  эвристического  анализа приемлема как для полифагов,  так и
для резидентных мониторов.  С ее помощью удается обнаруживать  огромное
количество  новых  простейших вирусов (студенческие вирусы).  Некоторые
вирусологи даже идут дальше --они  закладывают  в  антивирус  некоторые
признаки  конструкции  вируса  и  при  схожести имеющейся конструкции с
найденной конструкцией  в  файле,  могут  не  только  обнаружить  новые
вирусы,  но и вылечить файл от вируса. Однако у этой те хнологии так же
есть ограничение - эвристический анализ бессилен,  если  вирус  шифрует
свое  тело.  При  статической  шифровке  еще  можно  выделить  признаки
дешифровщика и пользователю будет сообщено,  что  найден  CRYPT  вирус.
Однако   существует  огромное  количество  так  называемых  полиморфных
вирусов.  Эти вирусы характерны тем,  что их  дешифровщик  меняется  от
копии  к  копии  и  устроен таким образом,  что ни зрительно (с помощью
специальных  отладчиков,   дизассемблеров   или   вьюверов   кода)   ни
эвристически  (с помощью техноло гии эвристического анализа) не удается
отличить дешифровщик от основного кода жертвы (так будем  называть  уже
инфицированный объект).

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

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

     На сегодняшний  день  практически   все   антивирусные   программы
полифаги  используют эмуляторы команд и эвристический анализ.  Однако у
этой технологии так же есть недостатки.  Эмулятор не может  эмулировать
абсолютно   все,   иначе   антивирусу   нужно  таскать  с  собой  набор
операционных  систем  (некоторые   вирусы   работоспособны   только   в
определенных  операционных системах),  данные о командах абсолютно всех
процессоров и тонкостей программирования для них (одна и та  же команда
на  процессорах  AMD  и  Intel  Pentium  мож  ет  приводить к несколько
различным  результатам  -   состоянию   регистров),   данные   о   всех
периферийных   (модемы,   клавиатуры,  ...)  и  внутренних  устройствах
(видеокарты, дисководы,
...)  и  портах  этих  устройств,  и  т.д. Да и само создание эмулятора - дело
достаточ но не тривиальное.  Если основываться  на  фирменные  описания
команд, то вирусы определят эмуляцию по ошибкам, допущенным создателями
программного     обеспечения      или      устройств      (так      при
сохранении/восстановлении  регистра флагов декларируется их возвращение
в ис  ходное  состояние,  а  на  самом  деле  не  так).  Есть  и  менее
утонченные,   но   не  менее  действенные  способы  помешать  эмуляции.
Например,  вирус  может  ожидать  некоторого  значения  от  таймера   и
использовать его в качестве некоторой константы в дешифровщике. Еще раз
подчеркну,  что самый главный минус в применении эмуляторов -  это  то,
что  они  не  могут  эмулировать все - и результаты прерываний MS DOS и
результаты вызовов функций  из  ядра  Windows  и  реакцию  MS  Word  на
конструкции в макросах.

     Существуют вирусы,  которые вообще никогда не восстанавливают свой
код в первоначальное состояние и могут при  этом  вообще  не  иметь  ни
одного  совпадения  в  двух копиях.  На сегодняшний день известно всего
лишь несколько  вирусов  такого  типа  (ACG,  PLY,  VCG),  но  и  этого
достаточно,   чтобы   поставить   под   сомнение   обеспечение   полной
безопасности компьютера применением такого рода защиты.


                         Программно-аппаратная защита

     На сегодняшний день мне известен только один программно-аппаратный
комплекс антивирусной  защиты  -  Sheriff.  Я  не  буду  углубляться  в
обсуждение  декларируемых свойств защиты,  а выделю лишь принципиальные
достоинства и недостатки такой технологии.

     Программно-аппаратная защита базируется на том,  что все обращения
к  файловой системе происходят через некий резидентный драйвер защиты к
аппаратному блоку, представляющему собой карту в ISA-слоте. При попытки
нарушения защиты аппаратная часть дол жна блокировать доступ к диску до
подтверждения   пользователем   этой   команды.    Программная    часть
сгенерирована  неким  полиморфным генератором и для каждой копии защиты
существует  своя  копия  драйвера.  Это  сделано   для   предотвращения
деактивации  драйвера  вредон  осным кодом и для его "правки" в памяти.
Обмен  данными  между  драйвером  и  аппаратной  частью  происходит   в
порольном  режиме.  Для  идентификации  драйвера  и  подтверждения  его
полномочий на  обмен  данными  с  аппаратной  частью  существует  некий
регистрационный код, уникальный для каждого экземпляра защиты.

     Большинство известных  на  сегодняшний  день  вирусов  не содержат
какие-либо функции противодействия такой антивирусной  технологии,  что
позволяет  говорить  о  высоком  уровне  обеспечиваемой защиты.  Защита
практически не распространена ни в России ни в  м  ире,  что  опять  же
подчеркивает ее надежность.  Это связано с тем, что чем сильнее уровень
распространения любой защиты (например,  защиты от несанкционированного
доступа,   от  несанкционированного  копирования  и  т.д.)  тем  больше
находится людей,  желающих ее  "  поковырять",  тем  больше  собирается
информации о способах преодоления защиты и тем больше появляется утилит
и технологий ее  обмана.  Массовому  распространению  такой  технологии
препятствует  именно  аппаратная  часть  -  ее  нельзя  скопировать или
выслать по элек тронной почте (FidoNet, Email, ...). Сам принцип защиты
очень  похож  на  принцип резидентного монитора,  отсюда вытекают и уже
перечисленные для мониторов достоинства.  Аппаратная часть  гарантирует
отсутствие   практически  всех  известных  недостатков,  свойствен  ных
мониторам. Опять же, аппаратная часть гарантирует от еще одной слабости
чисто  программных  средств  защиты,  неупомянутых  ранее - практически
любую программную защиту может отключить человек-злоумышленник.  Я  еще
не встречал антивирусного монитора, котор ый бы блокировал перезагрузку
системы и требовал бы пароль или ключевой диск для своего отключения. В
случае   же  программно-аппаратного  комплекса  будет  гораздо  труднее
вскрыть корпус системного блока и извлечь  аппаратную  часть.  Комплекс
защищает   информаци  ю  от  ошибок  программного  обеспечения,  ошибок
пользователя,  от сбоев в комплектующих компьютера и от  многих  других
внешних воздействий.

     Несмотря на  такое  большое  количество  принципиальных достоинств
имеется ряд и принципиальных недостатков.  Во первых,  далеко не каждый
пользователь  возьмет  на  себя смелость установки платы в персональный
компьютер.  Гибкость настройки системы являет  ся  как  плюсом,  так  и
минусом   системы.   Опять   же   не   каждый  пользователь  согласится
добросовестно  изучить  объемную  инструкцию  по  установке  защиты   и
проведет  довольно  приличное  время  по  ее  настройке  под конкретные
требования.  Защита рассчитана на работу с  ди  сками,  размеченными  в
FAT12  (я  давно уже не видел таких дисков) и FAT16.  Если учесть,  что
сейчас на  большинстве  компьютеров  установлена  операционная  система
Windows   95/98,   которая   позволяет   работать   с   дисками  FAT32,
обеспечивающим доступ к  дискам  большой  емкости  (а  диски  маленькой
емкости  уже давно не продают в компьютерных фирмах) и хранить данные в
более  компактном  виде,  то  становится  ясно,  что   на   большинстве
компьютеров  такую  систем  просто невозможно применить.  На оставшемся
меньшинстве компьютеров и спользуются файловые системы  HPFS,  NTFS,  и
другие,  то  есть,  кластерные  системы,  то  круг возможных счастливых
обладателей системы защиты сужается еще как минимум в  три-четыре раза.
Таким   образом,  потенциальными  пользователями  этой  системы  защиты
являются те, кто чисто материально уже не способен приобрести новый или
модернизировать   старый   компьютер.   Следовательно,   их  финансовое
состояние ставит под сомнение вообще применение этой  системы.  Но,  не
будем  углубляться  в  подробности.  Следующей  отличительной че ртой в
худшую сторону является практический запрет на  модификацию исполняемых
программ  без  ведома  пользователя.  Такой подход явно не приемлем для
программистов,  у  которых  один  и  тот  же  исполняемый  файл   может
модернизироваться  по  10  раз в час.  И даже если компьютер приобретен
тетенькой или дяденькой,  которые не программисты и их  в  принципе  бы
устроила  технология  защиты,  но скорее всего у них есть любимое чадо,
которое с удовольствием копается в Visual Basic или Delphi, то это чадо
будет   протестовать  прот  ив  запретов  системы  защиты.  Практически
доказано,  что контролировать всю аппаратную часть даже эта  защита  не
может  и  прямое  обращение к дискам через порты позволяет вредоносному
коду уничтожать данные с защищаемого диска.  Защита не гарантирует  то,
что   по   селившийся   на  компьютере  вирус  не  сможет  инфицировать
передаваемые с компьютера файлы,  следовательно авторитет  пользователя
может  пострадать.  Комплекс  не  гарантирует защиту от сетевых червей,
ворующих информацию с компьютера и распространяющих  компромат  (о  чем
было  сказано  в  самом  начале).  Комплекс  не обеспечивает защитой от
злободневных макро вирусов и скрипт-вирусов.  Комплекс  не  гарантирует
защиту при загрузке с дискеты.

     Проблему макро вирусов предлагается решить двумя способами. Первый
- это раскидать goat-файлы по всему диску так, чтобы goat-файл оказался
первым  найденным  в  каталоге  файлом.  Сами же goat-файлы должны быть
защищены  комплексом  как  неизменяемые.  Од  нако  существуют  вирусы,
которые  начинают инфицирование файлов в каталоге со второго найденного
файла,  а то и с просто случайного  файла.  Так  же,  некоторые  вирусы
предъявляют   требования   к  потенциальным  жертвам,  заключающимся  в
определенных критериях длины файла (кратность 2,  3,  5,  7, 9 и т.д.),
нахождении  в  файле  блока  повторяющихся  байт,  нахождении  в  файле
определенных  команд,  критерии  к  дате/времени  создания   файла,   к
нахождении  в  имени  файла  определенных символов и т.д.  Уже из этого
становится ясно, что помещение в каждый каталог на диске полного набора
goat-файлов,  отвечающих  всем  мыслимым и немыслимым требованиям будет
сильно захламлять жесткий диск (собственно,  а за что же  тогда  платил
пользователь,  покупая  диск?  Чтобы  его  забить  всяким хламом,  сопр
овождающим  антивирусную   защиту?).   Второй   способ   -   применение
программного  комплекса  Пристав.  Однако  применение  самостоятельного
комплекса не подчеркивает достоинства защиты, а скорее наоборот, ставит
под сомнение целесообразность ее применения.

     В общем  то  идею  подобной  защиты  можно  реализовать  и другими
способами,  основанными на другой технологии.  К примеру,  можно просто
"иммунизировать"  каждую  поступающую программу в компьютер так,  чтобы
при каждом запуске этой программы выдавалось уве домление защите о том,
что  программа  имеет право на файловые операции (можно даже для каждой
программы указать какие именно).  Драйвер или  аппаратная  часть  будет
оценивать  правомерность  запрошенного уровня доступа и не возмущаться,
когда  программа  BP.EXE  будет  генерировать  очередную  программу  по
бухучету.  Запрос  на  уровень  доступа  можно  организовать  с помощью
определенных (неиспользуемых больше  нигде)  функциях  программных  или
аппаратных  прерываний  с  определенным  содержанием  регистров  общего
назначения ил и посредством обращения в порты аппаратной  части защиты.
Поскольку   большинство   вирусов   отрабатывают   раньше  жертвы,  то,
соответственно,  они не смогут уведомить защиту о  правомерности  своих
действий  и  получат заслуженный отпор со стороны защитного комплекс а.
Код правомерности доступа может устанавливаться уникальным  для каждого
компьютера,  а с защиты будут сняты неоправданные ограничения на формат
файловой системы и применения на компьютерах программистов.

     Однако и у такой технологии защиты найдутся как свои плюсы,  так и
свои  минусы.  Тем не менее мы плавно подошли к вопросу о защите данных
на уровне операционной  системы,  как  гарантирующей  наиболее  высокую
сохранность и наименьшие ограничения.


                  Защита на уровне ядра операционной системы

     Не всегда даже  владельцу  компьютера  для  выполнения  конкретной
работы  требуются  права  администратора (то есть полные полномочия для
управления  компьютером).  Практически   никогда   не   бывает   нужным
модифицировать  системные  файлы  операционной системы и ли большинство
установленных программ (ну  зачем  пользователю  права  на  модификацию
файлов WORD.EXE,  EXCEL.EXE,  BP.EXE,  LEXICON.EXE, NORMAL.DOT и т.д.).
При проведении долгих часов в Internet (ну допустим  пользователь решил
посмотреть  обновления  на  порноса йтах) практически никогда не бывает
нужным доступ к 99%  установленных программ и  тем  более  к  файлам  с
документами. А ведь на сегодняшний день большинство вирусов и троянских
компонент,  ворующих информацию,  приходят на компьютер непосредственно
через  сеть  .  Так  почему  же  не  воспользоваться  той  операционной
системой,  которая позволит разграничить уровень доступа к  ресурсам  и
файлам на уровне пользовательских аккаунтов? Войдя в систему под именем
ICQ_USER вы получите доступ к почтовым средствам,  но ни один вирус или
троянская  компонента  не  смогу  разрушить  недоступные на этом уровне
привилегий  данные  или  украсть  информацию,   к   которой   применено
отсутствие  доступа.  Если  вы ярый поклонник Windows 95/98,  то вы уже
можете настроить свою систему так, чтобы избави ться от угрозы атаки от
большинства  уже  известных  вирусов.  Однако  система защиты в этих OS
довольно слаба.  Чтобы обеспечить  большую  надежность  вам  достаточно
перейти  на  Windows  NT.  Если  вы поклонник OS/2,  то вам практически
нечего бояться. А уж если вы о божаете Linux или Unix, то вообще можете
забыть про все, что я здесь наговорил.

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


                                    Выводы

     Ни одна  из  антивирусных  систем  защиты  не  обеспечивает полную
надежность и не отвечает пользовательским требованиям,  предъявляемым к
программному обеспечению такого рода.  То есть, панацеи от компьютерных
вирусов не было,  нет и не будет.  Раз выпуще нный из бутылки джин  уже
никогда не вернется в свое заточение.

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

     Чем больше рекламируется разработчиками система защиты,  тем менее
она пригодна для пользователей.  Чем больший процент вредоносного  кода
обещается  остановить  с  помощью  антивируса,  тем больше неудобств вы
будете испытывать от такой защиты сами.

     Наибольшую защиту обеспечивает идеология  построения  операционной
системы  и  приложений  для  нее.  Даже для самой защищенной Windows NT
существуют макро вирусы и черви,  которые сложно остановить одними лишь
мерами  разграничения  доступа.  Необходимо вс егда еще иметь некоторый
комплекс антивирусных продуктов.  Но  лучше  всего  -  это  продуманный
подход   ко  всему,  что  вы  делаете  на  компьютере.  Существуют  ряд
спецификаций  для  ведения   документации   и   прекрасные   редакторы,
поддерживающие  эти  спецификации,  и  прим  енение  этих  редакторов и
форматов файлов навсегда вас избавит от горячей проблемы макро вирусов.
Так что самое главное звено во всей системе безопасности был и остается
пользователь компьютера,  скорее  даже  не  пользователь,  а  системный
администратор. А чт о делать? Каждый пользователь в нашей стране должен
быть немножко сисадмином.  Это как нельзя в нашей  стране  пользоваться
частным  автомобилем  и  не  уметь  поставить запасное колесо,  это как
нельзя жениться и надеяться,  что кто-то сможет решать ваши проблемы  с
тещей...  Это они на западе могут себе позволить не задумываться о том,
как  защитить  данные  на  собственном  компьютере,  это  у  них  можно
сломанную  машину бросить за двадцать километров от города и вызвать по
сотовому такси и ремонтную бригаду...  А у нас  нельзя.  У  нас  думать
нужно своей головой.

     В заключении   хочу   сказать,   что   все   названия  и  ситуации
вымышленные, любые совпадения случайны.

Ваш RedArc


(C) NF, 1998-2004