Макровирусы (macro viruses) являются программами на языках (макроязыках), встроенных в некоторые системы обработки данных (текстовые редакторы, электронные таблицы и т. д.). Для своего размножения такие вирусы используют возможности макроязыков и при их помощи переносят себя из одного зараженного файла (документа или таблицы) в другие. Наибольшее распространение получили макровирусы для Microsoft Word, Excel и Office 97. Для существования вирусов в конкретной системе необходимо наличие встроенного в систему макроязыка с возможностями: 1) привязки программы на макроязыке к конкретному файлу; 2) копирования макропрограмм из одного файла в другой; 3) получения управления макропрограммой без вмешательства пользователя (автоматические или стандартные макросы). Данным условиям удовлетворяют редакторы Microsoft Word, Office 97 и AmiPro, а также электронная таблица Excel. Эти системы содержат в себе макроязыки (Word — Word Basic, Excel и Office 97 — Visual Basic), a также: 1) макропрограммы привязаны к конкретному файлу (AmiPro) или находятся внутри файла (Word, Excel, Office 97); 2) макроязык позволяет копировать файлы (AmiPro) или перемещать макропрограммы в служебные файлы системы и редактируемые файлы (Word, Excel, Office 97); 3) при работе с файлом при определенных условиях (открытие, закрытие и т. д.) вызываются макропрограммы (если таковые есть), которые определены специальным образом (AmiPro) или имеют стандартные имена (Word, Excel, Office 97). Эта особенность макроязыков предназначена для автоматической обработки данных в больших организациях или в глобальных сетях и позволяет организовать так называемый "автоматизированный документооборот". С другой стороны, возможности макроязыков таких систем позволяют вирусу переносить свой код в другие файлы и заражать их. На сегодняшний день известны четыре системы, для которых существуют вирусы, — Microsoft Word, Excel, Office 97 и AmiPro. В этих системах вирусы получают управление при открытии или закрытии зараженного файла, перехватывают стандартные файловые функции и затем заражают файлы, к которым каким-либо образом идет обращение. По аналогии с MS-DOS можно сказать, что большинство макровирусов являются резидентными: они активны не только в момент открытия/закрытия файла, но до тех пор, пока активен сам редактор. Word-, Excel-, Office 97-вирусы Общие сведения. Физическое расположение вируса внутри файла зависит от его формата, который в случае продуктов Microsoft чрезвычайно сложен. Все файлы-документы Word, Office 97 или таблицы Excel представляют собой последовательность блоков данных (каждый из которых также имеет свой формат), объединенных между собой при помощи большого количества служебных данных. Этот формат носит название OLE2 — Object Linking and Embedding. Структура файлов Word, Excel и Office 97 напоминает усложненную дисковую файловую систему DOS: "корневой каталог" файла-документа или таблицы указывает на основные подкаталоги различных блоков данных, несколько таблиц FAT содержат информацию о расположении блоков данных в документе и т. д. Более того, система Office Binder, поддерживающая стандарты Word и Excel позволяет создавать файлы, одновременно содержащие один или несколько документов в формате Word и одну или несколько таблиц в формате Excel. При этом Word-вирусы способны поражать Word-документы, a Excel-вирусы — Excel-таблицы, и все это возможно в пределах одного дискового файла. То же справедливо и для Office 97. По причине такой сложности форматов файлов Word, Excel и Office 97 представить расположение макровируса в файле можно лишь схематично. Следует отметить, что Word версий 6 и 7 позволяет шифровать имеющиеся в документе макросы. Таким образом, некоторые Word-вирусы присутствуют в зараженных документах в зашифрованном (Execute only) виде. Большинство известных вирусов для Word несовместимы с национальными (в том числе с русской) версиями Word или, наоборот, рассчитаны только на локализованные версии Word и не работают под английской версией. Однако вирус в документе все равно остается активным и может заражать другие компьютеры с установленной на них соответствующими версиями Word. Вирусы для Word могут заражать компьютеры любого класса, а не только IBM PC. Заражение возможно в том случае, если на данном компьютере установлен текстовый редактор, полностью совместимый с Microsoft Word версии 6 или 7 (например, MS Word for Macintosh). To же справедливо для Excel и Office 97. Следует также отметить, что сложные форматы документов Word, таблиц Excel и особенно Office 97 имеют следующую особенность: в файлах-документах и таблицах присутствуют "лишние" блоки данных, т. е. данные, которые никак не связаны с редактируемым текстом или таблицами либо являются случайно оказавшимися там копиями прочих данныу файла. Причиной возникновения таких блоков данных является кластерная организация данных в ОЕЕ2-документах и таблицах, так как даже если введен всего один символ текста, то под него выделяется один, а иногда и несколько кластеров данных. При сохранении документов и таблиц в кластерах, не заполненных "полезными" данными, остается "мусор", который попадает в файл вместе с прочими данными. Количество "мусора" в файлах может быть уменьшено отменой пункта настройки в Word и Excel "Allow Fast Save", однако это лишь уменьшает общее количество "мусора", но не убирает его полностью. Следствием этого является тот факт, что при редактировании документа его размер изменяется вне зависимости от производимых с ним действий: при добавлении нового текста размер файла может уменьшиться, а при удалении части текста — увеличиться. То же и с макровирусами: при заражении файла его размер может уменьшиться, увеличиться или остаться неизменным. Следует также отметить тот факт, что некоторые версии OLE2.DLL содержат небольшой недочет, в результате которого при работе с документами Word, Excel и особенно Office 97 в блоки "мусора" могут попасть случайные данные с диска, включая конфиденциальные (удаленные файлы, каталоги и т. д.). Принципы работы. При работе с документом Word версий 6 и 7 выполняет различные действия: открывает документ, сохраняет, печатает, закрывает и т. д. При этом Word ищет и выполняет соответствующие "встроенные макросы": при сохранении файла по команде File/Save вызывается макрос FileSave, при сохранении по команде File/SaveAs — File-SaveAs, при печати документов — FilePrint и т. д., если, конечно, таковые макросы определены. Существует также несколько автомакросов, автоматически вызываемых при различных условиях. Например, при открытии документа Word проверяет его на наличие макроса AutoOpen. Если такой макрос присутствует, то Word выполняет его. При закрытии документа Word выполняет макрос AutoClose, при запуске Word вызывается макрос AutoExec, при завершении работы — AutoExit, при создании нового документа — AutoNew. Похожие механизмы (но с другими именами макросов и функций) используются в Excel и Office 97, в которых роль авто- и встроенных макросов выполняют авто- и встроенные функции, имеющиеся в каком-либо макросе или макросах, причем в одном макросе может присутствовать несколько встроенных и автофункций. Автоматически (т. е. без участия пользователя) выполняются также макросы/функции, ассоциированные с какой-либо клавишей либо моментом времени или датой, т. е. Word и Excel вызывают макрос-функцию при нажатии на конкретную клавишу (или комбинацию клавиш) либо при достижении какого-либо момента времени. В Office 97 возможности по перехвату событий несколько расширены, но принцип используется тот же. Макровирусы, поражающие файлы Word, Excel или Office 97, как правило, пользуются одним из трех приемов, перечисленных выше: в вирусе либо присутствует автомакрос (автофункция), либо переопределен один из стандартных системных макросов (ассоциированный с каким-либо пунктом меню), либо макрос вируса вызывается автоматически при нажатии на какую-либо клавишу или комбинацию клавиш. Существуют также полувирусы, которые не используют всех этих приемов и размножаются, только когда пользователь самостоятельно запускает их на выполнение. Таким образом, если документ заражен, при его открытии Word вызывает зараженный автоматический макрос AutoOpen (или AutoClose при закрытии документа) и запускает код вируса, если это не запрещено системной переменной DisableAutoMacros. Если вирус содержит макросы со стандартными именами, они получают управление при вызове соответствующего пункта меню (File/Open, File/Close, File/SaveAs). Если же переопределен какой-либо символ клавиатуры, то вирус активизируется только после нажатия на соответствующую клавишу. Большинство макровирусов содержат все свои функции в виде стандартных макросов Word, Excel, Office 97. Существуют, однако, вирусы, скрывающие свой код и хранящие его в виде немакросов. Известно три подобных приема, все они используют возможность макросов создавать, редактировать и исполнять другие макросы. Как правило, подобные вирусы имеют небольшой (иногда — полиморфный) макрос — загрузчик вируса, который вызывает встроенный редактор макросов, создает новый макрос, заполняет его основным кодом вируса, выполняет и затем, как правило, уничтожает (чтобы скрыть следы присутствия вируса). Основной код таких вирусов находится либо в самом макросе вируса в виде текстовых строк (иногда — зашифрованных), либо хранится в области переменных документа или в области Auto-text. Алгоритм работы Word-макровирусов Большинство известных Word-вирусов (версий 6, 7 и Word 97) при запуске переносят свой код (макросы) в область глобальных макросов документа ("общие" макросы), для этого они используют команды копирования макросов MacroCopy, Organizer. Сору либо при помощи редактора макросов. Вирус вызывает его, создает новый макрос, вставляет в него свой код, который и сохраняет в документе. При выходе из Word глобальные макросы (включая макросы вируса) автоматически записываются в DOT-файл глобальных макросов (обычно это NORMAL.DOT). Таким образом, при следующем запуске Word вирус активизируется в тот момент, когда WinWord грузит глобальные макросы, т. е. сразу. Затем вирус переопределяет (или уже содержит в себе) один или несколько стандартных макросов (например, FileOpen, FileSave, FileSaveAs, FilePrint) и перехватывает команды работы с файлами. При вызове этих команд вирус заражает файл, к которому идет обращение. Для этого вирус конвертирует файл в формат Template (что делает невозможным дальнейшие изменения формата файла, т. е. конвертирование в какой-либо не-Template-формат) и записывает в файл свои макросы, включая автомакрос. Таким образом, если вирус перехватывает макрос FileSaveAs, то заражается каждый DOC-файл, сохраняемый через перехваченный вирусом макрос. Если перехвачен макрос FileOpen, то вирус записывается в файл при его считывании с диска. Второй способ внедрения вируса в систему используется значительно реже. Он базируется на так называемых Add-in-файлах, т. е. файлах, являющихся служебными дополнениями к Word. В этом случае NORMAL.DOT не изменяется, a Word при запуске загружает макросы вируса из файла (или файлов), определенного как Add-in. Этот способ практически полностью повторяет заражение глобальных макросов за тем исключением, что макросы вируса хранятся не в NORMAL.DOT, а в каком-либо другом файле. Возможно также внедрение вируса в файлы, расположенные в каталоге STARTUP. Word автоматически подгружает файлы-темплейты из этого каталога, но такие вирусы пока не встречались. Рассмотренные выше способы внедрения в систему представляют собой некоторый аналог внедрения резидентных DOS-вирусов. Макровирусы, которые не переносят свой код в область системных макросов можно рассматривать аналогом нерезидентных вирусов. Для заражения других файлов-документов они либо ищут их при помощи встроенных в Word функций работы с файлами, либо обращаются к списку последних редактированных файлов (Recently used file list). Затем такие вирусы открывают документ, заражают его и закрывают. Алгоритм работы Excel-макровирусов Методы размножения Excel-вирусов (включая Excel 97) в целом аналогичны методам Word-вирусов. Различия заключаются в командах копирования макросов (например, Sheets.Copy) и в отсутствии NORMAL.DOT, его функцию (в вирусном смысле) выполняют файлы в STARTUP-каталоге Excel. AmiPro-вирусы При работе с каким-либо документом редактор AmiPro создает два файла — непосредственно текст документа (расширение имени файла — SAM) и дополнительный файл, содержащий макросы документа и, возможно, прочую информацию (расширение имени — SMM). Формат обоих файлов достаточно прост. Они представляют собой обычный текстовый файл, в котором как редактируемый текст, так и команды управления присутствуют в виде обычных текстовых строк. Документу можно поставить в соответствие какой-либо макрос из SMM-файла (команда AssignMacroToFile). Этот макрос является аналогом AutoOpen и AutoClose в MS Word и вызывается редактором AmiPro при открытии или закрытии файла. Видимо, в AmiPro отсутствует возможность помещать макросы в общую область, поэтому вирусы для AmiPro могут заразить систему только при открытии зараженного файла, но не при загрузке системы, как это происходит с MS Word после заражения файла NORMAL.DOT. Как и MS Word, AmiPro позволяет переопределять системные макросы (например, SaveAs, Save) командой ChangeMenuAction. При вызове переопределенных функций (команд меню) управление получают зараженные макросы, т. е. код вируса.
|