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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

Відомим дослідником комп’ютерних вірусів М.М. Безрукавим було вироблено і запропоновано схему класифікації, яка включає три основні елементи:

- класифікаційний код вірусу;

- дескриптор вірусу (формалізований список основних власти­вос­тей);

- сигнатура вірусу (рядок для контекстного пошуку даного вірусу в зараженій програмі).

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

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

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

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

Впровадження файлового вірусу можливе практично в усі викону­вані файли усіх популярних операційних систем. На сьогоднішній день відомі віруси, що вражають всі типи виконуваних об'єктів: командні файли (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").



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 562; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.137.243 (0.072 с.)