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

         

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


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

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

  1. привязки программы на макро-языке к конкретному файлу;
  2. копирования макро-программ из одного файла в другой;
  3. возможность получения управления макро-программой без вмешательства пользователя (автоматические или стандартные макросы).
  4. Данным условиям удовлетворяют редакторы 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).
    4. Данная особенность макро-языков предназначена для автоматической обработки данных в больших организациях или в глобальных сетях и позволяет организовать так называемый «автоматизированный документооборот». С другой стороны, возможности макро-языков таких систем позволяют вирусу переносить свой код в другие файлы, и таким образом заражать их.

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


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

      При заражении некоторые макро-вирусы проверяют наличие своей копии в заражаемом объекте и повторно себя не копируют. Другие макро-вирусы не делают этого и переписывают свой код при каждом заражении. Если при этом в заражаемом файле или области системных макросов уже определен макрос, имя которого совпадает с макросом вируса, то такой макрос оказывается уничтоженным.




      Реализация стелс-алгоритмов в макро-вирусах является, наверное, наиболее простой задачей - достаточно всего лишь запретить вызов меню File/Templates или Tools/Macro. Достигается это либо удалением этих пунктов меню из списка, либо их подменой на макросы FileTemplates и ToolsMacro.

      Частично стелс-вирусами можно назвать небольшую группу макро-вирусов, которые хранят свой основной код не в самом макросе, а в других областях документа - в его переменных или в Auto-text.



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