Лекція 4

 

ВІРУСИ ЯК ШКІДЛИВЕ ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ

Презентація до лекції

План лекції:

1.                                                     Класифікація комп'ютерних вірусів.

2.                                                     Систематизація  комп’ютерних  вірусів.

3.                                                     Файлові віруси.

4.                                                     Завантажувальні (бутові) віруси.

5.                                                     Макро-віруси.

6.                                                     Мережеві віруси.

7.                                                     Стелс-віруси.

8.                                                     Поліморфік-віруси.

9.                                                     Способи  захисту  від  вірусів.

 

1. Класифікація комп'ютерних вірусів

Віруси можна розділити на класи за такими ознаками:

-   за середовище існування;

-   за способом зараження;

-   за  особливостями використовуваних алгоритмів;

-   за деструктивними можливостями.

Віруси за середовищем їх існування. За цією ознакою віруси поділяються на:

-   файлові віруси;

-   завантажувальні віруси;

-   макро-віруси;

-   мережні віруси.

  Файлові віруси діють одним з таких способів:

-   впроваджуються в основному у виконувані файли, тобто у файли з розширеннями СОМ та ЕХЕ.  Вони можуть впроваджуватись і у файли інших ти­пів, але в такому випадку, як правило, вони ніколи не отримують управління, і, як наслідок, втрачають здатність до розмноження;

-   створюють файли-двійники (компаньйон-віруси);

-   використовують особливості організації файлової системи (Link-віруси).

Бутовські (завантажувальні) віруси  діють такими методами:

-   впроваджуються в завантажувальний сектор диска (надалі Boot-cектор або бут-сектор);

-   впроваджуються в сектор, що містить програму завантаження систем­ного диска (Master Boot Record);

-   змінюють покажчик на активний boot-сектор.

Існують файлово-бутівські віруси, що заражають і файли, і завантажувальні сектори дисків.

Макро-віруси  заражають файли-документи і електронні таблиці відо­мих програмних продуктів.

Мережні віруси використовують для свого розповсюдження прото­коли або команди комп’ютерних мереж та електронної пошти.

Віруси за способом зараження. Резидентні віруси при зараженні (інфікуванні) комп’ютера зали­ша­ють в оперативній пам’яті свою резидентну частину, яка потім перехоплює звернення операційної системи до об’єктів зараження (файлів, завантажувальних секторів тощо) і впроваджується в них. Резидентні віруси знаходяться в пам’яті і є активними до самого вимкнення комп’ютера або до його перевантаження.

Нерезидентні віруси  не заражають пам’ять комп’ютера і є актив­ними лише обмежений проміжок часу. Деякі віруси лишають в пам’яті невеликі резидентні програми, які не розповсюджують вірус. Такі віруси вважаються нерезидентними.

Віруси за особливостями використовуваних алгоритмів. Прості віруси – це віруси-паразити, вони змінюють вміст файлів і секторів дисків і можуть бути досить легко виявлені та знешкоджені.

Стелс-віруси (або віруси-невидимки) – це віруси, які повністю або частково приховують себе в системі. Найбільш розповсюдженим стелс-алго­ритмом є перехоплення запитів ОС на читання-записування заражених об’єк­тів. Стелс-віруси при цьому або тимчасово виліковують їх, або під­став­ляють замість себе незаражені ділянки інформації. Це можуть бути і макро-віруси, які можуть забороняти виклики меню перегляду макросів. Це можуть бути і файлові (наприклад, вірус “Frodo”), і бутовські (вірус “Brain”) стелс-віруси.

Віруси-мутанти, які можуть використовувати алгоритми шифров­ки-розшифровки та поліморфізму, завдяки яким копії одного і того самого вірусу не мають жодного ланцюжка байтів, що повторюються. Поліморфік-віруси  досить важко виявити, вони не мають сигнатури, тобто не містять жодної сталої ділянки коду.

Віруси за деструктивними  можливостями. Опис деструктивних мо­жливостей вірусу можна представити у такому розрізі: 

-   нешкідливі віруси ніяким чином не впливають на роботу комп’ютера, крім зменшення вільної пам’яті на диску в результаті свого поширення;

-   безпечні віруси вплив вірусів обмежується зменшенням вільної пам’яті на диску і графічними, звуковими та іншими ефектами;

-   не­безпечні віруси можуть призводити до серйозних збійних ситуацій у роботі комп’ютера;

-   дуже небезпечні віруси можуть призводити до втрати програми, зни­щення даних, стирання необхідної для роботи комп’ютера інформації, яка записана в системних областях пам’яті, і навіть сприяти при­ско­ре­ному зносу рухомих частин механізмів, наприклад, головок вінчес­тера.

 

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, оскільки для перегляду всіх файлів можна використовувати режим глобального пошуку на диску.

 

3. Файлові віруси

До даної групи відносяться віруси, що при своєму розмноженні тим чи іншим способом використовують файлову систему якої-небудь  ОС.

Впровадження файлового вірусу можливе практично в усі викону­вані файли усіх популярних операційних систем. На сьогоднішній день відомі віруси, що вражають всі типи виконуваних об'єктів: командні файли (BAT),  драйвери (SYS, у тому числі спеціальні файли IO.SYS і MSDOS.SYS) і виконувані двійкові файли (EXE, COM). Існують віруси, що вражають файли інших операційних систем - Windows, OS/2, Macintosh, UNIX, включаючи VxD-драйвери Windows.

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

Файлові віруси є найпоширенішим типом комп'ютерних вірусів. Вони становлять близько 80% загальної кількості вірусів, відомих для комп'ютерів, які сумісні з ІВМ РС. Цей клас комп'ютерних вірусів має дуже високу інфікуючу спро­можність. За відсутності протидії вони викликають справжні епі­демії. Так, наприклад, відбулося з вірусом RСЕ-1813.ІЕR, відо­мого також під назвами Jerusalim (Єрусалим), Black Friday (Чор­на п'ятниця).

Більшість розповсюджених файлових вірусів мають штами, які не дуже відрізняються від базової версії. Тому можна гово­рити про групи файлових вірусів і, відповідно, групові дескриптори і групові сигнатури. Нині кількість ви­яв­ле­них у країнах СНД файлових вірусів перевищує кілька сотень, тому запам'я­то­ву­вання їх класифікаційних кодів суттєво полегшується, якщо вони викори­стовуються з розширенням, яке показує, до якої групи належить даний вірус.

Класифікаційний код файлового вірусу. Файлові віруси можна розділити на резидентні і нерезидентні, оскільки це в багатьох випадках визначає поведінку вірусу і насамперед його інфікуючу спроможність (резидентні віруси ма­ють значно вищу інфікуючу спроможність порівняно з нерезидентними).

Класифікаційний код файлових резидентних вірусів почи­нається з префікса R, наприклад R-1701.САS.

Префікс файлового віруса. Крім символу R, класифікаційний код файлового вірусу може включати символи С і Е або їх комбінацію. Як уже зазначалося, символи С і Е визначають типи файлів, заражених даним вірусом. Наприклад, якщо резидентний вірус заражає СОМ- і ЕХЕ-файли, то його класифікаційний код матиме пре­фікс RСЕ.

Кількісна характеристика. У якості кількісної характеристики можна використовувати:

-   нормований приріст або інфек­тивну довжину (infective length);

-   довжину коду вірусу;

-   приріст довжини будь-якого зараженого файла.

До об'єктивних властивостей фай­ло­вих вірусів, що безпосередньо спостерігаються, можна віднести насам­перед приріст довжини файлів при зараженні. Цей приріст, який зумовлює наявність вірусу, можна використати для визна­чення його типу. Тут є дві основні проблеми. По-перше, вели­чина приросту може варіюватися за­леж­но від довжини зараже­ного файла (багато вірусів при дописуванні свого коду в кінець зараженого файла вирівнює своє тіло на найближчу адресу, кра­тну 16, тобто на межу параграфа). По-друге, величина приросту може не збігатися для СОМ- і ЕХЕ-файлів. Тому як кількісну харак­те­ристику частіше використовують нормований приріст – інфек­тивну довжину, яку ви­значається за такими правилами:

-   для вірусів з префіксом С і СЕ (RС, RКСЕ) характеристика класи­фіка­цій­ного коду має дорівнювати мінімальному приросту довжини СОМ-файла (для вірусів типу С і СЕ) або ЕХЕ-файла (для вірусів типу Е);

-   для вірусів, які не змінюють довжину файла, вказується нуль, а через де­фіс дійсна довжина тіла вірусу, наприклад RС-О-346.LЕН;

-   для вірусів, які маскують збільшення довжини файла на зараженій про­грамі, до характеристики, визначеної за першим правилом, зліва   додається   незначущий   нуль   (наприклад,   RСЕ-02000. DAV).

Відзначимо, що запропонований першим правилом підхід дозволяє зня­ти вплив вирівнювання на межу параграфа для вірусів, які вирів­нюють свій приріст вказаним способом. Крім того, для віру­сів, які змінюють свій приріст визначеним способом, наприклад шляхом підгонки до величини, кратної 51, мінімальний приріст також дає можливість позбутися впливу вставних байтів (цей ви­падок можна розглядати як різновидність вирів­нювання). І на­решті, для вірусів, які багато разів заражують один і той самий файл, використання мінімального приросту дозволяє звільнитися від впливу багаторазового зараження.

Для визначення інфективної довжини не треба буде про­водити спе­ціальні експерименти із зараження файлів. Здебіль­шого її можна досить просто визначити, порівнявши прирости довжин двох або більше заражених файлів типу СОМ. Найчас­тіше файлові віруси заражають командний процесор МS-DОS (файл СОММАND.СОМ) і програми, назви яких знаходяться у файлі АUТОЕХЕС.ВАТ. При аналізі кількох заражених файлів можливі два найтиповіші (хоч і не єдино можливі) випадки.

Якщо прирости довжин двох або більше заражених файлів збіга­ють­ся, а залишки від ділення довжин початкових файлів на 16 від­різняються один від одного, то, ймовірно, вірус не виконує вирівнювання свого коду на межу параграфа й інфективну дов­жину L даного вірусу можна дістати за формулою:

L=D- 16-mod (LEN, 16)), тобто відніманням із отриманого приросту D доповнення 16 залишку від ділення початкової довжини LEN файла на 16. Наприк­лад, файл СОММАND.СОМ, який файлові віруси здебільшого пошкоджують в числі перших, у найпоширеніших нині версіях М8-DOS має довжину 25307. При цьому залишок від ділення 25307 на 16 дорівнює 11 (mod(25307,16)=11). Очевидно, що доповнення до 16 дорівнює 5, і для вирівнювання на межу па­раграфа необхідна вставка п'яти додаткових байтів. У цьому ви­падку інфективна довжина буде на 5 менша, ніж приріст довжи­ни файла СОММАND.СОМ. Перевагою прийнятого підходу є те, що, за окремим винятком (наприклад, вірус RСЕ-1813.ІЕR), визначена таким чином інфективна довжина збігається з довжи­ною коду вірусу.

Як кількісна характеристика класифікаційного коду можуть засто­со­вуватися й інші параметри. Найпоширенішими вважають такі два підходи.

Використання як кількісної характеристики довжини коду вірусу, ви­зна­ченої за константою, яка вміщується у фрагменті, що забезпечує допи­сування коду вірусу в заражений файл (цю константу можна порівняно легко визначити, аналізуючи дизасембльований код вірусу). Така характеристика є об'єктивною, тому її часто  використовують  розроб­ни­ки  антивірусних  про­грам, які досить добре володіють мовою асемблера. Але визна­чена так характеристика в ряді випадків не збігається зі значен­ням приросту довжин файлів, який спостерігається. Це знижує її цінність з погляду використання при спробі  класифікації ко­ристувачем, який не володіє мовою асемблера, нового, ще не­відомого йому вірусу.   Наприклад, для  згаданого вище єруса­лимського вірусу довжина коду вірусу становить 1808 байтів, а приріст довжини при зараженні файлів типу СОМ - 1813 бай­тів, що пояснюється додатковим записуванням в кінець зараже­ного файла типу СОМ п'ятибайтної константи "Мs-Dos" (вико­ристовується як ознака зараженості файла).

Використання як кількісної характеристики приросту дов­жини якого-небудь конкретного файла, отриманого в результаті його зара­ження. Цей дійсно зручний підхід втратив свою при­вабливість з появою ряду вірусів, які не заражають командний процесор, з розповсюдженням МS-DOS версій 4.0 і ви­ще, в якій довжина файла СОММAND.СОМ становить 37637, з появою нових сучасних операційних систем.

Дескриптор файлового вірусу. Для зручності сприйняття де­скриптор вірусу розбивається на декілька складових, для яких ви­користовуються такі позначення:

DМ – головний дескриптор;

DР – предикат зараження (для зручності сприйняття запи­саний в близькій до алгебраїчної нотації);

DR (тільки для резидентних вірусів) – положення в опера­тивній пам'яті, реакція на "тепле" перезавантаження і розмір зайнятої пам'яті;

DH – перехоплювані переривання (в шістнадцятковій сис­темі числення).

Сигнатура файлового вірусу. Як уже відзначалося, для сиг­натур доцільно використовувати рядки в шістнадцятковій системі числення, які відповідають характерним послі­довностям команд у тілі вірусу. Розміщення сигнатур підпорядковується такому правилу: як­що М-сигнатура входить у V-сигнатуру, то вона дода­ється після V-сиг­на­ту­ри. Як уже відзначалося раніше, Т-сигнатури існують не для всіх файлових вірусів. Однією із найзручніших сигнатур для файлових вірусів є J-сиг­на­ту­ра. Їх можна дуже швидко визначи­ти за допомогою будь-якого налагоджувача (Debug, Turbo Debugger, АFD і т.д.). Корис­ту­ва­чі, які не вміють пра­цю­вати з налагоджувачами, можуть використо­вувати для визначення J-сиг­натур програ­му "маскошукач", яка входить в пакет VL (непоганий детектор, заснований на контекстному пошуку заданих рядків).

Необхідно відзначити, що контекстний пошук можна вико­ристо­ву­вати не тільки для пошуку заражених вірусом програм, але й для пошуку програм і файлів, які знищені або пошкод­жені вірусом. Наприклад, вірус С-648.VЕN при певних значен­нях таймера замість зараження програми знищує її, записуючи в перші 5 байтів рядок, який відповідає переходу на підпрограму перезавантаження ВІОS.

Види  файлових  вірусів

За способом зараження файлів віруси поділяються на:

-   overwriting-віруси;

-   паразитичні ("parasitic");

-   компаньйони-віруси ("companion");

-   link-віруси;

-   віруси-хробаки;

-   віруси, що заражають об'єктні модулі (OBJ), бібліотеки компі­ляторів (LIB) і вихідні тексти програм.

  Overwriting-віруси. Даний метод зараження є найбільш простий: вірус записує свій код замість коду файла, що заражається, знищуючи його вміст. Природно, що при цьому файл перестає працювати і не відновлюється. Такі віруси дуже швидко виявляють себе, оскільки операційна система і додатки досить швидко перестають працювати.

До різновиду overwriting-вірусів відносяться віруси, що записуються замість заголовка EXE-файлів. Основна частина файла при цьому залишається без змін і продовжує нормально працювати у відповідній операційній системі, однак заголовок виявляється зіпсованим.

Parasitic-віруси. До паразитичних відносяться усі файлові віруси, що при поширенні своїх копій обов'язково змінюють вміст файлів, залишаючи самі файли при цьому цілком чи частково працездатними. Паразитичні віруси розділяються на три типи в залежності від того, куди вони записують своє тіло.

