Лекция: Основы функционирования компьютерных вирусов

 

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

Функционирование файловых вирусов можно рассмотреть на примере типового жизненного цикла данного класса вредоносных программ.

Он состоит из двух основных стадий:

1) хранения;

2) исполнения.

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

Следующей стадией жизненного цикла файлового вируса является стадия исполнения, которая, как правило, состоит из пяти этапов [10]:

1) загрузка вируса в память;

2) поиск жертвы;

3) заражение найденной жертвы;

4) выполнение деструктивных функций;

5) передача управления программе-носителю.

Ниже приведено подробное описание этих этапов.

1. Загрузка вируса. Загрузка в память вируса осуществляется операционной системой одновременно с загрузкой исполняемого объекта, в который внедрен вирус.

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

Упрощенная схема загрузки исполняемого файла в оперативную память в операционной системе Windows выглядит следующим образом:

– открытие исполняемого файла;

– анализ заголовков на корректность;

– формирование виртуального адресного пространства исполняемого файла на основе информации заголовков данного файла (базовый адрес в виртуальной памяти, размер в адресном пространстве, количество секций кода и данных, копирование секций в адресное пространство);

– настройка адресов импортируемых функций библиотек операционной системы на основе информации секции импорта;

– инициализация стека и формирование начального заполнения регистров процессора;

– формирование служебных структур (блок описания процесса (PEB), блок описания первичного потока (TEB) процесса), структур, определяющих обработчиков структурных исключений (SEH);

– передача управления по адресу первой инструкции исполняемого файла.

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

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

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

По способу поиска жертвы вирусы можно разделить на два класса. Первый класс осуществляет активный поиск жертвы с использованием стандартных средств операционной системы по поиску файлов в файловой системе. Например, в операционной системе Windows – это вызов функций FindFirstFile и FindNextFile или их эквивалентов, реализованных на низком уровне по средствам соответствующих вызовов системных функций прерывания 0x2e.

Второй класс составляют вирусы, реализующие пассивные механизмы поиска, основанные на расстановке «ловушек» (hooks) на некоторые системные функции. Для операционной системы Windows данные «ловушки» реализуются по средствам перехвата следующих системных функций, например Exec, ShellExecute, FindFirstFile, FindNextFile, OpenFile и др., макровирусы – с помощью перехвата команд типа Save as из меню File.

Механизмы перехвата функций системных библиотек достаточно полно описаны в книге О. Зайцева "ROOTKITS, SPYWARE/ADWARE, KEYLOGGERS & BACKDOORS: обнаружение и защита" [3].

3. Заражение жертвы. Этап заражения жертвы характеризуется наличием механизма переноса всего тела файлового вируса (самокопирование) или его модифицированной части в найденную жертву. В зависимости от особенностей реализации данного этапа жизненного цикла вируса выделяют два типа вредоносных программ:

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

– вирусы, внедряющие свое тело в файлы-жертвы.

В зависимости от места внедрения возможны следующие варианты:

– внедрение в начало файла. При данном способе внедрения вредоносного кода тело вируса переписывается в начало жертвы, замещая его, либо к телу вируса добавляется содержимое незараженного файла;

– внедрение в конец файла. Наиболее распространенный способ внедрения файловых вирусов, при котором в конец файла жертвы добавляется тело вируса и модифицируется адрес первой ин-струкции исполняемого файла на адрес первой машинной команды вируса;

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

Особенности этапа заражения для загрузочных вирусов определяются особенностями объектов, в которые они внедряются, – загрузочными секторами гибких и жестких дисков и главной загрузочной записью (MBR) жестких дисков. Основной проблемой является ограниченный размер этих объектов. В связи с этим вирусам необходимо каким-то образом сохранить где-то на диске ту свою часть, которая не уместилась на месте жертвы, а также перенести оригинальный код инфицированного загрузчика. Существуют различные способы решения этой задачи. Ниже приводится классификация, предложенная Е. Касперским.

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

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

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

4. Короткие вирусы могут уместиться в один сектор загрузчика и полностью взять на себя функции MBR или загрузочного сектора.

Процесс заражения для макровирусов сводится к сохранению вирусного макрокода в выбранном документе-жертве. Для некоторых систем обработки информации это сделать не совсем просто, так как формат файлов документов может не предусматривать возможность сохранения макропрограмм. В качестве примера приведем Microsoft Word. Сохранение макрокода для этой системы возможно только в файлах шаблонов (имеющих по умолчанию расширение .DOT). Поэтому для своего сохранения вирус должен контролировать обработку команды Save as из меню File, которая вызывается всякий раз, когда происходит первое сохранение документа на диск. Этот контроль необходим, чтобы в момент сохранения изменить тип файла-документа (имеющего по умолчанию расширение .DOC) на тип файла-шаблона. В этом случае на диске окажутся и макрокод вируса, и содержимое документа.

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

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

 

еще рефераты
Еще работы по информатике