Энциклопедия компьютерных вирусов

         

Win32.Cabanas this text was written by Peter Szor, Data Fellows Ltd


"Win32.Cabanas" является первым известным 32-битным вирусом, работающим под Windows NT, Windows 95 и Win32s. Обнаружен во второй половине 1997. Имеет длину всего около 3K. Содержит текст:

(c) Win32.Cabanas v1.0 by jqwerty/29A

Автор этого вируса тот же, что и у печально известного макро-вируса "Cap". "Win32.Cabanas" является резидентным вирусом, однако время "жизни" резидентной части вируса ограничено временем работы зараженной программы - вирус не оставляет независимой процедуры, перехватывающей системные события и заражающей выполняемые файлы. Вместо этого вирус действует как часть зараженной программы и пользуется ее ресурсами (см. ниже). Вирус использует анти-эвристические и антиотладочные приемы, частично зашифрован/запакован, использует (впервые для Windows-вирусов) стелс-приемы.

При запуске зараженного файла "Win32.Cabanas" управление передается на тот же адрес, что и до заражения - вирус не изменяет адрес "точки входа" в файл, а записывает по этому адресу команду перехода на свою "точку входа" (JMP Virus_Code, как это делают некоторые DOS-вирусы).

Получив управление, вирус распаковывает и расшифровывает таблицу текстовых строк, которые являются именами Win32 KERNEL API, и затем ищет Base Address в KERNEL32.DLL. Для этого вирус при заражении файлов ищет в них адреса процедур GetModuleHandleA и GetModuleHandleW в Import Table и сохраняет необходимый указатель в списке ".idata". Поскольку системный загрузчик заполняет адреса этих функций при запуске зараженного файла, вирус автоматически получает их и использует в дальнейшем для своего распространения. Если же зараженный файл не содержит процедур GetModuleHandleA или GetModuleHandleW, вирус использует третий (недокументированный) способ вычисления Base Address KERNEL32.DLL (этот способ работает только под Win95 и не работает под NT).

Получив адрес ядра Windows32 и ModuleHandle, вирус такими же и другими приемами определяет адреса других системных функций - GetProcAddress, FindFirst, FindNext, FindClose, SetAttributes, CloseHandle и т.д.
После этого вирус имеет все необходимое для своей работы.

Первым делом вирус заражает EXE-файлы как обычный нерезидентный вирус - ищет их в каталогах Windows, Windows System и в текущем каталоге. Процесс заражения происходит достаточно быстро - для ускорения работы с файлами вирус использует "memory mapped files" (новая функция обработки файлов в Windows32).

При заражении вирус проверяет длины файлов - если длина файла кратна 101, то такие файлы считаются зараженными (именно такие длины имеют все зараженные файлы). Вирус также не заражает файлы больших размеров. Заражаются файлы, имеющие расширение имени только EXE или SCR (screen saver). Затем вирус проверяет EXE- и PE-заголовки, ищет ссылки на импортируемые функции GetModuleHandleA, GetModuleHandleW, GetProcAddress и запоминает ссылки на них в секции ".idata".

Затем вирус переходит непосредственно к заражению файла: устанавливает у секции ".idata" характеристики MEM_WRITE, подсчитывает адрес "точки входа" в файле, записывает туда инструкцию "JMP Virus", которая указывает в конец файла, и дописывает к файлу свой код. Дополнительно вирус увеличивает размер последней секции (для этого правит ее заголовок). Вирус также проверяет и при необходимости правит "настраиваемые адреса" (relocation table) для того, чтобы при "настройке адресов" не оказалась испорченным 5-байтовая команда передачи управления "JMP Virus". После заражения файлов вирус перехватывает функции API (т.е. остается "резидентно") и возвращает управление программе-носителю. Вирус перехватывает несколько функций, среди которых - FindFirstFileA, FindFirstFileW, FindNextFileA и FindNextFileW. При вызове этих функций вирус проверяет файл, к которому идет обращение. Если файл не заражен, вирус записывается в него описанным выше методом. Если файл заражен, вирус "показывает" уменьшенную длину файла - такую же, какая была до заражения. Таким образом вирус реализует свой "полу-стелс" алгоритм - заметить изменение длин невозможно.Более того, если программа, просматривающая файлы уже заражена, вирус записывается во все PE EXE-файлы, к которым идет обращение. Вирус также заражает файлы и при вызове других перехваченных API-функций обращения к файлам - CopyFile, SetFileAttributes, SetFileTime и т.д.


Содержание раздела