1. Впровадження вірусу в початок файла ("prepending"-віруси) може від­буватися двома способами:

-   вірус переписує початок файла, що заражається, у його кінець, а сам копіюється в місце, що звільнилося;

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

Деякі віруси при цьому дописують у кі­нець файла блок додаткової інформації (наприклад, вірус "Jeru­sa­lem" по цьому блоку відрізняє заражені файли від незаражених).

Впровадження вірусу в початок файла застосовується в переважній більшості випадків при зараженні BAT- і COM-файлів MS DOS. Відо­мо кілька вірусів, що записують себе в початок EXE-файлів операційних систем DOS, Windows і навіть Linux. При цьому віруси для збереження пра­цездатності програми або лікують заражений файл, повторно запускають його, чекають закінчення його роботи і знову записуються в його початок (іноді для цього використовується тимчасовий файл, у який записується знешкоджений файл), або відновлюють код програми в пам'яті комп'ютера і надбудовують необхідні адреси в її тілі (тобто дублюють роботу ОС).

2. Впровадження вірусу в кінець файла ("appending"-віруси) – це найбільш розпов­сюд­же­ний спосіб упро­вадження вірусу у файл. При цьому вірус змінює початок файла таким чи­ном, що першими виконуваними командами програми є команди вірусу:

а) у COM-файлі в більшості випадків це досягається зміною його перших трьох (чи більш) байтів на коди інструкції JMP Loc_Virus (чи в більш загальному випадку – на коди програми, що передає керування на тіло вірусу);

б) у заголовку  EXE-файла змінюються значення стартової адреси (CSIP), кількість секцій у файлі, характеристики секцій,  довжина вико­ну­ваного модуля (файла), рідше – регістри-покажчики на стек (SSSP), контрольна сума файла і т.д.;

в) у виконуваних файлах Windows і OS/2 (NewEXE – NE, PE, LE, LX) змінюються поля в NewEXE-заголовку. Структура цього заголовка значно складніша за заголовок DOS EXE-файлів, тому зміні підлягає більше число полів – значення стартової адреси, кількість секцій у файлі, характеристики секцій і т.д. Додатково до цього довжини файлів перед зараженням можуть збільшуватися до значення, кратного параграфу (16 байт) в DOS або секції в Windows і OS/2 (розмір секції залежить від параметрів заголовка EXE-файла);

г) віруси, що впроваджуються у SYS-файли, приписують свої коди до тіла файла і модифікують адреси програм стратегії (Strategy) і пере­ри­вання (Interrupt) драйвера, що заражається (зустрічаються віруси, що змінюють адресу тільки однієї з цих програм). При ініціюванні зара­женого драйвера вірус перехоплює відповідний запит ОС, передає його драйверу, чекає відповіді на цей запит, коректує його і залиша­ється разом із драйвером в одному блоці оперативної пам'­яті. Такий вірус може бути надзвичайно небезпечним і живучим, він впро­вад­жу­ється в оперативну пам'ять при завантаженні ОС раніш за будь-яку антивірусну програму, якщо вона теж не є драйвером. Але іс­нують віруси, які заражають системні драйвери іншим способом: ві­рус модифікує заголовок драйвера так, що DOS розглядає інфіко­ваний файл як ланцюжок з двох (або більше) драйверів.

3. Впровадження вірусу в середину файла ("inserting"-віруси) може здій­снюватись кіль­ко­ма методами:

а) вірус переносить частину файла в його кі­нець або "розсовує" файл і записує свій код у простір, що звіль­нив­ся. Цей спосіб багато в чому аналогічний методам, перера­хо­ва­ним вище. Деякі віруси при цьому компресують перенесений блок файла так, що довжина файла при зараженні не змінюється (вірус "Mutant");

б) метод "cavity", при якому вірус записується у свідомо неви­ко­рис­товувані області файла. Вірус може бути скопійований у незадіяні області таблиці настроювання адреси EXE-файла (вірус "BootExe"), у заголовок EXE-файла, в область стека файла COMMAND.COM, в область текстових повідомлень популярних компіляторів. Існують віруси, що заражають тільки ті файли, що містять блоки, заповнені яким-небудь постійним байтом, при цьому вірус записує свій код замість такого блоку;

в) копіювання вірусу в середину файла може відбутися в ре­зуль­таті помилки вірусу, у цьому випадку файл може бути  зіпсований.

4. Віруси без точки входу. Окремо слід зазначити досить незначну групу вірусів, що не має "точки входу" (EPO-віруси - Entry Point Obscuring viruses). До них відносяться віруси, що не записують команд передачі ке­ру­вання в заголовок COM-файлів (JMP) і не змінюють адресу точки старту в заголовку EXE-файлів. Такі віруси записують команду переходу на свій код у будь-яке місце в середину файла й одержують керування не безпо­се­редньо під час запуску зараженого файла, а під час виклику процедури, що містить код передачі керування на тіло вірусу. Причому виконуватися ця процедура може вкрай рідко (наприклад, при виведенні повідомлення про якусь специфічну помилку). Тому вірус може довгі роки "спати" усе­редині файла і “вискочити на волю” тільки при деяких обмежених умовах.

Перед тим, як записати в середину файла команду переходу на свій код, вірусу необхідно вибрати "правильну" адресу у файлі – інакше заражений файл може виявитися зіпсованим. Відомі кілька способів, за допомогою яких віруси визначають такі адреси усередині файлів.

Перший спосіб – пошук у файлі послідовності стандартного коду  (ві­руси "Lucretia", "Zhengxi"). Ці віруси шукають у заражуваних файлах стандартні заголовки процедур C/Pascal і пишуть замість них свій код.

Другий спосіб – трасування чи дизасемблювання коду файла ("CNTV", "MidInfector", "NexivDer"). Такі віруси завантажують файл у пам'ять, потім трасують чи дизасемблюють його й у залежності від різних умов вибирають команду (чи команди), замість яких записується код переходу на тіло вірусу.

Третій спосіб застосовується тільки резидентними вірусами – при запуску файла вони контролюють будь-яке переривання (частіше – INT 21h). Як тільки файл, що тільки заражається, викликає це переривання, вірус записує свій код замість команди виклику переривання (віруси "Avatar.Positron", "Markiz").

Четвертий спосіб базується на так званих настроюваннях коду про­грами. Таблиця настроювань (relocation table) в EXE-файлах вказує на адре­си в тілі програми, які при завантаженні програми повинні бути приведені у відповідність до реальних адрес пам'яті. Зазвичай адреси, що надбудовуються, містять асемблерні інструкції з обмеженого набору. Вірус може легко ідентифікувати конкретну інструкцію, замінити її на виклик свого коду JMP_Virus і занулити відповідний запис у таблиці настроювань (щоб команда JMP_Virus не виявилася зіпсованою при завантаженні файла в пам'ять).

Компаньйон-віруси. До категорії "компаньйон" відносяться віруси, які не змінюють фай­лів, що заражаються. Алгоритм роботи цих вірусів полягає в тому, що для файла, який заражається, створюється файл-двійник, причому при запуску зараженого файла керування одержує саме цей двійник, тобто вірус.

Найбільш поширені компаньйон-віруси, що використовують особ­ли­вість DOS першим виконувати .COM-файл, якщо в одному каталозі при­сутні два файли з тим самим ім'ям, але різними розширеннями імені – .COM і .EXE. Такі віруси створюють для EXE-файлів файли-су­пут­ни­ки, що мають те ж саме ім'я, але з розширенням .COM, наприклад, для файла XCOPY.EXE створюється файл XCOPY.COM. Вірус записується в COM-файл і ніяк не змінює EXE-файл. При запуску такого файла DOS першим знайде і виконає COM-файл, тобто вірус, який потім запустить і EXE-файл. Деякі віруси використовують не тільки варіант COM-EXE, але також і BAT-COM-EXE.

Другу групу складають віруси, що при зараженні перейменовують файл у яке-небудь інше ім'я, запам'ятовують його (для наступного запуску фай­ла-хазяїна) і записують свій код на диск під іменем файла, що за­ра­жа­ється. Наприклад, XCOPY.EXE перейменовується в XCOPY.EXD, а вірус записується під ім'ям XCOPY.EXE. При запуску керування одер­жує код вірусу, що потім запускає оригінальний XCOPY, що збері­га­єть­ся під ім'ям XCOPY.EXD. Цікавий той факт, що даний метод працює, напевно, у всіх операційних системах: в DOS, в Windows і OS/2.

У третю групу входять так називані "Path-companion" віруси, що "гра­ють" на особливостях PATH. Вони або записують свій код під іменем зараженого файла, але "вище" на один рівень PATH (ОС, таким чином, першим знайде і запустить файл-вірус), або переносять файл-жертву на один підкаталог вище і т.д.

Можливе існування й інших типи компаньйонів-вірусів, що вико­ри­стовують інші особливості інших операційних систем.

Link-віруси. Link-віруси, як і компаньйон-віруси не змінюють фізичного вмісту файлів, однак під час запуску зараженого файла "змушують" ОС виконати свій код. Цієї мети вони досягають модифікацією необхідних полів файлової системи. На сьогоднішній день відомий єдиний тип Link-вірусів – віруси сімейства "Dir_II". При зараженні системи вони записують своє тіло в останній кластер логічного диска. При зараженні файла віруси коректують лише номер першого кластера файла, розташований у відповідному секторі каталогу. Новий початковий кластер файла буде вказувати на кластер, що містить тіло вірусу. Отже, при зараженні файлів їх довжини і вміст кластерів диска, що містять ці файли, не змінюються, а на всі заражені файли на одному логічному диску буде приходитися тільки одна копія вірусу.

Таким чином, до зараження дані каталогу зберігають адресу першого кластера файла, а після зараження дані каталогу вказують на вірус, тобто при запуску файла керування одержують не самі файли, а вірус.

Файлові хробаки. Файлові хробаки (worms) є, у деякому сенсі, різновидом ком­пань­йо­н-вірусів, але при цьому ніяким чином не пов'язують свою присутність з якимось виконуваним файлом. При розмноженні вони лише копіюють свій код у які-небудь каталоги дисків у надії, що ці нові копії будуть колись запущені користувачем. Іноді ці віруси дають своїм копіям спеці­альні імена, щоб підштовхнути користувача на запуск своєї копії, наприклад, INSTALL.EXE чи WINSTART.BAT.

Існують віруси-хробаки, що використовують досить незвичайні при­йо­ми, наприклад, записують свої копії в архіви (ARJ, ZIP та ін.). До та­ких вірусів відносяться "ArjVirus" і "Winstart". Деякі віруси записують ко­манду запуску зараженого файла в BAT-файли (наприклад, "Worm.Info").

Не слід плутати файлові віруси-хробаки з мережними хробаками. Пер­ші використовують тільки файлові функції якої-небудь ОС, другі ж при своєму розмноженні користуються мережними протоколами.

OBJ-, LIB-віруси і віруси у вихідних текстах. Віруси, що заражають бібліотеки компіляторів, об'єктні модулі і вихідні тексти програм досить екзотичні і практично не поширені. Усього їх біля десятка.

Віруси, що заражають OBJ- і LIB-файли, записують у них свій код у форматі об'­єкт­ного модуля чи бібліотеки. Заражений файл, таким чином, не є виконуваним і нездатний на подальше поширення вірусу у своєму поточному стані. Носієм же "живого" вірусу стає COM- чи EXE-файл, одержуваний у процесі лінковки зара­же­ного OBJ/LIB-файла з інши­ми об'єктними модулями і бібліотеками. Таким чином, вірус поширюється в два етапи: на першому заражаються OBJ/LIB-файли, на другому етапі (лінковка) виходить працездатний вірус.

Зараження вихідних текстів програм є логічним продовженням попе­ред­ньо­го методу розмноження. При цьому вірус додає до вихідних текстів свій вихідний код (у цьому випадку вірус повинен містити його у своєму тілі) чи свій шіст­над­цят­ковий дамп (що технічно легше). Заражений файл здатний на подальше поширення вірусу тільки після компіляції і лінковки (віруси "SrcVir", "Urphin").

Алгоритм роботи файлового вірусу

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

-   резидентний вірус перевіряє оперативну пам'ять на наявність своєї копії і інфікує пам'ять комп'ютера, якщо копія вірусу не знайдена. Нерезидентный вірус шукає незаражені файли в поточному і\або кореневому каталозі, у каталогах, відзначених командою PATH, сканує дерево каталогів логічних дисків, а потім заражає виявлені файли;

-   виконує, якщо вони є, додаткові функції, деструктивні дії, графічні чи зву­ко­ві ефекти і т.д. Додаткові функції резидентного вірусу можуть викли­ка­ти­ся через деякий час після активізації в залежності від поточного часу, кон­фі­гу­рації сис­те­ми, внутрішніх лічильників чи вірусу інших умов; у цьому ви­пад­ку вірус при ак­тивізації обробляє стан системного годинника, встанов­лює свої лічильники і т.д.;

-   повертає керування основній програмі (якщо вона є). Паразитичні віру­си при цьому або лікують файл, виконують його, а потім знову зара­жа­ють, або відновлюють програму (але не файл) у вихідному виді (на­приклад, у COM-програм відновлюються декілька перших байтів, у EXE-програми об­чис­лю­єть­ся справжня стартова адреса, у драйвера відновлюються значення адрес про­грам стратегії і переривання). Ком­пань­йони-віруси запускають на виконання свого "хазяїна", віруси-хробаки і overwriting-віруси повертають керування ОС.

Метод відновлення програми у первісному вигляді залежить від способу за­ра­ження файла.

Якщо вірус впроваджується в початок файла, то він або зрушує коди зараженої програми на число байтів, рівне довжині вірусу, або переміщає час­ти­ну коду програми з її кінця в початок, або відновлює файл на диску, а потім за­пускає його.

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

Якщо ж вірус записується в середину файла спеціальним чином, то при відновленні файла він використовує ще і спеціальні алгоритми.

Приклади файлових вірусів

Abba.9849. Безпечний резидентний вірус. Перехоплює INT 21h і записується в кінець COM- і EXE-файлів при їх запуску. Містить рядки

 \COMMAND.COM

 Program too big to fit in memory

 \ABBAл|*.*     E\ABBAл|

Створює на поточному диску файли ABBAл|nn з атрибутами HIDDEN і READONLY, 'nn' - число файлів, заражених на цьому диску. Це число збільшується при зараженні чергового файла – вірус перейменовує цей файл в ABBAл|(nn+1). Залежно від числа nn вірус проявляє себе якимсь відео-ефектом на відео карті Hercules.

Lenin 943. Безпечний нерезидентний вірус. При запуску шукає EXE-файли і записується в їх кінець. При зараженні не змінює значення регістрів в EXE-заголовку, а вставляє в точку входу у файл команду CALL FAR virus і коректує Relocation Table. Залежно від своїх лічильників виводить тексти

САМЫЙ! ЧЕЛОВЕЧНЫЙ! ЧЕЛОВЕК!

 Ленин и сегодня живее всех живых держит мертвой хваткой упыря

 Також містить рядки

 *.EXE       PATH=

Metall.557. Дуже небезпечний нерезидентний вірус. Шукає .COM-файлы окрім COMMAND.COM і записується в їх кінець. Коректно заражає тільки файли, на початку яких присутня команда JMP/CALL NEAR. Решта файлів після зараження виявляється зіпсованими. Залежно від системного таймера перемішує символи на екрані. Містить рядок:  METALL\I

