Антивирусные программы
Антивирусная программа (антивирус) — изначально программа для обнаружения и лечения вредоносных объектов или инфицированных файлов, а также для профилактики — предотвращения заражения файла или операционной системы вредоносным кодом.
Многие современные антивирусы позволяют обнаруживать и удалять также троянские программы и прочие вредоносные программы. Существуют программы - файрволы, которые также способствуют защите компьютерных сетей или отдельных узлов от несанкционированного доступа, однако их основная задача — не пропускать (фильтровать) пакеты, не подходящие под критерии, определённые в конфигурации, т.е. от несанкционированного доступа извне или, наоборот, для ограничения связи программ с внешними источниками из-за возможной утечки информации.
Первые наиболее простые антивирусные программы появились почти сразу после появления вирусов. Сейчас разработкой антивирусов занимаются крупные компании. Как и у создателей вирусов, в этой сфере также сформировались оригинальные приёмы — но уже для поиска и борьбы с вирусами. Современные антивирусные программы могут обнаруживать сотни тысяч вирусов, но, ни одна из них не даст 100% защиты.
Антивирусное программное обеспечение состоит из подпрограмм, которые пытаются обнаружить, предотвратить размножение и удалить компьютерные вирусы и другие вредоносные программы.
Метод соответствия определению вирусов в словаре
Обнаружение, основанное на сигнатурах.
Сигнату́ра ата́ки (вируса) — характерные признаки атаки или вируса, используемые для их обнаружения. Большинство современных антивирусов, сканеров уязвимостей и систем обнаружения вторжений (СОВ) используют «синтаксические» сигнатуры, взятые непосредственно из тела атаки (файла вируса или сетевого пакета, принадлежащего эксплойту). Также существуют сигнатуры, основанные на поведении или аномалиях — например, слишком агрессивное обращение к какому-либо сетевому порту на компьютере.
Это метод, когда антивирусная программа, просматривая файл, обращается к антивирусным базам, которые составлены производителем программы-антивируса. В случае, соответствия какого либо участка кода просматриваемой программы известному коду (сигнатуре) вируса в базах, программа-антивирус может по запросу выполнить одно из следующих действий:
1. Удалить инфицированный файл.
2. Заблокировать доступ к инфицированному файлу.
3. Отправить файл в карантин (то есть сделать его недоступным для выполнения с целью недопущения дальнейшего распространения вируса).
4. Попытаться «вылечить» файл, удалив вирус из тела файла.
5. В случае невозможности лечения/удаления, выполнить эту процедуру при следующей перезагрузке операционной системы.
Для того чтобы, такая антивирусная программа успешно работала на протяжении долгого времени, в базу сигнатур вирусов нужно периодически загружать (обычно, через Интернет) данные о новых вирусах. Если бдительные и имеющие склонность к технике пользователи определят вирус по горячим следам, они могут послать зараженные файлы разработчикам антивирусной программы, а те затем добавляют информацию о новых вирусах в свои базы.
Антивирусные программы, созданные на основе метода соответствия определению вирусов в словаре, обычно просматривают файлы тогда, когда компьютерная система создаёт, открывает, закрывает или посылает файлы по электронной почте. Таким образом, вирусы можно обнаружить сразу же после занесения их в компьютер и до того, как они смогут причинить какой-либо вред. Надо отметить, что системный администратор может составить график для антивирусной программы, согласно которому могут просматриваться (сканироваться) все файлы на жёстком диске.
Хотя, антивирусные программы, созданные на основе поиска соответствия определению вируса в словаре, при обычных обстоятельствах, могут достаточно эффективно препятствовать вспышкам заражения компьютеров, авторы вирусов стараются держаться на полшага впереди таких программ-антивирусов. Они создают «олигоморфические», «полиморфические» и, самые новые, «метаморфические» вирусы, в которых некоторые части участки кода перезаписываются, модифицируются, шифруются или искажаются так, чтобы невозможно было обнаружить совпадение с определением в словаре вирусов.
Создание и распределение сигнатур
Сигнатуры антивирусов создаются в результате кропотливого анализа нескольких копий файла, принадлежащего одному вирусу. Сигнатура должна содержать только уникальные строки из этого файла, настолько характерные, чтобы гарантировать минимальную возможность ложного срабатывания — главный приоритет любой антивирусной компании.
Разработка сигнатур — ручной процесс, тяжело поддающийся автоматизации. Несмотря на массу исследований, посвящённых автоматической генерации сигнатур, нарастающий полиморфизм (и «метаморфизм») вирусов и атак делают синтактические сигнатуры бессмысленными. Антивирусные компании вынуждены выпускать большое количество сигнатур для всех вариантов одного и того же вируса, и если бы не закон Мура, ни один современный компьютер уже не смог бы закончить сканирование большого числа файлов с такой массой сигнатур в разумное время. Так, в марте 2006 года сканеру Norton Antivirus было известно около 72 131 вирусов, а база этой программы содержала порядка 400 000 сигнатур.
В нынешнем виде, базы сигнатур должны пополняться регулярно, так как большинство антивирусов не в состоянии обнаруживать новые вирусы самостоятельно. Любой владелец ПО, основанного на сигнатурах, обречён на регулярную зависимость от обновления сигнатур. Это составляет основу бизнес-модели производителей антивирусов и СОВ.
Своевременная доставка новых сигнатур до пользователей также является серьёзной проблемой для производителей ПО. Современные вирусы и черви распространяются с такой скоростью, что к моменту выпуска сигнатуры и доставки её на компьютер пользователей, эпидемия уже может достигнуть своей высшей точки и охватить весь мир. По опубликованным данным, доставка сигнатуры занимает от 11 до 97 часов в зависимости от производителя, в то время как теоретически, вирус может захватить весь интернет меньше, чем за 30 секунд.
В большинстве ПО по безопасности база сигнатур является ядром продукта, наиболее трудоёмкой и ценной частью. Именно поэтому большинство вендоров предпочитает держать свои сигнатуры закрытыми — хотя и в этой области существует ряд открытого ПО (напр., ClamAV), а также исследования по обратной разработке закрытых сигнатур. Журнал Virus Bulletin регулярно публиковал сигнатуры новых вирусов вплоть до 2000 года.
Достоинство синтаксических сигнатур в том, что они позволяют определять конкретную атаку с высокой тонностью и малой долей ложных вызовов.
Синтаксические сигнатуры имеют ряд недостатков:
1. Неспособны выявить какие-либо новые атаки
2. Беззащитны перед полиморфическими вирусами и изменёнными версиями той же атаки
3. Требуют регулярного и крайне оперативного обновления
4. Требуют кропотливого ручного анализа вирусов.
Метод эвристического сканирования призван улучшить способность сканеров применять сигнатуры и распознавать модифицированные вирусы в тех случаях, когда сигнатура совпадает с телом неизвестной программы не на 100%. Данная технология, однако, применяется в современных программах очень осторожно, так как может повысить количество ложных срабатываний.
Метод обнаружения странного поведения программ
Обнаружение аномалий — динамический метод работы антивирусов, хостовых и сетевых систем обнаружения вторжений. Программа, использующая этот метод, наблюдает определённые действия (работу программы/процесса, сетевой трафик, работу пользователя), следя за возможными необычными и подозрительными событиями или тенденциями.
Антивирусы, использующие метод обнаружения подозрительного поведения программ, не пытаются идентифицировать известные вирусы. Вместо этого они прослеживают поведение всех программ. Если программа пытается записать какие-то данные в исполняемый файл (exe-файл), программа-антивирус может пометить этот файл, предупредить пользователя и спросить, что следует сделать.
В отличие от метода соответствия определению вируса в словаре, метод подозрительного поведения даёт защиту от совершенно новых вирусов и сетевых атак, которых ещё нет ни в одной базе вирусов или атак. Однако программы, построенные на этом методе, могут выдавать также большое количество ошибочных предупреждений, что делает пользователя маловосприимчивым к предупреждениям. Если пользователь нажимает мышью на окно «Принять» («Accept») в каждом случае появления такого предупреждения, антивирусная программа не приносит никакой пользы. В последнее время эта проблема ещё более усугубилась, так как стало появляться всё больше невредоносных программ, модифицирующих другие exe-файлы, несмотря на существующую проблему ошибочных предупреждений.
Метод обнаружения при помощи эмуляции
Обнаружение, основанное на эмуляции — метод работы антивирусной программы, при котором подозрительный файл либо запускается в тщательно контролируемой среде, либо эмулируется его исполнение с целью выявления тех признаков вредоносного кода, которые появляются только во время исполнения программы.
Некоторые программы-антивирусы пытаются имитировать начало выполнения кода каждой новой вызываемой на исполнение программы перед тем как передать ей управление. Если программа использует самоизменяющийся код или проявляет себя как вирус (то есть немедленно начинает искать другие exe-файлы например), такая программа будет считаться вредоносной, способной заразить другие файлы. Однако этот метод тоже изобилует большим количеством ошибочных предупреждений.
Метод использования «песочницы»
Ещё один метод определения вирусов включает в себя использование «песочницы» (зачастую основанной на виртуальной машине). Песочница имитирует операционную систему и запускает исполняемый файл в этой имитируемой системе.
После исполнения программы, антивирусное программное обеспечение анализирует содержимое песочницы на присутствие каких либо изменений, которые можно квалифицировать как вирус. Из-за того, что быстродействие системы снижается и требуется достаточно продолжительное время для выполнения программы, антивирусные программы, построенные по этому методу, обычно используются только для сканирования по запросу пользователя. Следует отметить, что эффективность данных программ намного выше, чем у всех остальных, но и затраты на их работу также выше. Несомненно, эти программы представляют интерес для профессионалов, занимающихся вопросами компьютерной безопасности и восстановлением данных после несанкционированного доступа в компьютер пользователя или атак на сервер.
Метод «Белого списка»
Общая технология по борьбе с вредоносными программами — это «белый список». Вместо того, чтобы искать только известные вредоносные программы, эта технология предотвращает выполнение всех компьютерных кодов за исключением тех, которые были ранее обозначены системным администратором как безопасные.
Выбрав этот параметр отказа по умолчанию, можно избежать ограничений, характерных для обновления сигнатур вирусов. К тому же, те приложения на компьютере, которые системный администратор не хочет устанавливать, не выполняются, так как их нет в «белом списке». Так как у современных предприятий есть множество надежных приложений, ответственность за ограничения в использовании этой технологии возлагается на системных администраторов и соответствующим образом составленные ими «белые списки» надежных приложений. Работа антивирусных программ с такой технологией включает инструменты для автоматизации перечня и эксплуатации действий с «белым списком».
Технология эвристического анализа
Методы эвристического сканирования не обеспечивают какой-либо гарантированной защиты от новых, отсутствующих в сигнатурном наборе компьютерных вирусов, что обусловлено использованием в качестве объекта анализа сигнатур ранее известных вирусов, а в качестве правил эвристической верификации — знаний о механизме полиморфизма сигнатур. В то же время, этот метод поиска базируется на эмпирических предположениях, полностью исключить ложные срабатывания нельзя.
В ряде случаев эвристические методы оказываются чрезвычайно успешными, к примеру, в случае очень коротких программных частей в загрузочном секторе: если программа производит запись в сектор 1, дорожку 0, сторону 0, то это приводит к изменению раздела накопителя. Но кроме вспомогательной программы fdisk эта команда больше нигде не используется, и потому в случае ее неожиданного появления речь идёт о загрузочном вирусе.
В процессе эвристического анализа производится проверка эмулируемой программы анализатором кода. К примеру, программа инфицирована полиморфным вирусом, состоящим из зашифрованного тела и расшифровщика. Эмулятор кода эмулирует работу данного вируса по одной инструкции, после этого анализатор кода подсчитывает контрольную сумму и сверяет ее с той, которая хранится в базе. Эмуляция будет продолжаться до тех пор, пока необходимая для подсчета контрольной суммы часть вируса не будет расшифрована. Если сигнатура совпала — программа идентифицирована.
Другим распространённым методом эвристического анализа, применяемым большой группой антивирусов, является декомпиляция подозрительной программы и анализ её исходного кода. Исходный код подозрительного файла проходит сверку и сравнение с исходным кодом известных вирусов и образчиков вирусной активности. В случае, если определённый процент исходного кода идентичен коду известного вируса или вирусной активности, файл отмечается как подозрительный, о чем оповещается пользователь.
Недостатки эвристического сканирования
Чрезмерная подозрительность эвристического анализатора может вызывать ложные срабатывания при наличии в программе фрагментов кода, выполняющего действия и/или последовательности, в том числе и свойственные некоторым вирусам. В частности, распаковщик в файлах, запакованных PE-упаковщиком (Win)Upack вызывает ложные срабатывания целого ряда антивирусных средств, де-факто не признающих такой проблемы.
Наличие простых методик обмана эвристического анализатора. Как правило, прежде чем распространять вредоносную программу (вирус), ее разработчики исследуют существующие распространенные антивирусные продукты, различными методами избегая ее детектирование при эвристическом сканировании. К примеру, видоизменяя код, используя элементы, выполнение которых не поддерживается эмулятором кода данных антивирусов, используя шифрование части кода и др.
Несмотря на заявления и рекламные проспекты разработчиков антивирусных средств относительно совершенствования эвристических механизмов, эффективность эвристического сканирования на данный момент далека от ожидаемой. Независимые тесты компонентов эвристического анализа показывают, что уровень обнаружения новых вредоносных программ составляет не более чем 40-50 % от их числа.[1](англ.)
Даже при успешном определении, лечение неизвестного вируса практически всегда является невозможным. Как исключение, некоторыми продуктами возможно лечение однотипных и ряда полиморфных, шифрующихся вирусов, не имеющих постоянного вирусного тела, но использующих единую методику внедрения. В таком случае, для лечения десятков и сотен вирусов может существовать одна запись в вирусной базе, как это реализовано, к примеру, в антивирусе И. Данилова.
Замечания
1. Иногда приходится отключать антивирусную защиту при установке обновлений программ, таких, например, как Windows Service Packs. Антивирусная программа, работающая во время установки обновлений, может стать причиной неправильной установки модификаций или полной отмене установки модификаций. Перед обновлением Windows 98, Windows 98 SE или Windows ME на Windows XP лучше отключить защиту от вирусов, в противном случае процесс обновления может завершиться неудачей.
2. Некоторые антивирусные программы на самом деле являются шпионским ПО, которое под них маскируется. Лучше несколько раз проверить, что антивирусная программа, которую вы загружаете, действительно является таковой. Ещё лучше использовать ПО известных производителей и загружать дистрибутивы только с сайта разработчика.
3. Обучение пользователей может стать эффективным дополнением к антивирусному программному обеспечению. Простое обучение пользователей правилам безопасного использования компьютера (например не загружать и не запускать на выполнение неизвестные программы из Интернета) снизило бы вероятность распространения вирусов и избавило бы от надобности пользоваться многими антивирусными программами.
4. Пользователи компьютеров не должны всё время работать с правами администратора. Если бы они пользовались режимом доступа обычного пользователя, то некоторые разновидности вирусов не смогли бы распространяться (или, по крайней мере, ущерб от действия вирусов был бы меньше). Это одна из причин, по которым вирусы в Unix-подобных системах относительно редкое явление.
5. Метод обнаружения вирусов по поиску соответствия в словаре не всегда достаточен из-за продолжающегося создания всё новых вирусов, метод подозрительного поведения не работает достаточно хорошо из-за большого числа ошибочных решений о принадлежности к вирусам не заражённых программ.
6. Различные методы шифрования и упаковки вредоносных программ делают даже известные вирусы не обнаруживаемыми антивирусным программным обеспечением. Для обнаружения этих «замаскированных» вирусов требуется мощный механизм распаковки, который может дешифровать файлы перед их проверкой. Однако во многих антивирусных программах эта возможность отсутствует и, в связи с этим, часто невозможно обнаружить зашифрованные вирусы.
7. Некоторые антивирусные программы могут значительно понизить быстродействие. Пользователи могут запретить антивирусную защиту, чтобы предотвратить потерю быстродействия, в свою очередь, увеличивая риск заражения вирусами. Для максимальной защищённости антивирусное программное обеспечение должно быть подключено всегда, несмотря на потерю быстродействия. Некоторые антивирусные программы (как AVG for Windows) не очень сильно влияют на быстродействие.
8. Некоторые из продуктов для лучшего обнаружения используют несколько ядер для поиска и удаления вирусов и программ-шпионов. Например, в разработке NuWave Software используется одновременно пять ядер (три для поисков вирусов и два для поиска программ-шпионов).