Віруси. Вони бувають різні — наприклад, грип, гепатит, герпес; а бувають ще й комп’ютерні. Ось про них, рідних, і поговоримо. Що ж це таке комп’ютерний вірус? Пояснень, що таке комп’ютерний вірус, можна навести кілька. Найпростіше — побутове пояснення для домогосподарки, яка жодного разу в житті не бачила, але знає, що Він є, і що в Ньому водяться Віруси. Пояснення буде дано на прикладі клерка, який працює виключно з паперами. Ідея такого пояснення належить Д. Н.Лозінському.

Уявімо собі акуратного клерка, який приходить на роботу, до себе в контору і кожен день виявляє у себе на столі стос аркушів паперу зі списком завдань, які він повинен виконати за робочий день. Клерк бере верхній аркуш, читає вказівки начальства, пунктуально їх виконує, викидає «відпрацьований» лист у відро для сміття і переходить до наступного листа. Припустимо, що якийсь зловмисник потайки прокрадається в контору і підкладає в стопку паперів аркуш, на якому написано наступне: «Переписати цей лист два рази і покласти копії в стопку завдань сусідів».

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

Приблизно так само працює і комп’ютерний вірус, тільки стосами паперів-вказівок є програми, а клерком — комп’ютер. Так само як і клерк, комп’ютер акуратно виконує всі команди програми (листи завдань), починаючи з першої. Якщо ж перша команда звучить як «скопіюй мене в дві інші програми», то комп’ютер так і зробить, — і команда-вірус потрапляє в дві інші програми. Коли комп’ютер перейде до виконання інших «заражених» програм, вірус тим ж способом буде розходитись все далі і далі по всьому комп’ютеру.

У наведеному вище прикладі про клерка і його контору лист-вірус не перевіряє, заражена чергова папка завдань чи ні. У цьому разі до кінця робочого дня контора буде завалена такими копіями, а клерки тільки і будуть що переписувати один і той же текст і роздавати його сусідам — адже перший клерк зробить дві копії, чергові жертви вірусу — вже чотири, потім 8, 16, 32, 64 і т. д., тобто кількість копій кожного разу буде збільшуватися в два рази. Якщо клерк на переписування одного аркуша витрачає 30 секунд і ще 30 секунд на роздачу копій, то через годину по конторі буде «бродити» більш 1.000.000.000.000.000.000 копій вірусу! Швидше за все, звичайно ж, не вистачить паперу, і поширення вірусу буде зупинено з такої банальної причини.

Як це не смішно (хоча учасникам цього інциденту було зовсім не смішно), саме такий випадок стався в 1988 році в Америці — кілька глобальних мереж передачі інформації виявилися переповненими копіями мережного вірусу (вірус Морріса), який розсилав себе від комп’ютера до комп’ютера. Тому «правильні» віруси роблять так: «Переписати цей лист два рази і покласти копії в стопку завдань сусідів, якщо у них ще немає цього листа». Проблема вирішена — «перенаселення» немає, але кожна стопка містить копії вірусу, при цьому клерки ще встигають справлятися і з звичайною роботою.

«А як же знищення даних?» — запитає добре ерудована домогосподарка. Все дуже просто — достатньо дописати на лист приблизно наступне:
1. Переписати цей лист два рази і покласти копії в стопку завдань сусідів, якщо у них ще немає цього листа.
2. Подивитися на календар — якщо сьогодні п’ятниця, потрапила на 13-е число, викинути всі документи в сміттєву корзину.

До речі, на прикладі клерка дуже добре видно, чому в більшості випадків не можна точно визначити, звідки в комп’ютері з’явився вірус. Всі клерки мають однакові (з точністю до почерку) КОПІЇ, але оригінал-то з почерком зловмисника вже давно в кошику!

Ось таке просте пояснення роботи вірусу. Плюс до нього хотілося б навести дві аксіоми, які, як це не дивно, не для всіх є очевидними:
По-перше, віруси не виникають самі собою — їх створюють програмісти-хакери і розсилають потім по мережі або підкидають на комп’ютери знайомих. Вірус не може сам з’явитися на вашому комп’ютері або його підсунули на дискетах або навіть на компакт-диску, або ви його випадково скачали з комп’ютерної мережі, або вірус жив у вас на комп’ютері з самого початку.
По-друге: комп’ютерні віруси заражають тільки комп’ютер і нічого більше, тому не треба боятися — через клавіатуру та мишу вони не передаються.

