Поліморфні віруси

Автор работы: Пользователь скрыл имя, 17 Декабря 2011 в 20:55, реферат

Краткое описание

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

Вложенные файлы: 1 файл

РЕФИ с.docx

— 30.94 Кб (Скачать файл)

Міністерство  освіти і науки, молоді та спорту України

Полтавський національний технічний університет  імені Юрія Кондратюка

Кафедра комп’ютерних та інформаційних технологій та систем 
 
 
 
 
 
 

Реферат на тему: «Поліморфічні  віруси» 
 
 
 
 
 

Виконав:

студент групи №302ТН

Гайдук  Олександр Ігорович

Викладач:

Головко Геннадій Вячеславович 
 
 

Полтава 2011

    Введення  в поліморфізм

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

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

    Всі поліморфні віруси обов'язково забезпечуються системою шифрування, яка за певним принципом перетворить переданий їй код, викликаючи при цьому стандартні функції і процедури операційної системи. Самі методи шифрування можуть бути різними, але, як правило, кожна операція має свою дзеркальну пару. В асемблері це реалізується дуже просто, і таких пар може бути багато - ADD / SUB, XOR / XOR, ROL / ROR і т.п.

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

    1. Складність вивчення коду при трасуванні файлу.

    2. Збільшення елементу випадковості  в розшифровувача. Місце їх вставки  має величезний вплив на розмір  коду. Зі сміттям ж з'являються  нові варіанти компоновки коду. Розмір при кожному з них  буде різним.

    Асемблер  дає безмежні можливості по вставці  сміття, тому вставки можуть бути різними. Ось деякі їх види:

    1. Регістрові операції. Як правило,  арифметичні і логічні. Прикладом  можуть служити наступні команди:  inc ax; mov ax, [si + bx-04]; add ax, 1234h і ін

    2. Дзеркальні команди. Такі, як add / sub, inc / dec та інші.

    3. Помилкові переходи, а також виклик  підпрограм, що містять сміття (jmp $ +10 h; call XXXXh).

    Виділяють кілька рівнів поліморфізму, що використовуються у вірусі. Кожен з них по-різному  реалізує неоднаковий розмір файлів, які були заражені.

    Рівень 1. Найпростіші олігоморфні віруси. Вони використовують постійні значення для своїх шифрувальників, тому легко визначаються антивірусами. Із за цього такі віруси прозвали "не дуже поліморфними". Приклади таких вірусів: Cheeba, December_3, Slovakia, V-Sign, Whale.

    Рівень 2. Віруси, які мають одну або дві  постійні інструкції, які використовуються в шифрувача. Також визначаються сигнатурою, але мають більш складну будову, ніж представники першого рівня. Приклади: ABC, Flip, Jerusalem, Ontario, PC-Flu, Pheоnix, Seat, Stasi, Suomi.

    Рівень 3. Віруси, які використовують в своєму коді команди-сміття. Це, у своєму роді, пастка від детектування, допомагає  заплутати власний код. Але такий  вірус може бути закарбований за допомогою  попереднього відсіювання сміття антивірусом. Віруси Tequila, StarShip, V2Px, DrWhite належать до третього рівня поліморфізму.

    Рівень 4. Використання взаємозамінних інструкцій з перемішуванням в коді, без додаткової модернізації алгоритму розшифровки, допомагає повністю заплутати антивірус. Доводиться виконувати перебір, після якого потрібна сигнатура буде знайдена. Так були написані віруси Uruguay, CLME, APE.

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

    Рівень 6 (невиліковний). І, нарешті, існують  віруси, які складаються з програмних одиниць-частин. Вони постійно змінюються в тілі і переміщують свої підпрограми. Лікування таких вірусів поки не виробляється, для написання потрібно дуже добре розбиратися в асемблері. Характерною особливістю такої зарази є плями. При цьому в різні місця файлу записується кілька блоків коду, що обумовлює назву методу. Такі плями в цілому утворюють поліморфний шифрувальник, який працює з кодом в кінці файлу. Для реалізації методу навіть не потрібно використовувати команди-сміття - підібрати сигнатуру буде все одно неможливо. Такий алгоритм використовують віруси BadBoy, CommanderBomber, Leech і т.п.

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

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

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

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

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

    2. Змінювати регістри, які використовують  робочі команди. Сміття є сміття  і він жодним чином не повинен  перетинатися з правильним кодом.

    3. Викликати фатальні помилки, а  також генерувати виключення, так  як це зупинить роботу розшифровувача, або зробить її невірною.

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

    Ще  треба ставити неробочу команду  після циклу, але перед шифрованих кодом - це позбавить від деяких проблем  з конвеєром у процесорів Pentium.

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

    Вірусописьменники передусім акцентують увагу на трьох головних речах в своєму творінні:

    1. Маскування. Мета кожного поліморфного  вірусу - як можна довше протриматися  в системі до детектуванні  антивірусом.

    2. Захист. Після виявлення зарази  відбувається виклик виключає  коду.

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

    Перший  поліморфний вірус з'явився в 1990 році і називався Chameleon. Він вписував свій код в кінець COM-файлів, а також використовував два алгоритми шифрування. Перший шифрує тіло по таймеру залежно від значення заданого ключа. Другий використовує динамічний шифрування і при цьому активно заважає трасуванні вірусу. Існувала і модифікація Chameleon. Друга версія 1 квітня форматувати диск A: (враховуючи обсяги того часу, це було дуже неприємно).

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

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

    На 1993 рік довелося дуже багато поліморфних  вірусів. При цьому програмісти, мабуть, змагалися між собою і  вирішували, чий вірус виявиться  крутіше всіх. З'являлися все нові дешифратори, які використовувалися  іншими вірусописьменниками для своїх брудних цілей. Одним з таких небезпечних вірусів був Predator, який перехоплював переривання 13h і 21h і записував себе в кінець всіх COM-файлів. Використовуючи int 13h, вірь перевіряв сектора, зчитуються з дисків, і змінював у них один біт в певний час.

    Інше  сімейство вірусів Daemaen записує себе в COM, EXE та SYS-файли. При цьому бінарники, що починаються на SC, VF і F-, не заражаються. На вигляд ці віруси виглядають цілком безпечно, але насправді відбувається запис в MBR вінчестера і в boot-сектора дискет, а тіло зарази зберігається в останніх секторах. Віруси містять в собі ряд помилок, які цілком можуть зруйнувати FAT.

    Вірусописьменники зазвичай залишають разом з вірусом будь-яку інформацію. Так, наприклад, поліморфний вірус Invisible записується в кінець виконуваних файлів. Залежно від часу зараза замінює файл іншою програмою, при запуску якої юзер чує музику і бачить перед собою текст пісні I'm the invisible man (хіт тих часів). Ще один приклад - вірус Seat. Після зараження вірус перехоплює 21h, записує себе в виконувані файли. Час від часу на екрані комп'ютера з'являється візуальні ефекти, а при натисненні на клавіші лунають звуки;).

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

    При запуску Тодора відбувається розшифрування його тіла. Для цього використовується досить простий алгоритм, заснований на XOR. З кожним кроком слово вірусу XOR'ітся з непостійним ключем. Після активації перехоплюється адреса 24h і відбувається зараження файлу command.com. На довершення вірус вражає 5 файлів з розширенням COM або EXE.

    Особливістю вірусу є те, що він перевіряє  носій на можливість запису. Перед  зараженням кожного бінарника створюється тимчасовий файл (потім вилучається). Коли це неможливо (адреса 24h потрібен для повернення саме таких помилок), зараза припиняє свою діяльність, вважаючи, що носій захищений від запису. Атрибути і дата файлу після зараження стають колишніми. Лише значення секунд стає рівним 22. Це зроблено для того, щоб не інфікувати бінарники повторно (вірус перевіряє дату під час пошуку). До того ж, 15 числа кожного місяця, вірус випадковим чином шифрує сектор жорсткого диска. Це робить поліморфного вірусу досить небезпечним, оскільки сектором може бути і Root Directory.

Информация о работе Поліморфні віруси