КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Структура файлового резидентного вируса.Для понимания функционирования файлового вируса необходимо некоторое знакомство с системой прерываний компьютера типа 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, если хотя бы один из них имеет расширение ЕХЕ или СОМ.
|