Тепер спробуємо дати більш точне визначення вірусу. Основна трудність, що виникає при спробах дати визначення, полягає в тому, що практично усі відмітні риси вірусу (впровадження в інші об’єкти, скритність, потенційна небезпека і проч.) або властиві іншим програмам, які жодним чином вірусами не є, або існують віруси, що не містять зазначених вище відмітних рис (за винятком можливості поширення).

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

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

Основна ж особливість комп’ютерних вірусів — можливість їхнього мимовільного впровадження в різні об’єкти операційної системи — властива багатьом програмам, що не є вірусами. Наприклад, операційна система MS-DOS має в собі все необхідне, щоб мимовільно встановлюватися на не-DOS івські диски. Для цього досить на завантажувальний флоппі-диск, що містить DOS, записати файл AUTOEXEC.BAT такого змісту:
SYS A:
COPY *.* A:
SYS B:
COPY *.* B:
SYS C:
COPY *.* C:

Модифікована в такий спосіб DOS сама стане самим дійсним вірусом з погляду практично будь-якого існуючого визначення комп’ютерного вірусу.

Таким чином, першої з причин, що не дозволяють дати точне визначення вірусу, є неможливість однозначно виділити відмітні ознаки, що відповідали б тільки вірусам.

Думок з приводу дати народження першого комп’ютерного вірусу дуже багато. Достеменно відомо лише одне: на машині Беббіджа його не було, а на Univac 1108 і IBM 360/370 вони вже були («Pervading Animal» і «Christmas tree»). Таким чином, перший вірус з’явився десь на самому початку 70-х або навіть в кінці 60-х років, хоча «вірусом» його ніхто ще не називав.

Поговоримо про новітньої історії: «Brain», «Vienna», «Cascade» і далі. Ті, хто почав працювати на IBM-PC аж у середині 80-х, ще не забули повальну епідемію цих вірусів у 1987-89 роках. Букви сипалися на екранах, а натовпу користувачів мчали до фахівців з ремонту дисплеїв (зараз все навпаки: вінчестер здох від старості, а валять на невідомий передовій науці вірус). Потім комп’ютер заграв чужоземний гімн «Yankee Doodle», але лагодити динаміки вже ніхто не кинувся — дуже швидко розібралися, що це — вірус, та не один, а цілий десяток.

Так віруси почали заражати файли. Вірус «Brain» і скаче по екрану кулька вірусу «Ping-pong» ознаменували перемогу вірусу і над Boot-сектором.

Час минав, віруси плодилися. Всі вони були чимось схожі один на одного, лізли в пам’ять, чіплялися до файлів і секторів, періодично вбивали файли, дискети і вінчестери. Одним з перших «одкровень» став вірус «Frodo.4096» — файловий вірус-невидимка (stealth). Цей вірус перехоплював INT 21h і, при зверненні через DOS до заражених файлів, змінював інформацію таким чином, що файл з’являвся перед користувачем в незараженном вигляді. Але це була тільки надбудова вірусу над MS-DOS. Не минуло й року, як електронні таргани полізли всередину ядра DOS (вірус-невидимка «Beast.512»). Ідея невидимості продовжувала приносити свій плоди і далі: влітку 1991 року пронісся, косячи комп’ютери як бубонна чума, вірус «Dir_II».

Але боротися з невидимками було досить просто: почистив RAM — і будь певен, шукай гада і лікуй його на здоров’я. Більше клопоту доставляли самошифрующиеся віруси, які іноді зустрічалися в чергових надходження до колекції. Адже для їх ідентифікації та видалення доводилося писати спеціальні підпрограми, налагоджувати їх. Але на це ніхто тоді не звертав уваги, поки… Поки не з’явилися віруси нового покоління, ті, які носять назву полиморфик-віруси. Ці віруси використовують інший підхід до невидимості: вони шифруються (в більшості випадків), а в расшифровщике використовують команди, які можуть не повторюватися при зараженні різних файлів.

