22 Сентября, 2015

Технологии сокрытия вирусов

Игорь Агурьянов
Гонка вооружений между вирусописателями и антивирусными компаниями, наверное, не кончится никогда. Под катом описан ряд технологий, которые использовались и использовались вирусописателями для сокрытия своих творений от антивирусов и технологии, которые появились для обнаружения таких «представителей класса». Старался описать в исторической последовательности:
name='more'>
Технология
Описание
Появившийся метод обнаружения
Стелс-вирусы
При попытке чтения зараженного сектора диска, эти вирусы «подставляют» и вместо себя незаражeнный оригинал.
Программа-ревизор (запоминающая состояние компьютера, следящая за изменениями файловой системы и сообщающая о важных или подозрительных изменениях), программа-монитор (поиск прерываний), проверка до загрузки ОС.
Обфускация («запутывание кода»)
Код вредоноса обрабатывается таким образом, что его сложно понять исследователю, но без потери функциональности.
Добавление новых сигнатур в базы
Упаковка
Код вредоноса шифруется и исполняется после распаковки декриптором
Добавление новых сигнатур в базы
Генерация мусора
Код вредоноса «разбавляется» бесполезными инструкциями, которые затрудняют
Добавление новых сигнатур в базы
Пермутация
Перестановка логических блоков в теле вируса, повышает нагрузку на антивирусный движок
Добавление новых сигнатур в базы
Полиморфизм («вирусы-призраки»)
Для упаковки вируса каждый раз используется другой ключ, зависимый, например, от объема файла, который он инфицирует. Может использовать технологии обфускации,  генерации мусора и пермутации.
Эвристика (поведенческий анализ), добавление в базы АВ сигнатур декриптора
Метаморфизм («MtE-вирусы»)
То же, что и полиморфизм, за тем исключением, что в каждом новом поколении вирусов генерируется новый код декриптора
Эвристика и эмуляция («Песочница»)
«Антипесочница»
Непроявление деструктивных свойств в виртуальной среде, либо отложенное проявление свойств
Детектирование исполнения shell-кода в песочнице (например, изменение CPU)

Если где-то есть неточности или забыл упомянуть какую-то технологию – прошу указать в комментариях.

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

P.S. Кстати, про «антипесочницу» CheckPointa писал недавно тут .