Информационные технологииStfw.Ru 🔍

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

🕛 10.02.2009, 13:14
Для понимания функционирования файлового вируса необходимо некоторое знакомство с системой прерываний компьютера типа IBM PC. Hеобходимые сведения приводятся в литературе (см., например, [Скенлон90]).

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

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

Инсталлятор получает управление при выполнении зараженной программы и играет роль своеобразной ракеты-носителя, запускающей вирус на орбиту, т.е. в оперативную память. Он отрабатывает один раз - после запуска зараженной программы, и его целесообразно рассматривать как специализированный файловый вирус, заражающий оперативную память и, возможно, обычные файлы (чаще всего COMMAND.COM). В последнем случае инсталлятор фактически является доработанным для заражения оперативной памяти файловым вирусом. Структуру инсталлятора можно упрощенно представить следующим образом:
* Шаг 1: Проверить версию MS DOS * Шаг 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 для захваченного участка памяти.

После закрепления в оперативной памяти инсталлятор выполняет так называемый перехват прерываний - обеспечение передачи управления модулям вируса, обрабатывающим соответствующие прерывания. Это может делаться "в лоб", т.е. путем использования соответствующих функций MS DOS, или "с черного хода" - нестандартным способом, обеспечивающим, в общем случае, более высокую степень маскировки. При любом способе конечный эффект состоит в том, что при возникновении определенного прерывания вирусу будет передаваться управление. При этом вирус может содержать дополнительный механизм, обеспечивающий то, что он будет получать управление всегда первым. Такие резидентные вирусы будем называть всплывающими. Всплытие помогает вирусу обходить простейшие программы-сторожа, основанные на перехвате тех же прерываний, поскольку они будут получать управление после вируса. Этот способ использует, в частности, вирус RCE-1800.DAV (Эдди). Отсюда следует, что анализ списка резидентных программ и объема памяти, сообщаемого MS DOS, является весьма полезным диагностическим приемом, применимым как при анализе многих резидентных файловых вирусов, так и при анализе бутовых вирусов. Существует целый ряд программ, выдающих список резидентных программ. Автор рекомендует использовать для этой цели программу Release, которая являясь резидентной, не только позволяет получить этот список в любой момент, но дает возможность снять ненужные резидентные программы. Сведения об объеме оперативной памяти (установленной и свободной) можно, например, получить с помощью программы CHKDSK, вxодящей в MS DOS (она также выдает очень важные сведения об объеме памяти, занятой сбойными кластерами, и о количестве скрытых файлов), хотя имеется целый ряд других программ с аналогичными функциями (Map, MemAnal, MemStat и др). Для пользователей Norton Commander эту информацию проще всего получить с помощью команды Ctrl-L.

В случае наличия опасности заражения вирусом полезно включить вызов CHKDSK в файл AUTOEXEC.BAT, а за ним поместить строку с данными, которые получены при загрузке на незараженной системе, например:
c:\dos\chkdsk echo ПРОВЕРЬТЕ СООТВЕТСТВИЕ ПОЛУЧЕННЫХ echo ПОЛУЧЕННЫХ ЗНАЧЕНИЙ ЭТАЛОННЫМ ! echo 188416 in 8 hidden, 61440 in bad, pause 655360 totalmem, 515424 free memory

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

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

Вирусы   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