2015_лекции / Лекция №8_2015
.pdfОлигоморфизм
mov |
ebp,00405000h |
; выберем в качестве базы |
mov |
ecx,0550h |
; такое кол-во байт |
mov |
ecx,0550h |
; такое кол-во байт |
mov |
ebp,00405000h |
; выберем в качестве базы |
lea |
esi,[ebp+0000002E] |
; смещение "Start" |
lea |
esi,[ebp+0000002E] |
; смещение "Start" |
add |
ecx,[ebp+00000029] |
; прибавим такое количество байт |
add |
ecx,[ebp+00000029] |
; прибавим такое количество байт |
mov |
al,[ebp+0000002D] |
; выберем первый ключ |
mov |
al,[ebp+0000002D] |
; выберем первый ключ |
Decrypt: |
|
Decrypt: |
|
||
nop |
|
; мусор |
nop |
|
; мусор |
nop |
|
; мусор |
nop |
|
; мусор |
xor |
[esi],al |
; расшифровка байта |
xor |
[esi],al |
; расшифровка байта |
inc |
esi |
; следующий байт |
inc |
esi |
; следующий байт |
nop |
|
; мусор |
inc |
al |
; увеличим ключ |
inc |
al |
; увеличим ключ |
dec |
ecx |
; есть еще что расшифровывать? |
dec |
ecx |
; есть еще что расшифровывать? |
loop |
Decrypt |
; пока все не расшифровано |
jnz |
Decrypt |
; да |
jmp |
Start |
; нет, выполняем Start |
jmp |
Start |
; нет, выполняем Start |
; Данные |
|
|
|
|
;Данные |
Start: |
|
|
Start: |
; |
зашифрованное/расшифрованное тело вируса |
; зашифрованное/расшифрованное тело вируса |
||
|
|
|
|
|
|
Полиморфизм
Используемые методики
•Использование мусорных инструкция, типа INC SI, NOP, CLI, STI и т.д.
•Изменение порядка следования инструкций.
•Переназначение регистров, используемых для хранения переменных.
•Использование взаимозаменяемых инструкций
Полиморфизм
В зависимости от скорости смены дешифратора различают
|
Медленные |
Быстрые |
(Дешифровщик |
(при каждом |
полностью строится |
инфицировании) |
только во время запуска |
|
ОС) |
Полиморфизм: пример
Вирус 1260первый вирус, применившим технику полиморфизма
; Group 1 – Секция Инициализации
inc |
si |
; необязательный мусор |
mov |
ax,0E9B |
; устанавливаем ключ 1 |
clc |
|
; необязательный мусор |
mov |
di,012A |
; смещение Start |
nop |
|
; необязательный мусор |
mov |
cx,0571 |
;устанавливаем ключ 2 |
; Group 2 – Секция Расшифровщика |
||
Decrypt: |
|
|
xor |
[di],cx |
; расшифровываем первое слово ключом 2 |
sub |
bx,dx |
; необязательный мусор |
xor |
bx,cx |
; необязательный мусор |
sub |
bx,ax |
; необязательный мусор |
sub |
bx,cx |
; необязательный мусор |
nop |
|
; обязательный мусор |
xor |
dx,cx |
; необязательный мусор |
xor |
[di],ax |
; расшифровываем первое слово ключом 1 |
; Group 3 – Секция инкрементации ключей |
||
inc |
di |
; Следующий байт |
nop |
|
; необязательный мусор |
clc |
|
; необязательный мусор |
inc |
ax |
; увеличиваем 1 |
; loop |
|
|
loop |
Decrypt |
; пока все байты не расшифрованы |
|
|
;увеличиваем ключ 2 |
;случайное заполнение 39 байт
Start:
;зашифрованное/расшифрованное тело вируса
Метаморфизм вирусов
Метаморфизм вирусов – это полиморфизм вирусного кода
(И. Муттик)
Метаморфизм вирусов
Уровни метаморфизма:
•Использование тех же инструкций, но с другими регистрами
•Использование «мусорных» и эквивалентных инструкций по смыслу инструкций
•Изменение выполняемого кода
Метаморфизм вирусов