2010/04/29 15:26:23

Полиморфизм

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

Содержание

Термин «полиморфизм» (с греч. «многоформенность») применительно к компьютерным вирусам появился приблизительно в 1990 году. С того времени полиморфизм в вирусах прошел множество стадий своего развития: от простейшего побайтного xor-шифрования до сложнейших метаморфов, использующих сложнейшие алгоритмы, в том числе криптографические.

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

Полиморфные вирусы

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

Каждый экземпляр полиморфного вируса шифруется своим ключом. Для шифрования кода полиморфного вируса могут использоваться случайные ключи и алгоритмы шифрования.

Для обнаружения полиморфных вирусов, как правило, используются специально разрабатываемые для каждого полиморфного вируса алгоритмы обнаружения.

Уровни полиморфизма

В классификации CARO полиморфные вирусы в зависимости от их сложности разделяют на несколько уровней.

Уровень 1. Вирусы первого уровня полиморфизма используют постоянные значения для разных расшифровщиков. Их можно обнаружить по некоторым постоянным участкам кода расшифровщика. Такие вирусы принято называть "не совсем полиморфными", или олигоморфными (oligomorphic).Метавселенная ВДНХ 3.3 т

Уровень 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).

История

Первым представителем полиморфных вирусов стал "Chameleon" в начале 1990 года, однако проблема стала серьезней чуть позже – в апреле 1991 года была зарегистрирована эпидемия "Tequila". Идея полиморфных вирусов стала столь популярна, что дошло до создания генераторов полиморфных вирусных кодов – первым стал MtE. Кроме того, генератор позволял получать полиморфный вирус из обычного – путем присоединения к OBJ-файлу вируса файла полиморфного кода с идентичным расширением.

Фактически, с появлением генераторов для создания полиморфного вируса не требовалось знать код оригинального вируса – достаточно было просто "скормить" его генератору, и тот делал всю работу за начинающего хакера. Впоследствии полиморфные вирусы стали крайне популярны, так как для их отлова требуются специальные математические алгоритмы восстановления исходного кода вируса, эмуляция исполняемого вирусом действий и другие сложности.

Генераторы полиморфных вирусов также совершенствовались – в середине девяностых это были MTE 0.90 (Mutation Engine), TPE (Trident Polymorphic Engine), четыре версии NED (Nuke Encryption Device) и DAME (Dark Angel's Multiple Encryptor).

Полиморфные вирусы активно развивались примерно до начала XXI века, однако затем произошел общий крен вирусописательства в сторону червей и троянов. Технология постоянной мутации кода для затруднения обнаружения антивирусными программами временно оказалась невостребованной.

Однако начиная примерно с 2003 года полиморфизм снова начинает привлекать внимание вирусного сообщества. Это было вызвано тем, что антивирусные программы все больше и больше совершенствовались, и уже стало нельзя использовать в качестве инструментов скрытия кода различные программы-паковщики, которые были на тот момент излюбленным детищем вирусописателей.

См. также

Ссылки