Scorpion.2278. Дуже небезпечний нерезидентний зашифрований вірус. При запуску заражає файл C\COMMAND.COM, потім шукає COM- і EXE-файли і записується в їх кінець. При зараженні COMMAND.COM записується в кінець файлa в область стека COMMAND.COM і, таким чином, не збільшує його довжину. Знищує файли з ім'ям CHKLIST.MS. В деяких випадках також шукає інші файли і знищує їх. Залежно від системної дати і встановленого BIOS'а форматує вінчестер, виводить текст:

  DEATH ON TWO LEGS  V2.8 

  (c)  BLACK SCORPiON, 1996

  Written in Moscow    

потім перехоплює INT 1Ch і програє мелодію.  Вірус також містить рядки:

 *.* *.EXE *.COM

 C\COMMAND.COM

 DEATH ON TWO LEGS WAS HERE

Sisters.2221. Дуже небезпечний резидентний зашифрований вірус. Перехоплює INT 21h, 16h і записується в кінець COM- і EXE-файлів при їх запуску. Знищує антивірусні файли даних CHKLIST.MS і CHKLIST.CPS.

Залежно від значень внутрішнього лічильника і поточної дати вірус  відключає драйвер миші, стирає 40 секторів на диску C, видаляє CMOS пам'ять, завішує комп'ютер, виводить повідомлення:

TEMPLE OF LOVE  V1.0  MS 95.

FoUnD VIRUS SYSTERS OF MERCY iN yOuR sYsTeM !!!

Вірусний обробник INT 16h (клавіатура) стирає CMOS-пам'ять ком­п'ютера після 700 натиснень на клавіші. Вірус також містить рядки тексту:

SyStEm is now halted.

 

4.  Завантажувальні (бутові) віруси

Цей тип вірусів називають так через те, що вони впроваджуються в завантажуваль­ний сектор диска (Вооt-сектор) або в сектор, який вміщує сис­темний завантажувач вінчестера (Маster Вооt Record).

Як і для файлових вірусів, виділимо групи бутових віру­сів, а для кожного окремого вірусу – класифікаційний код, дескриптор і сигнатури.

Класифікаційний код завантажувального вірусу

Класифікаційний код бутового вірусу складається з префікса і кількісної характеристики.

Префікс. Оскільки майже всі бутові віруси є резидентними, то ви­користання сим­волу R у префіксі їх класифікаційного коду не­доцільне. Найважливішою влас­ти­вістю бутових вірусів, які по­рівнюються за зна­чен­ням з резидентністю файлових вірусів, є спроможність деяких бутових вірусів зберігатися в пам'яті після "теплого" перезавантаження шляхом натискування комбінації кла­віш Сtrl-Alt-Del. Цю властивість позначають літерою W (service Warm reboot) в префіксі. Всі бутові віруси заражають дис­кети, але деякі з них заражають і вінчестер. Віруси, які інфіку­ють тільки дискети (віруси “Вгаіn”, “Den Zuk”), позначатимемо префіксом D.

При зараженні бут-сектора можливі два випадки: заражен­ня бут-сектора – розділу С вінчестера (префікс В) і зараження МВR – виконуваної частини таблиці розділів (префікс М). Оскільки одним з найпоширеніших випадків розміщення хвоста бутового вірусу є його розміщення в псевдозбійних кластерах (що легко визначити, переглянувши їх вміст за допомогою Norton Utilites), то для таких вірусів у суфікс включають літеру х, за якою стоїть кількість цих кластерів, наприклад, Вхl.

Кількісна характеристика. Вибір кількісної ха­рак­­тер­ис­тики для бутових вірусів має певну специфіку: якщо для фай­ло­вих вірусів найхарактернішою ознакою зараження є збільшення довжини файла, то для бутових вірусів аналогічну роль відіграє зменшення розмірів оперативної пам'яті, яка до­ступна ОС.

Важливою вимогою до вибору влас­тивостей вірусу, який використовується для класифікації, є мож­ливість їх визначення на незараженій машині. Кількість блоків пам'яті, які використовуються бутовим вірусом, цьому критерію не відповідає, тому від цієї характеристики довелося від­мо­ви­тися. Отже, використовують іншу характеристику бутового віру­су – вміст зараженого бут-сектора (вір­ніше, вміст перших його байтів). Разом з тим аналіз об'єму пам'яті, який повідомляє ОС, є дуже корисним для діагностики. При підозрюванні на зараження тим чи іншим вірусом можна виконати програму СНКТ38К, яка по­ві­дом­ляє значення об'єму пам'яті, а також дає ряд інших корис­них повідомлень, включаючи об'єм пам'яті, зайнятий на диску збійними кластерами. Цю програму доцільно вставляти в код програми початкового завантаження.

За характеристику вибрано значення другого байта зара­женого бут-сектора. Водночас зміст цього байта записується в 16-річній системі чис­лен­ня, що створює певну неузгодженість з характеристикою файлових вірусів, яка є десятковим числом. Тому у варіанті класифікаційного коду вірусу префікс і характеристика розділяються знаком "-" (мінус).

Слід підкреслити, що переглядати зміст бут-сектора можна лише тоді, коли попередньо завантажитись із захищеної від запису резервної дискети з операційною системою і необхідними антивірусними програ­ма­ми, оскільки сама операція перегляду на зараженій машині може або пере­хоплюватися вірусом для під­становки "чистого" бут-сектора (так,наприк­лад, маскується вірус DхЗ-Е9.BRN – “Вгаіn”), або, що ще гірше, бути тригером для яких-небудь несанкціонованих дій. Необхідно використовувати "хо­лодне" (за допомогою клавіші RESET), а не "тепле" (за допомогою комбінації клавіш Сtrl-Alt-Del) перезаван­таження. Ця ви­мога базується на тому факті, що ряд бутових вірусів перехоплює переривання від клавіатури і при "теплому" перезавантаженні зберігає себе в пам'яті, навіть якщо перезавантаження здійснює­ться із захищеної системної дискети.

Дескриптор завантажувального вірусу

В головному дескрипторі відо­бражені такі властивості:

А – деструктивні дії, які використовуються вірусом;

В – прояв вірусу;

L – довжина голови і хвоста вірусу в байтах, які розділені знаком "±";

М – маскування за наявності вірусу в пам'яті;

N – номер першого байта, що не збігається при порівнянні зараженого і нормального секторів початкового завантаження;

S – стратегія зараження (метод вибору "жертви", метод збе­рігання хвоста вірусу і оригінальної копії бут-сектора);

R (resident) – положення в оперативній пам'яті, реакція на "тепле" перезавантаження і розмір зайнятої пам'яті;

Z – побічні прояви дій вірусу.

Сигнатура бутового вірусу

Для бутових вірусів М-, І-, В-сигнатури використовуються ана­ло­гіч­но тому, як це було для файлових вірусів, а J-сигнатура – в дещо ін­шому вигляді. На відміну від J-сигнатури для файлових вірусів, в якій байти від­по­­відають команді переходу і не враховуються, в J-сигнатурі для бутових вірусів вони враховуються. Це пов'язано з тим, що пер­шою коман­дою бут-сектора завжди є команда обходу таб­лиці параметрів диска, роз­мір якої, на відміну від розміру за­раженого файла, не змінюється. Тому для бутових вірусів ви­користовують переважно J-сигнатуру, яка складається з перших трьох байтів бут-сектора, і лише при необхідності доповнюється, починаючи з байта, на якому виконується ко­манда переходу.

Для незараженого бут-сектора (наприклад, для МS-DOS версії 3.3) J-сигнатура дорівнює ЕВ3490h (об'єктний код команди JМР, який служить для обходу таблиці параметрів). Цінність цієї ета­лонної J-сигнатури в тому, що вона порів­ня­но легко за­пам'ятовується. Тому невідповідність перших трьох байтів бут-сектора, що аналізується, вказаній еталонній J-сигнатурі свідчить про зараження бут-сектора.

Принцип дії завантажувальних вірусів

Завантажувальні віруси заражають завантажувальний сектор флопі-диска або boot-сектор вінчестера (MBR). Принцип дії заван­та­жу­вальних вірусів оснований на алгоритмах запуску операційної системи при  вклю­ченні або перезавантаженні комп'ютера – після необхідних тестів встанов­ле­но­го устаткування (пам'яті, дисків і т.д.) програма системного заван­таження зчи­тує перший фізичний сектор завантажувального диску (A, C чи CD у залежності від параметрів, встановлених у BIOS Setup) і передає на нього керування.

У випадку дискети чи компакт-диску керування одержує boot-сектор, що аналізує таблицю параметрів диска (BPB - BIOS Parameter Block), вираховує адреси системних файлів операційної системи, зчитує їх у пам'ять і запускає на виконання. Системними файлами звичайно є MSDOS.SYS і IO.SYS, або IBMDOS.COM і IBMBIO.COM, або інші в залежності від уста­новленої версії DOS, Windows чи інших ОС. Якщо ж на заванта­жуваль­ному диску відсутні файли операційної системи, програма, розташована в boot-секторі диска, видає повідомлення про помилку і пропонує замінити завантажувальний диск.

У випадку вінчестера керування одержує програма, розташована в MBR він­честера. Ця програма аналізує таблицю розбиття диска (Disk Partition Table), об­числює адресу активного boot-сектора (зазвичай цим сектором є boot-сектор дис­ку C), завантажує його в пам'ять і передає на нього керування. Одержавши ке­ру­ван­ня, активний boot-сектор вінчестера здійснює певні дії.

При зараженні дисків завантажувальні віруси "підставляють" свій код замість якої-небудь програми, що одержує керування при завантаженні системи. Принцип зараження, таким чином, однаковий: у всіх описаних вище способах вірус "змушує" систему під час перезапуску зчитувати її в пам'ять і віддати керування не оригінальному коду завантажувальника, а коду вірусу.

Зараження дискет здійснюється єдиним відомим способом – вірус записує свій код замість оригінального коду boot-сектора дискети.

Вінчестер заражається трьома можливими способами – вірус запи­су­ється або замість коду MBR, або замість коду boot-сектора заван­тажу­валь­ного диска (звичайно диска C), або модифікує адреса активного boot-сектора в Disk Partition Table, розташованої в MBR вінчестера.

 При інфікуванні диска вірус у більшості випадків переносить оригінальний boot-сектор (чи MBR) у який-небудь інший сектор диска (наприклад, у перший вільний). Якщо довжина вірусу більше довжини сектора, то в сектор, що заражається, поміщається перша частина вірусу, інші частини розміщаються в інших секторах (наприклад, у перших вільних).

Розташування завантажувального вірусу

Існує декілька варіантів розміщення на диску первинного заван­тажу­вального сектора і продовження вірусу в сектори вільних кластерів логічного диска, у не використовувані чи рідко використовувані системні сектори або у сектори, розташовані за межами диска.

Якщо продовження вірусу розміщається в секторах, що належать віль­ним кластерам диска (для пошуку цих секторів вірусу приходиться ана­лі­зувати таблицю розміщення файлів – FAT-таблицю), то, як правило, вірус по­зна­чає ці кластери як збійні (псевдозбійні кластери). Цей спо­сіб використовується вірусами "Brain", "Ping-Pong" і деякими іншими.

У вірусах сімейства "Stoned" задіяний інший метод. Ці віруси розміщу­ють первинний завантажувальний сектор у не використовуваному чи рід­ко викорис­то­ву­ваному секторі – в одному із секторів вінчестера (якщо такі є), розташованих між MBR і першим boot-сектором, а на дис­кеті такий сектор вибирається з останніх секторів кореневого каталогу.

Деякі віруси записують свій код в останні сектори вінчестера, оскільки ці сектори використовуються тільки тоді, коли вінчестер цілком заповнений інформацією (що є досить рідким явищем, якщо врахувати розміри сучасних дисків). Однак такі віруси приводять до псування файлової системи OS/2, що у деяких випадках зберігає активний boot-сектор і системні дані саме в останніх секторах вінчестера.

Рідше використовується метод збереження продовження вірусу за ме­жа­ми диска. Досягається це двома способами:

-   зменшення роз­мірів логічних дисків – вірус віднімає необхідні значення з відповідних полів BPB boot-сектора і Disk Partition Table вінчестера (якщо заражається вінчестер), зменшує в такий спосіб розмір логічного диску і записує свій код у "відрізані" від нього сектори;

-   запис даних за межами фізичної розбивки диска. У випадку флопі-дисків вірусу для цього приходиться форматувати на диску додатковий трек (метод нестандартного форматування), наприклад, 80-й трек на дискеті. Існують віруси, що записують свій код за межами доступного простору вінчестера, якщо, зрозуміло, це допускається встановленим устаткуванням (вірус "Hare").

Звичайно, існують і інші методи розміщення вірусу на диску, наприклад, віруси сімейства "Azusa" містять у своєму тілі стандартний завантажник MBR і при зараженні записуються поверх оригінального MBR без його збереження.

При зараженні більшість вірусів копіює в код свого завантажника сис­темну інформацію, що зберігається в первісному завантажнику (для MBR цією інфор­ма­цією є Disk Partition Table, для Boot-сектора дискет – BIOS Parameter Block). В іншому випадку система виявиться нездатною завантажити себе, оскільки дискові адреси компонентів системи вира­хо­ву­ються на основі цієї інформації. Такі віруси досить легко видаляються переписуванням заново коду системного завантажника в boot-секторі і MBR - для цього необхідно завантажитися з незараженої сис­тем­ної дис­ке­ти і використовувати команди SYS для знешкодження дискет і логічних дисків вінчестера чи FDISK/MBR для лікування зараженого MBR-сектора.

Однак деякі 100%-стелс віруси не зберігають цю інформацію чи навіть, більш того, навмисно шифрують її. При звертанні системи або інших програм до заражених секторів вірус підставляє їхні незаражені оригінали, і завантаження системи відбувається без якихось збоїв, однак лікування MBR за допомогою FDISK/MBR у випадку такого вірусу приводить до втрати інформації про розбивку диска (Disk Partition Table). У цьому випадку диск може бути "оживлений" або переформатуванням із втратою всієї інформації, або відновленням Disk Partition Table "вручну", що вимагає значної кваліфікації.

Слід також зазначити той факт, що завантажувальні віруси дуже рідко "уживаются" разом на одному диску – часто вони використовують ті самі дискові сектори для розміщення свого коду (даних). У результаті код (да­ні) першого вірусу виявляється зіпсованим при зараженні другим вірусом, і система або зависає при завантаженні, або зациклюється, що також приводить до її зависання.

Користувачам сучасних ОС завантажувальні віруси також можуть спричинити неприємності. Незважаючи на те, що ці системи працюють з дисками напряму, минаючи виклики BIOS (що блокує вірус і унеможливлює подальше його поширення), код вірусу все-таки, хоч і дуже рідко, одержує керування при перезавантаженні системи. Тому вірус "March6", наприклад, може роками "жити" у MBR сервера і ніяк не впливати при цьому на його (сервера) роботу і продуктивність. Однак при випадковому перезаван­та­женні 6-го березня цей вірус цілком знищить усі дані на диску.

Алгоритм роботи завантажувального вірусу

Практично всі завантажувальні віруси резидентні.

Резидентні завантажувальні віруси впровад­жу­ють­ся в пам'ять ком­п'ю­тера при завантаженні з інфікованого диска. При цьому системний завантажник зчитує вміст першого сектора диска, з якого здійснюється завантаження, поміщає прочитану інформацію в пам'ять і передає на неї (тобто на програму-вірус) керування. Після цього починають виконуватися інструкції вірусу, що

-   як правило, зменшує обсяг вільної пам'яті (слово за адресою 00400013), копіює у місце, що звільнилося, свій код і зчитує з диска своє продовження (якщо воно є). Надалі деякі віруси "чекають" завантаження ОС і відновлюють це слово в його первісне значення. У результаті вони виявляються розташованими не за межами ОС, а в окремих блоках пам'яті;

