1) привязки программы на макро-языке к конкретному файлу; 2) копирования макро-программ из одного файла в другой; 3) возможность получения управления макро-программой без вмешательства пользователя (автоматические или стандартные макросы);
Данным условиям удовлетворяют редакторы Microsoft Word и AmiPro, а также электронная таблица Excel. Эти системы содержат в себе макро-языки (Word - Word Basic, Excel - Visual Basic), при этом:
1) макро-программы привязаны к конкретному файлу (AmiPro) или находятся внутри файла (Word, Excel); 2) макро-язык позволяет копировать файлы (AmiPro) или перемещать макро-программы в служебные файлы системы (Word, Excel); 3) при работе с файлом при определенных условиях (открытие, закрытие и т.д.) вызываются макро-программы (если таковые есть), которые определены специальным образом (AmiPro) или имеют стандартные имена (Word, Excel).
Данная особенность макро-языков предназначена для автоматической обработки данных в больших организациях или в глобальных сетях и позволяет организовать так называемый "автоматизированный документооборот". С другой стороны, возможности макро-языков таких систем позволяют вирусу переносить свой код в другие файлы, и таким образом заражать их.
На сегодняшний день известны три системы, для которых существуют вирусы - Microsoft Word, Excel и AmiPro. В этих системах вирусы получают управление при открытии или закрытии зараженного файла, перехватывают стандартные файловые функции и затем заражают файлы, к которым каким-либо образом идет обращение. По аналогии с MS-DOS можно сказать, что макро-вирусы являются резидентными вирусами - они активны не только в момент открытия/закрытия файла, но до тех пор, пока активен сам редактор.
Word/Excel-вирусы
При работе с документом Word (так же как и Excel) выполняет различные действия - открывает документ, сохраняет, печатает, закрывает и т.д. При этом Word ищет и выполняет соответствующие макросы - при сохранении файла вызывается макрос FileSave, при сохранении по команде File/SaveAs - FileSaveAs, при печати документов - FilePrint и т.д. если, конечно, таковые макросы определены.При открытии документа Word проверяет его на наличие макроса AutoOpen. Если такой макрос присутствует, то Word выполняет его. При закрытии документа Word выполняет макрос AutoClose.
Вирусы семейства Macro.Word содержат в себе как минимум один из автоматических макросов (AutoOpen, AutoClose, AutoExec, AutoExit, AutoNew) или один из стандартных макросов (FileOpen, FileClose, FileSaveAs и т.д.). Если документ заражен, то при открытии документа Word вызывает зараженный автоматический макрос AutoOpen (или AutoClose при закрытии документа) и, таким образом, запускает код вируса, если это не запрещено системной переменной DisableAutoMacros. Если же вирус содержит макросы со стандартными именами, то они получают управление при вызове соответствующего пункта меню (File/Open, File/Close, File/SaveAs).
Во всех известных вирусах семейства Macro.Word макросы AutoOpen/AutoClose и (или) макросы со стандартными именами содержат команды переноса макросов вируса в область глобальных (общих) макросов Word, т.е. при запуске Auto-макроса или при вызове соответствующей стандартной функции вирус заражает область глобальных макросов. При выходе из Word глобальные макросы (включая макросы вируса) автоматически записываются в DOT-файл глобальных макросов (обычно таким файлом является NORMAL.DOT). Таким образом, при следующем запуске Word вирус активизируется в тот момент, когда WinWord грузит глобальные макросы, т.е. сразу.
Затем вирус переопределяет один или несколько стандартных макросов (например, FileOpen, FileSave, FileSaveAs, FilePrint) и перехватывает таким образом команды работы с файлами. При вызове этих команд вирус заражает файл, к которому идет обращение. Для этого вирус конвертирует файл в формат Template (что делает невозможной дальнейшие изменения формата файла, т.е. конвертирование в какой-либо не-Template формат) и записывает в файл свои макросы, включая Auto-макрос.
Таким образом, если вирус перехватывает макрос FileSaveAs, то заражается каждый DOC-файл, сохраняемый через перехваченный вирусом макрос. Если перехвачен макрос FileOpen, то вирус записывается в файл при его считывании с диска.
Следует отметить, что Word позволяет шифровать присутствующие в документе макросы. Таким образом, некоторые Macro.Word-вирусы присутствуют в зараженных документах в зашифрованном виде.
Известные вирусы семейства Macro.Word заражают DOC-файлы формата Microsoft Word версий 6 и 7. Заражение системы происходит при редактировании зараженного DOC-файла. Характерными проявлениями вирусов семейства macro.Word являются:
1) Невозможность конвертирования зараженного документа Word в другой формат.
2) Невозможность записи документа в другой каталог/на другой диск командой "Save As".
3) Зараженные файлы имеют формат Template. При заражении вирусы WinWord конвертируют файлы из формата Word Document в Template.
Большинство известных вирусов для Word несовместимы с национальными (в том числе с русской) версиями Word, или наоборот - рассчитаны только на локализованные версии Word и не работают под английской версией. Однако вирус в документе все равно остается активным и может заражать другие компьютеры с установленными на них соответствующей версией Word.
Вирусы для Word могут заражать компьютеры любого класса, а не только IBM-PC. Заражение возможно в том случае, если на данном компьютере установлет текстовый редактор, полностью совместимый с Microsoft Word версии 6 или 7.
Частично защититься от вирусов WinWord можно при помощи системного макроса DisableAutoMacros, который запрещает автоматический запуск Auto-макросов при работе с файлами. Однако при этом не запрещается макрос AutoExec и не запрещается запуск макросов со стандартными именами.
AmiPro-вирусы
При работе с каким-либо документом редактор AmiPro создает два файла - непосредственно текст документа (расширение имени файла - SAM) и дополнительный файл, содержащий макросы документа и, возможно, прочую информацию (расширение имени - SMM).Документу можно поставить в соответствие какой-либо макрос из SMM-файла (команда AssignMacroToFile). Этот макрос является аналогом AutoOpen и AutoClose в MS-Word и вызывается редактором AmiPro при открыти или закритии файла.
Видимо, в AmiPro отсутствует возможность помещать макросы в "общую" область, поэтому вирусы для AmiPro могут заразить систему только при открытии зараженного файла, но не при загрузке системы, как это происходит с MS-Word после заражения файла NORMAL.DOT.
Как и MS-Word, AmiPro позволяет переопределять системные макросы (например, SaveAs, Save) командой ChangeMenuAction. При вызове переопределенных функций (команд меню) управление получают зараженные макросы, т.е. код вируса.