Полиморфизм

Полиморфизм

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

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

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

Первый известный полиморфный вирус 1260 был написан Марком Вашберном (Mark Washburn) уже в далеком 1990 году.

Пожалуй, самый простой способ реализации полиморфизма заключается в том, чтобы побайтно зашифровать основную часть вируса операцией XOR (листинг 5.3).

Листинг 5.3. Побайтное шифрование – простейший пример

mov cx, code_length

mov si, offset begin_code

mov al, xor_key

_loop:

xor [si+cx], al расшифровываем байт

loop _loop ;берем следующий байт

jmp si

;...

;...

begin_code:

;зашифрованная часть тела вируса – здесь!

;она ответственна за заражение новых файлов

;и создание новой процедуры расшифровки

В качестве примера уместно привести описание следующего полиморфного вируса (www.virusList.com).

Virus.Win32.Zombie – сложный полиморфный вирус, который использует уникальную технологию встраивания в файлы: вирус "разбирает" (дизассембли-рует) PE EXE-файл на составные части, встраивает свой код и собирает заново, перемешивая при этом свой код и код заражаемого файла. Virus.Win32.Zombie использует уникальную технологию декриптования своего тела для обхода эвристических анализаторов.

Данный текст является ознакомительным фрагментом.