Лекция

доцента кафедры ИВТ Гродненского госуниверситета

канд. техн. наук  Ливак Елены Николаевны

 

МАСКИРОВКА    ВИРУСОВ

           

Как  вирусы скрывают свое присутствие в системе?

 

            Основная задача вируса - распространение. И поэтому вирусу необходимо  как можно дольше скрывать свое присутствие в системе, ведь чем дольше он будет оставаться незамеченным, тем дальше он сможет распространиться.     

Вирусы скрывают свое присутствие по-разному.

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

            а) многие вирусы проявляются в один или некоторые определенные дни;

            б) другие вирусы ставят свое проявление в зависимость от случайностей всевозможного рода. Например, только если значение минут таймера меньше N; или проверяет отсутствие ввода с клавиатуры в течение N минут; vногие загрузочные  вирусы любят уничтожать секторы дисков, вычисляя вероятность (1/8 или 1/16 );

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

                                 

           STEALTH - вирусы

Авторы вирусов заменяют некоторые компоненты операционной системы, например, прерывания, драйверы так, что программа-вирус становится невидимой для других программ. Такие вирусы называются вирусами-невидимками, или стелс-вирусами (Stealth - невидимка ).

            Stealth-вирусы всегда резидентны. Резидентный модуль перехватывает обращение операционной системы к пораженным файлам или секторам дисков и “подставляет” вместо них исходные объекты.

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

 

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

           

Шифрующиеся вирусы

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

 

            С понятием компьютерного вируса тесно связано другое понятие - сигнатура.

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

           

Очевидно, что для поиска тела вирусов на дисках антивирусными средствами невозможно (не хватит памяти!) хранить полные коды программ-вирусов. Поэтому разработчики антивирусных средств поступают следующим образом: для поиска вирусов они хранят их сигнатуры. Такой поиск кодов вирусов называется сигнатурным поиском.

           

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

            Шифрующиеся вирусы при получении управления первым делом расшифровывают свой код с помощью процедуры расшифровки, а затем выполняют все остальные действия.

            Шифрующиеся вирусы называют иногда вирусами-”призраками”.

 

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

            Все дальнейшие усовершенствования алгоритмов вирусов уже продиктованы выживанием вирусов при работе под всевозможными антивирусными средствами.

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

            Авторы вирусов на такой подход ответили полиморфными вирусами. Эти вирусы для шифрования используют не только разные ключи, но и разные процедуры шифрования (соответственно, дешифрования). Два экземпляра такого вируса не имеют ни одной совпадающей последовательности кода!

 

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

           

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

            Первый полиморфный вирус был написан в США Марком Вошборном (Mark Washburn) в качестве экспериментального. Он получил название “V2Px”, или “V-1260”, и хотя не был распространен как вирус, послужил примером для авторов вирусов.

            Авторы компьютерных вирусов “вывели” самые современные виды вирусов, в которых нет ни одного постоянного БИТА информации.

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

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

Но . . .

 

Как создаются  MtE - вирусы?              

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

            В 1991 г. в Болгарии самым известным автором вирусов, именующим себя  Dark Avenger (Черный Мститель), был разработан алгоритм создания полиморфных вирусов. Это очень сложный алгоритм, который порождает дешифровщики, абсолютно непохожие друг на друга. Их размер колеблется в диапазоне от 0 до 512 байт, а в теле могут встречаться практически все команды процессора. Этот алгоритм его автор назвал Mutation Engine (машина мутаций), сокращенно он называется MtE или DAME (Dark Angel MuTation Engine).       

 

Вирусы с подключенным к ним молулем MtE для порождения дешифровщиков, называют  MtE-вирусами.  Это полуавтоматические вирусы.

 

Вслед за Mutation Engine появилось еще несколько средств разработки полиморфных вирусов. В Казани был создан AWME (Anti WEB Mutation Engine).   А вот названия зарубежных разработок полиморфных вирусов:

·      CLME ( Crazy Lord Mutation Engine ),

·      DSCE ( Dark Slayer Confusion Engine ),

·      GCAE ( Golden Cicada Abnormal Engine ),

·      NED ( NUKE Encription Device ),

·      SMEG ( Simulated Metamorfic Encription Generator ),

·      TPE ( Trident Polymorfic Engine ),

·      VICE ( Virogen’s Irreguar Code Engine ).

 

Даже по количеству автоматизированных разработок для создания полиморфных вирусов становится очевидным широкое распространение полиморфных вирусов.

 

           КОМБИНИРОВАННЫЕ  ВИРУСЫ

           

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

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

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

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