Перший поліморфний вірус з’явився на початку 90-х кодів — «Chameleon», але по-справжньому серйозною проблема полиморфик-віруси стала лише рік тому — у квітні 1991-го, коли практично весь світ був охоплений епідемією полиморфик-вірусу «Tequila».

Рік 1995-й, серпень. Все прогресивне людство, компанія Microsoft Білл Гейтс особисто святкують вихід нової операційної системи Windows95. На тлі гучного святкування практично непоміченим пройшло повідомлення про появу вірусу, що використовує принципово нові методи зараження — вірусу, заражающего документи Microsoft Word.

А вірус, що отримав до того часу ім’я «Concept», продовжував переможний рух по планеті. З’явившись, швидше за все, в якомусь із підрозділів Microsoft, «Concept» миттю заволоділа тисяч (якщо не мільйони) комп’ютерів. Це не дивно, адже передача текстів у форматі MS Word стала де-факто одним із стандартів, а для того, щоб заразитися вірусом, потрібно всього лише відкрити заражений документ, та всі інші документи, що редагуються в зараженому word’і, також виявляються зараженими. В результаті, отримавши по Інтернету заражений файл і прочитавши його, користувач, не знаючи сам, був рознощиком зарази», і вся його листування (якщо, звичайно ж, вона велася за допомогою MS Word) також виявлялася зараженої! Таким чином, можливість зараження MS Word, помножена на швидкість Інтернету, стала однією з найбільш серйозних проблем за всю історію існування вірусів.

Не минуло й року, як влітку 1996-го року з’явився вірус «Laroux» («Лару»), заражає таблиці MS Excel. Як і у випадку з вірусом «Concept», новий макро-вірус був виявлений «в природі» практично одночасно в різних фірмах. До речі, в 1997 році цей вірус став причиною епідемії в Москві.

У тому ж 1996 році з’явилися перші конструктори макро-вірусів, а в початку 1997 року з’явилися перші полиморфик-макро-віруси для MS-Word і перші віруси для MS Office97. Плюс до того безперервно зростала кількість різноманітних макро-вірусів, досягла декількох сотень до літа 1997-го.

Так що ж відбувається, коли вірус потрапляє в машину?

Так як вірус — програма, яку написала людина, то, природно, як і всі програми, він має структуру, яка властива і іншим вірусам. Що головне для вірусу? Основним параметром вірусу є розмноження, якщо, звичайно, його не писали для певних цілей, типу додати грошей на рахунок «письменника» в якомусь банку. Тому головний блок будь-якого вірусу — це блок розмноження. Як же будується цей «головний» блок вірусу? Скільки різних ідей було придумано програмістами в цих цілях? У перших модифікаціях тільки «заражали» файли .сом .exe, .sys, тобто ті, які безпосередньо містили виконавчий код. Це зрозуміло, але як шукати ці файли, адже на диску так багато каталогів? Перші моделі брали шляхи, які вони прописують у змінній PATH, і за ним шукали «нові жертви». Більш пізні обшукували весь диск, відкриваючи по черзі всі каталоги системи (дуже довгий процес, тому на комп’ютерах того часу це займало досить великий відрізок часу і відразу було видно — вірус). Пізніше стали робити «резиденти-віруси». Вони «вішали» в пам’яті і стежили за тим, що робить ДОС. Як тільки ловили поводження системи до якогось файлу — миттєво заражали цей файл-бідолаху. Ось так-то. З цим, начебто, вирішили (як знайти жертви).

