Полиморфизм

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

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

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

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

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

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

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 использует уникальную технологию декриптования своего тела для обхода эвристических анализаторов.

Яндекс.Метрика