-   перехоплює необхідні вектори переривань (зазвичай INT 13H), зчитує в пам'ять оригінальний boot-сектор і передає на нього керування.

Надалі завантажувальний вірус поводиться так само, як резидент­ний фай­ло­вий: перехоплює звертання операційної системи до дисків і інфі­кує їх, у залеж­ності від деяких умов робить деструктивні дії чи викликає звукові відеоефекти.

Існують нерезидентні завантажувальні віруси – при завантажені вони заражають MBR вінчестера і дискети, якщо ті присутні в дисководах. Потім такі віруси передають керування оригінальному завантажнику і на роботу комп'ютера більш не впливають.

Приклади завантажувальних вірусів

Brain, сімейство. Складається з двох практично співпадаючих нешкідливих вірусів "Brain-Ashar" і "Brain-Singapore". Вони заражають завантажувальні сектори дискет при зверненні до них (INT 13h, AH=02h). Продовження вірусу і первинний завантажувальний сектор розміщуються у вільних кластерах диска. При пошуку цих кластерів аналізують таб­лицю розміщення файлів (FAT). У FAT ці кластери позначаються як збійні ("псевдозбійні" кластери). У зараженого диска встановлюється нова мітка "(C) Brain".  Віруси використовують "стелс"-механізм – при спробі проглянути завантажувальний сектор зараженого диска вони "підставляють" справжній сектор.

CMOS. Небезпечний резидентний завантажувальний стелс-вірус. Псує CMOS. Копіює себе за адресою 9F800000, перехоплює INT 13h і записується в MBR вінчестера і boot-сектори дискет. Оригінальний MBR зберігає за адресою 0/0/2, оригінальний boot-сектор флопі-диска – в останньому секторі кореневого каталога.

Pentagon. Небезпечний резидентний завантажувальний вірус. Частково зашифрований. Перехоплює INT 9, 13h і вражає boot-сектор флопі-дисків при зверненні до них. При зараженні диска оголошує в FAT збійні сектори і записує туди своє продовження і первинний boot-сектор (див. вірус "Brain"). Якщо при цьому дискета вже була уражена вірусом "Brain", то "Pentagon" лікує boot-сектор цього диска, змінює його мітку і потім заражає своєю копією. На диску, що заражається, створюється файл PENTAGON.TXT. Вірус "виживає" при теплому перезавантаженні. Містить тексти:

-   (c) 1987 The Pentagon, Zorell Group

-   first sector in segment

-   Stoned

При завантаженні із зараженого флопі-диска з вірогідністю 1/8 на екрані з'являється повідомлення "Your PC is now Stoned!". Крім вказаної, містять рядок "LEGALISE MARIJUANA!". "Stoned.с" при зараженні MBR вінчестера знищує Disk Partition Table, після цього комп'ютер можна завантажити тільки з флопі-диска. "Stoned.d" 1 жовтня знищує інформацію на вінчестері.

Hare. Дуже небезпечні резидентні файлово-завантажувальні стелс-полі­мор­фік-вирусы. Записуються в кінець COM- і EXE-файлів, в MBR вінчестера і boot-сектора дискет. У файлах зашифровані тричі. Застосовують поліморфізм як у файлах, так і в заражених секторах.

При запуску зараженого файла вірус розшифровує себе, заражає MBR, трасує і перехоплює INT 21h і повертає управління програмі-носію. Під Win95 він перехоплює також INT 13h. Потім вірус записується у файли при їх запуску, закритті або при виході в DOS (AH=0,31h,4Ch). При відкритті заражених EXE-файлів лікує їх.

 При завантаженні із зараженої дискети вірус записується в MBR і повертає управління первинному boot-коду, при цьому вірус не залишає в пам'яті своєї резидентної копії.

 При зараженні MBR вірус трасує INT 13h або напряму працює з портами контролера, потім записує своє продовження (15 секторів) в трек, що знаходиться за межами оголошеного розміру диска (LandZone?). Потім затирає Disk Partition Table (в результаті цього команда FDISK/MBR може привести до повної втрати даних на диску).

При завантаженні із зараженого MBR-сектора вірус відновлює Partition Table для того, щоб нормально завантажилася DOS (у цей момент стелс на рівні INT 13h ще не працює), потім зменшує розмір пам'яті (слово за адресою 00000413), копіює свій код в "відрізану" ділянку пам'яті, перехоплює INT 1Ch і передає управління первинному MBR-сектору. Перехопивши INT 1Ch, вірус чекає завантаження DOS, потім відновлює розмір системної пам'яті і перехоплює INT 13h, 21h, 28h. При першому виклику INT 28h він знову псує Disk Partition Table.

При викликах INT 13h вірус перехоплює звернення до флопі-дисків і заражає їх, для свого основного коду вірус форматує додатковий трек. При зверненнях до вже заражених дисків виконує стелс-програму.

 

5.  Макро-віруси

Багато табличних і графічних редакторів, системи проектування, текстові процесори мають свої макро-мови для автоматизації виконання повторюваних дій. Ці макро-мови часто мають складну структуру і розвинений набір команд. Макро-віруси є програмами на макро-мовах, вбудованих у системи обробки даних. Для свого розмноження віруси цього класу використовують можливості макро-мов і при їх допомозі переносять себе з одного зараженого файла (документа, таблиці) в інші.

На кінець 1999 року відомо декілька систем, у яких виявлені макро-віруси. Це основні додатки Microsoft Office:

-   редактор MS Word – мова WordBasic у MS Word 6/7 і VBA (Visual Basic for Applications), почи­на­ю­чи з MS Word 8;

-   редактор таблиць MS Excel – мова VBA;

-   редактор баз даних MS Access – мова VBA;

-   редактор презентацій MS PowerPoint – мова VBA;

-   менеджер проектів MS Project – мова VBA.

Піддався зараженню макро-вірусами також редактор AmiPro – спеціальна скрипт-мова.

Найбільше поширення одержали макро-віруси для Microsoft Office (Word, Excel і PowerPoint). Віруси в інших додатках MS Office досить рідкі, а для AmiPro відомий всего один макро-вирус. Можливе також існування макро-вірусів і для інших систем, що підтримують макро-мови достатньої потужності.

Причини зараження макро-вірусами

Для існування вірусів у конкретній системі (редакторі) необхідна наявність вбудованої в систему макро-мови з такими можливостями:

-   програми на макро-мові прив'язані до документів (AmiPro) чи зберігаються в них (додатки MS Office);

-   у макро-мові присутні команди копіювання макро-програм з одного файла в іншій (AmiPro) або переміщати макро-програми у службові файли системи і файли, що редагуються (MS Office);

-   є можливість одержання керування макро-програмою без втручання корис­ту­вача (автоматичні чи стандартні макроси), тобто при роботі з файлом за певних умов (відкриття, закриття і т.д.) викликаються макро-програми (якщо такі є), що визначені спеціальним чином (AmiPro) чи мають стандартні імена (MS Office).

Дані можливості макро-мов призначені для автоматичної обробки даних у великих організаціях чи у глобальних мережах і дозволяють організувати так званий "автоматизований документообіг". З іншого боку, можливості макро-мов таких систем дозволяють вірусу переносити свій код в інші файли, і в такий спосіб заражати їх.

Більшість макро-вірусів можна вважати резидентними, оскільки вони присутні в області системних макросів протягом усього часу роботи редактора. Вони так само, як резидентні завантажувальні і файлові віруси, перехоплюють системні події і використовують їх для свого розмноження. До подібних подій відносяться різні системні виклики, що виникають при ро­боті з документами Word і таблицями Excel (відкриття, закриття, ство­рен­ня, печатка і т.д.), виклик пункту меню, натискання на яку-небудь кла­ві­шу чи досягнення певного моменту часу. Для перехоплення подій макро-віруси перевизначають один чи декілька системних макросів або функцій.

При зараженні деякі макро-віруси перевіряють наявність своєї копії в об'єкті, що заражається, і повторно себе не копіюють. Інші макро-вируси не роблять цього і переписують свій код при кожному зараженні. Якщо при цьому у файлі, що заражається, чи області системних макросів уже визначений макрос, ім'я якого збігається з макросом вірусу, то такий макрос виявляється знищеним.

Загальні відомості про віруси в MS Office

Фізичне розташування вірусу всередині файла залежить від його фор­мату, що у випадку продуктів Microsoft надзвичайно складний - кожен файл-документ Word, Office чи таблиця Excel являють собою послідов­ність блоків даних (кожний з який також має свій формат), об'єднаних між собою за допомогою великої кількості службових даних. Цей формат нази­ва­ється OLE2 (Object Linking and Embedding). Структура файлів Office (OLE2) нагадує ускладнену файлову систему дисків DOS: "кореневий ката­лог" документа або таблиці вказує на основні підкаталоги різних блоків даних, кілька таблиць FAT містять інформацію про розташування блоків даних у документі і т.д.

Більш того, система Office Binder, що підтримує стандарти Word і Excel дозволяє створювати файли, що одночасно містять один чи декілька документів у форматі Word і одну чи декілька таблиць у форматі Excel. При цьому Word-віруси здатні вражати Word-документи, а Excel-віруси - Excel-таблиці, і все це можливо в межах одного дискового файла. Те ж справедливо і для Office.

Слід зазначити, що Word версій 6, 7 і вище дозволяє шифрувати присутні в документі макроси. Таким чином, деякі Word-віруси присутні в заражених документах у зашифрованому (Execute only) виді.

Більшість відомих вірусів для Word несумісні з національними (у тому числі з російською) версіями Word, чи навпаки - розраховані тільки на локалізовані версії Word і не працюють під англійською версією. Однак вірус у документі все рівно залишається активним і може заражати інші комп'ютери з установленої на них відповідною версією Word.

Віруси для Word можуть заражати комп'ютери будь-якого класу, а не тільки IBM-PC. Зараження можливе у тому випадку, якщо на даному комп'ютері встановлений текстовий редактор, цілком сумісний з Microsoft Word версії 6 чи 7 (наприклад, MS Word for Macintosh). Те ж справедливо для Excel і Office.

 Слід також зазначити, що складність форматів документів Word, таблиць Excel і особливо Office має таку особливість: у файлах-документах і таблицях присутні "зайві" блоки даних, тобто дані, що ніяк не пов'язані з текстом, що реда­гується, чи таблицями, або є випадковими копіями інших даних файла. Причиною виникнення таких блоків даних є кластерна організація даних у OLE2-документах і таблицях - навіть якщо введений всього один символ тексту, то під нього виділяється один чи навіть декілька кластерів даних. При збереженні документів і таблиць у кластерах, не заповнених "корисними" даними, залишається "сміття", що попадає у файл разом з іншими даними. Кількість "сміття" у файлах може бути зменшено скасуванням пункту настроювання Word/Excel "Allow Fast Save", однак це лише зменшує загальну кількість "сміття", але не забирає його цілком.

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

Слід також зазначити той факт, що деякі версії OLE2.DLL містять невеликий недолік, у результаті якого при роботі з документами Word, Excel і особливо Office у блоки "сміття" можуть потрапити випадкові дані з диска, включаючи конфіденційні (вилучені файли, каталоги і т.д.). У ці блоки можуть потрапити також команди вірусу. У результаті після ліку­ван­ня заражених документів активний код вірусу видаляється з файла, але в блоках "сміття" можуть залишитися частина його команд. Такі сліди при­сутності вірусу іноді видимі за допомогою текстових редакторів і навіть мо­жуть викликати реакцію деяких антивірусних програм. Однак ці залиш­ки вірусу зовсім нешкідливі,Word і Excel не звертають на них ніякої уваги.

Принципи роботи Word/Excel/Office-вірусів

При роботі з документом Word виконує різні дії: відкриває документ, зберігає, друкує, закриває і т.д. При цьому Word шукає і виконує відпо­відні вбудовані макроси – при збереженні файла по команді File/Save ви­кликається макрос FileSave, при збереженні по команді File/SaveAs - FileSaveAs, при друці документів – FilePrint і т.д., якщо, звичайно, такі макроси визначені.

Існує також декілька "авто-макросів", що автоматично викликаються при різних умовах. Наприклад, при відкритті документа Word перевіряє його на наявність макросу AutoOpen. Якщо такий макрос присутній, то Word виконує його. При закритті документа Word виконує макрос AutoClose, при запуску Word викликається макрос AutoExec, при завер­шенні роботи – AutoExit, при створенні нового документа – AutoNew.

Схожі механізми (але з іншими іменами макросів і функцій) вико­ри­сто­вуються в Excel (Auto_Open, Auto_Close, Auto_Activate, Auto_­Deac­ti­vate) і в Office (Document_Open, Document_Close, Document_New), у яких роль авто- і вбудованих макросів виконують авто- і вбудовані функції, що є присутніми у якому-небудь макросі чи макросах, причому в одному макросі можуть бути присутні декілька вбудованих  функцій.

Автоматично (тобто без участі користувача) виконуються також макро­си/функції, асоційовані з якою-небудь клавішею або моментом часу або  датою, тобто Word/Excel викликають макрос/функцію при натисканні на яку-небудь конкретну клавішу (чи комбінацію клавіш) або при досяг­ненні якого-небудь моменту часу. У Office97 можливості по перехопленню подій дещо розширені, але принцип використовується той самий.

Макро-віруси, що вражають файли Word, Excel чи Office, як правило, користуються одним із трьох перерахованих вище прийомів – у вірусі або  при­сутній авто-макрос (авто-функція), або перевизначений один зі стан­дарт­­них системних макросів (асоційований  якимось пунктом меню), або макрос ві­ру­су викликається автоматично при натисканні на якусь клавішу чи ком­бінацію клавіш. Існують також напіввіруси, що не використовують цих прийомів і розмножуються, тільки коли користувач сам запускає їх.

Таким чином, якщо документ заражений, при відкритті документа Word викликає заражений автоматичний макрос AutoOpen (чи AutoClose при закритті до­кумента) і, таким чином, запускає код вірусу, якщо це не заборонено систем­ною змінною DisableAutoMacros. Якщо вірус містить макроси зі стандартними іменами, вони одержують керування під час виклику відповідного пункту меню (File/Open, File/Close, File/SaveAs). Якщо ж перевизначений який-небудь символ клавіатури, то вірус активізується тільки після натискання на відповідну клавішу.

Більшість макро-вірусів містять свої функції у вигляді стандартних макросів. Існують, однак, віруси, що використовують прийоми прихо­ву­ван­ня свого коду і зберігають свій код у вигляді не-макросів. Відомо три подібних прийоми, усі вони використовують можливість макросів ство­рю­вати, редагувати і виконувати інші макроси. Як правило, подібні віруси ма­ють невеликий (іноді – поліморфний) макрос-завантажник вірусу, що викликає вбудований редактор макросів, створює новий макрос, заповнює його основним кодом вірусу, виконує і потім, як правило, знищує (щоб сховати сліди присутності вірусу). Основний код таких вірусів присутній або в самому макросі вірусу у вигляді текстових рядків (іноді – зашифрованих), або зберігається в області змінних документа чи в області Auto-text.

 

Алгоритм роботи Word макро-вірусів

Більшість відомих Word-вірусів під час запуску переносять свій код (макроси) в область глобальних макросів ("загальні" макроси), для цього во­ни використовують команди копіювання макросів MacroCopy, Organi­zer. Co­py або за допомогою редактора макросів – вірус викликає йо­го, створює новий макрос, вставляє в нього свій код і зберігає його в документі.

