Макро-вирусы

Макро-вирусы (macro viruses) являются программами на языках (макро-языках), встроенных в некоторые системы обработки данных (текстовые редакторы, электронные таблицы и т.д.). Для своего размножения такие вирусы используют возможности макро-языков и при их помощи переносят себя из одного зараженного файла (документа или таблицы) в другие. Наибольшее распространение получили макро-вирусы для Microsoft Word, Excel и Office97. Существуют также макро-вирусы, заражающие документы Ami Pro и базы данных Microsoft Access.

Для существования вирусов в конкретной системе (редакторе) необходимо наличие встроенного в систему макро-языка с возможностями:

  1. привязки программы на макро-языке к конкретному файлу;
  2. копирования макро-программ из одного файла в другой;
  3. возможность получения управления макро-программой без вмешательства пользователя (автоматические или стандартные макросы).

Данным условиям удовлетворяют редакторы Microsoft Word, Office97 и AmiPro, а также электронная таблица Excel и база данных Microsoft Access. Эти системы содержат в себе макро-языки: Word - Word Basic, Excel, Office97 (включая Word97, Excel97 и Access) - Visual Basic for Applications. При этом:

  1. макро-программы привязаны к конкретному файлу (AmiPro) или находятся внутри файла (Word, Excel, Office97);
  2. макро-язык позволяет копировать файлы (AmiPro) или перемещать макро-программы в служебные файлы системы и редактируемые файлы (Word, Excel, Office97);
  3. при работе с файлом при определенных условиях (открытие, закрытие и т.д.) вызываются макро-программы (если таковые есть), которые определены специальным образом (AmiPro) или имеют стандартные имена (Word, Excel, Office97).

Данная особенность макро-языков предназначена для автоматической обработки данных в больших организациях или в глобальных сетях и позволяет организовать так называемый «автоматизированный документооборот». С другой стороны, возможности макро-языков таких систем позволяют вирусу переносить свой код в другие файлы, и таким образом заражать их.

На сегодняшний день известны четыре системы, для которых существуют вирусы — Microsoft Word, Excel, Office97 и AmiPro. В этих системах вирусы получают управление при открытии или закрытии зараженного файла, перехватывают стандартные файловые функции и затем заражают файлы, к которым каким-либо образом идет обращение. По аналогии с MS-DOS можно сказать, что большинство макро-вирусов являются резидентными: они активны не только в момент открытия/закрытия файла, но до тех пор, пока активен сам редактор.

Word/Excel/Office97-вирусы: общие сведения

Физическое расположение вируса внутри файла зависит от его формата, который в случае продуктов Microsoft чрезвычайно сложен — каждый файл-документ Word, Office97 или таблица Excel представляют собой последовательность блоков данных (каждый из которых также имеет свой формат), объединенных между собой при помощи большого количества служебных данных. Этот формат носит название OLE2 - Object Linking and Embedding. Структура файлов Word, Excel и Office97 (OLE2) напоминает усложненную файловую систему дисков DOS: «корневой каталог» файла-документа или таблицы указывает на основные подкаталоги различных блоков данных, несколько таблиц FAT содержат информацию о расположении блоков данных в документе и т.д.

Более того, система Office Binder, поддерживающая стандарты Word и Excel позволяет создавать файлы, одновременно содержащие один или несколько документов в формате Word и одну или несколько таблиц в формате Excel. При этом Word-вирусы способны поражать Word-документы, а Excel-вирусы — Excel-таблицы, и все это возможно в пределах одного дискового файла. То же справедливо и для Office97.

По причине такой сложности форматов файлов Word, Excel и Office97 представить расположение макро-вируса в файле можно лишь схематично:

Незараженный файл-документ   Вирус в файле-документе
или таблица                   или таблице
+----------------+             +----------------+
|заголовок файла |             |заголовок файла |
|----------------|             |----------------|
|служебные данные|             |служебные данные|
|(каталоги, FAT) |             |(каталоги, FAT) |
|----------------|             |----------------|
|текст           |             |текст           |
|                |             |                |
|----------------|             |----------------|
|шрифты          |             |шрифты          |
|----------------|             |----------------|
|макросы         |             |макросы         |
|(если есть)     |             |(если есть)     |
|----------------|             | - - - - - - - -|
|прочие данные   |             |макросы вируса  |
 . . .                         |----------------|
|                |             |прочие данные   |
|                |              . . .
+----------------+             +----------------+

