Комп’ютерні віруси як загроза інформаційним системам
Нині про існування комп'ютерних вірусів відомо навіть тим, хто ніколи не працював за комп'ютером. Комп'ютерні віруси стали щоденною проблемою не тільки програмістів, а й інших фахівців, чия професійна діяльність пов'язана з дослідженням, створенням або обслуговуванням комп'ютерної техніки: нині це проблема кожного, хто просто користується комп'ютером, а тому всі користувачі сьогодні повинні мати уявлення про комп'ютерні віруси, усвідомлювати їхню небезпеку, знати методи боротьби та профілактики.
Що таке комп'ютерні віруси ? Коли і чому вони з'явилися ? Якими вони бувають? Як з ними боротися? Щороку кожний викладач інформатики намагається дати відповіді на ці запитання, але вірусів не меншає, навпаки — їх стає дедалі більше, тому кожного року проблема вірусів виглядає дещо по‒іншому.
Отже, вірусів з кожним днем з'являється все більше. Наприклад, днями на сайті «Лабораторії Касперського» з'явилася інформація про 50 найпоширеніших сьогодні вірусів (до речі, перелік «найсвіжіших» з них наведений наприкінці статті). Але так було не завжди.
Гортаючи фахову літературу двадцятирічної давності, присвячену темам програмування та кібернетики (тоді інформатику називали так), не зустрінеш жодної згадки про явище, яке згодом стали називати «комп'ютерним вірусом». Наукові дискусії про це точилися аж до початку 90‒х років. Тому навіть сам термін «комп'ютерний вірус» з'явився у другій половині 80‒х років, але не всі фахівці зрозуміли його сутність. Наприклад, ще у 1988 p. деякі відомі спеціалісти не вірили в існування комп'ютерних вірусів. Ось як згадує про це Евген Касперський: «1988 року вірус Ієрусалим поширився на тисячі комп'ютерів, але залишався непоміченим, адже антивірусні програми ще не застосовували так широко, як нині, а професіонали ще не вірили в існування комп'ютерних вірусів. Показовим є той факт, що саме тоді комп'ютерний гуру, людина‒легенда Пітер Нортон (Peter Norton), висловився проти того, що комп'ютерні віруси існують: він оголосив їх міфом та «казками про крокодилів», що нібито з'явилися в каналізації Нью‒Йорка. Однак цей казус не завадив фірмі Symantec розпочати згодом власний антивірусний проект — Norton Anti‒Virus».
Отже, точну дату створення першого комп'ютерного вірусу нині достеменно не знає ніхто. Деякі джерела повідомляють, що це сталося десь на початку 80‒х років XX ст. Деякі вказують на 70‒ті роки і навіть на кінець 60‒х. І це можна пояснити: згадайте, що перший персональний комп'ютер фірма IBM створила у 1985 p., а до того часу роботу виконували на великих ЕОМ, мейнфреймах та мінікомп'ю‒терах. Це були комп'ютери колективного користування, які знаходилися у великих наукових та дослідницьких центрах. Вони ще не набули такого масового поширення, як нині, і більшість із цих машин не були підключені до глобальних мереж. Тому якісь місцеві «жарти» та «помилки» програмістів існували, але вони носили локальний характер. До того ж, тоді комп'ютерною технікою користувалися висококваліфіковані програмісти, які аналізували та швидко усували наслідки дії таких програм. А якщо зважати на той факт, що комп'ютери Радянського Союзу не були підключені до мереж Заходу, то можна констатувати, що до кінця 80‒х років СРСР був «терра інкогніта» для всесвітніх комп'ютерних вірусів. Та навіть тоді, коли з'явилися комп'ютерні віруси (переважно це були віруси, які ми нині називаємо файловими), програмістам було не складно дослідити та знищити їх, адже майже всі вони знали кілька мов програмування високого рівня, але вважали гарною манерою програмувати не лише в асемблерах, а навіть (і переважно) у двійкових кодах. Тому порада типу: «Якщо знайшов вірус, то напиши антивірусну програму та знищ його» сприймалася цілком нормально.
Крім того, семінари, де обговорювали комп'ютерні проблеми, тоді проводили такі фахівці, яких нині ми називаємо фундаторами. Наприклад, у Києві семінари проводив один із засновників української вірусології Микола Безруков. У деяких вдома й досі зберігається його книга «Вірусологія». Думаю, що сучасним інформатикам цікаво буде дізнатися про те, як у 1990 p. сам Микола Безруков аналізував явище «комп'ютерний вірус». Ви зрозумієте, чому дата створення першого вірусу така неточна, адже деякі програми, які тоді вважалися комп 'ютерними іграми (наприклад програму «Animal» («Тварина»)), нині сміливо можна класіфікувати як вірус. Отже, проведемо екскурс у минуле.
Комп'ютерні віруси — це спеціально створені і, як правило, невеличкі програми, здатні заражати інші програми включенням до них своєї, можливо модифікованої, копії (яка зберігає здатність до подальшого розмноження). Програма, заражена комп'ютерним вірусом, може бути автоматично створеною «троянською» програмою, прихованим модулем якої є тіло комп'ютерного вірусу. Крім зараження, вірус може виконувати й інші несанкціоновані дії, від цілком безпечних до вкрай руйнівних (наприклад, знищення даних на зараженому диску). У цьому разі вірус можна розглядати як логічну міну. Несанкціоновані дії можуть бути зумовлені або настанням певної дати (такі «троянські» програми аналогічні до мін з годинниковим механізмом), або певною кількістю розмножень, або збігом певних умов, наприклад, записом зараженої програми на вінчестер. Такі програми аналогічні до безконтактних мін. При цьому комбінація умов може бути досить складною, як наприклад, у віруса, відомого за назвою «Пінг‒понг».
Процес зараження програмних файлів спрощено можна подати в такий спосіб. Вірус змінює код зараженої програми так, щоб саме комп'ютерний вірус отримав керування першим, ще до початку роботи програми‒вірусоносія. У процесі отримання керування вірус певним чином знаходить нову програму і встановлює власну копію в початок або додає її до кінця цієї, ще не зараженої, програми. В останньому випадку він коригує код програми, щоб отримати керування першим. Для цього кілька перших байтів запам'ятовуються в тілі вірусу, а на їхнє місце вставляється команда переходу на початок вірусу. Отримавши керування, вірус відновлює «приховані» перші байти, а після відпрацювання свого тіла передає керування програмі‒вірусоносію, і вона нормально виконує свої функції.
Іноді вірус вбудовує себе кудись усередину програми, наприклад, в область стека. Заражені програми (або їхні копії) можуть передаватися через дискети або мережею на інші комп'ютери. Оскільки користувачі персональних електронних обчислювальних машин (ПЕОМ) широко обмінюються інформацією на дискетах, кількість заражених програм може бути значною, призводячи до епідемій. Цьому також сприяє розповсюджена в нашій країні практика використання одного персонального комп’ютера кількома користувачами. Небезпека істотно зростає за наявності вінчестера. У цьому разі один некваліфікований користувач може завдати значних збитків усім іншим. Особливу небезпеку становлять прихильники комп'ютерних ігор, які зазвичай погано знають операційну систему (ОС) і не завжди усвідомлюють зміст виконуваних ними дій.
Перші програми, схожі на комп'ютерні віруси, було створено в 1972 p. (гра «Дарвін») і в 1976 p. (системна програма WORM («Хробак»)). У 1984 p. було поширено гру ANIMAL («Тварина»), яка мала майже всі риси сучасного комп'ютерного вірусу. Програма, реалізована як гра, пропонувала гравцю задумати якусь тварину і за певний час намагалася за допомогою уточнювальних запитань (чи має шерсть, чи живе у воді тощо) відгадати задумане. Якщо програма не встигала відгадати назву задуманої тварини, то просила гравця повідомити, яке запитання потрібно поставити, щоб відгадати. Програма запам'ятовувала це запитання й у такий спосіб «самонавчалася». Але розробник такої програми використовував, імовірно, той факт, що на його комп'ютері будь‒якому користувачу виділявся власний каталог для роботи, але не було механізму захисту каталогу від інших користувачів (або програм). Програміст змінив гру так, що після кожного «навчання» програма копіювала себе в каталог іншого користувача. Гра була популярною, і незабаром усі комп'ютери фірми вже мали програму, яка повільно розмножувалася. Ситуація не була небезпечною, але численні копії гри дуже засмічували дисковий простір. Знищення копій не дало потрібного ефекту: достатньо було залишити одну копію — і незабаром розмноження повторювалося знову. Проблему було вирішено за допомогою засобу, який за сучасною термінологією можна назвати антивірусом.
У 1985 p. було опубліковано гру «Core War» («Війна в пам'яті»). У ній два гравці пишуть по одній програмі мовою низького рівня. Програми вмішуються у велику циклічно замкнуту ділянку пам'яті. Кожна команда займає одну комірку пам'яті ЕОМ. Керуюча програма по черзі виконує по одній команді з кожної програми, як це робить найпростіша система реального часу. Програми гравців атакують одна одну, намагаючись уникнути ушкоджень і відновлюючи ушкоджені ділянки. Найпростіша атака — це використання команди MOV (записати в пам'ять). Наприклад, MOV 1000 може «вбити наповал» ворожу програму, якщо потрапить у наступну команду (тобто якщо наступна виконувана команда «ворога» знаходиться за адресою 1000), або «поранити», якщо за адресою 1000 у «ворога» записані дані або команди, чи «не влучити», якщо комірка за адресою 1000 «ворогом» не використовується.
«Справжні» віруси, тобто програми, орієнтовані на те, щоб завдати збитків, з'явилися на початку 80‒х pp. XX ст. Це пов'язано з появою ПЕОМ і має характер протистояння користувачів групі безвідповідальних або кримінальних елементів. Перші випадки масового зараження комп'ютерів було зафіксовано 1987 p. Так, лехайський вірус, що з'явився в однойменному університеті США, впродовж кількох днів знищив вміст кількох сотень дискет як з публічної бібліотеки університету, так і особистих дискет студентів. У грудні 1987 p. було виявлено вірус у Ієрусалимському університеті (Ізраїль). Хоча істотної шкоди цей вірус не завдав, він швидко поширився по всьому світу і, вочевидь, є першим вірусом, поширення якого набуло характеру пандемії. 1988 p. ця проблема в країнах США і Західної Європи стала пріоритетною. Особливу увагу громадськості привернув так званий вірус Морріса. Другого листопада 1988 p. Роберт Морріс‒молодший, аспірант факультету інформатики Корнелльського університету, інфікував за допомогою написаного ним вірусу велику кількість комп'ютерів (орієнтовно 6000), підключених до американської національної мережі Інтернет. Хоча ніякої втрати або зміни даних не відбулося, користувачі Інтернету втратили багато тисяч годин робочого часу. До кінця 1989 p. у деяких країнах (США, Великобританія, ФРН) розглядали закони щодо кримінальної відповідальності розробників і розповсюджувачів комп'ютерних вірусів (у США — до 15 років позбавлення волі). Це дає змогу, окрім програмних і організаційних заходів для боротьби з вірусами, застосувати й правові методи. Тому важливим аспектом боротьби з комп'ютерними вірусами стає виявлення злочинця або злочинної групи, відповідальної за створення або поширення відповідного вірусу.
Для більшості комп'ютерних вірусів, так само, як для біологічних, характерний певний інкубаційний період, упродовж якого виконувані вірусом несанкціоновані дії обмежуються зараженням інших програм. Інфікуючи програми або носії, віруси можуть поширюватися від однієї програми до іншої, що робить комп'ютерні віруси небезпечнішими порівняно з іншими методами комп'ютерного вандалізму. Операційна система типу MS‒DOS, що відрізняється практично повною відсутністю захисту від несанкціонованих дій, полегшує розробку вірусів. Однак комп'ютерні віруси не є програмами, що використовують помилки або недоліки конкретної ОС. Для забезпечення їхнього функціонування цілком достатньо звичайних операцій, використовуваних більшістю «нормальних» програм. Тому принципово не може існувати універсального методу, що захищає ОС від поширення будь‒якого вірусу. Проте можна значно ускладнити завдання створення і поширення комп'ютерних вірусів, застосовуючи спеціальні методи в ОС та використовуючи додаткові резидентні і нерезидентні програмні засоби захисту.
Наслідки дії комп'ютерних вірусів:
1) відмова системи у виконанні певної функції (наприклад, блокування вірусом RC‒1701 завантаження програми з захищеної від запису дискети), виконання дій, не передбачених програмою (наприклад, зміна даних у будь‒якому файлі);
2) руйнування окремих файлів, керуючих блоків або усієї файлової системи (форматування диска, видалення файла тощо);
3) видача помилкових, дратівливих повідомлень (наприклад: «Скажи «бебе»);
4) створення звукових або візуальних ефектів (наприклад, падіння літер у вірусі RC‒1701, уповільнене виконання програми у вірусі RCE‒1913, програвання мелодії в RCE‒1805 або поява на екрані рухомого ромбика у ВхІ‒ІС тощо);
5) ініціювання помилок або збоїв у програмі чи ОС (наприклад, переповнення стека);
6) перезавантаження або «зависання» операційної системи;
7) блокування доступу до системних ресурсів (розростання заражених файлів за рахунок їх багаторазового повторного зараження;
8) неможливість передавання зараженій програмі параметрів, уповільнення роботи комп'ютера шляхом виконання пустого циклу з кількох команд після кожного переривання таймера);
9) імітація збоїв апаратури (перетворення частини кластерів на псевдозбійні на дискеті або вінчестері, «зависання» комп'ютера через якийсь час після перезавантаження ОС);
10) прискорення зношування обладнання або спроби його псування.
Збитки, яких завдають віруси, можуть мати катастрофічний характер (знищення вінчестера), якщо в них тривалий «інкубаційний період». Або навпаки: вірус може спричиняти незначні ушкодження даних, які набагато складніше виявити. Через це дії таких вірусів набагато небезпечніші, ніж масове руйнування даних.
Найбільш незахищена частина файлової системи типу MS‒DOS — таблиця розміщення файлів. Якщо вона зруйнована, то ОС не може визначити місцезнаходження файла, хоча самі файли не ушкоджено. Вірус може також виконувати формалізацію деяких ділянок диска, які містять системні дані. Тому необхідно часто дублювати керуючі дані файлової системи на іншу, заздалегідь відому ділянку диска або на дискету. Для цього можна використовувати, наприклад, утиліти Нортон. На комп'ютерах типу AT дані про конфігурацію системи (тип установленого вінчестера тощо) зберігаються в невеличкій енергонезалежній пам'яті (CMOS). Знищення вмісту CMOS‒пам'яті унеможливлює завантаження з вінчестера. Відновлення CMOS‒пам'яті потребує знання всіх технічних даних про вінчестер. Тому цей тип пам'яті також є потенційним об'єктом атаки вірусу.
Комп'ютерні віруси «безсмертні» і можуть необмежений час зберігатися в різних архівах. Навіть цілком «знищені» віруси можуть зберегтися в будь‒якому архівному файлі й випадково або навмисно «реанімуватися» через багато місяців або навіть років після їхнього першого виявлення і знищення. Отже, після появи певного вірусу необхідно вжити спеціальних заходів для запобігання повторним зараженням. Тут можна діяти в двох напрямках:
знайти першоджерело зараження, розробити або установити програми, що ускладнюють (пильнуючи) чи роблять неможливим вакцинуючи) розмноження вірусу.
Далеко не всі ушкодження файлової системи, несправність вінчестера або обладнання спричинені вірусами. Наприклад, деякі типи вінчестерів мають низьку надійність і псуються без втручання вірусів. Є комп'ютери, які можна завантажити тільки після прогрівання, через деякий час. Існують дисководи, що не тільки фрезерують дискети, а й під час запису іноді стирають таблицю розміщення файлів, причому відновити її за допомогою утиліт Нортон не вдається. Багато комп'ютерів і без вірусів регулярно «зависають». Однак є тенденція атрибутувати будь‒яке ушкодження даних у присутності комп'ютерних вірусів.
Ходять чутки, що віруси ушкоджують обладнання. Справді, такі ушкодження можливі. Наприклад, можна ушкодити ділянку люмінофора («випалити пляму») на монохроматичному моніторі, використовуючи особливості схеми керування. Однак для кольорового монітора це зробити неможливо.
Кажуть також, існують що якісь підступні віруси, що нібито вводять у резонанс голівку вінчестера. Це схоже на міф, але проблема «вірус — засіб захисту» аналогічна до проблеми «зброя нападу — зброя захисту». Тому слід очікувати, що тривалий час віруси становитимуть актуальну проблему, причому вдосконалювання засобів захисту буде супроводжуватися вдосконаленням самих вірусів.
Складність опису різних засобів захисту від комп'ютерних вірусів і часте дублювання цих засобів роблять актуальним питання про класифікацію комп'ютерних вірусів. Ця класифікація має сприяти однозначному опису не тільки відомих вірусів, а й їх нових різновидів за обмеженою кількістю порівняно простих ознак. Пропонуємо класифікацію, у якій ім'я вірусу складається з літерного префікса, цифрового кореня і, можливо, літерного суфікса. Префікс характеризує середовище розмноження вірусу.
У 1990 p. існувало чотири основних типи комп'ютерних вірусів:
1) ті, що розміщуються в бут‒секторі і збійних секторах на диску (тип В, бутові віруси);
2) у файлах типу .com (тип С, файлові віруси);
3) у файлах типу .ехе (тип Е, файлові віруси);
4) ті, що передаються по мережі (тип N, чи так звані мережеві віруси).
Цифровий корінь характеризує довжину вірусу. Для комп'ютерних вірусів типу С, Е і СЕ (файлових вірусів) він відповідає збільшенню довжини файла під час зараження. Це збільшення для низки файлових вірусів є нестабільним і залежить як від типу файла (.com або .ехе), так і від довжини файла, що заражається (наприклад, після дописування свого тіла в кінець файла, що заражається, деякі віруси вирівнюють початок свого тіла на початок параграфа, тобто на зсув, кратний 16). У цьому разі за цифровий корінь беруть мінімальну довжину збільшення. Для вірусів типу В як апроксимацію довжини беруть кількість використовуваних секторів, помножену на 512 (довжину сектора).
Комп'ютерні віруси також поділяються на резиденті й нерезидентні. Нерезидентні віруси отримують керування після завантаження в пам'ять зараженої програми, а потім шукають файл‒жертву, використовуючи PATH чи іншу інформацію, і заражають цей файл. Потім керування повертається зараженій програмі, і після закінчення її роботи пам'ять комп'ютера звільняється від вірусу. На відміну від них, резидентні віруси після завантаження в пам'ять і передачі керування зараженій програмі перехоплюють низку переривань і залишаються в пам'яті резидентними. Отримавши керування після переривання, вони виконують певні дії (наприклад, заражають кожну програму, що запускається, заражають .ехе і .com файли тощо). Для класифікації таких вірусів використовують суфікс R.
Структурно віруси можна подати у вигляді двох частин: голови і хвоста. Головою називається частина вірусу, яка першою отримує керування, хвостом — його частина, розміщена окремо від голови.
Часто вірус складається з однієї голови (більшість файлових вірусів). Такі віруси називаються несегментованими. На відміну від них, сегментовані віруси мають хвіст і якоюсь мірою аналогічні до оверлейних файлів. Прикладом сегментованих вірусів є бутові віруси, хоча можлива й реалізація сегментованих файлових вірусів.
В операційній системі MS‒DOS найпоширенішими є файлові нерезидентні, файлові резидентні та бутові віруси. Нині для цієї ОС існує кілька сотень комп'ютерних вірусів.
Дата добавления: 2016-03-04; просмотров: 1736;