При виході з Word глобальні макроси (включаючи макроси вірусу) автома­тично записуються в DOT-файл глобальних макросів (NOR­MAL. DOT). Таким чином, при наступному запуску редактора MS-Word вірус активізується в той момент, коли WinWord вантажить глобальні макроси, тобто відразу. Потім вірус перевизначає (чи вже містить у собі) один чи декілька стандартних макросів (наприклад, FileOpen, FileSave, FileSaveAs, FilePrint) і перехоплює в такий спосіб команди роботи з файлами. Під час виклику цих команд вірус заражає файл, до якого йде звертання. Цей вірус конвертує файл у формат Template (що унеможливлює подальші зміни формату файла, тобто конвертування в який-небудь не-Template формат) і записує у файл свої макроси, включаючи Auto-макрос.

Таким чином, якщо вірус перехоплює макрос FileSaveAs, то заражається ко­жен файл, що зберігається через перехоплений вірусом макрос. Якщо пере­хоп­лений макрос FileOpen, то вірус записується у файл при його зчитуванні з диска.

Другий спосіб впровадження вірусу в систему використовується значно рідше – він базується на так званих "Add-in" файлах, тобто файлах, що є службовими доповненнями до Word. У цьому випадку NORMAL.DOT не змінюється, а Word під час запуску завантажує макроси вірусу з файла (чи файлів), визначеного як "Add-in". Цей спосіб практично цілком повторює зараження глобальних макросів за тим виключенням, що мак­ро­си вірусу зберігаються не в NORMAL.DOT, а в якому-небудь іншому файлі.

Можливо також впровадження вірусу у файли, розташовані в каталозі STARTUP, – Word автоматично довантажує файли-темплейти з цього каталогу, але такі віруси поки що рідко зустрічаються.

Розглянуті вище способи впровадження в систему являють собою деякий аналог резидентних вірусів. Аналогом нерезидентности є макро-віруси, що не пе­ре­носять свій код в область системних макросів – для зараження інших файлів-до­ку­ментів вони або шукають їх за допомогою вбудованих у Word функцій роботи з файлами, або звертаються до списку останніх редагованих файлів (Recently used file list). Потім такі віруси відкривають документ, заражають його і закривають.

Алгоритм роботи Excel макро-вірусів

Методи розмноження Excel-вірусів в цілому ана­ло­гічні методам Word-вірусів. Розходження полягають у командах копі­ю­вання макросів (наприклад, Sheets.Copy) і у відсутності NORMAL.DOT – йо­го функцію (у вірус­ному сенсі) виконують файли в STARTUP-каталозі Excel.

Слід зазначити, що існує два можливих варіанти розташування коду макро-вірусів у таблицях Excel. Переважна більшість таких вірусів запи­су­ють свій код у форматі VBA, однак існують віруси, що зберігають свій код у старому форматі Excel версії 4.0. Такі віруси по своїй суті нічим не відрізняються від VBA-вірусів, за винятком відмінностей у форматі розташування кодів вірусу в таблицях Excel.

Незважаючи на те, що у нових версіях Excel (версія 5 і вище) вико­ри­стовуються досконаліші технології, можливість виконання мак­росів старих версій Excel була залишена для підтримки сумісності. З цієї при­чи­ни всі макроси, написані у форматі Excel 4, цілком працездатні у всіх на­ступ­них версіях, незважаючи на те, що Microsoft не рекомендує вико­ри­сто­вувати їх і не включає необхідну документацію в комплект постачання Excel. 

Алгоритм роботи вірусів для Access

Оскільки Access є частиною пакета Office, то віруси для Access яв­ля­ють собою такі ж самі макроси мовою Visual Basic, як і інші віруси, що зара­жа­ють програми Office. Однак, у даному випадку замість авто-макросів у сис­те­мі присутні автоматичні скрипти, що викликаються системою при різних подіях (наприклад, Autoexec). Дані скрипти потім можуть викликати різні макро-програми.

Таким чином, при зараженні баз даних Access вірусу необхідно замінити який-небудь авто-скрипт і скопіювати в базу, що заражається, свої макроси.

Зараження скриптів без додаткових макросів не є можливим, оскільки мова скриптів досить примітивна і не містить необхідних для цього функцій. Слід зазначити, що в термінах Access скрипти називаються макро­са­ми (macro), а макроси – модулями (module), однак частіше викори­сто­вується уніфікована термінологія - скрипти і макроси.

Лікування баз даних Access є більш складною задачею, ніж вида­лен­ня інших макро-вірусів, оскільки у випадку Access необхідно знешкодити не тільки вірусні макроси, але й авто-скрипти. А оскільки значна частина ро­боти Access покладена саме на скрипти і макроси, то некоректне вида­лення чи деактивація якого-небудь елемента може привести до немож­ли­вос­ті операцій з базою даних. Те саме справедливо і для вірусів – некоректне заміщення авто-скриптів може привести до втрати даних, що зберігаються в базі.

Приклади макро-вірусів

Macro.Word.Box. Містить сім макросів AutoOpen, AutoClose, Box, Dead, FilePrint, FilePrintDefault, ToolsMacro. При викликах AutoOpen і AutoClose заражає глобальні макроси і документи. Макрос ToolsMacro використовується для заборони меню Tools/Macro. Решта макросів містить процедури зараження і різні ефекти. Виявляється декількома способами. При друці вставляє в документи рядки китайською мовою, виводить MessageBox, записує на диск і запускає вірус "OneHalf.3544", створює і програє WAV-файл (звуковий ефект). Викликає команди DOS:

-   echo y|format с/u

-   echo y|format c/u/vTwnos1

 Містить рядки:

-   Taiwan Super No.1 Macro Virus

-   Twno1-S

-   Today Is My Birthday

-   Macro.Word.Catch

Містить шість макросів AutoOpen, encrypt1, FileSave, AutoClose, infectdoc, infectnorm. Зараження системної області макросів і документів відбувається при відкритті файлів. Вірус замінює в документах букви "i" на "o", "o" на "i", "a" на "e", "e" на "a". Причому підміна символів непо­міт­на. При відкритті заражених файлів вірус відновлює текст документа в первинному вигляді, а при збереженні документів на диск – знову замінює. В результаті після лікування вірусу текст документів може виявитися зіпсованим. Після кожної заміни вірус видає в StatusBat крапку. При закритті документів залежно від лічильника випадкових чисел (з віро­гід­ністю 1%) вірус видає повідомлення:

  Its а Catch 22 Situation!

Macro.Excel.Soldier. Поліморфний макро-вірус, заражає електронні таблиці Excel. Міс­тить чотири функції з постійними іменами Auto_Open, Auto_Close, Delay, Poly; і декілька функцій з випадковими іменами. При відкритті зараженої таблиці видаляє рядки меню Format/Sheet/Hide і Format/Sheet/Unhide (стелс). При закритті заражає файли, що знаходяться у поточному каталозі. При зараженні залежно від системного датчика випадкових чисел вставляє в початок тексту функції з випадковими іменами і випадковими рядками. Також залежно від випадкового числа виводить в заголовок Excel рядок, що біжить:   Microsoft Excel .

 

6.  Мережеві віруси

Мережеві віруси поширюються по комп'ютерних ме­режах. Існують комбі­нації, наприклад, файлово-бутові віруси, які заражають і файли, і бут-сек­то­ри дисків. Крім того, у ком­п'ютерних мережах можуть роз­пов­сюд­жу­ватись віруси будь-яких типів. Віруси розповсюджуються від одного користувача до ін­шого внаслідок обміну програмними продуктами. Локальні ме­режі, як відомо, призначені для сумісного використання програ­мних пакетів кількома користувачами. Мережі дозволяють ши­роко обмінюватися програмами і даними. Очевидно, що при цьому створюється зручне середовище для розповсюдження віру­су. Так, якщо вірус заразив програму login.ехе, яка знаходиться на сервері і яку запускає кожен корис­тувач при вході в мережу, то дуже швидко вірус з'явиться на всіх робочих станціях. Але на практиці ситуація виглядає не дуже драматично, бо ме­реж­ні опе­раційні системи мають механізми захисту і розподілу користува­чів. При грамотному використанні цих можливостей можна об­межити область, в якій може розповсюдитись вірус, внесений з робочої станції, тільки робочою областю того користувача, який вніс його в систему.

Існують мережні віруси, які розраховані на спеціальні ме­режні диски, наприклад, на систему Netware – вони несан­кціоновано входять у систему і, використовуючи максимальні по­вноваження супервізора, по­шкоджують програми, які знахо­дяться на мережних дисках.

Все це свідчить про те, що рівень захищеності сучасних опе­ра­цій­них систем поки що бажає бути кращим. Доки залиша­ється принципова можливість такого втручання, доти існує не­безпека появи таких вірусів.

IRC-хробаки. IRC (Internet Relay Chat) – це спеціальний протокол, розроблений для кому­нікації користувачів Інтернет у реальному часі. Цей протокол надає можливість так званої Інтернет-розмови за допомогою спеціально розробленого про­грамного забез­пе­чення. IRC чимось схожий на телефонну розмову, за винятком того, що в розмові можуть брати участь більш двох спів­роз­мов­ників, що поєднуються по інтересах у різні групи IRC-конференцій. Для підтримки IRC-конференцій створені різні IRC-сервера, до яких під­клю­чаються учасники IRC-розмов. В усьому світі нараховується величезна кіль­кість IRC-серверів, об'єднаних у так звані мережі. Найбільшою є мере­жа EFnet, сервер якої щодня одночасно відвідують кілька десятків тисяч користувачів.

Для підключення до IRC-сервера і ведення IRC-розмов розроблені спе­ці­аль­ні програми – IRC-клієнти. Підключившись до IRC-сервера за до­по­могою програми-клієнта, користувач зазвичай вибирає тему IRC-кон­фе­рен­ції, командою join входить в одну або декілька конференцій ("канали" у термінах IRC) і починає спілкування з іншими "мешканцями" цих каналів.

Крім відвідування загальних (public) конференцій користувачі IRC ма­ють можливість спілкуватися один-на-один з будь-яким іншим корис­тувачем (private), при цьому вони навіть не обов'язково повинні бути на одному каналі. Крім цього існує досить велика кількість IRC-команд, за допомогою яких користувач може одержати інформацію про інших користувачів і канали, змінювати деякі установки IRC-клієнта та інше. Існує також можливість передавати і приймати файли – саме на цій можливості і базуються IRC-хробаки.

IRC-клієнти. На комп'ютерах з MS Windows найпоширенішими клієнтами є mIRC і PIRCH. Це не дуже об'ємні, але досить складні програмні продукти, що крім надання основних послуг IRC (підключення до серверів і каналів) мають ще і масу додаткових можливостей. 

До таких можливостей відно­сяться, наприклад, сценарії роботи (скрипти) і завдання автоматичної реак­ції на різні події. Наприклад, з появою під час розмови визначеного слова IRC-клієнт передає повідомлення користувачу, що послав його. Мож­ливе відключення користувача від каналу; посилка персональних повідомлень новим користувачам, що підключаються до каналу; і багато чого іншого. У PIRCH-клієнті, наприклад, подій, на які передбачена реакція, більше 50.

Скрипт-хробаки. Як виявилося, могутня і розгалужена система команд IRC-клієнтів дозволяє на основі їх скриптів створювати комп'ютерні віруси, що пере­дають свій код на комп'ютери користувачів мереж IRC, так називані IRC-хробаки.

Перший ін­ци­дент із IRC-хробаком зафіксований наприкінці 1997 року: користувачами mIRC-клієнта був виявлений скрипт (файл SCRIPT.INI), що переносив свій код через канали IRC і заражав mIRC-клієнтів на комп'ютерах користувачів, що підклю­чалися до заражених каналів. Як виявилося, скрипт-хробаки є досить простими програмами, і через досить короткий час на основі першого mIRC-хробака були створені і "випущені" у мережі декілька десятків різних скрипт-хробаків.

Принцип дії таких IRC-хробаків приблизно однаковий. За допо­мо­гою IRC-команд файл сценарію роботи (скрипт) чи реакції на IRC-події автоматично посилається з зараженого комп'ютера кожному користувачу, що під’єднується до каналу. Надісланий файл-сценарій заміщає стан­дарт­ний і при наступному сеансі роботи вже знову заражений клієнт буде роз­си­лати хробака. Хробаки при цьому використовують особливості кон­фі­гу­рації клієнта, завдяки якій прийняті файли всіх типів розміщуються в коре­не­вий каталог клієнта. Цей каталог також містить і основні скрипти клієн­та, вклю­­чаючи завантажувальні mIRC-скрипти SCRIPT.INI, MIRC.INI і PIRCH-скрипт EVENTS.INI. Ці скрипти автоматично виконуються клі­єн­том при старті і далі використовуються як основний сценарій його роботи.

Деякі IRC-хробаки також містять троянський компонент – по заданих клю­чо­вих словах здійснюють руйнівні дії на уражених комп'ютерах. Наприклад, хробак "pIRCH.Events" по визначеній команді стирає усі файли на диску користувача.

У скрипт-мовах клієнтів mIRC і PIRCH також існують оператори для запуску звичайних команд ОС і модулів, що вико­ну­ють­ся, програм DOS і Windows. Ця можливість IRC-скриптів послужила осно­вою для появи скрипт-хробакв нового покоління, що крім скриптів заража­ли комп'ютери користувачів EXE-вірусами, установлювали "троянських коней", і т.п.

Скрипт-хробаки працездатні тільки в тому випадку, якщо користувач до­зво­ляє копіювання файлів з мережі на свій комп'ютер. Дана опція IRC-клієнтів на­зи­ва­ється “DCC autoget” – одержання файлів по протоколу DCC автоматично і без по­пе­реджуючого повідомлення. При відключеній опції заражений файл прий­ма­ється, розміщується в каталозі клієнта і в наступному сеансі роботи продовжує своє поширення. При цьому користувач не одержує ніяких попереджуючих повідомлень.

Слід зазначити, що фірма-виготовлювач клієнта mIRC відреагувала до­сить оперативно і буквально через кілька днів після появи першого хро­ба­ка випустила нову версію свого клієнта, у якій були закриті пробіли в захисті.

Приклади мережевих вірусів

mIRC.Acoragil  і mIRC.Simpsalapim. Перші відомі mIRC-хробаки вияв­ле­­ні наприкінці 1997 року. Назви одер­­жа­ли по кодових словах, що викорис­то­ву­ються хробаками: якщо в тексті, пере­да­но­му в канал будь-яким корис­тувачем, присутній рядок "Acoragil", то всі корис­ту­вачі, заражені хробаком mIRC.Acoragil авто­ма­тич­­но відключаються від каналу. Те саме відбу­ва­ється з хробаком mIRC. Simpsalapim – він аналогічно реагує на рядок "Simpsalapim". При роз­мно­женні хробаки командами mIRC пересилають свій код у файлі SCRIPT. INI кожному новому користувачу, що підклю­чається до каналу. Містять троянську частину. Хробак mIRC.Simpsalapim міс­тить код захоплення каналу IRC – якщо mIRC власника каналу заражений, то по введенню кодового сло­ва "ananas", зловмисник перехоплює керування каналом. Хробак mIRC. Aco­ra­gil по кодових словах пересилає системні файли OC. Деякі кодові слова обрані так чином, що не привертають уваги жертви – hi, cya чи the. Одна з модифікацій цього хробака пересилає зловмиснику файл паролів UNIX.

Win95.Fono. Небезпечний резидентный файлово-завантажувальний полі­мор­фік-вірус. Використовує mIRC як один із способів свого поширення: перехоплює системні події Windows і при запуску файла MIRC32.EXE активізує свою mIRC-процедуру. При цьому відкриває файл MIRC.INI і записує в його кінець команду, що знімає захист:

 [fileserver]

 Warning=Off .