Следует отметить, что Word версий 6 и 7 позволяет шифровать присутствующие в документе макросы. Таким образом, некоторые Word-вирусы присутствуют в зараженных документах в зашифрованном (Execute only) виде.

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

Вирусы для Word могут заражать компьютеры любого класса, а не только IBM-PC. Заражение возможно в том случае, если на данном компьютере установлет текстовый редактор, полностью совместимый с Microsoft Word версии 6 или 7 (например, MS Word for Macintosh). То же справедливо для Excel и Office97.

Следует также отметить, что сложность форматов документов Word, таблиц Excel и особенно Office97 имеет следующую особенность: в файлах-документах и таблицах присутствуют «лишние» блоки данных, т.е. данные, которые никак не связаны с редактируемым текстом или таблицами, либо являются случайно оказавшимися там копиями прочих данных файла. Причиной возникновения таких блоков данных является кластерная организация данных в OLE2-документах и таблицах — даже если введен всего один символ текста, то под него выделяется один или даже несколько кластеров данных. При сохранении документов и таблиц в кластерах, не заполненных «полезными» данными, остается «мусор», который попадает в файл вместе с прочими данными. Количество «мусора» в файлах может быть уменьшено отменой пункта настройки Word/Excel «Allow Fast Save», однако это лишь уменьшает общее количество «мусора», но не убирает его полностью.

Следствием этого является тот факт, что при редактировании документа его размер изменяется вне зависимости от производимых с ним действий — при добавлени нового текста размер файла может уменьшится, а при удалении части текста — увеличиться. То же и с макро-вирусами: при заражении файла его размер может уменьшиться, увеличиться или остаться неизменным.

Следует также отметить тот факт, что некоторые версии OLE2.DLL содержат небольшой недочет, в результате которого при работе с документами Word, Excel и особенно Office97 в блоки «мусора» могут попасть случайные данные с диска, включая конфиденциальные (удаленные файлы, каталоги и т.д.). В эти блоки могут попасть также команды вируса. В результате после лечения зараженных документов активный код вируса удаляется из файла, но в блоках «мусора» могут остаться часть его команд. Такие следы присутствия вируса иногда видимы при помощи текстовых редакторов и даже могут вызвать реакцию некоторых антивирусных программ. Однако эти остатки вируса совершенно безвредны: Word и Excel не обращают на них никакого внимания.

Word/Excel/Office97-вирусы: принципы работы

При работе с документом Word версий 6 и 7 выполняет различные действия: открывает документ, сохраняет, печатает, закрывает и т.д. При этом Word ищет и выполняет соответствующие «встроенные макросы» — при сохранении файла по команде File/Save вызывается макрос FileSave, при сохранении по команде File/SaveAs — FileSaveAs, при печати документов — FilePrint и т.д., если, конечно, таковые макросы определены.

Существует также несколько «авто-макросов», автоматически вызываемые при различных условиях. Например, при открытии документа Word проверяет его на наличие макроса AutoOpen. Если такой макрос присутствует, то Word выполняет его. При закрытии документа Word выполняет макрос AutoClose, при запуске Word вызывается макрос AutoExec, при завершении работы — AutoExit, при создании нового документа — AutoNew.

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

Таким образом к автоматическим макросам/функциям относятся:

Word         Excel            Office97
----         -----            --------
AutoOpen     Auto_Open        Document_Open
AutoClose    Auto_Close       Document_Close
AutoExec
AutoExit
AutoNew                       Document_New
             Auto_Activate
             Auto_Deactivate

Имена некоторых стандартных макросов Word (даны имена в различных локализованных версиях Word) приведены ниже:

Английский     Датский          Голландский        

FileNew        FilerNyt         BestandNieuw      
FileOpen       Filer+bn         BestandOpenen     
FileClose      FilerLuk         BestandSluiten    
FileSave       FilerGem         BestandOpslaan     
FileSaveAs     FilerGemSom      BestandOpslaanAls  
FileTemplates  FilerSkabeloner  BestandSjablonen   
ToolsMacro     FunkMakro        ExtraMacro        


Французский             Немецкий             

FichierNouveau          DateiNeu            
FichierOuvrir           Datei+ffnen          
FichierFermer           DateiSchlie#en       
FichierEnregistrer      DateiSpeichern       
FichierEnregistrerSous  DateiSpeichernUnter  
FichierModшles          DateiDokVorlagen    
OutilsMacro             ExtrasMakro         


Португальский       Испанский          Шведский       

FicheiroNovo        ArchivoNuevo       ArkivNytt      
FicheiroAbrir       ArchivoAbrir       Arkiv+ppna     
FicheiroFechar      ArchivoCerrar      ArkivStфng     
FicheiroGuardar     ArchivoGuardar     ArkivSpara     
FicheiroGuardarComo ArchivoGuardarComo ArkivSparaSom  
FicheiroModelos     ArchivoPlantillas  ArkivMallar    
FerramentasMacro    HerramMacro        VerktygMakro  


 
   Финский                      Итальянский
    
  TiedostoUusi                   FileNuovo
  TiedostoAvaa                   FileApri
   TiedostoSulje                 FileChiudi
   TiedostoTallenna              FileSalva
   TiedostoTallennaNimellф       FileSalvaConNome
   TiedostoMallit                FileModelli
    Ty0kalutMakro                StrumMacro
	
	
	Бразильский
	
	ArquivoNovo
	ArquivoAbrir
	ArquivoFechar
	ArquivoSalvar
	ArquivoSalvarComo
	ArquivoModelos
	 FerramMacro

Автоматически (т.е. без участия пользователя) выполняются также макросы/функции, ассоциированные с какой-либо клавишей либо моментом времени или датой, т.е. Word/Excel вызывают макрос/функцию при нажатии на какую-либо конкретную клавишу (или комбинацию клавиш) либо при достижении какого-либо момента времени. В Office97 возможности по перехвату событий несколько расширены, но принцип используется тот же.

Макро-вирусы, поражающие файлы Word, Excel или Office97 как правило пользуются одним из трех перечисленных выше приемов — в вирусе либо присутствует авто-макрос (авто-функция), либо переопределен один из стандартных системных макросов (ассоциированный с каким-либо пунктом меню), либо макрос вируса вызывается автоматически при нажатии на какую-либо клавишу или комбинацию клавиш. Существуют также полу-вирусы, которые не используют всех этих приемов и размножаются, только когда пользователь сомостоятельно запускает их на выполнение.

Таким образом, если документ заражен, при открытии документа Word вызывает зараженный автоматический макрос AutoOpen (или AutoClose при закрытии документа) и, таким образом, запускает код вируса, если это не запрещено системной переменной DisableAutoMacros. Если вирус содержит макросы со стандартными именами, они получают управление при вызове соответствующего пункта меню (File/Open, File/Close, File/SaveAs). Если же переопределен какой-либо символ клавиатуры, то вирус активизируется только после нажатия на соответствующую клавишу.

Большинство макро-вирусов содержат все свои функции в виде стандартных макросов Word/Excel/Office97. Существуют, однако, вирусы, использующие приемы скрытия своего кода и хранящие свой код в виде не-макросов. Известно три подобных приема, все они используют возможность макросов создавать, редактировать и исполнять другие макросы. Как правило подобные вирусы имеют небольшой (иногда — полиморфный) макрос-загрузчик вируса, который вызывает встроенный редактор макросов, создает новый макрос, заполняет его основным кодом вируса, выполняет и затем, как правило, уничтожает (чтобы скрыть следы присутствия вируса). Основной код таких вирусов присутствует либо в самом макросе вируса в виде текстовых строк (иногда — зашифрованных), либо хранится в области переменных документа или в области Auto-text.

Алгоритм работы Word макро-вирусов

Большинство известных Word-вирусов (версий 6, 7 и Word97) при запуске переносят свой код (макросы) в область глобальных макросов документа («общие» макросы), для этого они используют команды копирования макросов MacroCopy, Organizer.Copy либо при помощи редактора макросов — вирус вызывает его, создает новый макрос, вставляет в него свой код, который и сохраняет в документе.

При выходе из Word глобальные макросы (включая макросы вируса) автоматически записываются в DOT-файл глобальных макросов (обычно таким файлом является NORMAL.DOT). Таким образом, при следующем запуске редактора MS-Word вирус активизируется в тот момент, когда WinWord грузит глобальные макросы, т.е. сразу.

Затем вирус переопределяет (или уже содержит в себе) один или несколько стандартных макросов (например, FileOpen, FileSave, FileSaveAs, FilePrint) и перехватывает таким образом команды работы с файлами. При вызове этих команд вирус заражает файл, к которому идет обращение. Для этого вирус конвертирует файл в формат Template (что делает невозможной дальнейшие изменения формата файла, т.е. конвертирование в какой-либо не-Template формат) и записывает в файл свои макросы, включая Auto-макрос.

Таким образом, если вирус перехватывает макрос FileSaveAs, то заражается каждый DOC-файл, сохраняемый через перехваченный вирусом макрос. Если перехвачен макрос FileOpen, то вирус записывается в файл при его считывании с диска.

