Макро-вирусы -> 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_OpenAutoClose Auto_Close Document_CloseAutoExecAutoExitAutoNew Document_NewAuto_ActivateAuto_Deactivate

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

Английский Датский Голландский ФинскийFileNew FilerNyt BestandNieuw TiedostoUusiFileOpen Filer+bn BestandOpenen TiedostoAvaaFileClose FilerLuk BestandSluiten TiedostoSuljeFileSave FilerGem BestandOpslaan TiedostoTallennaFileSaveAs FilerGemSom BestandOpslaanAls TiedostoTallennaNimellфFileTemplates FilerSkabeloner BestandSjablonen TiedostoMallitToolsMacro FunkMakro ExtraMacro Ty0kalutMakroФранцузский Немецкий ИтальянскийFichierNouveau DateiNeu FileNuovoFichierOuvrir Datei+ffnen FileApriFichierFermer DateiSchlie#en FileChiudiFichierEnregistrer DateiSpeichern FileSalvaFichierEnregistrerSous DateiSpeichernUnter FileSalvaConNomeFichierModшles DateiDokVorlagen FileModelliOutilsMacro ExtrasMakro StrumMacroПортугальский Испанский Шведский БразильскийFicheiroNovo ArchivoNuevo ArkivNytt ArquivoNovoFicheiroAbrir ArchivoAbrir Arkiv+ppna ArquivoAbrirFicheiroFechar ArchivoCerrar ArkivStфng ArquivoFecharFicheiroGuardar ArchivoGuardar ArkivSpara ArquivoSalvarFicheiroGuardarComo ArchivoGuardarComo ArkivSparaSom ArquivoSalvarComoFicheiroModelos ArchivoPlantillas ArkivMallar ArquivoModelosFerramentasMacro HerramMacro VerktygMakro FerramMacro

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

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

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

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