Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #35, ОКТЯБРЬ 2003 г.

Как антивирус находит жертвы

TanaT (TanaT@hotmail.ru)

Спецвыпуск Xakep, номер #035, стр. 035-080-2


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

Анализ поведения испытуемого объекта и принятие решения - это реализация искусственного интеллекта. Разработчики должны сами ответить на такие вопросы, как "Какие аспекты активности программы учитывать, а какие нет?" и "Каким образом принимать решение?" Математически все сводится к следующей схеме: каждое возможное действие программы оценивается, например, по шкале от -10 до 10. Здесь я делаю допущение, что код может вести себя не только "плохо" (за это можно давать положительную оценку), но и "хорошо" (отрицательная оценка соответственно). В результате, если объект к концу анализа наберет оценку выше 50 (опять же, например), его можно считать инфицированным. Что же до ответа на первый вопрос (о видах деятельности), то учитывать надо как можно больше: обращение к реестру, системным файлам, адресной книге, другим файлам, интернету и т.д. Если на первый взгляд описанный способ кажется простым в реализации, то на деле это не так. Можно привести пример программы (хотя бы всеми любимого почтового клиента или диагностического приложения, просто выводящего все вышеперечисленные данные на экран), которая будет вести себя "плохо", но на практике окажется невинной. Так что все не так просто.

Еще одной проблемой эвристиков является вопрос тестирования. Именно поэтому я упомянул тестеров в самом начале рассказа об этой увлекательной технологии. Как можно убедиться в эффективном функционировании эвристика? Прежде всего, его следует проверить на уже существующих вирусах. Это сделать довольно просто: любой пользователь интернета может найти от 2 до 4 тысяч вредоносных кодов (червей, троянцев, вирусов, бэкдоров), свободно лежащих в Сети. Эти цифры продиктованы личным опытом, так как мне не раз приходилось участвовать в подобного рода испытаниях (имеются в виду тесты эффективности сканеров). Но ведь эвристик - первый рубеж обороны, средство, созданное для борьбы с еще не известными вирусами. А с известными и сигнатурный поиск справляется! В это все и упирается. Создавать "хороший", хитрый и неуловимый вирус ни один из антивирусных экспертов не станет. А откуда еще они могут взяться? Еще раз упомяну, что многие разработчики антивирусов вообще не включают в свой пакет эвристические анализаторы. Дополнительным доводом в пользу такого подхода служит и дороговизна разработки и внедрения этой технологии.

Назад на стр. 035-080-1  Содержание  Вперед на стр. 035-080-3