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

Поделись знанием:
Перейти к: навигация, поиск

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





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

Полиморфизм заключается в формировании программного кода вредоносной программы «на лету» — уже во время исполнения, при этом сама процедура, формирующая код, также не должна быть постоянной и видоизменяется при каждом новом заражении. Зачастую, изменение кода достигается путём добавления операторов, не изменяющих алгоритм работы программного кода (например, оператор 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

_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.

См. также

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

Ссылки

  • [vx.netlux.org/vx.php?id=em11 Mutation Engine]

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

– Тебе Кирилл Андреевич Денисов, обер интендант, как приходится? – перебил его Кутузов.
– Дядя г'одной, ваша светлость.
– О! приятели были, – весело сказал Кутузов. – Хорошо, хорошо, голубчик, оставайся тут при штабе, завтра поговорим. – Кивнув головой Денисову, он отвернулся и протянул руку к бумагам, которые принес ему Коновницын.
– Не угодно ли вашей светлости пожаловать в комнаты, – недовольным голосом сказал дежурный генерал, – необходимо рассмотреть планы и подписать некоторые бумаги. – Вышедший из двери адъютант доложил, что в квартире все было готово. Но Кутузову, видимо, хотелось войти в комнаты уже свободным. Он поморщился…
– Нет, вели подать, голубчик, сюда столик, я тут посмотрю, – сказал он. – Ты не уходи, – прибавил он, обращаясь к князю Андрею. Князь Андрей остался на крыльце, слушая дежурного генерала.
Во время доклада за входной дверью князь Андрей слышал женское шептанье и хрустение женского шелкового платья. Несколько раз, взглянув по тому направлению, он замечал за дверью, в розовом платье и лиловом шелковом платке на голове, полную, румяную и красивую женщину с блюдом, которая, очевидно, ожидала входа влавввквмандующего. Адъютант Кутузова шепотом объяснил князю Андрею, что это была хозяйка дома, попадья, которая намеревалась подать хлеб соль его светлости. Муж ее встретил светлейшего с крестом в церкви, она дома… «Очень хорошенькая», – прибавил адъютант с улыбкой. Кутузов оглянулся на эти слова. Кутузов слушал доклад дежурного генерала (главным предметом которого была критика позиции при Цареве Займище) так же, как он слушал Денисова, так же, как он слушал семь лет тому назад прения Аустерлицкого военного совета. Он, очевидно, слушал только оттого, что у него были уши, которые, несмотря на то, что в одном из них был морской канат, не могли не слышать; но очевидно было, что ничто из того, что мог сказать ему дежурный генерал, не могло не только удивить или заинтересовать его, но что он знал вперед все, что ему скажут, и слушал все это только потому, что надо прослушать, как надо прослушать поющийся молебен. Все, что говорил Денисов, было дельно и умно. То, что говорил дежурный генерал, было еще дельнее и умнее, но очевидно было, что Кутузов презирал и знание и ум и знал что то другое, что должно было решить дело, – что то другое, независимое от ума и знания. Князь Андрей внимательно следил за выражением лица главнокомандующего, и единственное выражение, которое он мог заметить в нем, было выражение скуки, любопытства к тому, что такое означал женский шепот за дверью, и желание соблюсти приличие. Очевидно было, что Кутузов презирал ум, и знание, и даже патриотическое чувство, которое выказывал Денисов, но презирал не умом, не чувством, не знанием (потому что он и не старался выказывать их), а он презирал их чем то другим. Он презирал их своей старостью, своею опытностью жизни. Одно распоряжение, которое от себя в этот доклад сделал Кутузов, откосилось до мародерства русских войск. Дежурный редерал в конце доклада представил светлейшему к подписи бумагу о взысканий с армейских начальников по прошению помещика за скошенный зеленый овес.
Кутузов зачмокал губами и закачал головой, выслушав это дело.
– В печку… в огонь! И раз навсегда тебе говорю, голубчик, – сказал он, – все эти дела в огонь. Пуская косят хлеба и жгут дрова на здоровье. Я этого не приказываю и не позволяю, но и взыскивать не могу. Без этого нельзя. Дрова рубят – щепки летят. – Он взглянул еще раз на бумагу. – О, аккуратность немецкая! – проговорил он, качая головой.


– Ну, теперь все, – сказал Кутузов, подписывая последнюю бумагу, и, тяжело поднявшись и расправляя складки своей белой пухлой шеи, с повеселевшим лицом направился к двери.
Попадья, с бросившеюся кровью в лицо, схватилась за блюдо, которое, несмотря на то, что она так долго приготовлялась, она все таки не успела подать вовремя. И с низким поклоном она поднесла его Кутузову.
Глаза Кутузова прищурились; он улыбнулся, взял рукой ее за подбородок и сказал:
– И красавица какая! Спасибо, голубушка!
Он достал из кармана шаровар несколько золотых и положил ей на блюдо.
– Ну что, как живешь? – сказал Кутузов, направляясь к отведенной для него комнате. Попадья, улыбаясь ямочками на румяном лице, прошла за ним в горницу. Адъютант вышел к князю Андрею на крыльцо и приглашал его завтракать; через полчаса князя Андрея позвали опять к Кутузову. Кутузов лежал на кресле в том же расстегнутом сюртуке. Он держал в руке французскую книгу и при входе князя Андрея, заложив ее ножом, свернул. Это был «Les chevaliers du Cygne», сочинение madame de Genlis [«Рыцари Лебедя», мадам де Жанлис], как увидал князь Андрей по обертке.