- •Лекція 4 віруси як шкідливе програмне забезпечення План лекції:
- •1. Класифікація комп'ютерних вірусів
- •2. Систематизація комп’ютерних вірусів
- •3. Файлові віруси
- •Види файлових вірусів
- •Алгоритм роботи файлового вірусу
- •Приклади файлових вірусів
- •4. Завантажувальні (бутові) віруси
- •Класифікаційний код завантажувального вірусу
- •Дескриптор завантажувального вірусу
- •Сигнатура бутового вірусу
- •Принцип дії завантажувальних вірусів
- •Розташування завантажувального вірусу
- •Алгоритм роботи завантажувального вірусу
- •Приклади завантажувальних вірусів
- •5. Макро-віруси
- •Причини зараження макро-вірусами
- •Загальні відомості про віруси в ms Office
- •Принципи роботи Word/Excel/Office-вірусів
- •Алгоритм роботи Word макро-вірусів
- •Алгоритм роботи Excel макро-вірусів
- •Алгоритм роботи вірусів для Access
- •Приклади макро-вірусів
- •6. Мережеві віруси
- •Приклади мережевих вірусів
- •7. Стелс-віруси
- •Приклади стелс-вірусів
- •8. Поліморфік-віруси
- •Поліморфні розшифровувачі
- •Рівні поліморфізму
- •Зміна виконуваного коду
- •9. Способи захисту від вірусів
- •Систематичне архівування важливої інформації
- •Обмеження ненадійних контактів
- •Використання антивірусних програм
- •Види антивірусних програм
- •Контрольні питання до Лекції 4
2. Систематизація комп’ютерних вірусів
Важливість і довгостроковий характер проблеми захисту від комп’ютерних вірусів на практиці не викликає сумніву. Для зручності ідентифікації було би зручно, щоб кожний вірус мав своє ім’я. На превеликий жаль, старі вірусі у більшості випадків мають чимало назв, які виникли історично, а нові віруси, навпаки, таких назв взагалі не мають.
Відомим дослідником комп’ютерних вірусів М.М. Безрукавим було вироблено і запропоновано схему класифікації, яка включає три основні елементи:
класифікаційний код вірусу;
дескриптор вірусу (формалізований список основних властивостей);
сигнатура вірусу (рядок для контекстного пошуку даного вірусу в зараженій програмі).
Класифікаційний код вірусу. Кожному вірусу присвоюється код, який складається з літерного префікса, кількісної характеристики і факультативного літерного суфікса.
Наприклад, в коді RСЕ-1813с є такі складові: RСЕ - префікс, 1813 - корінь (характеристика), а с - суфікс. Крім того, факультативне розширення, що записується в кінці коду через крапку, характеризує групу, до якої належить даний вірус. Наприклад, RСЕ-1813.ІЕR означає, що даний вірус належить до єрусалимської групи.
Головною вимогою до класифікаційного коду вірусу є можливість визначення більшості вхідних його властивостей на незараженому комп'ютері. Виконання будь-яких дій з дослідження вірусу на зараженому комп'ютері є найбільшою й найбільш розповсюдженою помилкою, якої припускаються недосвідчені користувачі. Необхідно підкреслити, що будь-які дії на комп'ютері, зараженому невідомим вірусом, пов'язані з певним ризиком викликати спрацьовування троянської компоненти вірусу. Крім того, резидентний вірус з метою маскування може перехоплювати запити і перекручувати інформацію, яка видається. Нині відомі віруси, що мають таку властивість. Наприклад, група файлових вірусів, відома під назвою ТР-вірусів, починаючи з вірусу ТР-34 (члени цієї групи мають номери, які зберігаються в передостанньому байті вірусу в шістнадцятковому вигляді), має властивість "самовикусування" при спробі трасувати заражену програму – резидентний вірус виконує "викусування" вірусу з програми, "підсовуючи" налагоджувачу вже вилікувану програму. Так само бутові віруси, які входять у пакистанську групу (віруси “Вгаіn”, “Аshar”), при спробі переглянути бут-сектор на зараженому комп'ютері "підсовують" користувачу оригінальний бут-сектор, який зберігається вірусом в одному із секторів, позначеному як дефектний (і, тим самим, вилученому з розподілу у файли).
Літерний префікс вказує на місце розміщення голови вірусу і складається з послідовності літер і цифр, що починається з великої літери. Відповідно до цього будемо розрізняти такі типи вірусів (розглядатимемо тільки реально існуючі типи, а не всі принципово можливі):
файлові – коли голова вірусу розміщується в СОМ-, ЕХЕ-файлах і оверлеях (символи С, Е в префіксі). При цьому додаткову літеру, яка відображає зараження оверлеїв, у префікс не вводиться, щоб запобігти його ускладненню, а виноситься у дескриптор;
бутові – коли голова вірусу розміщується в бут-секторі або блоці МВR (символи В, R або М у префіксі);
пакетні – коли голова вірусу розміщена в пакетному файлі, тобто являє собою фрагмент або програму на будь-якій мові програмування (префікс J).
Поряд із "чистими" вірусами, які використовують лише одне середовище, нині з'явились "гібридні" – комбінація файлових і бутових вірусів. У таких вірусах замість першої літери R використовують відповідну літеру префікса бутового вірусу, наприклад ВСЕ або МСЕ (як і бутові, змішані віруси не можуть бути нерезидентними).
Характеристика вірусу являє собою кількісно вимірювану властивість вірусу, яка допускає просте визначення і розрізняється для більшості типів вірусів. Наприклад, для файлових вірусів як характеристика може використовуватися величина приросту довжини файлів при зараженні ("інфекційна довжина"), хоч тут є певні складності.
Суфікс використовується, коли два різних віруси або два штами одного і того самого вірусу мають однаковий префікс і характеристику. У цьому випадку, для отримання унікального коду використовується як суфікс латинська літера. Наприклад, в коді RС-1704f літера f означає "штам-f”.
Дескриптор вірусу. Безумовно, запропонований код вірусу не охоплює та й не може охопити основні властивості вірусу. Водночас систематизація властивостей вірусу становить значний інтерес як для розробників антивірусних програм, так і для їх користувачів, оскільки дозволяє інтегрувати різнорідні факти, які стосуються поведінки того чи іншого вірусу в системі, тим самим полегшуючи їх запам'ятовування і порівняння. Тому як другий елемент класифікації пропонується так званий дескриптор.
Дескриптор є систематизацією основних характеристик вірусу в закодованому вигляді. Кодування складається з груп символів, що починаються з великої латинської літери, за якою йдуть маленькі латинські літери або цифри. При цьому велика латинська літера визначає вид характеристики, а наступні за нею малі літери або цифри – значення характеристики для конкретного вірусу. Наприклад, в дескрипторі "Хаb Yc Zdmt" є три властивості: X – зі значенням "аb", Y – зі значенням "с" і Z – зі значенням "dmt".
Сигнатура вірусу. Оскільки більшість відомих нині вірусів допускають детектування за допомогою контекстного пошуку, то однією з важливих задач класифікації є складання сигнатур. Сигнатура – це список рядків для контекстного пошуку. Знання сигнатур дозволяє перевіряти нове програмне забезпечення на їх наявність вірусів, тим самим суттєво підвищуючи ступінь захищеності ЕОМ. Стандартизація сигнатур особливо важлива, коли вірус має багато штамів, оскільки формальні схеми, подібні описаним вище класифікаційному коду і дескриптору, мають той недолік, що деякі штами не будуть розрізнятися в заданому просторі ознак. Водночас порівняно легко забезпечується унікальність сигнатури, у крайньому разі для більшості відомих вірусів, хоч існують віруси, які не вміщують жодної постійної сигнатури, тобто які не можна знайти за допомогою контекстного пошуку.
Сигнатури вірусів можуть бути представлені як текстовими рядками або регулярними виразами, так і ділянками програмного коду.
Хоч далі частіше в якості сигнатури використовуються тільки текстові рядки, для них застосовуються і регулярні вирази. Вони суттєво стійкіші до деяких мутацій і, крім того, при меншій довжині забезпечують кращу якість розпізнавання (менша кількість невірних спрацьовувань). Все це робить їх кращими за прості текстові рядки.
Очевидно, що сигнатура, яка відповідає ділянці з командами, надійніша за сигнатури ділянки з даними, наприклад з текстовими рядками (останні можуть бути модифіковані). Тому вибір сигнатури доцільно робити на основі аналізу дизасембльованого коду вірусу.
Довжина сигнатури не повинна бути дуже великою, оскільки довгу сигнатуру важко вірно набрати вручну. В той же час недостатня довжина або вибір нехарактерних ділянок коду сигнатури викликатимуть багато неправильних спрацювань, що зовсім небажано. Правильна сигнатура не повинна бути в жодній з найбільш розповсюджених в операційних системах службових програм, включаючи, безумовно, самі компоненти операційної системи. Отже, для вибору сигнатури відповідно до вказаних вимог необхідно провести ряд експериментів, де самі сигнатури можуть бути предметом порівняння і аналізу.
На сьогоднішній день є програми, які забезпечують детектування вірусів шляхом пошуку в файлах відповідних рядків, і використані в них сигнатури природно "прийняти за основу". Найбільшу цінність становлять рядки, які використовуються у відомому закордонному детекторі Scan, оскільки нові версії цього детектора з'являються регулярно і охоплюють практично всі віруси, які з'являються за кордоном. З інших закордонних детекторів необхідно відзначити Virscan фірми IВМ і ТNTVirus фірми Саrnel (Ізраїль). Для визначеності називатимемо рядок, який використовується детектором Scan, М-сигнатурою, рядок, який використовується Virscan, – І-сигнатурою, а рядок, який використовується TNTVirus, – С-сигнатурою.
Водночас відзначимо, що сигнатур для ряду вірусів, розроблених у нашій країні, в існуючих версіях цих програм немає, а сигнатури для болгарських вірусів часто невдалі. У таких випадках використовуються сигнатури, які позначені буквою В (В-сигнатури), або так звані J-сигнатури. Останні являють собою початкові байти коду вірусу, тобто перші виконувані команди тіла вірусу. Досвід показує, що вони досить специфічні і в більшості випадків дозволяють відрізнити один вірус від іншого. При цьому для файлових вірусів, які дописують своє тіло в кінець файла, вважають, що J-сигнатура починається з байта, на який передає керування команда JМР. Крім того, в тілі деяких вірусів зустрічаються характерні текстові рядки. Такі рядки називатимемо Т-сигнатурами і використовуватимемо як допоміжні.
Необхідно відзначити, що контекстний пошук може використовуватися не тільки для пошуку заражених вірусом програм, але й для пошуку програм і файлів, які знищені або пошкоджені вірусом. Наприклад, вірус С-648.VEN при певних значеннях таймера замість зараження програми знищує її, записуючи в перші п'ять байтів рядок, який відповідає переходу на підпрограму перезавантаження ВІОS. Для пошуку знищених вірусом програм можна використовувати рядок "ЕАFОFFООFО". Аналогічно вірус RСЕ-1800.DAV знищує сектори на вінчестері, записуючи перші байти повідомлення "Еddie lives … somewhere in time". За цим повідомленням за допомогою Norton Utilites або інших програм можна виявити пошкоджені сектори і визначити, до яких файлів вони належать.
За наявності сигнатури перевірку зараженості файлів вірусом даного типу зручно виконувати, використовуючи спеціальні програми. Наприклад, вдалою є програма TBScan, яка здійснює пошук у каталогах або заданих його гілках. У випадку виявлення заражених програм доцільно додатково проконтролювати результати за допомогою, наприклад, Norton Utilites, оскільки для перегляду всіх файлів можна використовувати режим глобального пошуку на диску.
