Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Систематизація комп’ютерних вірусівСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Важливість і довгостроковий характер проблеми захисту від комп’ютерних вірусів на практиці не викликає сумніву. Для зручності ідентифікації було би зручно, щоб кожний вірус мав своє ім’я. На превеликий жаль, старі вірусі у більшості випадків мають чимало назв, які виникли історично, а нові віруси, навпаки, таких назв взагалі не мають. Відомим дослідником комп’ютерних вірусів М.М. Безрукавим було вироблено і запропоновано схему класифікації, яка включає три основні елементи: - класифікаційний код вірусу; - дескриптор вірусу (формалізований список основних властивостей); - сигнатура вірусу (рядок для контекстного пошуку даного вірусу в зараженій програмі). Класифікаційний код вірусу. Кожному вірусу присвоюється код, який складається з літерного префікса, кількісної характеристики і факультативного літерного суфікса. Наприклад, в коді 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"-віруси) може відбуватися двома способами: - вірус переписує початок файла, що заражається, у його кінець, а сам копіюється в місце, що звільнилося; - вірус створює в оперативній пам'яті свою копію, дописує до неї файл, що заражається, і зберігає отриману конкатенацію на диск. Деякі віруси при цьому дописують у кінець файла блок додаткової інформації (наприклад, вірус "Jerusalem" по цьому блоку відрізняє заражені файли від незаражених). Впровадження вірусу в початок файла застосовується в переважній більшості випадків при зараженні 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; просмотров: 597; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.131.51 (0.012 с.) |