Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Структура файлового резидентного вируса.




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

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

Инсталлятор получает управление при выполнении зараженной программы и играет роль своеобразной ракеты-носителя, запускающей вирус на орбиту, т.е. в оперативную память. Он отрабатывает один раз - после запуска зараженной программы, и его целесообразно рассматривать как специализиро­ванный файловый вирус, заражающий оперативную память и, возможно, обыч­ные файлы (чаще всего COMMAND.COM). В последнем случае инсталлятор фактически является доработанным для заражения оперативной памяти файло­вым вирусом. Структуру инсталлятора можно упрощенно представить следую­щим образом:

Шаг 1: Проверить версию операционной системы

Шаг 2: Восстановить измененные байты зараженной программы.

Шаг 3: Проверить зараженность оперативной памяти. Если память зараже­на, то передать управление программе-вирусоносителю, иначе перейти к ша­гу 4.

Шаг 4: Закрепиться в оперативной памяти. Переписать свое тело в за­данный участок оперативной памяти и выполнить некоторые действия по за­креплению этого участка за собой.

Шаг 5: Перехватить требуемые прерывания. Заменить адреса в соответст­вующих элементах вектора прерываний на адреса своих программ обработки.

Шаг 6: Передать управление зараженной программе.

Приведем некоторые пояснения к упрощенной схеме инсталлятора файлово­го вируса. На шаге 3 инсталлятор, подобно обычному файловому вирусу, ка­ким-то образом определяет зараженность оперативной памяти. Эта проверка может выполняться самыми разнообразными способами. Одним из наиболее распространенных является введение некоторого нового прерывания или фун­кции существующего прерывания. Инсталлятор выдает это прерывание, и по­лучаемый ответ, например 5555 в регистре AX, играет роль сигнала "память заражена" и "память еще не заражена", своеобразный аналог признака "62 с" в дате создания файла для нерезидентных файловых вирусов. Второй способ состоит в сканировании памяти и поиске сигнатуры, характерной для данного вируса. Поиск может начинаться с определенной, характерной точ­ки, например, с адреса перехватываемого вирусом прерывания (обычно 21h). Могут быть использованы и другие способы или их комбинация.

Если проверка показала, что память еще не заражена, то на шаге 4 ви­рус выполняет ее заражение. Как уже указывалось, заражение может произ­водиться как путем записывания тела вируса на участок свободной памяти, так и "вписыванием" тела в уже используемый участок. В первом случае ви­рус должен обеспечить резервирование этой памяти, чтобы она не была за­терта другими программами. Простейшие вирусы выполняют это с помощью функции 31h (Keep) прерывания 21h или используя прерывание 27h (TSR --

Terminate but Stay Resident) MS DOS. Такие вирусы видны при просмотре списка резидентных программ утилитами типа Map, MemAnal и т.д. Более сложный способ предполагает манипуляцию с цепочкой блоков MCB (см. прил.5): вирус сам создает дополнительный блок MCB для захваченного уча­стка памяти.

После закрепления в оперативной памяти инсталлятор выполняет так на­зываемый перехват прерываний - обеспечение передачи управления модулям вируса, обрабатывающим соответствующие прерывания. Это может делаться "в лоб", т.е. путем использования соответствующих функций операционной системы, или "с черного хода" - нестандартным способом, обеспечивающим, в общем случае, более высокую степень маскировки. При любом способе конечный эффект со­стоит в том, что при возникновении определенного прерывания вирусу будет передаваться управление. При этом вирус может содержать дополнительный механизм, обеспечивающий то, что он будет получать управление всегда первым. Такие резидентные вирусы будем называть всплывающими. Всплытие помогает вирусу обходить простейшие программы-сторожа, основанные на пе­рехвате тех же прерываний, поскольку они будут получать управление после вируса. Этот способ использует, в частности, вирус RCE-1800.DAV (Эдди). Отсюда следует, что анализ списка резидентных программ и объема памяти, является весьма полезным диагностическим приемом, применимым как при анализе многих резидентных файловых вирусов, так и при анализе бутовых вирусов.

Функционирование резидентного файлового вируса можно представить как две стадии: инсталляции и слежения. При запуске зараженной программы уп­равление получает инсталлятор, который обеспечивает закрепление вируса в оперативной памяти, перехват требуемых прерываний и, возможно, маскиров­ку (с целью затруднить свое обнаружение среди резидентных программ). Эта фаза работы резидентного вируса получила название фазы инсталляции. В дальнейшем каждый раз при возникновении одного из перехваченных вирусом прерываний управление получает модуль обработки соответствующего преры­вания. При этом вирус может анализировать поступивший запрос и, в зави­симости от его вида, выполнять те или иные действия. Например, загрузка программы в оперативную память и ее выполнение реализованы с помощью функции 24h прерывания 21h (Exec). Если вирус перехватывает это прерывание, то он может определить имя файла, из которого выполняется загрузка, и заразить программу в этом файле.

Следует также отметить, что способ поиска "жертвы" у резидентных ви­русов существенно отличается от способа, используемого нерезидентными вирусами. Нерезидентные вирусы получают управление после загрузки в па­мять зараженной программы, а затем ищут файл-жертву, используя параметры PATH, СOMSPEC или другую информацию о расположении выполняемых программ. Если жертва найдена, то она заражается, а затем управление возвращается зараженной программе. Резидентные вирусы реагируют на определенные пре­рывания. Получив управление после перехваченного прерывания, они выпол­няют соответствующие действия. Как уже указывалось, обычно резидентные файловые вирусы выполняют заражение запускаемых программ (по функции 24h прерывания 21h), однако наиболее инфицирующие из резидентных вирусов за­ражают файлы и при их открытии или чтении. Например, вирус RCE-1800.DAV, кроме указанных действий, перехватывает и прерывания по чтению, заражая, в частности, оба файла, копируемые командой COPY, если хотя бы один из них имеет расширение ЕХЕ или СОМ.

 


 


Поделиться:

Дата добавления: 2015-04-18; просмотров: 169; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты