Лекция №6 «Принципы работы компьютерных вирусов» Файловые вирусы Внедрение в com программы




Скачать 73.89 Kb.
Дата 31.08.2016
Размер 73.89 Kb.
БИС Лекция №6 «Принципы работы компьютерных вирусов»

Файловые вирусы



Внедрение в COM - программы

Структура СОМ – программы предельно проста - она содержит только код и данные программы, не имея даже заголовка. Размер СОМ – программы ограничен размером одного сегмента (64Кбайт).

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


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




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

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



При загрузке зараженного таким способом файла управление получит вирус (так как он находится в начале файла и будет загружен с адреса 0100h). После окончания работы вирус передает управление коду, пере-


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


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


Внедрение в EXE – файлы
Существует несколько типов EXE файлов. Это стандартные exe файлы системы MS-DOS (в настоящее время постепенно выходят из употребления), Windows New Executable (NE) формат исполняемых файлов, разработанный для Windows 3.11 (в настоящее время почти не встречается) и Windows Portable Executable (PE) формат исполняемых файлов для Windows 9x/NT/2000 является в настоящее время типичным форматом используемым в настоящее время. Все три типа файлов имеют разную внутреннюю структуру и собственный формат заголовков, однако, для обеспечения совместимости перед заголовками NE и PE файлов имеется заголовок классического MS-DOS EXE и программа заглушка которая определяет, присутствует ли Windows и либо запускает Windows приложение, либо выводит строчку “This program requires Microsoft Windows” и завершает работу.

Классификация ЕХЕ-вирусов

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



Вирусы, замещающие программный код (Overwrite)

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



Вирусы-спутники (Companion)

Эти вирусы получили свое название из-за алгоритма размножения: зараженный файл переименовывается (например, его расширение заменяется на OVL), затем на место ЕХЕ-файла копируется вирусный код. При запуске такой инфицированной программы управление получает вирусный код, находящийся в ЕХЕ-файле. Инфицировав еще один или несколько ЕХЕ-файлов таким же образом, вирус возвращает оригинальному файлу исполняемое расширение (но не ЁХЕ, а СОМ, поскольку ЕХЕ-файл с таким именем занят вирусом), после чего исполняет его. Когда работа инфицированной программы закончена, ее запускаемому файлу возвращается расширение неисполняемого.



Вирусы, внедряющиеся в программу (Parasitic)

Способы внедрения вирусов в программу.

Запись в конец


Самый распространенный способ заражения ЕХЕ-файлов такой: в конец файла дописывается тело вируса, а заголовок корректируется (с сохранением оригинального) так, чтобы при запуске инфицированного файла управление получал вирус. Похоже на заражение СОМ-файлов, но вместо задания в коде перехода в начало вируса корректируется собственно адрес точки запуска программы. После окончания работы вирус берет из сохраненного заголовка оригинальный адрес запуска программы, прибавляет к нему адрес по которому программа была загружена в память и передает управление на полученный адрес.

Способ сдвига


Следующий способ - внедрение вируса в начало файла со сдвигом кода программы. Механизм заражения такой: тело инфицируемой программы считывается в память, на ее место записывается вирусный код, а после него - код инфицируемой программы. Таким образом, код программы
как бы "сдвигается" в файле на длину кода вируса. Отсюда и название способа - "способ сдвига". При запуске инфицированного файла вирус заражает еще один или несколько файлов. После этого он считывает в память код программы, записывает его в специально созданный на
диске временный файл с расширением исполняемого файла (СОМ или ЕХЕ), и затем исполняет этот файл. Когда программа закончила работу, временный файл удаляется.

Способ переноса


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

Макро вирусы


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

Макро-вирусы (macro viruses) являются программами на языках (макро-языках), встроенных в некоторые системы обработки данных (текстовые редакторы, электронные таблицы и т.д.). Для своего размножения такие вирусы используют возможности макро-языков и при их помощи переносят себя из одного зараженного файла (документа или таблицы) в другие. Наибольшее распространение получили макро-вирусы для Microsoft Word, Excel и Office97. Существуют также макро-вирусы, заражающие документы Ami Pro и базы данных Microsoft Access.



