Евгений Касперский
Макровирусы (macro viruses)
являются программами написанными на
языках (макроязыках), встроенных в
некоторые системы обработки данных (текстовые
редакторы, электронные таблицы и т. д.).
Для своего размножения такие вирусы
используют возможности макроязыков и
при их помощи переносятся из одного
зараженного файла (документа или
таблицы) в другие. Наибольшее
распространение получили макровирусы
для Microsoft Word, Excel и Office 97.
Для существования вирусов в
конкретной системе (редакторе)
необходимо наличие встроенного в
систему макроязыка с возможностями:
- привязки программы на макроязыке к
конкретному файлу;
- копирования макропрограмм из одного
файла в другой;
- получения управления
макропрограммой без вмешательства
пользователя (автоматические или
стандартные макросы).
Описанным условиям
удовлетворяют редакторы MS Word, MS Office 97 и
AmiPro, а также электронная таблица MS Excel.
Эти системы содержат в себе макроязыки
(MS Word — Word Basic, MS Excel и MS Office 97 — Visual Basic),
при этом:
- макропрограммы привязаны к
конкретному файлу (AmiPro) или находятся
внутри файла (MS Word/Excel/Office 97);
- макроязык позволяет копировать
файлы (AmiPro) или перемещать
макропрограммы в служебные файлы
системы и редактируемые файлы (MSWord
/Excel/Office 97);
- при работе с файлом при определенных
условиях (открытие, закрытие и т. д.)
вызываются макропрограммы (если
таковые есть), которые определены
специальным образом (AmiPro) или имеют
стандартные имена (MS Word/Excel/ Office 97).
Последняя особенность
предназначена для автоматической
обработки данных в больших организациях
или в глобальных сетях и позволяет
организовать так называемый «автоматизированный
документооборот». С другой стороны,
возможности макроязыков таких систем
позволяют вирусу переносить свой код в
другие файлы и таким образом заражать их.
В четырех указанных выше
программных продуктах вирусы получают
управление при открытии или закрытии
зараженного файла, перехватывают
стандартные файловые функции и затем
заражают файлы, к которым каким-либо
образом идет обращение. По аналогии с DOS
можно сказать, что большинство
макровирусов являются резидентными
вирусами: они активны не только в момент
открытия или закрытия файла, но до тех
пор, пока активен сам редактор.
MS Word/Excel/Office 97-вирусы:
общие сведения
Физическое расположение
вируса внутри файла зависит от его
формата, который в случае продуктов
Microsoft чрезвычайно сложен: каждый файл-документ
Word, Office 97 или таблица Excel представляют
собой последовательность блоков данных
(каждый из которых также имеет свой
формат), объединенных между собой при
помощи большого количества служебных
данных. Этот формат носит название OLE2 (Object
Linking and Embedding). Структура файлов Word, Excel и
Office 97 (OLE2) напоминает усложненную
файловую систему дисков DOS: «корневой
каталог» файла-документа или таблицы
указывает на основные подкаталоги
различных блоков данных, несколько «таблиц
FAT» содержат информацию о расположении
блоков данных в документе и т. д.
Более того, система Office Binder,
поддерживающая стандарты Word и Excel,
позволяет создавать файлы, одновременно
содержащие один или несколько
документов в формате Word и одну или
несколько таблиц в формате Excel, причем
Word-вирусы способны при этом поражать Word-документы,
а Excel-вирусы — Excel-таблицы, и все это
возможно в пределах одного дискового
файла. То же справедливо и для Office 97.
Следует отметить, что MS Word
версий 6 и 7 позволяет шифровать
присутствующие в документе макросы.
Таким образом, некоторые Word-вирусы
присутствуют в зараженных документах в
зашифрованном (Execute only) виде.
Большинство известных
вирусов для Word несовместимы с
национальными (в том числе с русской)
версиями Word или, наоборот, рассчитаны
только на локализованные версии Word и не
работают под английской версией. Однако
вирус в документе все равно остается
активным и может заражать другие
компьютеры с установленной на них
соответствующей версией Word.
Вирусы для Word могут заражать
компьютеры любого класса, а не только IBM
PC. Заражение возможно в том случае, если
на данном компьютере установлен
текстовый редактор, полностью
совместимый с Microsoft Word версии 6 или 7 (например,
MS Word for Macintosh). То же справедливо и для MS
Excel и MS Office 97.
Интересно, что форматы
документов Word, таблиц Excel и особенно Office
97 имеют следующую особенность: в файлах-документах
и таблицах присутствуют «лишние» блоки
данных, т. е. данные, никак не связанные с
редактируемым текстом или таблицами,
либо случайно оказавшиеся там копии
прочих данных файла. Причиной
возникновения таких блоков данных
является кластерная организация данных
в OLE2-документах и таблицах. Даже если
введен всего один символ текста, то под
него выделяется один или даже несколько
кластеров данных. При сохранении
документов и таблиц в кластерах, не
заполненных «полезными» данными,
остается «мусор», который попадает в
файл вместе с прочими данными.
Количество «мусора» в файлах может быть
уменьшено отменой пункта настройки
Word/Excel «Allow Fast Save», однако это лишь
уменьшает общее количество «мусора», но
не убирает его полностью.
ледует также отметить тот
факт, что некоторые версии OLE2.DLL содержат
небольшой недочет, в результате
которого при работе с документами Word, Excel
и особенно Office 97 в блоки «мусора» могут
попасть случайные данные с диска,
включая конфиденциальные (удаленные
файлы, каталоги и т. д.).
MS Word/Excel/Office 97-вирусы:
принципы работы
При работе с документом MS Word
версий 6 и 7 выполняет различные действия:
открывает документ, сохраняет, печатает,
закрывает и т. д. При этом Word ищет и
выполняет соответствующие встроенные
макросы: при сохранении файла по команде
File/Save вызывается макрос FileSave, при
сохранении по команде File/SaveAs — FileSaveAs,
при печати документов — FilePrint и т. д.,
если, конечно, таковые макросы
определены.
Существуют также несколько «автомакросов»,
автоматически вызываемых при различных
условиях. Например, при открытии
документа Word проверяет его на наличие
макроса AutoOpen. Если такой макрос
присутствует, то Word выполняет его. При
закрытии документа Word выполняет макрос
AutoClose, при запуске Word вызывается макрос
AutoExec, при завершении работы — AutoExit, при
создании нового документа — AutoNew.
Похожие механизмы, но с другими именами
макросов и функций, используются и в
Excel/Office 97.
Макровирусы, поражающие
файлы Word, Excel или Office 97, как правило
пользуются одним из трех
вышеперечисленных приемов:
- в вирусе присутствует автомакрос (автофункция);
- в вирусе переопределен один из
стандартных системных макросов (ассоциированный
с каким-либо пунктом меню);
- макрос вируса автоматически
вызывается при нажатии на какую-либо
клавишу или комбинацию клавиш.
Бывают также полувирусы,
которые не используют перечисленные
приемы и размножаются, только если
пользователь самостоятельно запускает
их на выполнение.
Большинство макровирусов
содержат все свои функции в виде
стандартных макросов MS Word/Excel/Office 97.
Существуют, однако, вирусы, использующие
приемы скрытия своего кода и хранящие
свой код в виде не-макросов. Известны три
подобных приема. Все они используют
возможность макросов создавать,
редактировать и исполнять другие
макросы. Как правило, подобные вирусы
имеют небольшой (иногда полиморфный)
макрос-загрузчик, который вызывает
встроенный редактор макросов, создает
новый макрос, заполняет его основным
кодом вируса, выполняет и затем, как
правило, уничтожает, чтобы скрыть следы
присутствия вируса. Основной код таких
вирусов присутствует либо в теле самого
вируса в виде текстовых строк, либо
хранится в области переменных документа
или в области Auto-text.
Алгоритм работы
макровирусов для Word
Большинство известных Word-вирусов
(версий 6, 7 и Word 97) при запуске переносят
собственный код в область глобальных
макросов документа («общие» макросы).
При выходе из Word глобальные
макросы (включая макросы вируса)
автоматически записываются в DOT-файл
глобальных макросов (обычно таким
файлом является NORMAL.DOT). Таким образом,
вирус активизируется в тот момент, когда
Word грузит глобальные макросы.
Затем вирус переопределяет (или
уже содержит в себе) один или несколько
стандартных макросов (например, FileOpen,
FileSave, FileSaveAs, FilePrint) и перехватывает таким
образом команды работы с файлами. При
вызове этих команд заражается файл, к
которому идет обращение. Для этого вирус
конвертирует файл в формат Template (что
делает невозможными дальнейшие
изменения формата файла, т. е.
конвертирование в какой-либо не-Template
формат) и записывает в файл свои макросы,
включая Auto-макрос.
Другой способ внедрения
вируса в систему базируется на так
называемых «Add-in» файлах, т. е. файлах,
являющихся служебными дополнениями к
Word. В этом случае NORMAL.DOT не изменяется, а
Word при запуске загружает макросы вируса
из файла (или файлов), определенного как
«Add-in». Этот способ практически
полностью повторяет заражение
глобальных макросов за тем лишь
исключением, что макросы вируса
хранятся не в NORMAL.DOT, а в каком-либо
другом файле.
Возможно также внедрение
вируса в файлы, расположенные в каталоге
STARTUP. В этом случае Word автоматически
подгружает файлы-шаблоны из этого
каталога, но такие вирусы пока не
встречались.
Обнаружение макровируса
Характерными признаками
присутствия макровирусов являются:
- невозможность конвертирования
зараженного документа Word в другой
формат;
- зараженные файлы имеют формат Template (шаблон),
поскольку при заражении Word-вирусы
конвертируют файлы из формата Word Document
в Template
- невозможность записи документа в
другой каталог или на другой диск
командой «Save As» (только для Word 6);
- в STARTUP-каталоге присутствуют «чужие»
файлы;
- наличие в Книге (Book) «лишних» и
скрытых Листов (Sheets).
Для проверки системы на
предмет наличия вируса можно
использовать пункт меню Tools/Macro. Если
обнаружены «чужие макросы», то они могут
принадлежать вирусу. Однако этот метод
не работает в случае стелс-вирусов,
которые «запрещают» работу этого пункта
меню, что, в свою очередь, является
достаточным основанием считать систему
зараженной.
Многие вирусы имеют ошибки
или некорректно работают в различных
версиях Word/Excel, в результате чего эти
программы выдают сообщения об ошибке,
например:
WordBasic Err = номер ошибки.
Если такое сообщение
появляется при редактировании нового
документа или таблицы и при этом
заведомо не используются какие-либо
пользовательские макросы, то это также
может служить признаком заражения
системы. Также сигналом о вирусе
являются изменения в файлах и системной
конфигурации Word, Excel и Windows. Многие вирусы
тем или иным образом меняют пункты меню
Tools/Options — разрешают или запрещают
функции «Prompt to Save Normal Template», «Allow Fast Save», «Virus
Protection». Некоторые вирусы устанавливают
на файлы пароль при их заражении.
Большое количество вирусов создают
новые секции и/или опции в файле
конфигурации Windows (WIN.INI).
Естественно, что к
проявлениям вируса относятся такие «неожиданности»,
как появление сообщений или диалогов с
достаточно странным содержанием или на
языке, не совпадающем с языком
установленной версии Word/Excel.
Восстановление
пораженных объектов
В большинстве случаев
процедура «лечения» зараженных файлов и
дисков сводится к запуску подходящего
антивирусного программного обеспечения.
Но бывают ситуации, когда
обезвреживание вируса приходится
осуществлять самостоятельно, т. е. «руками».
Для обезвреживания вирусов
Word и Excel достаточно сохранить всю
необходимую информацию в формате не-документов
и не-таблиц. Наиболее подходящим
является текстовый RTF-формат, включающий
практически всю информацию из
первоначальных документов и не
содержащий макросов.
Затем следует выйти из Word/Excel,
уничтожить все зараженные Word-документы,
Excel-таблицы, NORMAL.DOT для Word и все документы/таблицы
в STARTUP-каталогах Word/Excel. После этого
следует запустить Word/Excel и восстановить
документы/таблицы из RTF-файлов.
В результате этой процедуры
вирус будет удален из системы, а
практически вся информация останется
без изменений. Однако этот метод имеет
ряд недостатков. Основным является
трудоемкость конвертирования
документов и таблиц в RTF-формат, если их
число велико. К тому же в случае Excel
необходимо отдельно конвертировать все
Листы (Sheets) в каждом Excel-файле.
Другим существенным
недостатком является потеря нормальных
макросов, использующихся при работе.
Поэтому перед запуском описанной
процедуры следует сохранить их исходный
текст, а после обезвреживания вируса
восстановить необходимые макросы в
первоначальном виде.
Откуда берутся вирусы
и как избежать заражения
Основным источником вирусов
на сегодняшний день является Internet.
Наибольшее число заражений вирусом
происходит при обмене письмами в
форматах MS Word/Office 97: пользователь
зараженного макровирусом редактора, сам
того не подозревая, рассылает «инфицированные»
письма своим адресатам, а они рассылают
новые письма и т. д.
Предположим, что
пользователь ведет переписку с пятью
адресатами, каждый из которых, в свою
очередь, ведет переписку также с пятью
адресатами. После посылки «вирусного»
письма все пять компьютеров, получившие
его, оказываются зараженными. На втором
уровне рассылки будут заражены уже 1+5+20=26
компьютеров. Если адресаты сети
обмениваются письмами раз в день, то к
концу рабочей недели (за 5 дней)
зараженными окажутся как минимум 1+5+20+
80+320=426 компьютеров. Нетрудно подсчитать,
что за 10 дней заразятся более ста тысяч
компьютеров! Причем каждый день их
количество будет учетверяться.
Описанный случай
распространения вируса наиболее часто
регистрируется антивирусными
компаниями. Но нередки случаи, когда
зараженный файл-документ или таблица Excel
по причине недосмотра попадает в списки
рассылки коммерческой информации какой-либо
крупной компании. В этом случае
пострадают уже не пять, а сотни или даже
тысячи абонентов таких рассылок,
которые затем разошлют зараженные файлы
десяткам тысячам своих абонентов.
Файл-серверы общего
пользования и электронные конференции
также служат одним из основных
источников распространения вирусов.
Практически каждую неделю приходит
сообщение о том, что кто-то из
пользователей заразил свой компьютер
вирусом, который был получен из BBS, ftp-сервера
или электронной конференции.
При этом часто зараженные
файлы «закачиваются» автором вируса на
несколько BBS/ftp или рассылаются по
нескольким конференциям под видом новых
версий какого-либо программного
обеспечения (вплоть до антивирусов).
В случае массовой рассылки
вируса по файл-серверам BBS/ftp пораженными
одновременно могут оказаться тысячи
компьютеров, однако в большинстве
случаев «рассылаются» DOS- или Windows-вирусы,
скорость распространения которых в
современных условиях значительно ниже,
чем у их макрособратьев. По этой причине
подобные инциденты практически никогда
не кончаются массовыми эпидемиями.
Третий путь быстрого
распространения вирусов — локальные
сети. Если не принимать необходимых мер
защиты, то зараженная рабочая станция
при входе в сеть заражает один или
несколько служебных файлов на сервере,
различное программное обеспечение,
стандартные документы-шаблоны или Excel-таблицы,
применяемые в фирме, и т. д.
Опасность представляют также
компьютеры, установленные в учебных
заведениях. Если один из студентов
принес на своих дискетах вирус и заразил
какой-либо из учебных компьютеров, то
очередную «заразу» получат и все
остальные студенты, работающие на этом
компьютере.
То же относится и к домашним
компьютерам, если на них работает более
одного человека. Нередки ситуации, когда
сын-студент (или дочь), работая на
многопользовательском компьютере в
институте, перетаскивают вирус на
домашний компьютер, в результате чего
вирус попадает в компьютерную сеть
фирмы папы или мамы.
В заключение хочется
отметить, что, несмотря на кажущуюся
сложность борьбы с макровирусами,
обезопасить себя от этой «инфекции» при
спокойном и грамотном подходе к
проблеме не столь уж сложно.
Достаточно редко, но до сих
пор вполне реально заразить свой
компьютер вирусом при его ремонте или
профилактическом осмотре. Ремонтники —
тоже люди, и некоторым из них бывает
свойственно наплевательски относиться
к элементарным правилам компьютерной
безопасности.