Потім створює файли SCRIPT.INI і INCA.EXE. Файл INCA.EXE містить дроппер вірусу, скрипт файла SCRIPT.INI пересилає себе і цей дроппер у канал IRC кожному, хто приєднується до каналу або виходить з нього.

pIRCH.Events. Перший відомий PIRCH-хробак. Розсилає себе кожному корис­ту­ва­чу, що приєднався. По ключових словах виконує різні дії, наприклад:

-   по команді ".query" відбувається свого роду переклик, по якому заражені системи відповідають <Так, я вже заражена>;

-   по команді  ".exit" завершує роботу клієнта;

  По інших командах хробак видаляє всі файли з диска С, надає доступ до файлів на зараженому комп'ютері і т.д.

IRC-Worm.Pron. Мережевий вірус-черв'як, зашифрований. Розмножується в IRC-кана­лах і використовує для свого розмноження mIRC-клієнта. Має дуже невели­ку довжину – всього 582 байти. Передається з мережі на комп'ютер у вигляді файла PR0N.BAT. При його запуску вірус копіює себе у файл PR0N.COM і запускає його на виконання. Заголовок вірусу влаштований таким чином, що він може виконуватися як BAT-, так і COM-програма, і в ре­зультаті управління передається на основну процедуру зараження системи. При зараженні системи вірус використовує дуже простий прийом: він копі­ює свій BAT-файл в поточний каталог і в каталог C\WINDOWS\SYSTEM (якщо такий відсутній, то вірус не заражає систему). Потім вірус записує свій код у файл WINSTART.BAT. Для розповсюдження свого коду через mIRC вірус створює новий файл SCRIPT.INI в каталозі mIRC-клієнта. Цей каталог вірус шукає за чотирма варіантами:

 C\MIRC; C\MIRC32; C\PROGRA~1\MIRC; C\PROGRA~1\MIRC32 .

Скрипт вірусу містить всього одну команду – кожному користувачу, що підключається до зараженого каналу, передається вірусний файл PR0N.BAT. Вірус містить рядок-"копірайт".

 

7. Стелс-віруси

Стелс-віруси тими чи іншими способами приховують факт своєї при­сутності в системі, підставляючи замість себе незаражені ділянки інформації. Крім того, такі віруси при зверненні до файлів використовують досить оригінальні алгоритми, що “обманюють” резидентні антивірусні програми.

Відомі стелс-віруси всіх типів – завантажувальні віруси, файлові DOS-віруси і навіть макро-віруси.

Завантажувальні стелс-віруси. Завантажувальні стелс-віруси для приховання свого коду вико­ри­стовують два основних способи.

Перший спосіб полягає в тому, що вірус перехоплює ко­ман­ди читання зараженого сектора (INT 13h) і підставляє замість нього незаражений оригінал. Цей спосіб робить вірус невидимим для будь-якої DOS-програми, вклю­чаючи антивіруси, нездатні "лікувати" оперативну пам'ять комп'ютера. Можливе перехоплення команд читання секторів на рівні більш низькому, чим INT 13h.

Другий спосіб спрямований проти антивірусів, що підтримують ко­манди прямого читання секторів через порти контролера диска. Такі віруси при запуску будь-якої програми (включаючи антивірус) віднов­люють зара­жені сектори, а після закінчення її роботи знову заражають диск. Оскільки для цього вірусу приходиться перехоплювати запуск і закінчення роботи програм, то він повинен перехоплювати також DOS-переривання INT 21h.

З деяким застереженням стелс-вірусами можна назвати віруси, що вносять мінімальні зміни в сектор, що заражається (наприклад, при зара­женні MBR змінюють тільки активну адресу завантажувального сектора – зміні підлягають тільки 3 байти), або маскуються під код стандартного завантажника.

Файлові стелс-віруси. Більшість файлових стелс-вірусів використовує ті самі прийоми, що при­­ведено вище: вони або перехоплюють DOS-виклики звертання до фай­лів (INT 21h), або тимчасово лікують файл при його відкритті і заражають при закритті. Так само, як і для boot-вірусів, існують файлові віруси, що використовують для своїх стелс-функцій перехоплення переривань більш низького рівня – виклики драйверів DOS, INT 25h і навіть INT 13h.

Повноцінні файлові стелс-віруси, що використовують перший спосіб при­хо­ван­ня свого коду, здебільшого досить громіздкі, оскільки їм потрібно пере­хоп­лювати велику кількість DOS-функцій роботи з файлами: відкриття/закриття, читання/записування, пошук, запуск, перейменування і т.д., причому необхідно підтри­му­вати обидва варіанти деяких викликів (FCB/ASCII), а після появи Windows 95/NT їм стало необхідно також обробляти третій варіант – функції роботи з довгими іменами файлів.

Деякі віруси використовують частину функцій повноцінного стелс-віруса. Найчастіше вони перехоплюють функції DOS FindFirst і FindNext (INT 21h, AH=11h, 12h, 4Eh, 4Fh) і зменшують розмір заражених файлів. Такий вірус неможливо визначити по зміні розмірів файлів, якщо, звичайно, він резидентно знаходиться в пам'яті.

Програми, що не використовують зазначені функції DOS (наприклад, "Нортоновські утиліти"), а прямо використовують вміст секторів, що зберігають каталог, показують правильну довжину заражених файлів.

Макро-стелс-віруси. Реалізація стелс-алгоритмів у макро-вірусах є, напевно, найбільш прос­тою задачею – досить усього лише заборонити виклик меню File/ Templates або Tools/Macro. Досягається це або видаленням цих пунктів меню зі списку, або їхньою підміною на макроси FileTemplates і ToolsMacro.

Частково стелс-вірусами можна назвати невелику групу макро-віру­сів, що зберігають свій основний код не в самому макросі, а в інших областях документа – у його змінних чи в Auto-text.

Приклади стелс-вірусів

Crusher. Безпечний резидентний MBR-EXE-стелс-вірус. При запуску зараже­но­го файла він записується в MBR вінчестера, потім перехоплює INT 21h і записується в початок EXE-файлів при їх копіюванні. При завантаженні з ураженого диска перехоплює INT 1Ch, чекає завантаження DOS, потім відновлює INT 1Ch, перехоплює INT 21h і приступає до зараження файлів.  Якщо при роботі вірусу йому не вистачає пам'яті, він повідомляє "Insuf­ficient memory" і повертається в DOS. При запуску CHKDSK вірус виводить текст:

         Crusher… You are damned.   Bit Addict / Trident.

 Ekoterror. Резидентний небезпечний стелс-вірус, при запуску зараженого файла записується в MBR вінчестера і передає управління програмі-носію, при завантаженні з ураженого MBR перехоплює INT 8, 13h, а потім, викорис­то­вуючи INT 8, перехоплює INT 21h і записується в початок .COM-файлів при їх створенні. Періодично розшифровує і виводить текст:

EkoTerror (C) 1991  ATK-toimisto P.Linkola Oy

Kovalevysi on poistettu kДytФstД luonnonsuojelun nimessД.

VihreДssД yhteiskunnassa ei saa olla ydinsДhkФllД toimivia kovalevyjД.

а потім завішує комп'ютер. В деяких випадках некоректно уражає MBR, в результаті DOS гине при завантаженні.

Rasek, сімейство. Дуже небезпечні файлово-завантажувальні віруси, що самошифру­ють­ся. При запуску зараженого файла записують себе в MBR вінчестера, потім перехоплюють INT 13h, 12h. Переривання INT 13h використовується для реалізації стелс-механізму при читанні ураженої MBR. Віруси також записують в Boot-сектори флопі-дисків програму, яка при завантаженні з такого флопі стирає FAT вінчестера. Переривання INT 21h викорис­то­ву­ється вірусом для зараження COM- і EXE-файлів при їх запуску, вірус записується в кінець файлів. У тілі вірусу міститься рядок "AND.COM", вірус шукає цей рядок в імені файла і не вражає такі файли (COMMAND.COM). У тілі вірусів також міститься і інші рядки:

 "Rasek.1310" ASEK v1.1,from LA CORUеA(SPAIN) .Jan93

 "Rasek.1489" RaseK v2.1,from LA CORUеA(SPAIN) .Mar93

Vecna. Дуже небезпечний резидентний файлово-завантажувальний стелс-вірус. Заражає boot-сектори дискет, MBR вінчестера і записується поверх EXE-файлів (псує їх). При запуску зараженого EXE-файла записується в MBR вінчестера, розшифровує і виводить текст:

Out of memory.

Потім повертає управління DOS. При завантаженні з диска перехоплює INT 13h, залишається резидентним в пам'яті і заражає дискети і EXE-файли на дискетах. Під налагоджувачем і на Pentium-комп'ютерах виводить текст:

Vecna Live ...

Має досить серйозну помилку – може повернути управління оригі­наль­ному обробнику INT 13h із зіпсованим вмістом регістра АХ, що може привести до втрати даних на диску і навіть до його форматування.

Kyokushinkai. Дуже небезпечний резидентний файлово-завантажувальний вірус. При запуску зараженого записується в MBR вінчестера, перехоплює INT 12h, 13h, 1Ch, 21h і при запуску програм шукає EXE-файли і записується в їх кінець. Заражений MBR-сектор не видно при активному в пам'яті вірусі (стелс). Залежно від поточного часу стирає системні сектори рядком:

+++++++ KШФkБshЛдkДЛ +++++++.- 39-mynrazCmeroizв.....

 

8.  Поліморфік-віруси

Не так давно виявлення вірусів було простою справою: кожен вірус створював точну копію самого себе при тиражуванні і інфікуванні нових файлів і завантажувальних секторів, тому антивірусним програмам необхідно було тільки знати послідовність байтів, що становлять вірус. Для кожного вірусу фахівці виявляли унікальну послідовність байтів – його сигнатуру. Наявність такої сигнатури служила високонадійним індикато­ром присутності небажаного коду, що і примусило авторів вірусів спробувати приховувати будь-яку послідовність байтів, здатну видати присут­ність їх творінь. Вони стали робити це шляхом шифрування вірусів.

Віруси, що шифрують свій код, відомі досить давно. Проте самі процедури розшифрування досить легко виявити, зокрема, тому, що далеко не всі автори вірусів мають досить знань для написання власних процедур шифрування і розшифрування, тому багато вірусів використовують для цього один і той самий код. Тепер сканери вірусів шукають певні процедури розшифрування. Хоча виявлення такої процедури ще нічого не говорить про те, який саме вірус присутній у зашифрованому вигляді, але це вже сигнал про наявність вірусу. Тому останнім прийомом зловмисників стає поліморфізм.

Перші поліморфні віруси Tequila і Maltese Amoeba з'явилися в 1991 році. Все б нічого, але в 1992 році автор, відомий під псевдонімом Dark Avenger, написав свого роду комплект «Зроби сам» для мутаційного механізму, який він зробив частиною вірусу Maltese Amoeba. До 1992 року розробники вірусів працювали насправді дарма. Абсолютно ясно, що кваліфікація професіоналів у сфері антивірусної безпеки ніяк не нижча, і тому багатомісячні зусилля “вірусописьменників” коштували в крайньому випадку зайвих годин роботи для фахівців. Адже всі зашифровані віруси обов'язково містили якийсь незашифрований фрагмент: сам розшифровувач або деяку його частину, по яких можна було б побудувати сигнатуру даного вірусу і потім вже боротися з ним звичними способами.

Ситуація змінилася, коли були придумані алгоритми, що дозволяють не тільки шифрувати код вірусу, але і міняти розшифровувач. Сама постановка такої задачі питань не викликає: ясно, що можна побудувати різні розшифровувачі. Суть у тому, що цей процес автоматизований, і кожна нова копія вірусу містить новий розшифровувач, кожен біт якого може відрізнятися від бітів розшифровувача копії, що породила її.

Отже, до поліморфік-вірусів відносяться ті з них, які неможливо (чи вкрай важко) знайти за допомогою так званих вірусних масок – ділянок по­стійного коду, специфічних для конкретного вірусу. Досягається це двома основ­ними способами:

-   шифруванням основного коду вірусу з непостійним ключем і випадковим набором команд розшифровувача;

-   зміною самого виконуваного коду вірусу.

Існують також інші, досить екзотичні приклади поліморфізму: DOS-вірус "Bomber", наприклад, не зашифрований, однак послідовність команд, що передає керування коду вірусу, є цілком поліморфною. Поліморфізм різного ступеня складності зустрічається у вірусах усіх типів – завантажувальних, файлових і навіть у макро-вірусах.

Поліморфні розшифровувачі

Найпростішим прикладом частково поліморфного розшифровувача є наступний набір команд, в результаті застосування якого жоден байт коду самого вірусу і його розшифровувача не є постійним при зараженні різних файлів:

    MOV  reg_1, count; reg_1, reg_2, reg_3 вибираються з

    MOV  reg_2, key; AX,BX,CX,DX,SI,DI,BP

    MOV  reg_3, _offset; count, key, _offset також можуть мінятися

 _LOOP:

 xxx     byte ptr [reg_3], reg_2  ; xor, add чи sub

 DEC   reg_1

 Jxx  _loop; ja чи jnc; далі йдуть зашифровані код і дані вірусу.

Більш складні поліморфік-віруси використовують значно більш склад­ні алгоритми для генерації коду своїх розшифровувачів. Приведені ви­ще інструкції переставляються місцями від зараження до зараження, роз­бавляються нічого не змінюючими командами типу

NOP, STI, CLI, STC, CLC, DEC   <невикористовуваний регістр>

або

XCHG    <невикористовувані регістри>.

Повноцінні ж поліморфік-віруси використовують ще більш складні алго­рит­ми, у результаті роботи яких у розшифровувачі вірусу можуть зу­стрітися операції SUB, ADD, XOR, ROR, ROL і інші в довільній кількості і порядку. Завантаження і зміна ключів і інших параметрів шифровки вироб­ляється також довільним набором операцій, у якому можуть зустрітися практично всі інструкції процесора Intel (ADD, SUB, TEST, XOR, OR, SHR, SHL, ROR, MOV, XCHG, JNZ, PUSH, POP ...) із усіма можливими режимами адресації. З'являються також поліморфік-віруси, розшифровувач яких використовує інструкції аж до Intel386. В резуль­таті на початку файла, зараженого подібним вірусом, йде набір безглуздих на перший погляд інструкцій, причому деякі комбінації, що цілком праце­здатні, не аналізуються фірмовими дизасемблерами (наприк­лад, сполучення CSCS чи CSNOP). І серед цієї "каші" з команд і даних зрідка прослизають MOV, XOR, LOOP, JMP – інструкції, що дійсно є "робітниками".

Рівні поліморфізму

Існує розподіл поліморфік-вірусів на рівні в залежності від склад­нос­ті коду, що зустрічається в розшифровувачах цих вірусів. Такий розподіл уперше запропонував доктор Алан Соломон, а згодом Весселин Бончев розширив його.

Рівень 1: віруси, що мають деякий набір розшифровувачів з постійним кодом і при зараженні вибирають один з них. Такі віруси є "напів-поліморфіками" і носять також назву "олігоморфік" (oligomor­phic). Приклади: "Cheeba", "Slovakia", "Whale".

Рівень 2: розшифровувач вірусу містить одну чи кілька постійних інструкцій, основна ж його частина непостійна.

Рівень 3: розшифровувач містить невикористовувані інструкції – "сміття" типу NOP, CLI, STI і т.д.

Рівень 4: у розшифровувачі використовуються взаємозамінні інструкції і зміна порядку проходження (перемішування) інструкцій. Алго­ритм розшифрування при цьому не змінюється.

Рівень 5: використовуються всі перераховані вище прийоми, алгоритм розшифрування не постійний, можливе повторне зашифрування коду вірусу і навіть часткове зашифрування самого коду розшиф­ровувача.

Рівень 6: permutating-віруси. Зміні підлягає основний код вірусу – він поділяється на блоки, що при зараженні переставляються в до­віль­ному порядку. Вірус при цьому залишається працездатним. Подібні віруси можуть бути незашифрованими.

Наведений вище розподіл не вільний від недоліків, оскільки ство­ре­ний за єдиним критерієм – можливість детектувати вірус по коду роз­шиф­ровувача за допомогою стандартного прийому вірусних масок: рівень 1 – для детектування вірусу досить мати кілька масок; рівень 2  – детек­тування по масці з використанням "wildcards"; рівень 3 – детектування по масці після видалення інструкцій-"сміття"; рівень 4 – маска містить кілька варіан­тів можливого коду, тобто стає ал­го­ритмічною;  рівень 5 – неможливість детектування вірусу по масці.

Недостатність такого розподілу продемонстрована у вірусі 3-го рівня поліморфічності, що так і називається – "Level3". Цей вірус, будучи одним з найбільш складних поліморфік-вірусів, за приведеним вище розподілом попадає в Рівень 3, оскільки має постійний алгоритм розшифровки, перед яким стоїть велика кількість команд-"сміття". Однак у цьому вірусі алго­ритм генерування "сміття" доведений до досконалості в коді роз­шиф­ро­вувача можуть зустрітися практично всі інструкції процесора і8086.

Якщо зробити розподіл на рівні з погляду антивірусів, що вико­ристовують системи автоматичної розшифровки коду вірусу (емулятори), то розподіл на рівні буде залежати від складності емуляції коду вірусу. Можливо детектування вірусу й інших прийомів, наприклад, розшифровка за допомогою елементарних математичних законів і т.д.

Зміна виконуваного коду

Найбільш часто подібний спосіб поліморфізму використовується макро­-вірусами, що при створенні своїх нових копій випадковим чином змінюють імена своїх змінних, вставляють порожні рядки чи змінюють свій код яким-небудь іншим способом. У такий спосіб алгоритм роботи вірусу залишається без змін, але код вірусу практично цілком міняється від зараження до зараження.

Рідше цей спосіб застосовується складними завантажувальними вірусами. Та­кі віруси впроваджують у завантажувальні сектори лише досить коротку про­цедуру, що зчитує з диска основний код вірусу і передає на нього керування. Код цієї процедури вибирається з декількох різних варі­ан­тів (які також можуть бути розведені "порожніми" командами), команди переставляються між собою і т.д.

Ще рідше цей прийом зустрічається у файлових вірусів – адже їм приходиться цілком змінювати свій код, а для цього вимагаються досить складні алгоритми.

На сьогоднішній день відомі всего два таких віруси, один із яких ("Ply") випадковим образом переміщає свої команди по своєму тілу і заміняє їх на команди JMP чи CALL. Інший вірус ("TMC") використовує більш складний спосіб – щоразу при зараженні вірус змінює місцями блоки свого коду і даних, вставляє "сміття", у своїх асемблерних інструкціях встановлює нові значення офф­сетів на дані, змінює константи і т.д. В результаті, хоча вірус і не шифрує свій код, він є поліморфік-вірусом – у коді не присутній постійний набір команд. Більш того, при створенні своїх нових копій вірус змінює свою довжину.

Деякі віруси (наприклад, віруси сімейства Eddie, Murphy) використовують частину функцій повноцінного вірусу-невидимки. Зазвичай вони пе­ре­хоплюють функції DOS FindFirst і FindNext і «зменшують» розмір зараже­них файлів. Такий вірус неможливо визначити за зміною розмірів фай­лів, якщо, звичайно, він резидентно знаходиться в пам'яті. Програми, що не використовують вказані функції DOS (наприклад, Norton Commander), а напряму звертаються до вмісту секторів, які зберігають каталог, показують правильну довжину заражених файлів.

При інфікуванні файла вірус може здійснювати дії, що маскують і прискорюють його розповсюдження. До подібних дій можна віднести обробку атрибуту Read-only, зняття його перед зараженням і подальше відновлення цього атрибуту. Багато файлових вірусів прочитують дату останньої модифікації файла і відновлюють її після зараження. Для маскування свого розповсюдження деякі віруси перехоплюють переривання DOS, що виникає при зверненні до диска, захищеного від запису, і самостійно обробляють його. Тому серед особливостей алгоритму файлового вірусу можна назвати наявність або відсутність обробки і швидкість його розповсюдження. Швидкість розповсюдження файлових вірусів, що заражають файли тільки під час їх запуску на виконання, буде нижчою, ніж у вірусів, що заражають файли при їх відкритті, перейменуванні, зміні їх атрибутів і т.д. Деякі віруси при створенні своєї копії в оперативній пам'яті намагаються зайняти область пам'яті з найстаршими адресами, руйнуючи тимчасову частину командного інтерпретатора COMMAND.COM. Після закінчення роботи зараженої програми тимчасова частина інтерпретатора відновлюється, при цьому відбувається відкриття файла COMMAND.COM і його зараження, якщо вірус вражає файли при їх відкритті.

Приклади поліморфік-вірусів

Amoeba.2367. Дуже небезпечний резидентний поліморфик-вірус. Перехоплює INT 21h і записується в кінець COM- і EXE-файлів при їх запуску або відкритті. 21 березня і 1 листопада знищує інформацію на вінчестері. Містить тексти:

 Tosee aworld in а grain of sand,

 And а heaven in а wildflower

 Hold Infinity in the palm of your hand

 And Eternity in an hour.

 "THE VIRUS 16/3/91 AMOEBA virus by the Hacker Twins (C) 1991 This is nothing, wait for the release of AMOEBA II-The universal infector, hidden to any eye but ours! Dedicated to the University of Malta- the worst educational system in the universe,and the destroyer of 5X2 years of human life.

Simulation. Безпечний нерезидентний поліморфік-вірус. Шукає .COM-файли і записується в їх кінець. Періодично виводить одне з повідомлень, після чого завішує комп'ютер:

 HA HA HA YOU HAVE А VIRUS ! FRODO LIVES!

 Have you ever danced with the Devil in the pale moonlight?

 DATACRIME VIRUS RELEASED 1 MARCH 1989  ALIVE...

Your system is infected by the SIMULATION virus.

Have а nice day!

Predator (файлово-завантажувальні)

Нешкідливі резидентні COM-EXE-MBR-Boot-поліморфік-віруси. Під час запуску зараженого файла трасують і перехоплюють INT 13h, 21h і за­пи­суються в MBR вінчестера. Потім записуються в кінець COM- і EXE-фай­лів при зверненнях до них. Вражають Boot-сектори дискет. При заванта­женні з ураженого флопі-диска перехоплюють INT 13h і чекають завантаження DOS, потім перехоплюють INT 21h і приступають до зараження. Містять текст:

 THE PREDATOR.  TORPNACSAELCFASVVAPC.

 VANOCED

Останній рядок містить частини імен файлів (задом наперед), які не вражаються вірусом PROT, SCAN, CLEA, VSAF, CPAV, NAV, DECO.

Також містять рядки:

 "Predator.2248"  Predator virus #2  (c) 1993  Priest - Phalcon/Skism

 "Predator.2424"  Predator virus #2  (c) 1993

                   Here comes the Predator!

Samara.1536. Безпечний резидентний файлово-завантажувальний поліморфік-ві­рус. При старті з інфікованого файла заражає MBR вінчестера, перехоплює INT 21h і записується в кінець COM- і EXE-файлів при їх запуску (окрім COMMAND.COM). Забороняє запуск антивірусів  AVPLITE, AIDSTEST, AVP, DRWEB, SCAN.

При завантаженні з інфікованого MBR вірус пере­хоплює INT 13h, чекає завантаження DOS і потім перехоплює INT 21h. При завантаженні з boot-сектора дискети вірус ще заражає MBR. При зараженні MBR і boot-секторів не зберігає їх оригінали. Для збереження працездатності системи вірус при завантаженні із зараженого диска само­стій­но прочитує і запускає на виконання перший логічний сектор диска С, який містить заван­та­жувальний код операційної системи.

 OneHalf, сімейство. Дуже небезпечні резидентні файлово-завантажувальні поліморфік-віруси. При запуску заражають MBR вінчестера, при завантаженні з ураженого диска перехоплюють INT 13h, 1Ch, 21h і записуються в COM- і EXE-файли при зверненні до них. Не заражають файли SCAN, CLEAN, FINDVIRU, GUARD, NOD, VSAFE, MSAV, CHKDSK. Код-розшиф­ро­ву­вач цих вірусів розкиданий по всьому файла з випадковими зсувами. При зараженні вінчестера вірус прочитує його MBR і сканує таблицю розділів диска (DPT). У ній він шукає останній DOS'івський диск – логічний диск (FAT-12,16/BIGDOS) або Extended par­ti­tion, і коли знаходить, підраховує номер першого і останнього цилінд­рів знай­деного диска (або Extended partition). При цьому вірус досить грамотно обробляє диски, що мають більше 1024 циліндрів і не вписуються в стандарти INT 13h. Вірус запам'ятовує адреси цих циліндрів і заражає вінчестер.

Потім при завантаженні із зараженого вінчестера вірус шифрує два останні циліндри диска, при наступному завантаженні – ще два і т.д., поки не дійде до першого циліндра. При цьому вірус використовує адреси першого і останнього циліндрів диска, які запам'ятав при зараженні він­чес­те­ра. Коли кількість зашифрованих циліндрів перевалить за половину диска, вірус повідомляє (залежно від поточної дати і свого "покоління"):

 Disк is one half. 

 Press any key to continue...

Таким чином, чим частіше перезавантажується заражений комп'ю­тер, тим більше дані виявляються зашифрованими. Після завантаження в пам'ять вірус розшифровує/зашифровує ці сектори "на льоту", тому користувач не помічає того, що його дані зіпсовані. Проте, якщо вилікувати MBR, то всі дані виявляються втраченими.

"OneHalf.3518" не шифрує себе у файлах. Виводить текст:

 A20 Error !!!  Press any key to continue ...

"OneHalf.3544.b" не заражає файли AIDS*.*, ADINF*.*, DRWEB*.*, ASD*.*, MSAV*.*. Виводить повідомлення:

 Dis is TWO HALF.  Fucks any key to Goping...

Cheeba, сімейство. Резидентні безпечні віруси. Активізуються, коли вектор INT 13h вка­зує на область з адресою меншою, ніж адреса першого MCB. В обробниках INT 13h, 21h, 22h замінюють перші 5 байтів на код "FAR JMP на тіло ві­русу", потім записуються в кінець COM- і EXE-файлів. Містять текст: 

CHEEBA Makes Уа High Harmlessly F**K THE LAMERS.

У вірусі присутні також коди, які розшифровуються і виконуються при відкритті файла USERS.BBS, використовуючи ім'я файла як ключ розшифровки. При цьому вірус записує у файл USERS.BBS якусь інформацію (створює ім'я з максимальними привілеями?).

Bomber. Нешкідливий резидентний поліморфік-вірус. Перехоплює INT 21h і заражає COM-файли, окрім COMMAND.COM, при їх запуску. Містить усередині себе текст:

 COMMANDER BOMBER WAS HERE.  [DAME]

 Характерною рисою цього вірусу є те, що він використовує досить незвичайний поліморфік-алгоритм. При зараженні вірус прочитує 4096 байтів з середини файла і переносить їх в його кінець. Себе він записує в “диру”, що утворилася, і приступає до генерації поліморфік-коду. Вірус містить декілька підпрограм генерації випадкового (але цілком працездатного!) коду, який записується у випадкові місця файла, що заражається. У цьому коді може бути присутньою близько 90% всіх інструкцій процесора i8086. Управління з однієї ділянки в іншу передається командами CALL, JMP, RET, RET xxxx. Перша ділянка записується в початок файла, а остання пе­редає управління на основне тіло вірусу. У результаті заражений файл ви­глядає як би покритий “плямами” коду вірусу, а процедура виявлення основного тіла вірусу стає надзвичайно складною.

9.  Способи  захисту  від  вірусів

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

Систематичне архівування важливої інформації

 Єдиним стовідсотковим по надійності методом захисту від втрати важливої інформації є її резервне копіювання на захищені від записування пристрої зберігання даних. Більше того, архівуванням також не можна нехтувати, оскільки втратити інформацію можна не лише через віруси, але й через стрибки напруги в мережі, поломки обладнання й т.д.

Жодна  антивірусна програма не зрівняється по надійності з архіву­ванням інформації. Справа в тому, що на будь-який алгоритм антивірусу завжди найдеться алгоритм вірусу, невидимого для цього антивірусу.

Обмеження ненадійних контактів

Друге правило, що частково гарантує збереження інформації, – це обмеження копіювання даних з ненадійних джерел. Як би ми не старалися, обмін інформацією з іншими користувачами і робота в локальних або глобальних мережах неминучі. Однак, деякі правила для себе все-таки виділити можна.

По-перше, необхідно намагатися не запускати неперевірені файли, у тому числі отримані по комп'ютерній мережі. Бажано використовувати тільки програми, отримані з надійних джерел. Перед запуском нових про­грам обов'язково варто перевірити їх одним або декількома антивірусами.

По-друге, варто обов'язково користуватися тільки тими джерелами та іншими файлами,  які добре зарекомендували себе, хоча це не завжди рятує (наприклад, на WWW-cepвері Mіcrosoft досить довгий час перебував документ, заражений макровірусом “Wazzu”).

По-третє, необхідно обмежити коло людей, які допущені до роботи на конкретному комп'ютері. Практика показує, що найбільш уразливі комп'ютери – багатокористувацькі.

І нарешті, відповідно до четвертого правила, варто купувати тільки дистрибутивне програмне забезпечення в офіційних продавців. Безкош­тов­ні, умовно безкоштовні або піратські копії можуть призвести до зараження.

Використання антивірусних програм

При існуючому різноманітті вірусів і їх мутацій запобігти зараженню може тільки повнофункціональна антивірусна система, що має в своєму арсеналі всі відомі технології боротьби з «інфекційними хворобами»: не тільки сканер-поліфаг, але і резидентний on-line-монітор, засоби контролю програмної цілісності (CRC) і евристичного пошуку вірусних сигнатур.

Кожен новий вірус необхідно знайти щонайшвидше (а деякі віруси навмисно довго себе не проявляють, щоб у них було досить часу на розповсюдження). Проблема у тому, що немає чіткого способу визначити наперед, що при своєму виконанні дана програма проявить вірусоподібну поведінку. Як немає єдиних ліків від усіх хвороб, так немає універсальної «вакцини» від усіх видів шкідливого програмного забезпечення. На всі 100% захиститися від вірусів практично неможливо!

У такій сфері, як виявлення атак на комп'ютерні системи, процес вдосконалення нескінченний. Хакери не втомлюються винаходити все нові схеми проникнення в комп'ютерні системи. Розробники детектуючих додатків, що стоять по іншу сторону барикад, відстежують новинки, що з'являються, і поспішають запропонувати свої контрзаходи. От чому продукти, що випускаються, вимагають постійної модернізації, і користувачам настійно рекомендується встановлювати оновлені сигнатури, що дозволяють ідентифікувати нові види мережевих атак.

Старе антивірусне програмне забезпечення подібно лікам з минулим терміном придатності – толку від нього мало. Якщо не обновляти файли сигнатур, то рано чи пізно можна опинитися беззахисними проти нових вірусів. Більшість фірм, що розробляють антивіруси, випускають нові файли сигнатур принаймні двічі в місяць або й частіше, якщо з'являється серйозний вірус. Для отримання нових сигнатур зручно користуватися функцією автоматичного оновлення через Web, що є в антивірусному пакеті.

Супровід через Internet програми PC-cillin, наприклад, володіє уні­кальною особливістю. Можна не тільки отримати консультацію по електронній пошті, але і поговорити у реальному часі з фахівцем служби супроводу Trend. (Хоча від цієї чудової послуги не багато толку, якщо комп'ютер заблокований і увійти в Internet неможливо, проте вона безкоштовна.) Такі антивірусні продукти, як Norton AntiVirus 2000 і McAfee VirusScan, підтримують найкрупніші дослідницькі групи галузі: відповідно Symantec AntiVirus Research Center і AntiVirus Emergency Response Team. Тому Norton і McAfee  швидко реагують на загрозу нового вірусу.

Всі основні фірми-постачальники антивірусного забезпечення регулярно і досить часто оновлюють файли сигнатур вірусів, а при появі особливо шкідливого вірусу створюють додатковий екстрений випуск. Ще зовсім недавно вважалося, що сигнатури потрібно оновлювати щомісячно, але в нашу епоху нових вірусів, можливо, буде розумним перевіряти їх щотижня вручну або за допомогою автоматичного оновлення антивірусної програми. В утилітах McAfee, Symantec і Trend Micro для оновлення достатньо один раз клацнути кнопкою миші.

Певний набір засобів антивірусного захисту присутній у всіх утилітах основних фірм-виробників програмного забезпечення. Серед них: постійний захист від вірусів (антивірусний монітор), перевірка системи за розкладом і оновлення сигнатур через Internet, а також створення аварійної завантажувальної дискети, що дозволяє запустити комп'ютер навіть тоді, коли у нього заражений вірусом завантажувальний сектор (природно, дискету треба створити до того, як вірус потрапив в комп'ютер). Крім цих стандартних засобів, деякі пакети містять «архітектурні надмірності»: наприклад, спеціальний додатковий захист від поштових вірусів (тривога з приводу яких наростає), а також шкідливих модулів ActiveX і Java-аплетів. А такі програми, як Panda Antivirus Platinum і PC-cillin, навіть дозволяють батькам заблокувати доступ дітей до небажаних Web-сторінок.

Оскільки у нових вірусів є нові сигнатури, файли сигнатур необхідно підтримувати в актуальному стані. При виході нової версії антивіруса формат файла сигнатур звичайно міняється, і оновлені сигнатури виявляються несумісними з попередніми версіями програми. Саме тому анти­ві­рус­не програмне забезпечення вже досить давно продається по тій же схемі, що бритви і леза: одного разу купивши основну утиліту (бритву), ви потім вимушені постійно купувати оновлені файли сигнатур (леза).

Так, компанії McAfee і Symantec надають право необмеженого оновлення сигнатур протягом року з моменту придбання утиліти, але за кожен наступний рік потрібно в обох випадках заплатити 4 долари. Таку суму навряд можна вважати серйозним ударом по кишені (на відміну від підписки на оновлені файли сигнатур F-Secure, яка коштує 63 доларів); крім того, через рік ми з великою вірогідністю захочемо відновити саму програму. Їх основні конкуренти – Command AntiVirus, Inoculate IT, Panda Antivirus Platinum і PC-cillin – пропонують безкоштовне оновлення сигнатур протягом всього життя продукту.

В даний час способи надання антивірусного захисту істотно змінюються. Компанія McAfee.com вже пропонує перевірку на віруси через Internet в своїй «електронній лікарні» McAfee Clinic (разом з ще декількома видами діагностики). Послуга надається по підписці і коштує 50 доларів в рік, але часто з'являються спеціальні пропозиції, а за перші два тижні платня не береться – це випробувальний період. Перевірку віддалених комп'ютерів на віруси здійснює модуль ActiveX, який бере сигнатури з Web-серверу виробника програми.

Види антивірусних програм

Самими популярними й ефективними антивірусними програмами є антивірусні сканери, монітори, фаги (поліфаги), ревізори. Застосовуються також різного роду блокувальники і іммунізатори (вакцини). Розглянемо характеристики кожного з цих видів програм.

Сканери (scanner). Сканери (детектори) здатні виявити фіксований набір суттєвих вірусів у файловій системі, секторах і системній пам’яті, а потім – негайно видалити біль­шість з них. Для пошуку вірусів сканери використовують так звані "маски" (або сигнатуру) – деяку постійну послідовність коду, специфічну для конкретного вірусу.

У випадку, якщо вірус не містить у собі постійної маски (наприклад, поліморфік-вируси), використовуються інші методи, засновані на описі всіх можливих варіантів коду на алгоритмічній мові.

У багатьох популярних сканерах (наприклад Антивірус Каспер­сь­кого, Doctor Web, Norton Antіvіrus, McAfee, Panda Antіvіr, AntіVіr Personal Edіtіon і ін.) застосовується режим евристичного сканування. Цей режим полягає в тому, що програма не просто шукає віруси, а проводить аналіз послідовності команд у кожному об’єкті, який перевіряється, здійснює  набір деякої статистики, згодом приймає ймовірне рішення типу: "можливо заражений" або "не заражений".

Евристичне сканування являє собою ймовірнісний метод пошуку ві­ру­сів, що, в решті решт, забезпечує можливість визначення невідомих про­грамі вірусів, але разом з цим збільшує кількість помилкових спра­цьо­вувань (повідомлень, знайдених вірусах у файлах, де насправді їх немає).

Основна ідея такого підходу полягає у тому, що евристика спочатку розглядає поведінку програми, а потім зіставляє його з характерним для зловмисної атаки,  на зразок поведінки троянського коня. Встановити модель поведінки і ухвалити рішення щодо нього можна за допомогою декількох механізмів. Для того, щоб виявити і визначити всі можливі дії програми, використовують два підходи:  сканування і емуляція.

Підхід зі скануванням припускає пошук «поведінкових штампів», наприклад, найтиповіших низькорівневих способів відкриття файлів. Або процедура сканування звичайного виконуваного файла проглядає всі місця, де програма відкриває інший файл, і визначає, якого роду файли вона відкриває і що в них записує.

Другий метод визначення поведінки – емуляція. Такий підхід дещо складніший. Програма пропускається через емулятор Windows або макроемулятор Macintosh або Word з метою подивитися, що вона робитиме. Проте виникають питання, тому що в цьому випадку багато що залежить від чудасій вірусів. Наприклад, якщо вірус запрограмований на форматування жорсткого диска 25 лютого о 10 годині ранку, а при емуляції цього вірусу на симуляторі дата встановлена на 24 лютого, то вірус поки не проявить свої наміри.

Вся хитрість швидкого розпізнавання полягає в поєднанні двох підходів і отриманні найдокладнішого каталогу поведінкових штампів за можливо коротший час. Для перевірки факту зараження файла вірусом фахівці можуть використовувати різні варіанти штучного інтелекту – експертні системи і нейронні мережі.

Недолік евристичного підходу полягає якраз в його евристичності. Зав­жди є вірогідність, що надзвичайно підозрілий файл насправді абсолют­но нешкідливий. Проте останній евристичний механізм Symantec під назвою Bloodhound дозволяє знайти до 80% невідомих вірусів виконуваних файлів і до 90% невідомих макровірусів. Варто також помітити, що програми-детектори не дуже універсальні, оскільки здатні знайти тільки відо­мі віруси. Деяким таким програмам можна повідомити спеціальну послі­дов­ність байт, характерну для якогось вірусу, і вони зможуть знайти інфі­ковані ним файли: наприклад, це уміють NotronAntiVirus або AVP-сканер.

Різновидом сканерів є так звані таблетки – спеціалізовані програми, орієнтовані на пошук певного типу або сімейства вірусів, наприклад, троянів, макровірусів та інших (наприклад, Antі-Trojan, Trojan Remover).

Слід зазначити, що використання спеціалізованих сканерів, розрахо­ва­них тільки на макровіруси, іноді буває більше зручним і надійним рішенням для захисту документів MS Word і MS Excel.

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

Монітори. Монітори – це різновид сканерів, які, постійно перебуваючи в пам'я­ті, відслідковують вірусоподібні ситуації, які відбуваються з диском і пам'яттю (тобто виконують безперервний моніторинг). Прикладом таких антивірусів може бути програма Kaspersky Antі-Vіrus або SpіDer Guard.

До недоліків цих програм можна віднести, наприклад, імовірність виникнення конфліктів з іншим програмним забезпеченням, як і для сканерів – залеж­ність від нових версій вірусних баз, а також можливість їхнього обходу деякими вірусами.

Фаги (поліфаги) (scanner/cleaner, scaner/remover). Фаги – це програми, здатні не тільки знаходити, але і знищувати віруси, тобто лікувати «хворі» програми (поліфаг може знищити багато вірусів). До поліфагів відноситься і така стара програма, як Aidstest, яка знаходить і знешкоджує близько 2000 вірусів.

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

Сучасні фаги використовують інші методи пошуку вірусів. Після виявлення вірусу в тілі програми (або завантажувального сектора, який теж містить програму початкового завантаження) фаг знешкоджує його. Для цього розробники антивірусних засобів ретельно вивчають роботу кожного конкретного вірусу: що він псує, як він псує, де він ховає те, що зіпсує (якщо ховає). В більшості випадків фаг може видалити вірус і відновити працездатність зіпсованих програм. Але необхідно добре розуміти, що це можливо далеко не завжди.

Ревізори. Ревізори – це програми, принцип роботи яких заснований на підра­хунку контрольних сум (CRC-сум) для присутніх на диску файлів і системних секторів.

Прикладом такого антивірусу може бути програма ADіnf32. Ці контрольні суми потім зберігаються в базі даних антивірусу (у таблицях) разом із відповідною інформацією: довжинами файлів, датами їх останньої модифікації і т.д. При наступному запуску ревізори звіряють відомості, що містяться в базі даних, з реально підрахованими значеннями. Якщо інфор­ма­ція про файл, записана в базі даних, не збігається з реальними значеннями, то ревізор попереджає про те, що файл, можливо, був змінений або заражений вірусом.

Ревізори вміють вчасно виявляти зараження комп'ютера практично кожним з існуючих на сьогодні вірусів, не допускаючи розвитку епідемії, а сучасні версії ревізора вміють негайно видаляти більшість навіть раніше незнайомих їм вірусів.

До недоліків ревізорів можна віднести те, що для забезпечення безпеки вони повинні використовуватися регулярно. Але безсумнівними їхніми перевагами є висока швидкість перевірок і те, що вони не вимагають частого відновлення версій.

Антивірусні блокувальникиАнтивірусні блокувальники – це резидентні програми, які перехоплюють небезпечні ситуації, і повідомляють про це користувача (наприклад, AVP Offіce Guard). До ситуацій, що відслідковуються, належать, наприк­лад, відкриття виконуваних файлів для записування і записування в boot-сектори дисків або MBR вінчестера, спроби програми залишитися резидентною і т.д. До речі, відзначені події характерні для вірусів у моменти їх розмноження.

Блокувальники дозволяють обмежити розповсюдження епідемії, поки вірус не буде знищений. Практично всі резидентні віруси визначають факт своєї присутності в пам'яті машини, викликаючи яке-небудь програмне переривання з «хитрими» параметрами. Якщо написати просту резидентну програму, яка імітуватиме наявність вірусу в пам'яті комп'ютера, правильно «відзиваючись» на певний пароль, то вірус, швидше за все, визнає цю машину вже зараженою.

Навіть якщо деякі файли на комп'ютері містять в собі код вірусу, при використанні блокувальника зараження всієї решти файлів не відбудеться. Для нормальної роботи такої програми необхідно запустити блокувальник раніше всієї решти програм, наприклад, у файлі CONFIG.SYS. Але якщо вірус встиг заразити COMMAND.COM або стартує із завантажувального сектора, то антивірус-блокувальник не допоможе.

До переваг блокувальників можна віднести вміння виявляти вірус на самій ранній стадії його розмноження, а до недоліків – здатність деяких вірусів обходити блокувальники, а також наявність  неправдивих спрацьовувань.

Імунізатори або вакцини. Імунізатори – це невеликі програми, які змінюють файли або проникають у них. У першому випадку вірус буде приймати файли як заражені, а в другому – антивірус буде щоразу перевіряти файл на зміни. Слід зазначити, що в наш час цей тип антивірусів не має великого pозповсюд­ження серед користувачів.

Спеціальні вакцини призначені для обробки файлів і завантажувальних секторів. Вакцини бувають пасивними і активними.

Активна вакцина, «заражаючи» файл, подібно вірусу, оберігає його від будь-якої зміни і у ряді випадків здатна не тільки знайти сам факт зараження, але і вилікувати файл. Пасивні вакцини застосовують тільки для запобігання зараженню файлів деякими вірусами, що використовують прості ознаки їх зараженості – «дивні» час або дату створення, певні символьні рядки і т.д. В даний час вакцинація широко не застосовується. Бездумна вакцинація всього і всіх здатна викликати цілі епідемії неіснуючих вірусних хвороб. Так, протягом декількох років на території колишнього СРСР лютувала страшна епідемія жахливого вірусу TIME. Жертвою цього вірусу стали сотні абсолютно здорових програм, оброблених антивірусною програмою ANTI-КІТ.

Наведемо приклад. В даний час існує досить багато вірусів, що запобігають повторному зараженню файлів деякою «чорною міткою», якою вони мітять інфіковану програму. Існують, наприклад, віруси, що виставляють в полі секунд часу створення файла значення 62.Уже досить давно з'явився вірус, який до всіх заражених файлів дописував п'ять байт – MsDos. Нормальних файлів, що містять в кінці такий символьний рядок, не буває, тому вірус і використовував цю ознаку як індикатор зараження файла. Вакцинація файлів проти такого вірусу зовсім не складна. Достатньо дописати в кінець вище згаданий символьний рядок – і зараження таким вірусом не страшне. Страшне інше – деякі антивірусні програми, зустрів­ши в кінці файла нещасливий рядок, починають негайно лікувати його. Шансів на те, що після такого «лікування» «інвалід» нормально працюватиме, практично ніяких.

 

Контрольні питання до Лекції 4

1.     Класифікуйте комп’ютерні віруси за середовищем їх існування та за способом зараження комп’ютерів.

2.     Наведіть класифікацію вірусів за алгоритмами, які вони використовують при функціонуванні, та за своїми деструктивними можли­вос­тями?

3.     З чого складається класифікаційний код вірусу?

4.     Що таке дескриптор та сигнатура вірусів?

5.     У чому полягають особливості файлових вірусів, якими вони бувають?

6.     Де можуть бути розташовані файлові віруси?

7.     Яким буває класифікаційний код файлового вірусу і які його складові?

8.     Охарактеризуйте дескриптор та сигнатуру файлового вірусу.

9.     Які різновиди файлових вірусів ви знаєте? Дайте характеристику "overwriting"-вірусам?

10.                 У чому полягає принцип функціонування та розташування пара­зи­тичних вірусів?

11.                 У чому різниця між вірусами типу "prepending", "appending" і "inserting"?

12.                 Як працюють віруси-компаньйони? В чому їх особливості?

13.                 Що таке файлові хробаки? Наведіть відомі вам приклади файлових вірусів-хробаків.

14.                 Link-віруси та їх особливості.

15.                 Охарактеризуйте групу OBJ- і LIB-вірусів. Де вони розташовуються і як себе проявляють?

Наведіть алгоритм роботи файлових вірусів.