
- •Лекція 4 віруси як шкідливе програмне забезпечення План лекції:
- •1. Класифікація комп'ютерних вірусів
- •2. Систематизація комп’ютерних вірусів
- •3. Файлові віруси
- •Види файлових вірусів
- •Алгоритм роботи файлового вірусу
- •Приклади файлових вірусів
- •4. Завантажувальні (бутові) віруси
- •Класифікаційний код завантажувального вірусу
- •Дескриптор завантажувального вірусу
- •Сигнатура бутового вірусу
- •Принцип дії завантажувальних вірусів
- •Розташування завантажувального вірусу
- •Алгоритм роботи завантажувального вірусу
- •Приклади завантажувальних вірусів
- •5. Макро-віруси
- •Причини зараження макро-вірусами
- •Загальні відомості про віруси в ms Office
- •Принципи роботи Word/Excel/Office-вірусів
- •Алгоритм роботи Word макро-вірусів
- •Алгоритм роботи Excel макро-вірусів
- •Алгоритм роботи вірусів для Access
- •Приклади макро-вірусів
- •6. Мережеві віруси
- •Приклади мережевих вірусів
- •7. Стелс-віруси
- •Приклади стелс-вірусів
- •8. Поліморфік-віруси
- •Поліморфні розшифровувачі
- •Рівні поліморфізму
- •Зміна виконуваного коду
- •9. Способи захисту від вірусів
- •Систематичне архівування важливої інформації
- •Обмеження ненадійних контактів
- •Використання антивірусних програм
- •Види антивірусних програм
- •Контрольні питання до Лекції 4
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.