Второй способ внедрения вируса в систему используется значительно реже — он базируется на так называемых «Add-in» файлах, т.е. файлах, являющихся служебными дополнениями к Word. В этом случае NORMAL.DOT не изменяется, а Word при запуске загружает макросы вируса из файла (или файлов), определенного как «Add-in». Этот способ практически полностью повторяет заражение глобальных макросов за тем исключением, что макросы вируса храняться не в NORMAL.DOT, а в каком-либо другом файле.

Возможно также внедрения вируса в файлы, расположенные в каталоге STARTUP, - Word автоматически подгружает файлы-темплейты из этого каталога, но такие вирусы пока не встречались.

Рассмотренные выше способы внедрения в систему представляют собой некоторый аналог резидентных DOS-вирусов. Аналогом нерезидентности являются макро-вирусы, которые не переносят свой код в область системных макросов - для заражения других файлов-документов они либо ищут их при помощи встроенных в Word функций работы с файлами, либо обращаются к списку последних редактированных файлов (Recently used file list). Затем такие вирусы открывают документ, заражают его и закрывают.

Алгоритм работы Excel макро-вирусов

Методы размножения Excel-вирусов (включая Excel97) в целом аналогичны методам Word-вирусов. Различия заключаются в командах копирования макросов (например, Sheets.Copy) и в отсутствии NORMAL.DOT — его функцию (в вирусном смысле) выполняют файлы в STARTUP-каталоге Excel.

Следует отметить, что существует два возможных варианта расположения кода макро-вирусов в таблицах Excel. Подавляющее большинство таких вирусов записывают свой код в формате VBA (Visual Basic for Applications), однако существуют вирусы, хранящие свой код в старом формате Excel версии 4.0. Такие вирусы по своей сути ничем не отличаются от VBA-вирусов, за исключением отличий в формате расположения кодов вируса в таблицах Excel.

Несмотря на то, что в новых версиях Excel (начиная с версии 5) используются более совершенные технологии, возможность исполнения макросов старых версий Excel была оставлена для поддержания совместимости. По этой причине все макросы, написанные в формате Excel 4, вполне работоспособны во всех последующих версиях, несмотря на то, что Microsoft не рекомендует использовать их и не включает необходимую документацию в комплект поставки Excel.

Алгоритм работы вирусов для Access

Поскольку Access является частью пакета Office97 Pro, то вирусы для Access представляют собой такие же макросы на языке Visual Basic, как и прочие вирусы, заражающие приложения Office97. Однако в данном случае вместо авто-макросов в системе присутствуют автоматические скрипты, которые вызываются системой при различных событиях (например, Autoexec). Данные скрипты затем могут вызывать различные макро-программы.

Таким образом, при заражении баз данных Access вирусу необходимо заменить какой-либо авто-скрипт и скопировать в заражаемую базу свои макросы. Заражение скриптов без дополнительных макросов не представляется возможным, поскольку язык скриптов достаточно примитивен и не содержит необходимых для этого функций.

Следует отметить, что в терминах Access скрипты называются макросами (macro), а макросы — модулями (module), однако в дальнейшем будет использоваться унифицированная терминология — скрипты и макросы.

Лечение баз данных Access является более сложной задачей, чем удаление прочих макро-вирусов, поскольку в случае Access необходимо обезвредить не только вирусные макросы, но и авто-скрипты. А так так значительная часть работы Access возложена как раз на скрипты и макросы, то некорректное удаление или деактивация какого-либо элемента может привести к невозможности операций с базой данных. То же справедливо и для вирусов - некорректное замещение авто-скриптов может привести к потере данных, хранящихся в базе.

AmiPro-вирусы

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

Документу можно поставить в соответствие какой-либо макрос из SMM-файла (команда AssignMacroToFile). Этот макрос является аналогом AutoOpen и AutoClose в MS Word и вызывается редактором AmiPro при открыти или закритии файла.

Видимо, в AmiPro отсутствует возможность помещать макросы в «общую» область, поэтому вирусы для AmiPro могут заразить систему только при открытии зараженного файла, но не при загрузке системы, как это происходит с MS-Word после заражения файла NORMAL.DOT.

Как и MS Word, AmiPro позволяет переопределять системные макросы (например, SaveAs, Save) командой ChangeMenuAction. При вызове переопределенных функций (команд меню) управление получают зараженные макросы, т.е. код вируса.

оглавление "Классификация"
Используются технологии uCoz