Принципы работы

При работе с документом Word выполняет различные действия: открывает документ, сохраняет, печатает, закрывает и т.д. При этом Word ищет и выполняет соответствующие «встроенные макросы» — при сохранении файла по команде File/Save вызывается макрос FileSave, при сохранении по команде File/SaveAs — FileSaveAs, при печати документов — FilePrint и т.д., если, конечно, таковые макросы определены.

Существует также несколько «авто-макросов», автоматически вызываемые при различных условиях. Например, при открытии документа Word проверяет его на наличие макроса AutoOpen. Если такой макрос присутствует, то Word выполняет его. При закрытии документа Word выполняет макрос AutoClose, при запуске Word вызывается макрос AutoExec, при завершении работы — AutoExit, при создании нового документа — AutoNew и т.д.

Похожие механизмы (но с другими именами макросов и функций) используются и в Excel/Office97, в которых роль авто- и встроенных макросов выполняют авто- и встроенные функции, присутствующие в каком-либо макросе или макросах, причем в одном макросе могут присутствовать несколько встроенных и авто-функций.

Таким образом к автоматическим макросам/функциям относятся:

Word Excel Office97

---- ----- --------

AutoOpen Auto_Open Document_Open

AutoClose Auto_Close Document_Close

AutoExec


AutoExit

AutoNew Document_New

Auto_Activate

Auto_Deactivate

После активизации вирус переносят свой код (макросы) в область глобальных макросов документа («общие» макросы), для этого они используют команды копирования макросов MacroCopy, Organizer.Copy либо при помощи редактора макросов — вирус вызывает его, создает новый макрос, вставляет в него свой код, который и сохраняет в документе. При выходе из Word глобальные макросы (включая макросы вируса) автоматически записываются в DOT-файл глобальных макросов (обычно таким файлом является NORMAL.DOT). Таким образом, при следующем запуске редактора MS-Word вирус активизируется в тот момент, когда Word грузит глобальные макросы, т.е. сразу. Затем вирус переопределяет (или уже содержит в себе) один или несколько стандартных макросов (например, FileOpen, FileSave, FileSaveAs, FilePrint) и перехватывает таким образом команды работы с файлами. При вызове этих команд вирус заражает файл, к которому идет обращение. Методы размножения Excel-вирусов в целом аналогичны методам Word-вирусов. Различия заключаются в командах копирования макросов (например, Sheets.Copy) и в отсутствии NORMAL.DOT — его функцию (в вирусном смысле) выполняют файлы в STARTUP-каталоге Excel.

Полиморфик-вирусы

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



Полиморфные расшифровщики


Простейшим примером частично полиморфного расшифровщика является следующий набор команд, в результате применения которого ни один байт кода самого вируса и его расшифровщика не является постоянным при заражении различных файлов:
MOV reg_1, count ; reg_1, reg_2, reg_3 выбираются из

MOV reg_2, key ; AX,BX,CX,DX,SI,DI,BP

MOV reg_3, _offset ; count, key, _offset также могут меняться

_LOOP:


xxx byte ptr [reg_3], reg_2 ; xor, add или sub

DEC reg_1

Jxx _loop ; ja или jnc

; дальше следуют зашифрованные код и данные вируса


Более сложные полиморфик-вирусы используют значительно более сложные алгоритмы для генерации кода своих расшифровщиков: приведенные выше инструкции (или их эквиваленты) переставляются местами от заражения к заражению, разбавляются ничего не меняющими командами типа NOP, STI, CLI, STC, CLC, DEC неиспользуемый регистр, XCHG неиспользуемые регистры и т.д.

Изменение исполняемого кода


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


База данных защищена авторским правом ©infoeto.ru 2022
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница