3 февраля, 2014
Эвристилибристика.
Как 100%-но вычислить зловреда в дремучих джунглях операционной системы? Особенно, когда эту гадость раньше никто не видел, её «IQ» зашкаливает и она уже в компьютере?
НИКАК.
Действительно найти черную кошку в тёмной комнате, при условии, что она там точно есть, смогут немногие спецы и вручную. Но автоматическими и продуктовыми средствами можно попытаться это сделать и с некоторой долей вероятности навести на след заражения. Вот только классическими сигнатурами и файловым сканером эту задачку никак не решить.
Выход – планомерное интеллектуальное развитие антивируса в направлении мега-мозга, анализирующего сигналы от десятков сенсоров, встроенных в операционную систему. Вот такой всеобъемлющий и системный взгляд и отличает гадание на кофейной гуще от научно обоснованного и практически воплощённого подхода к проактивной защите. А помимо общего врага эти сенсоры объединяет и общий инструментарий – практически в каждом используются эвристические методы анализа.
Эвристика в вирусологии прописалась уже лет 20 назад, а смысл её состоит в следующем.
Распознать вредоносный код можно по прямым и косвенным признакам. Прямые признаки – это как раз классические сигнатуры. Мы знаем, как выглядит вирус, заносим уникальный код в базу данных и ищем его в подозрительном объекте. Косвенные признаки – это когда на основании предыдущего опыта мы выявляем вредоносность по последовательности команд в коде или метаданным (статический анализ), или по поведению (динамический анализ).
К примеру: программа прописывает себя в автозапуске, перехватывает клавиатуру, открывает порт и что-то передаёт в Интернет. Ещё – программа записывает какие-то данные на жёсткий диск в цилиндр 0, головка 0, сектор 1. А это, на минуточку, MBR. Согласитесь, все эти действия – основа для весьма обоснованного предположения о вредоносной природе сей программы.
Самое важное – при использовании эвристиков нам необязательно знать вирус «в лицо» (т.е. его уникальный код). Мы «накрываем» весь спектр зловредов (в т.ч. неизвестные), которые используют конкретные вредоносные действия или имеют другие схожие характеристики, а этих комбинаций на порядки меньше. Например, одним эвристическим правилом мы детектим почти 600тыс. вариантов червя WBNA. Представляете, насколько это ускоряет проверку по сравнению с 600тыс. отдельных записей на каждый вариант?
Сейчас эвристики можно встретить практически во всех наших антивирусных модулях (например, анти-блокер, анти-руткит, анти-фишинг). Они же помогают высокоуровневым аналитическим надстройкам вроде System Watcher и репутационных облачных сервисов лучше понимать обстановку и вычислять самые хитрые атаки. Более того, в персональных продуктах и некоторых бесплатных утилитах есть специальный модуль AVZ для автоматического эвристического анализа системы.
Вот об этом стоит рассказать подробнее.
На самом деле, AVZ заступил у нас на боевое дежурство аж в 2007г. У него достаточно обширная сфера компетенции (шредер, бэкап, чистка мусора, ревизор файлов, визарды восстановления системы) в зависимости от продукта. Но с точки зрения эвристики и защиты от неизвестных угроз у него две главные задачи – (i) поддержка техподдержки :) для удалённой диагностики и лечения тяжёлых случаев, (ii) инструментарий для опытных пользователей и сисадминов для самостоятельного выявления вредоносных аномалий на компьютерах и в сетях.
Прежде всего, у AVZ есть собственная эвристика (обновляется каждый день), которая умеет очень правильно исследовать компьютер. А это уже половина пути к успеху! Точнее, AVZ считывает значения разных параметров, по которым можно засечь зловреда, анализирует систему, и по результатам создаёт карантин с подозрительными объектами и специальный файл-отчёт.
Особенность этого отчёта – он одинаково пригоден для «чтения» как специалистом, так и роботом. Проанализировав его, наша техподдержка может с высокой долей вероятности поставить диагноз и прописать лечение. А робот – создать «таблетку» для запуска на интегрированном интерпретаторе скриптов.
Скрипт-язык создан нами с нуля и «заточен» конкретно под задачи вирусологии. В нём есть все необходимые для операции инструменты (удаление файлов, помещение в карантин, чистка реестра, остановка процессов и т.д.) и технологии (отложенное удаление, противодействие активному заражению на время лечения и т.д.). Кроме того, отчёт содержит только действительно критически важную информацию о системе для антивирусной диагностики. Объекты, о которых доподлинно известно, что они «белые и пушистые» автоматически исключаются, чтобы не отвлекать специалистов и ускорить анализ.
Дальше дело техники: «скрипт-таблетка» доставляется на пострадавший компьютер и проводит восстановительные мероприятия. При этом пользователю нужно только скопировать текст в окно выполнения скрипта. Как показывает практика – это незаменимая «фича» как при установке защиты в уже зараженную систему (в том числе неизвестным зловредом), так и для исправления последствий заражения.
У любого эвристика есть недостатки, связанные с ложными срабатываниями («фалсы»). Это логично – при эвристическом анализе мы оперируем предположениями о вредоносности объекта на базе нашего опыта. С этим довольно успешно борются тщательным тестированием и вайтлистингом, но случаются и ошибки. Увы, от этой напасти технологии пока не придумали, так что тут главное как можно скорее багу пофиксить и сделать исправленное обновление.
С AVZ (тьфу-тьфу) таким проблем нет.
Во-первых, система работает сама в себе и не утруждает пользователя умными вопросами и алертами. Результаты работы модуля видит только специалист (и робот :). А во-вторых, они оба способны самостоятельно устранять «фалсы». Да-да, я не ошибся! Это действительно так – робот при каждом прогоне новых данных выявляет ложные срабатывания и неэффективные записи и автоматически вносит в AVZ изменения.