Полиморфный вирус

Полиморфный вирус

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

Полиморфизм заключается в формировании кода вируса «на лету» — уже во время исполнения, при этом сама процедура, формирующая код также не должна быть постоянной и видоизменяется при каждом новом заражении. Большинство антивирусных программ пытаются обнаружить вредоносный код, соответствующий компьютерному вирусу, или часть кода такого вируса, посредством проверки файлов и данных, находящихся на компьютере или пересылаемых через компьютерную сеть или Интернет. Если изменить код вируса, отвечающий за поиск и заражение новых файлов или какую-либо другую важную его часть, то антивирус не сможет обнаружить такой «измененный» вирус. Часто код вируса «меняют», добавляя операторы эвристика и эмуляторы кода.

Содержание

История

Первый известный полиморфный вирус был написан Марком Вашбёрном (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
_loop:
    xor [si+cx], al ;расшифровываем байт
    loop _loop      ;берем следующий байт
    jmp si

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

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

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

Скажем,

 add eax, 5 

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

 sub eax, −5 
  • перестановка, обмен местами инструкций, порядок следования которых неважен
  • добавление «мусорных команд»

См. также

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


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

  • Полиморфный вирус — файловый вирус, изменяющий свой код при заражении очередного файла. По английски: Polymorphic virus См. также: Файловые вирусы Финансовый словарь Финам …   Финансовый словарь

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

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

  • Хронология компьютерных вирусов и червей — Здесь приведён хронологический список появления некоторых известных компьютерных вирусов и червей, а также событий, оказавших серьёзное влияние на их развитие. Содержание 1 2012 2 2011 3 2010 4 2009 …   Википедия

  • История компьютерных вирусов — Содержание 1 Первые самовоспроизводящиеся программы 2 Первые вирусы 2.1 ELK CLONER …   Википедия

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

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

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

  • OneHalf — OneHalf  полиморфный файлово загрузочный компьютерный вирус, работающий в среде MS DOS. При заражении компьютера, вирус устанавливал себя в Master boot record загрузочного диска и передавал управление программе вирусоносителю. Он… …   Википедия

  • Ветряная оспа — У этого термина существуют и другие значения, см. Оспа. Ветряная оспа …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»