|
|
Новости о вирусах и антивирусах |
"Hе знаю, как насчет подковать блоху, но вот Windows HELP-файлы умельцы из Беларуси заражать научились."
Новая версия Doctor Web 4.04 выпущена 16 февраля 1999 года, а 18 февраля выпущена обновленная основная вирусная бaза. Эта версия в стандартном режиме работы детектирует данный вирус во всех инфицированных объектах. Hо обнаруживать и обезвреживать в памяти данный вирус умеет только Dr.Web for Win32. Только она сканирует системную память Windows 95/98. Dr.Web for OS/2 и for Novell NetWare, к сожалению, этого делать так и не научились.
Желаем здоровья Вам и Вашим компьютерам,
ЗАО "ДиалогНаука"
Информационная служба
При заражении PE-файлов вирус Win95.SK.7977 не изменяет стартовый адрес программы, а записывает в таблицу настраиваемых элементов (обычно секция .reloc) свое основное зашифрованное тело и внедряет в точку входа или, чаще всего, в случайную область стартовой сегментной секции до 168 байт полиморфного кода, который расшифровывает основной вирусный код в область программного стека и передает ему управление. Далее вирус проверяет наличие своей резидентной копии в памяти компьютера. Для этого он читает байт из порта 534Bh и сравнивает его со значением 21h. Если из порта прочиталось именно это число, то вирус восстанавливает исходные, замещенные вирусом программные байты, и завершает свою работу.
Если же система еще не инфицирована, то Win95.SK.7977, производя некоторые манипуляции с глобальной и локальной дескрипторными таблицами, устанавливает новый селектор c системными привилегиями и переключается в нулевое кольцо защищенного режима. А в этом режиме, понятно, вирус уже имеет право использовать системные вызовы (на уровне драйверов виртуальных устройств), что он в дальнейшем с лихвой и делает.
Для начала вирус восстанавливает 168 оригинальных байт в стартовой сегментной секции программы, а затем определяет - существует ли в системе процесс с идентификатором 202h. Обычно под таким номером в системе Windows 95/98 регистрируется системный отладчик SoftICE. Если SoftICE будет обнаружен, то вирус прекращает свою попытку дальнейшей установки в память и возвращает управление программе-вирусоносителю. Hе знаю, но почему-то вирус не желает сосуществовать в системе рядом с этим отладчиком - боится, видимо, его отладки.
Если же SoftICE в системе отсутствует, то Win95.SK.7977 выделяет себе блок памяти размером 24K в системной области, копирует в него 7977 байт своего кода и устанавливает свои обработчики на IO_Handler и на IFSMgr_FileSystemAPIHook. Обработчик IO_Handler контролирует чтение из порта 534Bh и возвращение значения 21h для отклика "я здесь" своим "жаждущим резидентной жизни" вирусным собратьям. Обработчик же IFSMgr_FileSystemAPIHook контролирует открытие, переименование и обращение к атрибутам файлов; анализирует данные файлы и пытается произвести их заражение. При перехвате IFSMgr_FileSystemAPIHook вирус переустанавливает на себя системную функцию IFSMgr_InstallFileSystemAPIHook и при попытке каким-либо виртуальным драйвером установить свой новый обработчик IFSMgr_FileSystemAPIHook, вирус удаляет из цепочки обработчиков свой файловый обработчик (который находится последним в этой цепочке), устанавливает запрошенный драйвером обработчик и поверх его снова устанавливает свой обработчик.
Таким образом, вирусный обработчик всегда будет "стоять последним в очереди" и "всплывать наверх" в цепочке драйверов, обслуживающих IFSMgr_FileSystemAPIHook. Этот алгоритм "всплытия" был заимствован из вируса Win95.CIH и предназначен, видимо, для обхода антивирусных резидентных сторожей. Также при открытии файлов на запись и непосредственно записи в файлы вирус использует прямые вызовы FSD (File System Driver), обходя всю цепочку драйверов виртуальных устройств, обслуживающих файловые запросы.
Далее, первым делом после установки в память, Win95.SK.7977 открывает файл \WINDOWS\SYSTEM.INI, ищет в ней переменную "shell=", копирует указанный в ней файл (как правило, EXPLORER.EXE) в файл с новым расширением, отличным от исходного в последней, увеличенной на единицу, букве (например, файл EXPLORER.EXE копируется в файл EXPLORER.EXF) и заражает данный скопированный файл. После чего вирус создает в системном каталоге WINDOWS файл WININIT.INI, в котором, в разделе [rename] указывает, что файл EXPLORER.EXF необходимо скопировать в EXPLORER.EXE, а EXPLORER.EXF после этого удалить. В результате, после первой же перезагрузки Windows 95/98 система запустит этот инфицированный файл.
При открытии, переименовании или доступе к атрибутам файлов с расширениями EXE, DLL, SCR или HLP вирус пытается инфицировать их. Для того, чтобы заразить PortableExecutable EXE, DLL или SCR - файлы вирус анализирует их заголовок и заражает только такие файлы, у которых присутствует таблица-секция настраиваемых элементов и ее размер должен быть не менее 8148 байт. Вирус определяет адрес и размер стартовой сегментной секции и разбивает ее для себя на блоки по 8404 байт. Затем он выбирает случайным образом порядковый номер такого блока, читает его в память и сканирует его содержимое для поиска определенных вирусом некоторых последовательностей байт. Как правило, последовательности таких искомых байт присутствуют во всех программах, созданных с помощью компиляторов языков высокого уровня (Pascal, C++, ...). Именно такими инструкциями (например, "PUSH EBP; MOVE EBP,ESP") обычно начинаются программные функции.
Если требуемые вирусом байты обнаружены, то проверятся условие, чтобы якобы найденная программная функция была не менее 168 байт (в пределах 168 байт не должно быть инструкции возврата - RET). В случае успеха вирус запоминает адрес этой функции (адрес обнаруженной последовательности байт) и продолжает свой дальнейший поиск. После такого сканирования, если была найдена хоть одна подходящая для вирусного внедрения функция, то выбирается случайный адрес из всех зафиксированных вирусом адресов функций. Ежели вирус не смог найти в 8404 байтах ни одной подходящей ему процедуры, то он выбирает для внедрения своего кода стартовый адрес программы.
После этого вирус приступает к генерации своего зашифрованного тела и соответствующего ему полиморфного расшифровщика. Этот расшифровщик записывается в область ранее выбранного адреса программной функции (оригинальные же 168 байт сохраняются в теле вируса), а основное тело - в таблицу настраиваемых элементов (.reloc), причем, с вероятностью 1/8 вирус может изменить в заголовке название самой этой сегментной секции на совершенно случайное. В конце заражения заголовок PE-файла корректируется с учетом внесенных вирусом изменений. Все - файл инфицирован.
Механизм такого заражения файлов явно позаимствован из вирусов семейства Zhengxi. И что же получается в результате? А то, что при запуске такого зараженного файла вирусный код может никогда не получить управления, если программная функция, в которой он "поселился" не будет вызвана самой программой. Вирус может "годами жить" в таком файле, пока, наконец, или сама программа, или пользователь, управляющий ей, не выполнят каких-либо действий (например, нажмет кнопку F1), повлекших за собой передачу управления программной функции, на месте которой и "живет" этот самый вирус.
Вирус также использует еще один, "украденный" из Zhengxi, прием для распространения своей копии. Он внедряет в архивные файлы ARJ, HA, RAR, ZIP файлы свои полиморфные DOS-копии со случайными именами и расширениями COM или EXE. К архивам приписывается созданный вирусный файл в неупакованном формате (store) и соответствующим образом корректируются необходимые для такой записи служебные поля архивных файлов.
Следует заметить, что все "вирусные приемчики", описанные мной выше, были "утянуты" автором вируса из вирусов Win95.CIH и Zhengxi, но вирус использует еще один достаточно оригинальный, абсолютно новый, ни разу не встречавшийся ранее, способ своего распространения. Через... файлы помощи системы WINDOWS... Да, да, да, через обыкновенные HELP-файлы (HLP-файлы). Оказывается они также могут быть переносчиком заразы! HELP-файлы могут иметь макро-команды, которые будут выполняться при попытке открытия этих самых файлов средствами операционной системы WINDOWS 95/98/NT... Hо обо всем по порядку.
Вирус Win95.SK.7977 анализирует расширения HLP открываемых файлов и проверяет их формат на принадлежность именно этому типу файлов. Если HELP-файл подходит для заражения и еще не инфицирован, то вирус записывает в конец файлов вирусные макро-команды, корректирует служебное поле "|SYSTEM" и переносит байты информации, относящиеся к данному объекту, сразу за своими макро-командами. Потом вирус корректирует в заголовке HELP-файла новый размер измененного файла, создает свою полиморфную DOS копию и приписывает ее в конец HELP-файла по методу оверлея для EXE-файлов (размер полиморфной копии не учитывается системой и игнорируется при открытии такого файла).
Вирусные макро-команды проверяют существование на диске файла C:\NTLDR и в случае его отсутствия создают на диске C: файл со случайным именем, в который записывают 380 байт некоего зашифрованного "вирусного пускателя". Проверка файла C:\NTLDR нужна для того, чтобы не стартовать в среде WINDOWS NT, т.к., "жить" под этой операционной системой вирус не умеет.
Далее этот "пускатель" средствами макро-команд запускается и в качестве параметра ему передается полный путь открытого инфицированного HELP-файла. "Пускатель" расшифровывает себя, открывает HELP-файл, имя которого ему было передано в качестве параметра командной строки, читает из него полиморфную DOS копию, записывает эту копию в файл, из которого и стартовал сам "пускатель", запускает этот файл на выполнение и по окончании его работы удаляет этот файл (по сути дела, уничтожает следы своего присутствия на диске).
Таким образом, осталось только узнать, что же это за "полиморфная DOS копия" вируса? Это обычная 16-разрядная полиморфная копия вируса, в принципах создания и работы которой также прослеживается плагиат из вирусов Zhengxi. Hо вот механизм заражения системной памяти оригинален и не был замечен ранее в других вирусах. Hазовем этот 16-разрядный вирус для краткости "дроппером", т.к. он не является инфицированным объектом, а выполняет функции переносчика заразы. Итак, этот дроппер работает только в DOS-сессии WINDOWS. В любой другой операционной системе он пытается завершить свою работу. Причем инструкции, контролирующие операционную среду, имплантированы непосредственно в полиморфный расшифровщик. Также в расшифровщике могут присутствовать и команды, проверяющие наличие в памяти отладчика SoftICE и прекращающие работу дроппера в случае его нахождения.
После расшифровки вирус проверяет нахождение своей резидентной копии в памяти компьютера (читает байт из порта 534Bh) и с помощью интерфейса DPMI переключается в 16-разрядное пользовательское кольцо защищенного режима. Далее, манипулируя вызовами DPMI и дескрипторной таблицей, вирус производит переключение в 32-разрядное третье кольцо защищенного режима. То есть управление получает 32-разрядный вирусный код, который работает в инфицированных PE-файлах, - из режима виртуальной машины DOS-сессии вирус попадает в защищенный режим WINDOWS-приложения. Hу, а затем, как было уже описано выше, путем некоторых "ухищрений" вирус оказывается на системном (нулевом) кольце защищенного режима и размещает свою резидентную копию в области системных драйверов виртуальных устройств. Следует отметить, что заражение любого файла (исполняемого, архива или файла помощи) вирус производит только через минуту после предыдущего заражения.
Win95.SK.7977 очень опасен. При открытии программ, начинающихся на "ADIN" или "AVPI", а также, с большой долей вероятности, при открытии файлов, начинающихся на "_AVP", "AVP", "VBA" или "DRW" вирус уничтожает все файлы на всех логических дисках компьютера, после чего "завешивает" систему, вызывая системную функцию Fatal_Error_Handler. Удаляет файл \WINDOWS\COMMAND.PIF. Hе заражает файл, начинающийся на "JAR".
Содержит текст "© 1997 VBA Ltd. E-mail:support@vba.minsk.by".
Свое название получил из-за номера порта, с помощью которого проверяет свое наличие в памяти. 534Bh - это "SK" или "KS", что, в сущности, одно и тоже.
И. Данилов
|
Получить информацию о других интересных вирусах |