Полиморфизм компьютерных вирусов


Полиморфизм компьютерных вирусов

Полиморфизм компьютерного вируса (греч. πολυ- — много + греч. μορφή — форма, внешний вид) — специальная техника, используемая авторами вредоносного программного обеспечения для снижения уровня детектирования вредоносной программы классическими антивирусными продуктами.

Содержание

Описание метода

Полиморфизм заключается в формировании программного кода вредоносной программы «на лету» — уже во время исполнения, при этом сама процедура, формирующая код, также не должна быть постоянной и видоизменяется при каждом новом заражении. Зачастую, изменение кода достигается путем добавления операторов, не изменяющих алгоритм работы программного кода (например, оператор NOP).

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

История

Первый известный полиморфный вирус был написан Марком Вашбёрном (Mark Washburn). Вирус, который назывался 1260, был создан в 1990 году. Более известный полиморфный вирус был внедрён в 1992 году болгарским взломщиком Dark Avenger (псевдоним), создавшим MtE (Mutation Engine).

На сегодняшний день известно большое количество вредоносных программ, которые используют именно полиморфизм в качестве средства для затруднения анализа и создания сигнатуры.

Пример алгоритма

Алгоритм, который использует переменные A и B, но не использует переменную C, может оставаться работоспособным даже если добавить множество различных команд, которые будут изменять содержимое переменной C.

Исходный алгоритм:

Start:
GOTO Decryption_Code
Encrypted:
    ...
    lots of encrypted code
    ...
Decryption_Code:
    A = Encrypted
Loop:
    B = *A
    B = B XOR CryptoKey
    *A = B
    A = A + 1
    GOTO Loop IF NOT A = Decryption_Code
    GOTO Encrypted
 CryptoKey:
    some_random_number

Тот же самый алгоритм, но с добавлением операций, изменяющих переменную C:

Start:
GOTO Decryption_Code
Encrypted:
    ...
    lots of encrypted code
    ...
Decryption_Code:
    C = C + 1
    A = Encrypted
Loop:
    B = *A
    C = 3214 * A
    B = B XOR CryptoKey
    *A = B
    C = 1
    C = A + B
    A = A + 1
    GOTO Loop IF NOT A = Decryption_Code
    C = C^2
    GOTO Encrypted
 CryptoKey:
    some_random_number

Код внутри секции «Encrypted» может затем обрабатывать код между секциями «Decryption_Code» и «CryptoKey» и удалять «ненужные» операции, меняющие переменную C. Перед тем, как криптографическое устройство будет вновь использовано, он может добавить новые «ненужные» операции, меняющие переменную C, или даже полностью изменить алгоритм, но так, что он будет выполнять те же функции.

Пример кода на ассемблере

Один из самых простых способов реализации шифрования основного тела вируса — её побайтное шифрование операцией xor

    mov cx, code_length
    mov si, offset begin_code
    mov al, xor_key∀ CM ∀ t ∀ j:
SM(t) = SM0 ∧
PM(t) = j ∧
{ CM(t, j) … CM(t, j + |v| - 1)} = v ⇒
∃ v' ∃ j' ∃ t' ∃ t":
t < t" < t' ∧
{j' … j' +|v'|} ∩ {j … j + |v|} = ∅ ∧
{ CM(t', j') … CM(t', j' + |v'| - 1)} = v' ∧
PM(t") ∈ { j' … j' + |v'| - 1 }

_loop:
    xor [si+cx], al ;расшифровываем байт
    loop _loop      ;берем следующий байт
    jmp si

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

Новая процедура расшифровки может формироваться с помощью следующих простых действий:

  • какая-либо инструкция заменяется на другую(-ие), но делающую то же самое.

Скажем,

 add eax, 5 

может быть заменена на

 sub eax, −5 

а код

 mov ax, bx 

может быть заменен на

 push bx
 pop ax
  • перестановка, обмен местами инструкций, порядок следования которых неважен
  • добавление «мусорных команд»

Способы защиты

Для эффективной защиты от полиморфных вредоносных программ необходимо применение проактивных методов антивирусной защиты, таких как эвристический анализ и эмуляция. Однако эвристический анализ и эмуляция не могут гарантировать 100%-го обнаружения полиморфных вредоносных программ, в связи с чем, рекомендуется использование HIPS.

См. также

Ссылки



Wikimedia Foundation. 2010.

Смотреть что такое "Полиморфизм компьютерных вирусов" в других словарях:

  • Полиморфизм — В Викисловаре есть статья «полиморфизм» Полиморфизм (от греч. πολὺ много, и …   Википедия

  • Вирус (компьютерный) — Компьютерный вирус разновидность компьютерных программ, отличительной особенностью которой является способность к размножению (саморепликация). В дополнение к этому вирусы могут повредить или полностью уничтожить все файлы и данные,… …   Википедия

  • Вирусы (компьютерные) — Компьютерный вирус разновидность компьютерных программ, отличительной особенностью которой является способность к размножению (саморепликация). В дополнение к этому вирусы могут повредить или полностью уничтожить все файлы и данные,… …   Википедия

  • Деструктивный вирус — Компьютерный вирус разновидность компьютерных программ, отличительной особенностью которой является способность к размножению (саморепликация). В дополнение к этому вирусы могут повредить или полностью уничтожить все файлы и данные,… …   Википедия

  • Компьютерные вирусы — Компьютерный вирус разновидность компьютерных программ, отличительной особенностью которой является способность к размножению (саморепликация). В дополнение к этому вирусы могут повредить или полностью уничтожить все файлы и данные,… …   Википедия

  • Обнаружение, основанное на сигнатурах — метод работы антивирусов и систем обнаружения вторжений, при котором программа, просматривая файл или пакет, обращается к словарю с известными вирусами, составленному авторами программы. В случае соответствия какого либо участка кода… …   Википедия

  • Обнаружение, основанное на эмуляции — метод, используемый в антивирусном программном обеспечении, для обнаружения еще неизвестных вредоносных программ (т.н. 0day угроз) Содержание 1 Общее описание 2 Преимущества эмуляции …   Википедия

  • Обнаружение основанное на эмуляции — Обнаружение, основанное на эмуляции метод работы антивирусной программы, при котором подозрительный файл либо запускается в тщательно контролируемой среде, либо эмулируется его исполнение с целью выявления тех признаков вредоносного кода, которые …   Википедия

  • Основанное на эмуляции Обнаружение — Обнаружение, основанное на эмуляции метод работы антивирусной программы, при котором подозрительный файл либо запускается в тщательно контролируемой среде, либо эмулируется его исполнение с целью выявления тех признаков вредоносного кода, которые …   Википедия

  • Мусорные команды — Мусорные команды  машинные команды, результаты исполнения которых в программе не используются; могут, например, вставляться при генерации процедуры расшифровщика (декриптора) полиморфного вируса для затруднения обнаружения вируса и анализа… …   Википедия