Принципы обнаружения самомодифицирующихся вирусов

Принципы обнаружения самомодифицирующихся вирусов

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

Авторы Peter Ferrie и Frederic Perriot

Существует довольно много показателей, по которым судят об эффективности антивирусного ПО и о компании, создавшей и поддерживающей его. Типичные показатели включают в себя время реагирования компании на новые угрозы и возможности антивируса к их обнаружению. Но достаточно ли этих показателей для эффективной защиты вашей системы?

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

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

Обзор комплексных вирусов

Раньше полезным и популярным показателем считалось количество вирусов, которые способен обнаружить антивирус, однако с приходом более полезных и разумных методов про него забыли. Сегодня такими показателями считаются время реагирования антивирусной компании на новую угрозу и возможности их продукта к обнаружению вирусов. Однако эти показатели часто не затрагивают угрозу иного рода – комплексных вирусов. При обнаружении комплексных вирусов скорее всего придется столкнуться с двумя проблемами: либо это вирусы, которые просто очень сложно обнаружить, либо поисковый механизм антивируса не позволяет это сделать. Мы начнем, пожалуй, с определений, которые нам пригодятся.

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

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

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

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

Пожалуй, самой сложной трансформацией метаморфного вируса является замена целых блоков кода на функционально-эквивалентные. Возьмем, к примеру, умножение числа x на 3. Это можно выразить как «x*3». Однако в качестве альтернативы его можно заменить на сумму трех x: «x+x+x». Оба выражения возвращают одинаковый результат, но выглядят по-разному.

Вирус, скрывающий точку входа – это вирус, который получает управление от программы косвенным путем, не напрямую через главную точку входа. Обычно это осуществляется в изменении адреса переменной в теле программы, адреса входа функции или вызова API, направляя управляющий поток к коду вируса.

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

Определение угрозы

Комплексные вирусы не представляют опасности, пока они находятся в «лаборатории» и не выпущены на волю. Отсюда и исходит проблема: сложность заключается в определении понятия «воля» для вируса.

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

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

Примеры вирусов, внесенных в «зоопарк»

Примеры известных вирусов, находящихся в «зоопарке», включают в себя комплексные Win32 вирусы W95/SK (документ PDF), W95/Zmist (документ PDF), W32/Simile (документ PDF), W32/Efish (документ PDF) (из семейства W32/Chiton ), и W95/Perenast. Упомяните любое из этих названий антивирусному эксперту, и вы увидите как изменится от ужаса его лицо. W32/Gobi (документ PDF) и W32/Zelly – последние экземпляры подобных головоломок. Оба они очень полиморфны, применяют несколько уровней шифрования и скрывание точки входа.

Все эти примеры стоят нескольких дней (и ночей) работы, имея ввиду реверсинг, репликацию вируса и написание алгоритма определения вируса. Исследователю будет легче написать сначала отдельную программу на Си, и после этого интегрировать алгоритм в антивирусный продукт.

Ограничения в технологии поиска вирусов

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

Сравнительно простой вирус, направленный на только зарождающуюся платформу (скажем Win64), может выявить ограничения поискового механизма антивируса, которые усложнят его обнаружение настолько же, насколько сложно обнаружить полиморфный вирус на Win32. Конечно все зависит от доступной антивирусной технологии. Может оказаться, что формат файла не проверяется антивирусом, либо не поддержан. Также может понадобиться эмуляция. Эти факторы влияют на способность обнаружения вируса.

Некоторые новые вирусы, найденные в 2004 году, нацеленные на платформу Win64 и довольно сложно определяемые, включают в себя W64/Rugrat (документ PDF) (IA64), W64/Shruggle (AMD64) и несколько вирусов с MSIL-инфекторами. Соответствующие форматы исполняемых файлов варьируются, так что даже задача подбора поисковой строки превращается в трюк акробата, если антивирус не поддерживает эти форматы.

Вообще, всегда присутствует страх распространения сравнительно сложного вируса, нацеленного на новые или зарождающиеся платформы. Такие вирусы периодически оказываются в «зоопарке» к радости вирусного исследователя. Два примера таких новых вирусов, оба выпущенные в начале 2004 года, являются MSIL/Impanate (PDF) и MSIL/Gastropod (PDF) – вирусы для среды Microsoft .NET. Первый из них – MSIL/Impanate – вирус, скрывающий точку входа. Он добавляет свой код к произвольной части файла и собирает программу-носитель вокруг него. Второй- MSIL/Gastropod – метаморфный вирус. Его внешность меняется намеренным вносом и удалением пустых инструкций.

Важность своевременного обнаружения комплексных вирусов

Вы можете спросить: зачем обнаруживать комплексные вирусы, если все они находятся в коллекциях «зоопарка»? Во-первых, иногда они все-таки получают путевку в мир и выходят на волю. К примеру, W32/Toal, комплексный полиморфный червь был обнаружен, когда начал массово распространяться во второй раз. Некоторые комплексные вирусы, находящиеся в «зоопарках», распространяются настолько агрессивно, что способны заразить большое количество систем, если бы кто-нибудь выпустил их на волю.

Более того, касаясь вирусов, которые ни при каких обстоятельствах не смогут покинуть «зоопарк», время реагирования на них антивирусными компаниями может выявить много ограничений и недостатков в антивирусных технологиях, а также профессионализм и реакцию сотрудников компаний. Некоторые компании предоставляют обновления через несколько часов или дней, в то время как другие решают эту задачу в течение месяца (или года в случае с W95/Zmist!), а другие вообще ничего не делают.

Кроме времени реакции, различается и способность к обнаружению вирусов, это видно при измерении способности обнаружить все виды полиморфных вирусов, учитывая допустимую погрешность. А что такое допустимая погрешность? Хотя она разная у каждой компании, обычно она составляет лишь небольшой процент ложных обнаружений, но есть и исключения. Последний пример – W32/Zelly – этому вирусу была разрешена большая (50%) погрешность некоторыми компаниями лишь для того, чтобы стать первыми его находчиками.

Что если ваша антивирусная компания перестанет уделять внимание комплексным вирусам? Это должно подсказать вам, что их технологии и/или профессионализм не на высшем уровне. Что если завтрашний Mydoom будет полиморфным? Смогут ли они дать ответ угрозе?

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

Заключение

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

Ваша приватность умирает красиво, но мы можем спасти её.

Присоединяйтесь к нам!