CompoWiki : АнатомияАнтивирусов

Статья из базы знаний сайта http://virusinfo.info/

Анатомия и физиология антивирусов


И так приступим, помолясь ;). Для начала разберемся с тем, что такое антивирус и какие функции он должен выполнять. Итак, антивирусом принято называть программный комплекс, обеспечивающий защиту компьютера от вредоносных программ. С возрастанием числа факторов, угрожающих безопасности системы, в составе многих антивирусов появились утилиты для обеспечения сетевой безопасности, восстановления системы, борьбы с рекламой и некоторые другие. Кроме того, практически все современные программы этого класса не ограничиваются защитой только от вирусов, а детектируют так же троянские программы, Adware, Spyware и некоторые другие. (классификация и описание вредоносных программ описаны на странице Spyware).
Теперь перейдем к анатомии антивируса, как говорится «Тигр, в основном, состоит из трех частей: передняя часть, задняя часть, а это, товарищи, хвост!». Основа функциональности большинства антивирусов заложено в ядро, которое и отвечает за проверку файлов, кроме того, обычно имеется сканер, монитор активности пользователя, модуль обновления, модуль контроля скриптов и модули контроля трафика.

Начнем с начала, с ядра. Ядро – это сердце программы, которое и отвечает за ее «жизнь». Именно на ядро возложена функция проверки информации, хранящейся на вашем компьютере, и выявление ее «вредных» свойств. От того, какие технологии были реализованы в ядре, во многом и будет зависеть на сколько хорошо антивирус справляться со своими функциями.
Основным методом обнаружения вредоносного кода у большинства антивирусов, является сигнатурный анализ (выявление вирусов по их цифровому «отпечатку» или сигнатуре). Важнейшие характеристики такого анализа – это скорость и количество системных ресурсов, затраченных на его проведение, а так же количество ложных обнаружений вирусов. Немалую роль в этом играет размер и полнота сигнатур, а так же технологии их создания и использования (некоторые технологии детектирования вирусов по сигнатурам обсуждались здесь). Чем больше сигнатура, тем обычно меньше вероятность ложного обнаружения и выше достоверность определения вирусов. Вместе с тем увеличивается также потребность в вычислительных ресурсах, необходимых ядру для проверки.

Главным минусом этого метода является низкая эффективность при обнаружении новых вирусов, а также модификаций известных уже вирусов, и, как следствие, снижение эффективности защиты в целом. Так же большим недостатком сигнатурного метода обнаружения вирусов является большой разрыв по времени между появлением первых случаев заражения и появления метода их лечения.
Это происходит потому, что отпечаток может быть создан только для вируса, попавшего на анализ в антивирусную компанию. И как следствие, новые и не получившие широкого распространения вирусы довольно долго не обнаруживаются ни одним антивирусом.
Еще одной серьезной проблемой сигнатурного анализа является уязвимость перед различными методами изменения структуры файлов вируса, как упаковка, шифрование кода вирусов, а так же применение технологии полиморфной защиты. Все эти методы защиты изменяют «внешний вид» файла, вследствие чего цифровой отпечаток перестает «подходить» к вирусу, и антивирус не может обнаруживать даже те вирусы для которых у него есть «отпечатки».

Для преодоления этих недостатков компании-разработчики применяют различные технологии распаковки и восстановления исходного вида файла. От того, насколько хорошо разработана технология, во многом зависит эффективность антивируса. Вот примеры тестов упаковщиков с сайта ex-vdcom.ru:

UPX 1.90wFSG 2.0CEXE 1.0bEZIP 1.0MEW11 SE 1.2YODA CRYPTOR 1.2PECOMPACT 2.40
KAV +++++++
DrWeb ++-+-++
Vba32 ++--+++
NOD32-+--++-

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

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

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

Помимо этих двух классических направлений, все антивирусы в настоящее время контролируют и трафик поступающий из сетей. Для этого используются различными методами. Обязательно в джентльменском наборе любого уважающего себя сканера должны быть модули мониторинга почтовых сообщений и WEB страниц. При этом особое внимание уделяется мониторам почтового трафика, т.к. до 90% всех вирусов проникает на компьютер именно через почту. Обязательным для этих модулей считается контроль входящих сообщений по протоколу POP3 и исходящих по SMTP. Однако с развитием средств общения многие производители «научили» свои мониторы контролировать и обмен сообщениями с news-серверами, и работе с IMAP протоколом. Вторым направлением контроля получаемой информации служит WEB. Большинство антивирусов имеют отдельный модуль контролирующий безопасность получаемых WEB страниц. Эти модули, наряду с традиционной антивирусной проверкой, выявляют потенциально опасные скрипты и компоненты, а так же противостоят совместно с firewall-ом попыткам похищения частной информации пользователей.

Как мы уже говорили, в основе большинства антивирусов лежит технология сигнатурного анализа и ее эффективность зависит от наличия цифровых «снимков» как можно большего количества вирусов. А так как их число постоянно возрастает, то эти снимки были вынесены в отдельные файлы – вирусные базы. Со временем сюда стали заносить и правила для эвристического и поведенческого поиска вирусов, а так же другую служебную информацию. Современные антивирусы зачастую оцениваются пользователями по числу записей в этих базах, однако хотелось бы предостеречь наших читателей от столь необдуманного шага. Число записей конечно важный показатель, однако он мало говорит о количестве обнаруживаемых вирусов, потому что этот показатель зависит от конкретной технологии. Так один антивирус может находить по одной записи несколько десятков вирусов, а другой для каждой новой модификации будет включать отдельную запись. Так же число записей не говорит об их актуальности, большая часть записей в базе может приходится на старые вирусы неопасные для вашей системы, либо на вирусы разработанные под другую платформу. И наконец, некоторые производители антивирусов «раздувают» объем базы из маркетинговых соображений. Кроме информации о вирусах некоторые разработчики выносят в свои базы и методы работы с упаковщиками и шифраторами для того, что бы иметь возможность включения поддержки новых версий этих программ без необходимости выпуска новых версий ядра. Однако этот метод вместе со всеми плюсами имеет и минусы, как-то замедление работы программы и увеличение объема передаваемой по сети информации. Для того, чтобы оперативно пополнять базы описаниями новых вирусов практически все антивирусы имеют в составе модуль обновления. На этот модуль также возложена функция обновления и самой программы, при выходе новых версий. От того насколько удобно и рационально реализован модуль обновления, зависят ваши расходы на Интернет и оперативность обновления, а значит и уровень защиты в целом.

Автор – Minos