Современные
информационные технологии/4. Информационная безопасность
Овчаренко М.А.
Национальный горный университет, Украина
Полиморфизм
компьютерных вирусов
Полиморфизм
компьютерного вируса (греч. πολυ- — много + греч.
μορφή — форма, внешний вид) — методы написания
компьютерных вирусов, позволяющие затруднить его обнаружение с помощью
скан-строк. Вирус, использующий такую технологию, называется полиморфным.
Полиморфизм
заключается в формировании кода вируса «на лету» — уже во время исполнения. При
этом сама процедура, формирующая код также не должна быть постоянной и
видоизменяется при каждом новом заражении.
Все
полиморфные вирусы обязательно снабжаются расшифровщиком кода, который по
определенному принципу преобразует переданный ему код, вызывая при этом
стандартные функции и процедуры операционной системы. Сами методы шифрования
могут быть разными, но, как правило, каждая операция имеет свою зеркальную
пару.
Немаловажной
особенностью полиморфного вируса является то, что вирус содержит мусор, то есть
операнды, функции и процедуры, которые служат лишь для запутывания кода. При
этом реализуются две цели:
1. Сложность
изучения кода при трассировке файла.
2.
Увеличение элемента случайности в расшифровщике.
Уровни
полиморфизма
В
классификации CARO полиморфные вирусы в зависимости от их сложности разделяют
на уровни:
Уровень 1.
Вирусы используют постоянные значения для разных расшифровщиков. Их можно
обнаружить по некоторым постоянным участкам кода расшифровщика. Такие вирусы
принято называть "не совсем полиморфными", или олигоморфными
(oligomorphic).
Уровень 2.
Ко второму уровню полиморфизма относят вирусы, расшифровщик которых имеет
постоянной одну или несколько инструкций (различные регистры, некоторые
альтернативные инструкции в расшифровщике). Такие вирусы также можно распознать
по определенной сигнатуре.
Уровень 3.
Вирусы, использующие в расшифровщике команды, не участвующие в расшифровании
вирусного кода, или "команды-мусора". Это такие команды ассемблера,
как NOP, MOV AX, AX, STI, CLD, CLI и т.д. Определение данного вируса возможно после
отсеивания всех "мусорных команд" сигнатурным способом.
Уровень 4.
Вирусы используют в расшифровщике взаимозаменяемые инструкции и
"перемешанные" инструкции без изменения алгоритма расшифрования.
Например, ассемблерная команда MOV AX,BX имеет взаимозаменяемые инструкции:
PUSH BX - POP AX; XCHG AX,BX; MOV CX,BX - MOV AX,CX и т. д. Детектирование
данных вирусов возможно с помощью некоторой перебираемой сигнатуры.
Уровень 5.
Пятый уровень полиморфизма включает свойства всех перечисленных уровней, а
кроме того, расшифровщик может использовать различные алгоритмы расшифрования
вирусного кода. Для расшифровки возможно использование основного вирусного
кода, расшифровки части самого же декриптора или нескольких расшифровщиков, поочередно
расшифровывающих друг друга либо непосредственно вирусный код. Для лечения
необходимо произвести частичную или полную расшифровку тела вируса, чтобы
извлечь информацию о зараженном файле.
Уровень 6. Нешифрованные
вирусы - т. е. вирусы, состоящие из программных единиц-частей, которые
"перемешиваются" внутри тела вируса. Такие вирусы еще называются
пермутирующими (permutating).
Большинство
антивирусных программ пытаются обнаружить вредоносный код, соответствующий
компьютерному вирусу, или часть кода такого вируса, посредством проверки файлов
и данных, находящихся на компьютере или пересылаемых через компьютерную сеть
или Интернет с помощью метода обнаружения, основанному сигнатурными методами.
Обнаружение,
основанное на сигнатурах — метод работы антивирусов и систем обнаружения
вторжений, при котором программа, просматривая файл или пакет, обращается к
словарю с известными вирусными записями. В случае соответствия какого-либо
участка кода просматриваемой программы известному коду (сигнатуре) вируса в
словаре, программа антивирус сообщает о наличии в операционной системе вируса.
Данный метод обнаружения компьютерных вирусов был одним из первых, используется
и сегодня антивирусными разработчиками и требуют постоянного обновления вирусных
сигнатур. Обнаружить таким способом полиморфный вирус практически невозможно
т.к. необходимо создавать базу его всех возможных вариантов сигнатур.
Методы
обнаружения полиморфных вирусов
Для
обнаружения полиморфных вирусов используются следующие технологии: эвристический
анализ, эмуляторы кода, обнаружение аномалий, метод
«Белого списка», HIPS (Host-based Intrusion Prevention System).
Эвристический
анализ используется для поиска сложных шифрующихся и полиморфных вирусов. Процесс
эвристического анализа может производиться двумя способами:
1.
проверка
эмулируемой программы анализатором кода, после чего последний подсчитывает
контрольную сумму и сверяет ее с той, которая хранится в базе. Эмуляция будет
продолжаться до тех пор, пока необходимая для подсчета контрольной суммы часть
вируса не будет расшифрована;
2.
декомпиляция
подозрительной программы и анализ ее исходного кода. В процессе декомпиляции
файл проходит сравнение с исходным кодом известных вирусов. При совпадении определенного
процента с кодом заранее известного вируса, файл считается подозрительным.
Метод
"Белого списка" основан на том, что заранее системным администратором
формируется "белый список" всех известных программ. Попытка запуска остальных,
не входящих в перечень разрешенных, расценивается как запуск вредоносной
программы.
Эмуляторы
кода пытаются эмулировать выполнение кода каждой запускаемой на исполнение
программы. При обнаружении попытки поведения программы как компьютерного вируса
ее выполнение приостанавливается. В последнее время эмуляторы кода реализуются
в антивирусных программах как виртуальные машины с мини операционной системой,
в которой происходит запуск тестируемых программ.
Динамический
метод систем выявления вторжений новых заранее неизвестных вирусов использует
метод обнаружения аномалий, в котором такая система наблюдает за возможностями
появления подозрительных событий в операционной системе, анализируя работу
пользователя, программы, процесса, сетевого трафика.
HIPS
является средством проактивной защиты, часто объединяется с брандмауэром и
управляют правами приложений на выполнение тех или иных действий, оснащается
открытой таблицей правил, осуществляет анализ активности работающего приложения
и запуск не доверенных приложений на виртуальной машине для последующего
анализа.
Полиморфные
вирусы пытаются изменять тело своей программы для обхода обнаружения
антивирусов, работающих на сигнатурных методах. Для их обнаружения современные
антивирусы используют средства проактивной защиты, которые, как правило,
комбинируются антивирусными программами. Таким образом антивирусы могут
обнаружить неизвестные заранее вирусы, но при этом, возрастает вероятность их
ложного срабатывания.
Литература:
1. http://www.anti-malware.ru/hips_test_ring0
2. http://www.centersoft.ru/static/17_121.html
3. http://ru.wikipedia.org/wiki/Антивирусная_программа
4. http://www.people.frisk-software.com/~bontchev/papers/naming.html