Тепер безпосередньо про зараження. Спершу поговоримо про .com віруси, тобто заражають .com файли. Якщо вірус поміщає своє тіло на початку програми, його місцезнаходження завжди жорстко закріплено, при запуску цієї зараженої програми він виконується першим, при цьому його легко «зловити», притому після своєї роботи він повинен повертати ту частину програми, на місці якої він розташувався. Якщо тіло вірусу лежить в середині, то його максимально важко зловити і вилікувати файл, так як необхідно обчислити, де саме він знаходиться, зате у вірусу виникають проблеми — необхідно переносити після роботи на своє місце блок, який був там до зараження. Ще один підводний камінь для вірусу, передача йому управління. Йому необхідно десь на початку зробити перехід на точку виконання, але от тільки як робиться такий перехід? Був придуманий «фіктивний» перехід. Перший з них — це дописати на початку програми перехід типу jmp addr, де addr — точка запуску вірусу, а після виконання «чорних справ» вірус поверне на місце цього jmp-а старий код, але при перегляді програм цю підміну можна легко помітити. Тому зараз застосовують більш витончений метод. Справа в тому, що команда jmp і call — дуже поширені команди, і їх використовує практично будь-яка програма. Тому вірус шукає на початку програми код, відповідний jmp addr або call addr і замість адреси в операнді підставляє свій, а після свого виконання робить перехід на стару адресу. Побачити підміну адреси — досить складний процес. Якщо ж тіло вірусу лежить в кінці, то у вірусу виникають проблеми з запуском і можливістю легкого виявлення, але при цьому немає потреби переносити блоки, на місці яких знаходиться вірус.

Тепер трохи про зараження .exe файлів. У них є заголовок, в якому прописані дуже важливі дані, як-то: необхідний розмір пам’яті, сегмент стека, і, що більш важливо, точка запуску програми. Отже, цю точку можна змінити так, щоб вона потрапляла на вірус, який може розташовуватися знову-таки, у трьох місцях (про це говорилося вище). Тепер, здавалося б, береться метод зараження файлу з допиской тіла вірусу в кінець, і змінюється точка запуску на точку запуску вірусу. Але при такому розташування вірусу його легко виявити (антивіруси лають ті програми, в яких точка пуску лежить у кінці, бо це рідкість). Ще один камінчик для вірусу — існування .exe файлів оверлеїв, тобто шматків коду, які при запуску не вантажаться в пам’ять, а їх за необхідності подгружают надалі. Так, якщо вірус чіпляється в кінці файлу, то у нього немає гарантії, що він буде перебувати в пам’яті після запуску. Для цього знаходиться абсолютний кінець, тобто таку ділянку, де закінчується сама програма і починаються оверлеї. Потім сюди вписується вірус, а оверлеї зрушують на довжину вірусу. Інші методи з допиской вірусу в початок або середину теж використовуються при написанні .exe вірусів. Але вони для запуску тіла в коді програми вже шукають не jmp addr і call adrr, а jmp far addr і call far addr, т. к. .exe файли нерідко перевищують довжину одного сегмента. Не варто забувати і про зараження boot і master-boot секторів. Цей спосіб повів за собою цілий ланцюжок бутових вірусів. Справа в тому, що у boot-запису, яка, для незнаючих, що знаходиться на диску, у секторі 1, 0 голівці, 0 циліндрі, записана програма, яка не «завантажує» ОС. Ця програма пускається в самому початку роботи, тобто як тільки визначено наявність жорсткого диска. Саме програма, записана в записі, «вигукує» відоме повідомлення: Non system disk or disk error!!!

Так ось туди і поміщають вірус, який отримує управління ще до завантаження операційної системи. Звичайно, він не може використовувати дискових операцій на рівні DOS, але може, в крайньому випадку, «повіситься» резидентом в пам’ять. Слід зауважити ще одну цікаву річ. При зараженні «розумні» віруси намагаються заразити, насамперед, дискети, т. до. ці дискети можуть перенести на інший комп’ютер і… тады ой.

