Предсказания в вирусологии или Сейфбокс для вируса.

Mar 07, 2012 18:18

Формула идеального антивируса выглядит примерно так:
  • 100% защита от всего зловредства,
  • 0% ложных срабатываний,
  • 0% нагрузки на систему
  • и никаких вопросов пользователю.
И, разумеется, в самом идеале - навсегда и забесплатно :)

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

Кто-то инвестирует в вирус-лабы, автоматизацию и принципиально новые технологии, кто-то (особенно бесплатные антивирусные компании) не имеют таких возможностей - и выпускают весьма средненькие по реальному функционалу (не по кнопкам в интерфейсе) бесплатные «мухобойки». Да и главный антивирусный функционал у них «секонд-хенд», поскольку сидят они на ворованных сигнатурах (автоматом лепят сигнатуры на все файлы, которые кто-либо уже задетектил до них). Некоторые компании тоже сидят на краденом детекте - но продвигают свою дженерик-туфту по цене платных «настоящих» продуктов. Но все эти компании стремятся к идеальным продуктам - защищать на 100% и не нагружать пользователя ни вопросами, ни тормозами, ни ценой.

Но из всех пяти параметров идеального антивируса сегодня для нас самый интересный -  первый. Что это за 100%? Какого зловредства? Ответ такой же идеалистический, как и вся схема - 100% защиты от всех уже известных и всех будущих угроз (вот так, и не иначе).

С первым (защита от известных угроз) более-менее хорошо - лучшие представители антивирусной индустрии уже давно болтаются возле максимальной отметки. А вот второе (защита от будущих угроз) уныло плетётся где-то в районе 60% (смотреть последний ретроспективный тест AV-Comparatives, PDF). Оно немудрено: предсказать будущее, т.е. какие угрозы накроют пользователя завтра - задача ох какая нетривиальная. А для непосвящённого вообще попахивающая шаманизмом.

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




Суть эмулятора состоит вот в чём.

Во-первых, он не сканирует файл обычными антивирусными сигнатурами, а исполняет его. И делается это несколькими способами, в том числе исполнением на реальном процессоре при поддержке «драйвера ускорителя».

Во-вторых, эмулятор запускает анализируемый файл в искусственной среде, которая эмулирует настоящую операционную систему. У этой среды есть своя память, диск, реестр, сеть, процессы, всевозможные подсистемы - в общем всё, чтобы заставить файл думать, что его запустил обычный пользователь на обычном компьютере. Но, в отличие от последнего сценария: а) все действия файла отслеживаются, протоколируются и направляются на анализ эвристику, б) ни один вызов не выходит за пределы среды и т.о. неизвестная вредоносная программа не сможет навредить компьютеру. Ага, получается, что эмулятор «на лету» создаёт что-то вроде защищённой виртуальной машины, в которой и изучает файлы. Этакий сейфбокс для подозрительных предметов - даже если рванёт, то никого не накроет.

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

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

Ну, мы тоже не пальцем в носу ковыряемся, всячески боремся с этими трюками и совершенствуем эмулятор. Кстати, тут недавно любопытный пост был на Хабре с простеньким тестом возможностей эмуляторов. В финалистах оказались Microsoft и наш KIS. Ну, что MS умеет хорошо эмулировать свою же собственную ось - это ожидаемо и логично. А вот результат KIS для меня был приятной неожиданностью и доказательством, что 5 девелоперов (что занимаются развитием технологии) не зря зарплату получают :)

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

С помощью эмулятора можно сильно ускорить анализ малвары, детектить её кластерами - одной эвристической записью сразу нескольку сот, а то и тысяч разных вариантов. Можно запросто узнать функциональность шифрованных и упакованных объектов (вместо того, чтобы брутфорсить их, делать специальный распаковщик или тупо детектить обычный коммерческий паковщик как малвару). В некоторых ситуациях эмулятор оказывается чуть ли не единственной применимой проактивной технологией. Например, в шлюзовых решениях (почтовые/файловые серверы, файрволы) просто нет возможности использовать HIPS и real-time технологии для мониторинга активности программ. Здесь бороться с неизвестными угрозами можно только старой-доброй эвристикой на основе эмулятора.

А теперь ложка дёгтя.

Эмулятор, конечно, штука полезная, но ресурсоёмкая (конечно, не такая ресурсоёмкая как сэндбокс, но всё же). Представляете себе пропускать каждый сканируемый объект через виртуалку? При недостатке мозгов эта особенность - прекрасный предлог закрыть (или вообще не начинать) разработку технологии. Но это не про нас. Мы от эмулятора не только не намерены отказываться, но будем всячески его развивать. В том числе ускорять. Для ускорения, кстати, мы уже используем разные ограничители, оптимизаторы и профили настроек, вплоть до полного отключения этой фичи. Защита требует жертв :)

Немного по планам развития технологии.

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

technology

Previous post Next post
Up