Как известно, первые вирусы появились давно. Они заражали древние компьютеры, и ничто не могло их остановить, кроме бдительного пользователя машины. Затем были придуманы антивирусы, определяющие их по характерным симптомам. Но через какое-то время вирус перестал быть тупой мишенью для антивируса. Теперь вирус был наделен специальными возможностями, что позволяло ему быть незамеченным в системе. Одним из вариантов защиты от определения является полиморфизм.
Полиморфизм – высококлассная техника, позволяющая вирусу быть незамеченным по стандартной сигнатуре. Все полиморфные вирусы снабжаются расшифровщиком кода, который по определенному принципу преобразует переданный ему код, вызывая при этом стандартные функции и процедуры операционной системы. Сами методы шифрования могут быть разными, но, как правило, каждая операция имеет свою зеркальную пару. В ассемблере это реализуется очень просто, и таких пар может быть очень много – ADD/SUB, ROL/ROR и т.п. Немаловажной особенностью полиморфного вируса является то, что вирус содержит операнды, функции и процедуры, которые служат лишь для запутывания кода.
Выделяют несколько уровней полиморфизма, используемых в вирусе:
– самые простые олигоморфные вирусы. Они используют постоянные значения для своих расшифровщиков, поэтому легко определяются антивирусами;
– вирусы, имеющие одну или две постоянные инструкции, которые используются в расшифровщиках;
– вирусы, использующие в своем коде команды – мусор. Это в своем роде ловушка от детектирования, помогает запутать собственный код. Но такой вирус может быть засечен с помощью предварительного отсеивания мусора антивирусом;
– использование взаимозаменяемых инструкций с перемешиванием в коде без дополнительного изменения алгоритма расшифровки, помогает полностью запутать антивирус;
– неизлечимый уровень. Существуют вирусы, которые состоят из программных единиц – частей. Они постоянно меняются в теле и перемещают свои подпрограммы. Характерной особенностью такой заразы являются пятна. При этом в различные места файла записываются несколько блоков кода, что обуславливает название метода. Такие пятна в целом образуют полиморфный расшифровщик, который работает с кодом в конце файла. Для реализации метода даже не нужно использовать команды-мусор, подобрать сигнатуру будет все равно невозможно.
Полиморфизм стал весьма распространенным лишь благодаря расшифровщику. Удобно то, что один файл может работать со многими вирусами. Этим и пользуются вирусописатели, используя чужой модуль. В полиморфы нередко встраивают код, который выполняется в зависимости от определенной ситуации. Например, при детектировании вируса он может вызвать процедуру самоуничтожения. Как самого себя (частичная или полная безвозвратная модификация кода), так и системы (массовое заражение системных файлов без возможности восстановления). Это очень осложняет поиск антивируса от полиморфного вируса, до антивирусной лаборатории вирус доходит уже в нерабочем состоянии.
Первый полиморфный вирус появился в 1990 году и назывался Chameleon. Он вписывал свой код в конец COM-файлов, а также использовал два алгоритма шифрования. Первый шифрует тело по таймеру в зависимости от значения заданного ключа. Второй использует динамическое шифрование и при этом активно мешает трассировки вируса. Он не был опасен, хотя содержал в коде ряд ошибок, из-за которых генератор не мог расшифровать тело вируса. При этом исполняемый файл переставал функционировать. После длительного простоя системы Phantom выводил на экран видеоизображение с надписью. Она гласила, что компьютер находится под наблюдением опасного вируса.
Параллельно вирусам появлялись и полиморфик - генераторы, одним из которых был MtE, открывший целые вирусные семейства. Он уже использовал зеркальные функции, чем затруднял своё детектирование. Теперь вирусологу не нужно было писать свой дешифратор, а лишь воспользоваться MtE. MtE-вирус был перехвачен антивирусной лабораторией, поэтому быстрый выход защиты от первого серьёзного поли морфного вируса защитил множество рабочих стан- ций от заразы. Другое семейство вирусов Daemaen записывает себя в COM, EXE и SYS файлы. С виду эти вирусы выглядят вполне безопасно, но на самом деле происходит запись в MBR винчестера и в boot-сектора дискет, а тело заразы хранится в последних секторах.
В наше время многие вирусы используют полиморфизм высоких уровней в своих алгоритмах. Но развития технологии практически не наблюдается, можно сказать, что она уже изжила себя. Помимо полиморфизма существуют и другие методы маскировки, например, стелс-технологии. Возможно, скоро вирусописатели придумают мощный алгоритм защиты своих творений, который не сможет разгадать ни один продвинутый антивирус.
В заключение хотелось бы добавить, что проблема безопасности информации встает с каждым днем все острее, и далеко не последнюю роль в обеспечении этой безопасности играют качественные антивирусные средства.