Після блоку зараження йде вже другий «необов’язковий» блок — той, якого бояться всі користувачі. Це блок дії. Саме цей блок є «приємною несподіванкою» в роботі вірусу. Зазвичай він запускається не відразу. Тільки «дурний» вірус видає свою присутність відразу. Розумний спочатку розмножиться так, щоб система була «приречена», і дізнається про існування вірусу користувач чи ні — вже не має значення. Найчастіше в тілі вірусу є якийсь лічильник (Counter), в якому враховується число «успішних» заражень. Після того, як лічильник досягне певного значення, йде запуск блоку дії. А в ще більш витончених модифікаціях існують 2 лічильника. Перший теж містить число заражених файлів, а другий — кількість заражених файлів на дискетах. І тільки коли обидва лічильника досягнуть певного значення, запускається блок дії. Навіщо це робиться? Адже якщо вірус, скажімо, заразить на жестском диску 1000 файлів і відформатує його, то він сам себе і вб’є. І не досягне основної мети — вижити. Саме вміст блоку дії створило таку різноманітність вірусів, що дуже важко перелічити всі модифікації, але основні види можна спробувати. Перший тип — нешкідливі демонстратори. Вони не роблять нічого поганого, тільки заважають користувачу в роботі. Скажімо, раптом на екрані з’являється червоний тенісний м’ячик і, відбиваючись від символів, скаче по екрану. Або ні з того ні з сього починають опадати букви вниз (а-ля листопад). Далі йде група так званих страшних вірусів. В принципі їх можна віднести до першої групи, але дія цих вірусів дуже цікаво. Вони зазвичай дуже правдиво і популярно розповідають користувачеві про те, що зараз, наприклад, його жорсткий диск буде відформатований. І потихеньку малюють швидко мінливий індикатор відсотків очищеного простору. Новачок-користувач побачивши це (швидше за все), втратить свідомість або, що ще гірше, отримає розрив серця. Найчастіше, звичайно, це жарти, хоча не завжди. Слідом йде не менш велика група так званих руйнують вірусів. Їх завданням, природно, є руйнування. Найпримітивніше, що вони можуть зробити, це відформатувати жестский диск, дискету чи стерти BIOS. Але при цьому вірус вб’є і себе. Цікавіше було б зробити так, щоб вірус показав свою присутність, але в той же час користувач не міг так просто від нього позбавитися. Спотворені уми знайшли і тут дуже тонкий метод. Уявіть собі картину: вірус закодував вам жестский диск. І тільки в тому випадку, якщо вірус запущений і знаходиться в пам’яті, DOS в змозі прочитати ту закодовану інформацію. Таким чином, користувач просто зобов’язаний запускати вірус. Тим самим вирусописатель досяг вищої стадії, коли вірус не повинен шукати лазівки для свого запуску, а сам користувач вже його запускає. Ось це метод! Або, скажімо, вважати FAT і скопіювати його в абсолютно інше місце на диску, а на його місці написати всяку нісенітницю. Знову ж без запуску вірусу у користувача система не буде коректно працювати.

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

І наостанок невеличка пам’ятка:

вірус не може передатися по повітрю або через іншу середовище, його можна тільки принести на дискеті, завантажити з Мережі або завантажити з жорсткого диска, запустивши заражений файл;
якщо комп’ютер стоїть вимкнений, то віруси не можуть нічого там зіпсувати;
якщо ви просто вставили дискету і не запустили з неї жодного файлу, а також не стартували з неї систему, то вірус з дискети не потрапить в комп’ютер, тобто ви можете сміливо проглядати вміст дисків, не боячись заражень;
по мережі не можна просто так заразитися вірусом. Можна тільки отримати заразний файл, який заразить ваш комп’ютер тільки після свого запуску;
якщо настала п’ятниця 13, а ви вчора перевіряли компьтер на наявність вірусів, то сміливо запускайте комп’ютер, це не такий вже знаменний день. Вірус може активизироватся і, наприклад, 23 липня;
не вірте пліткам про те, що віруси зруйнували у кого-то «залізо» на компі. Все це маячня, максимум, що можливо, так це форматувати носій, ну або стиреть BIOS;
і взагалі, якщо ви будете перевіряти антивірусними засобами всі отримані файли на дисках і/або по мережі), і раз на тиждень перевіряти весь комп’ютер, то сміливо можете не бояться вірусів;
якщо вже вірус на вашому компі, то не зневіряйтеся, а запустіть антивірус;
якщо антивірус виявив і вилікував файли на вашому компі вірусів, а незабаром вони знову з’явилися, то подумайте, що ви встигли поназапускать за час, що минув від моменту тестування час. Якщо ви розпаковували архів і запускали файли з нього, значить напевно там вірус і сидить. У файлі-архіві, а в заархівованому в ньому файлі. Необхідно розпакувати архів, перевірити і знову запакувати;
постійно оновлюйте антивірусні бази;
якщо ви отримали вірус поштою, не варто писати у відповідь гнівного листа — швидше за все, відправник сам став жертвою, а вірус відіслав себе сам, з його машини, знайшовши вашу поштову адресу в базі комп’ютера