Знайомство з комп’ютерним вірусом
Комп’ютерні віруси — різновид шкідливих програм, характерною особливістю яких є здатність до розмноження (самореплікації). На додачу до цього, вони можуть пошкоджувати чи повністю знищувати дані, підконтрольні користувачу, від імені якого була запущена заражена програма.
Неспеціалісти інколи відносять до комп’ютерних вірусів усі шкідливі програми, такі як мережні черв’яки, троянські коні та програми-шпигуни.
Віруси розповсюджуються, вписуючи себе у виконуваний код інших програм.Слід зазначити, що, будучи програмою, вірус може заразити лише програму. Будь-які зміни непрограм є не зараженням, а просто пошкодженням даних, оскільки така копія віруса ніколи не одержить керування, бо не використовуватиметься процесором в якості інструкцій (що не відповідає сутності віруса). Саме тому неформатований (plain) текст не може бути переносчиком віруса.
З огляду на вищесказане, довгий час вважалося, що текст взагалі неможливо заразити. Але з появою документів, що містили макроси, це твердження довелося переглянути в тому плані, що саме можна вважати текстом. Виходить, що документ MS Word — не текст, а програма (чи текст з програмою), яка може бути заражена.

Історія вірусів.
Думок з приводу народження першого комп'ютерного вірусу дуже багато. Напевно відомо тільки одне: на машині Чарльза Беббіджа, що вважається винахідником першого комп'ютера, вірусів не було, а на Univax 1108 і IBM 360/370 в середині 1970-х років вони вже були. Не дивлячись на це, сама ідея комп'ютерних вірусів з'явилася значно раніше. Відправною крапкою можна вважати праці Джона фон Неймана з вивчення математичних автоматів, що самовідтворюються. Ці праці сталі відомі в 1940-х роках. А в 1951 р. знаменитий учений запропонував метод, який демонстрував можливість створення таких автоматів. Пізніше, в 1959 р., журнал "Scientific American" опублікував статтю Л.С. Пенроуза, яка також була присвячена механічним структурам, що самовідтворювалися. На відміну від раніше відомих робіт, тут була описана проста двовимірна модель подібних структур, здібних до активації, розмноження, мутацій, захоплення. Пізніше, слідами цієї статті інший учений - Ф.Ж. Шталь - на практиці реалізував цю модель за допомогою машинного коду на IBM 650.Необхідно відзначити, що із самого початку ці дослідження були направлені зовсім не на створення теоретичної основи для майбутнього розвитку комп'ютерних вірусів. Навпаки, учені прагнули удосконалити мир, зробити його більш пристосованим для життя людини. Адже саме ці праці лягли в основу багатьох пізніших робіт з робототехніки й штучного інтелекту. І в тому, що подальші покоління зловжили плодами технічного прогресу, немає провини цих чудових учених. Початок 70-х років На початку 1970-х років в прототипі сучасного інтернету - військовій комп'ютерній мережі APRAnet - був виявлений вірус Creeper. Написана для колись популярної операційної системи Tenex, ця програма була в змозіі самостійно ввійти до мережі через модем і передати свою копію віддаленій системі. На заражених системах вірус виявляв себе повідомленням: "IM THE CREEPER : CATCH ME IF YOU CAN". Пізніше для видалення настирливого, але в цілому нешкідливого вірусу, невідомим була створена програма Reaper. За своєю суттю це був вірус, що виконував деякі функції, властиві антивірусу: він розповсюджувався обчислювальною мережею і, у разі виявлення тіла вірусу Creeper, знищував його. 1974 рік. На мейнфреймах цього часу з'являється програма, що отримала назву "кролик" (Rabbit). Це ім'я вона отримала тому, що окрім розмноження і розповсюдження носіями інформації, вона нічого не робила. Правда, швидкість її розмноження цілком виправдовувала назву. Ця програма клонувала себе, займала системні ресурси і таким чином знижувала продуктивність системи. Досягнувши певного рівня розповсюдження на зараженій машині, "кролик" нерідко викликав збій в її роботі.  Початок 80-х років Комп'ютери стають все більш і більш популярними. З'являється все більше і більше програм, авторами яких є не фірми-виробники програмного забезпечення, а приватні особи. Розвиток телекомунікаційних технологій дає можливість відносно швидко і зручно поширювати ці програми через сервери загального доступу — BBS (Bulletin Board System). Пізніше, напівлюбительські, університетські BBS переростають в глобальні банки даних, що охоплюють практично всі розвинені країни. Вони забезпечують швидкий обмін інформацією навіть між найвіддаленішими точками планети.
1981 рікШироке розповсюдження комп'ютерів марки Apple II привернуло увагу до цієї платформи авторів вірусів. Не дивно, що перша в історії дійсно масова епідемія комп'ютерного вірусу відбулася саме на Apple II. Вірус Elk Cloner записувався в завантажувальні сектори дискет, до яких йшло звернення. В ті часи це здавалося неймовірним і викликало у рядових користувачів стійкий зв'язок між вірусами і позаземними цивілізаціями, що намагаються завоювати світ. Враження від вірусу посилювалося його проявами: Elk Cloner перевертав зображення на екрані, примушував текст блимати, виводив різноманітні загрозливі повідомлення.
1983 рік Лен Ейделман вперше використовує термін "вірус" щодо до комп'ютерних програм, що саморозмножуються. 10 листопада 1983 р. Фред Коен, родоначальник сучасної комп'ютерної вірусології, на семінарі з комп'ютерної безпеки в Лехайському університеті (США) демонструє на системі VAX 11/750 вірусоподібну програму, здатну впроваджуватися в інші об'єкти. Роком пізніше, на 7-ій конференції з безпеки інформації, він дає наукове визначення терміну "комп'ютерний вірус" як „програми, здатної "заражати" інші програми за допомогою їх модифікації з метою впровадження своїх копій”.
1986 рік Зареєстрована перша глобальна епідемія вірусу для IBM-сумісних комп'ютерів. Вірус Brain, що заражає завантажувальні сектори дискет, протягом декількох місяців розповсюдився практично по всьому світу. Причина такого "успіху" полягала в повній непідготовленості комп'ютерного суспільства до зустрічі з таким явищем, як комп'ютерний вірус: антивірусні програми ще не набули такого широкого поширення як зараз, а користувачі, у свою чергу, не дотримувалися основних правил антивірусної безпеки. Ефект від епідемії, що відбулася, посилювався поганим знайомством суспільства і невивченістю феномена "комп'ютерний вірус". Услід за виявленням Brain один за іншим стали з'являтися науково-фантастичні романи, присвячені вірусам.Вірус Brain був написаний в Пакистані 19-річним програмістом Баситом Фарук Алві (Basit Farooq Alvi) і його братом Амжадом (Amjad), що залишили у вірусі текстове повідомлення, що містить їх імена, адресу і телефонний номер. Як затверджували автори вірусу, що працювали в компанії з продажу програмних продуктів, вони вирішили з'ясувати рівень комп'ютерного піратства у себе в країні. Крім зараження завантажувальних секторів і зміни міток (label) дискет на фразу (c) Brain вірус нічого не робив: він не надавав ніякої побічної дії і не псував інформацію. На жаль, експеримент швидко вийшов з-під контролю і виплеснувся за межі Пакистану. Цікаво, що вірус Brain був також і першим вірусом-невидимкою. При виявленні спроби читання зараженого сектора диска вірус непомітно "підставляв" його незаражений оригінал. У 1988 р.
були зафіксовані перші випадки розповсюдження т.зв. вірусних містифікацій (Virus Hoax). Це вельми цікавий феномен, заснований на розповсюдженні помилкових чуток про появу нових, надзвичайно небезпечних комп'ютерних вірусів. По суті справи ці чутки і були свого роду вірусами: налякані користувачі поширювали такі повідомлення всім своїм знайомим з надзвичайною швидкістю. Навряд чи варто зупинятися на тому, що містифікації не наносять комп'ютерам ніякого збитку. Проте, разом з тим, вони забивають канали передачі даних, нервують інших користувачів і дискредитують людей, що повірили в ці чутки.Один з перших жартів такого характеру належить нікому Mike RoChenle (псевдонім схожий на англійське слово "microchannel"), який в жовтні 1988 р. розіслав на станції BBS велику кількість повідомлень про нібито існуючий вірус, який передається від модему до модему і використовує для цього швидкість 2400 бітів на секунду. В якості панацеї пропонувалося якнайскоріше перейти на використання модемів зв швидкістю 1200 бітів на секунду. Як це ні смішно, багато користувачів дійсно послухалися цієї поради. Іншим жартом з цієї ж області стало попередження, випущене Робертом Моррісом (Robert Morris) про вірус, що розповсюджується по електричній мережі, змінює конфігурацію портів і напрямок обертання дисководів. Згідно повідомленню, всього за 12 хвилин вірус встиг уразити 300 000 комп'ютерів в штаті Дакота (США).
Листопад 1988.
Поголовна епідемія справжнього мережного вірусу, що отримав назву „черв'як Морріса”. Вірус заразив більше 6000 комп'ютерних систем в США (включаючи Дослідницький центр NASA) і практично паралізував їх роботу. Унаслідок помилки в коді вірусу він, як і вірус-черв'як "Christmas Tree", необмежено розсилав свої копії по інших комп'ютерах мережі, запускав їх на виконання і таким чином повністю забирав під себе всі мережеві ресурси. Для свого розмноження вірус використовував помилки в системі безпеки операційної системи Unix для платформ VAX і Sun Microsystems. Крім помилок в Unix, вірус використовував і інші оригінальні ідеї, наприклад, підбір паролів користувачів (із списку, що містить 481 варіант) для входу в системи під чужим ім'ям. Загальні збитки від вірусу Морріса були оцінені в 96 мільйонів доларів. Нарешті, 1988 р. ознаменувався появою однієї з найбільш відомих антивірусних програм - Dr. Solomons Anti-Virus Toolkit. Програма була створена англійським програмістом Аланом Соломоном (Alan Solomon), завоювала величезну популярність і проіснувала до 1998 р., коли компанія була поглинена іншим виробником антивірусів - американською Network Associates (NAI).  У червні 1994 року
почалася епідемія OneHalf. OneHalf – написаний під DOS поліморфний комп'ютерний вірус (гібрид бутового і файлового вірусів). Відомий своїм особливим корисним навантаженням, яке кодує певні частини жорсткого диска, однак розшифровує їх, коли з ними працюють, тому користувач нічого не помічає. Кодування здійснюється шляхом порозрядного XORування випадково згенерованим ключем, а розкодування виконується повторним XORуванням з тим самим ключем. Проте, недбала дезинфекція призводитиме до втрати даних, тому що, якщо користувач не бере це кодування до уваги, то він знищує тільки вірус, який служить також для розшифровки і доступу до даних. Після кодування однієї половини HDD за особливих умов вірус пише таке повідомлення: Dis is OneHalf. Press any key to continue ... Січень 2003
Вірус Slammer:(З новин на Компьюлента.ру): «У минулі вихідні була здійснена одна з найкрупніших вірусних атак на Інтернет за всю його історію. В результаті активізації черв’яка Slammer швидкість роботи Мережі значно сповільнилася, а деякі регіони, наприклад, Південна Корея, виявилися практично відрізаними від інтернету. Вірусна атака почалася в 0:30 за часом Східного побережжя США або в 8:30 за московським часом. Де знаходилося джерело зараження, до цих пір точно не відомо. Деякі фахівці з комп'ютерної безпеки припускають, що вірус розповсюджувався з території США, інші ж вважають, що його батьківщина знаходиться десь в Азії.За лічені хвилини черв'як, що використовує уразливість в СУБД Microsoft SQL Server 2000, заповнив інтернет. Незважаючи на малий розмір вірусу - всього 376 байт, він зміг створити в каналах передачі даних справжні пробки, оскільки після зараження комп'ютера він починає розсилати свій код по випадкових IP-адресах в нескінченному циклі. Якщо по якій-небудь з адрес виявлявся вразливий комп'ютер, він заражався і теж починав розсилати копії вірусу. Все це привело до великомасштабного зростання трафіку. На піку активності черв’яка на один сервер могли приходити сотні запитів в хвилину. Не витримавши збільшеного навантаження, деякі сервери просто падали. В цей час тільки в США втрачалося до 20% IP-пакетів, що вдесятеро перевищує нормальний рівень. За наявними даними, від атаки постраждали і п'ять з тринадцяти кореневих DNS-серверів.Найсильніше від атаки Slammer постраждала Південна Корея, де інтернетом користуються сім з кожних десяти жителів. Проте в суботу ця країна виявилася практично відключеною від глобальної мережі. Зокрема, під натиском Slammer обрушилася мережа найбільшого південнокорейського провайдера KT Corp. Серйозно постраждали також провайдери Hanaro Telecom Inc. і Thrunet, що займають, відповідно, друге і третє місця на південнокорейському ринку мережевих послуг. Працездатність була відновлена вже до суботнього вечора, проте швидкість роботи інтернету ще довго залишалася низькою. Відключення інтернету в Південній Кореї позначилося і на роботі Мережі у всьому азіатському регіоні - швидкість роботи інтернету тут була найменшою. У Європі сповільнення також було серйозним, проте до південнокорейських масштабів катастрофа не дійшла. Американські провайдери інтернету, в більшості своїй, стабільно працювали під час атаки, хоча швидкість передачі даних була значно нижча за звичайну.Протягом суботи атака Slammer поступово зійшла нанівець, проте експерти по комп'ютерній безпеці побоюються, що вірус ще повернеться. Суботня атака нанесла значно менше збитку, ніж якби вона проводилася в розпал робочого тижня. Цілком імовірно, що суботня епідемія - всього лише репетиція перед справжньою атакою на інфраструктуру Мережі, від якої залежить бізнес безлічі компаній по всьому світу. Однією з причин катастрофічних наслідків атаки Slammer є неувага системних адміністраторів до регулярного оновлення програмного забезпечення. Про дірку в MS SQL Server 2000 стало відомо ще минулого літа, а латочка до неї міститься у випущеному недавно Microsoft пакеті оновлень Service Pack 3. Проте, згідно з відомою приказці про мужика і грім, встановленням патчів адміністратори зайнялися лише після атаки Slammer. Проте вдалося це небагатьом: сайт Microsoft, звідки тільки і можна було узяти патч, виявився перевантаженим»
Три умови існування шкідливих програм
Операційна система або прикладна програма може піддатися вірусному нападу в тому випадку, якщо вона має можливість запустити програму, що не є частиною самої системи. Даній умові задовольняють усі популярні "настільні" операційні системи, багато офісних програм, графічні редактори, системи проектування та інші програмні комплекси, що мають вбудовані скриптові мови.
Комп'ютерні віруси, черв’яки, троянські програми існують для багатьох операційних систем і додатків. У той же час існують інші операційні системи і додатків, для яких шкідливі програми поки не виявлені. Що є причиною існування шкідливих програм в одних системах і його відсутності в інших?
Причиною появи подібних програм у конкретній операційній системі або додатку є одночасне виконання наступних умов:— популярність, широке поширення даної системи;— наявність різноманітної та достатньо повної документації по системі;— незахищеність системи або існування відомих уязвимостей у системі безпеки.Кожна перерахована умова є необхідною, а виконання всіх трьох умов одночасно є достатнім для появи різноманітних шкідливих програм.Умова популярності системи необхідна для того, щоб вона попалася на очі хоча б одному комп'ютерному хуліганові або гакеру. Якщо система існує в одиничних екземплярах, то ймовірність її зловмисного використання близька до нуля. Якщо ж виробник системи домігся її масового поширення, то очевидно, що рано або пізно гакери і вірусописці спробують використати її в своїх інтересах.
Напрошується природний висновок: чим популярніші операційна система або додаток, тим частіше вони будуть жертвами вірусної атаки. Практика це підтверджує — розподіл кількості шкідливого програмного забезпечення для Windows і Linux практично збігається із частками ринку, які займають ці операційні системи.Наявність повної документації необхідна для існування вірусів із природної причини — створення програм (включаючи вірусні) неможливе без технічного опису використання сервісів операційної системи й правил написання додатків. У більшості мобільних телефонів, наприклад, подібна інформація закрита — ані компанії-виробники програмних продуктів, ані гакери не мають можливості розробляти програми для даних пристроїв. У деяких "розумних" телефонів є документація для розробки додатків — і, як наслідок, з'являються й шкідливі програми, розроблені спеціально для телефонів даного типу.Під захищеністю системи розуміють архітектурні рішення, які не дозволяють новому (невідомому) застосуванню отримати повний або достатньо широкий доступ до файлів на диску (включаючи інші застосування) і потенційно небезпечним сервісам системи. Подібне обмеження фактично блокує будь-яку вірусну активність, але при цьому, природно, накладає істотні обмеження на можливості звичайних програм. Прикладів широко відомих захищених операційних систем і застосувань, на жаль, немає. Частково задовольняє вимозі захищеності Java-машина, яка запускає Java-застосування в режимі «пісочниці». І дійсно, «справжніх» вірусів і троянських програм у вигляді Java-застосувань не було достатньо довгий час (за винятком тестових вірусів, які були практично непрацездатні). Шкідливі програми у вигляді Java-застосувань з'явилися лише тоді, коли були виявлені способи обходу вбудованої в Java-машину системи безпеки.
Класифікація В даний час не існує єдиної системи класифікації і іменування вірусів (хоча спроба створити стандарт була зроблена на зустрічі CARO (Computer Antivirus Research Organization) в 1991 році). Прийнято розділяти віруси за об'єктами, що вражаються (файлові віруси, завантажувальні віруси, скриптові віруси, мережні черв'яки), за операційними системами й платформами, що вражаються (DOS, Windows, Unix, Linux, Java та інші), за технологіями, використовуваними вірусом (поліморфні віруси, стелс-віруси), за мовою, якою написано вірус (асемблер, високорівнева мова програмування, скриптова мова та ін.).
Класичні віруси
Типи комп'ютерних вірусів розрізняються між собою по наступних основних ознаках: 
— середовище існування; 
— спосіб зараження. 
Середовище існування
Під «середовищем існування» розуміються системні області комп'ютера, операційні системи або застосування, в компоненти (файли) яких упроваджується код вірусу. Під «способом зараження» розуміються різні методи впровадження вірусного коду в об'єкти, що заражаються. За середовищем існування віруси можна розділити на:
— файлові;
— завантажувальні;
— макро;
— скриптові. 
Файлові віруси при своєму розмноженні тим або іншим способом використовують файлову систему якої-небудь (або яких-небудь) ОС. Вони:різними способами упроваджуються у виконувані файли (найбільш поширений тип вірусів);
створюють файли-двійники (компаньон-віруси);
створюють свої копії в різних каталогах;
використовують особливості організації файлової системи (link-віруси). Завантажувальні віруси записують себе або в завантажувальний сектор диска (boot-сектор), або в сектор, системний завантажувач вінчестера (Master Boot Record), що містить, або міняють покажчик на активний boot-сектор. Даний тип вірусів був достатньо поширений в 1990-х, але практично зник з переходом на 32-бітові операційні системи і відмовою від використання дискет як основного способу обміну інформацією. Багато табличних і графічних редакторів, системи проектування, текстові процесори мають свої макро-мови для автоматизації виконання дій, що повторюються. Ці макро-мови часто мають складну структуру і розвинений набір команд. Макро-віруси є програмами на макро-мовах, вбудованих в такі системи обробки даних. Для свого розмноження віруси цього класу використовують можливості макро-мов і при їх допомозі переносять себе з одного зараженого файлу (документа або таблиці) в інших.
Класифікація файлових вірусів за способом зараженняЗа способом зараження файлові віруси (віруси, що впроваджують свій код у виконувані файли: командні файли, програми, драйвери, початковий код програм і ін.) розділяють на перезаписувачі, паразитичні, віруси-посилання, віруси-черв'яки, компаньон-віруси, а також віруси, що вражають початкові тексти програм і компоненти програмного забезпечення (VCL, LIB і ін.).
— Перезаписуючі віруси. Віруси даного типу записують своє тіло замість коду програми, не змінюючи назви виконуваного файлу, унаслідок чого початкова програма перестає запускатися. При запуску програми виконується код вірусу, а не сама програма.  — Віруси-компаньйони. Компаньон-віруси, як і перезаписуючі віруси, створюють свою копію на місці програми, що заражається, але, на відміну від перезаписувачів, не знищують оригінальний файл, а перейменовують або переміщають його. При запуску програми спочатку виконується код вірусу, а потім управління передається оригінальній програмі. Можливе існування і інших типів вірусів-компаньйонів, що використовують інші оригінальні ідеї або особливості інших операційних систем. Наприклад, PATH-компаньйони, які розміщують свої копії в основному каталозі Windows, використовуючи той факт, що цей каталог є першим в списку PATH, і файли для запуску Windows в першу чергу шукатиме саме в ньому. Даними способом самозапуску користуються також багато комп'ютерних черв'яків і троянські програми.  — Файлові черв'яки. Файлові черв'яки створюють власні копії з привабливими для користувача назвами (наприклад Game.exe, install.exe і ін.) сподіваючись на те, що користувач їх запустить.— Link-віруси. Як і компаньон-віруси, не змінюють код програми, а примушують операційну систему виконати власний код, змінюючи адресу місцеположення на диску зараженої програми, на власну адресу. Після виконання коду вірусу управління зазвичай передається програмі, що викликається користувачем. 
— Паразитичні віруси. Паразитичні віруси — це файлові віруси що змінюють вміст файлу додаючи в нього свій код. При цьому заражена програма зберігає повну або часткову працездатність. Код може упроваджуватися в початок, середину або кінець програми. Код вірусу виконується перед, після або разом з програмою, залежно від місця впровадження вірусу в програму. 
— Віруси, що вражають початковий код програм. Віруси даного типу вражають або початковий код програми, або її компоненти (OBJ-, LIB-, DCU- файли) а так само VCL і ActiveX компоненти. Після компіляції програми виявляються в неї вбудованими. На цей час широкого поширення не набули.
Завантажувальні віруси
Відомі на даний момент завантажувальні віруси заражають завантажувальний (boot) сектор гнучкого диска і boot-сектор або Master Boot Record (MBR) вінчестера. Принцип дії завантажувальних вірусів заснований на алгоритмах запуску операційної системи при включенні або перезавантаженні комп'ютера — після необхідних тестів встановленого устаткування (пам'яті, дисків і т.д.) програма системного завантаження прочитує перший фізичний сектор завантажувального диска (A:, C: або CD-ROM залежно від параметрів, встановлених в BIOS Setup) і передає на нього управління.
Черв’якиКомп'ютерний черв'як - комп'ютерна програма, здатна до самовідтворення. Вона використовує мережу, щоб відправити свої копії іншим вузлам (комп'ютерним терміналам в мережі) і може робити це без будь-якого втручання користувача. На відміну від вірусу, черв’якам не потрібно приєднуватися до існуючої програми. Черв'яки завжди шкодять мережу (хай навіть лише споживаючи пропускну спроможність), тоді як віруси завжди заражають або зіпсовані файли на атакованому комп'ютері.Багато створених черв'яків здатні виключно до розповсюдження і не намагаються змінити системи, через які проходять. Проте, як показали черв'як Морріса і Mydoom, мережний трафік і інші ненавмисні ефекти можуть часто викликати серйозний збій. Корисне навантаження — код, призначений для чогось більшого, ніж просте поширення черв'яка – він може видаляти файли на зараженій системі (приклад — черв'як ExploreZip), шифрувати файли (криптовірусна атака з метою здирництва), або посилати документи електронною поштою. Дуже популярне корисне навантаження для черв'яків - встановити чорний хід в зараженому комп'ютері, щоб дозволити створення "зомбі" під управлінням автора черв'яка (Sobig і Mydoom). Мережі таких машин часто називають botnets. Їх зазвичай використовують спамери для поширення junk-повідомлень або для маскуваня адреси своїх веб-вузлів. Саме тому спамерів вважають джерелом фінансування створення таких черв'яків, і автори черв'яків були спіймані при спробі продажу списків IP адрес заражених машин. Інші пробують шантажувати компанії можливими DоS-атаками.
Способи зараження файлів та комп’ютерних систем
Файлові віруси
За способом зараження файлів вируси поділяються на:
перезаписувачі (overwriting);
паразити (parasitic);
віруси-компаньони (companion);
віруси-посилання (link);
віруси, що заражають об’єктні модулі (OBJ);
віруси, що заражають бібліотеки компіляторів (LIB);
віруси, що заражають вихідні тексти програм.
Останні три зустрічаються дуже рідко.
Тому в своїй массі ФВ — віруси, що заражають файли трьох типів: командні файли (ВАТ), завантажувальні драйвери (SYS) та виконавчі двійкові файли (СОМ, ЕХЕ).
— Overwriting
Даний метод зараження є найбільш простим: вірус записує свій код замість коду файлу, що заражається, знищуючи його вміст. Природно, що при цьому файл перестає працювати і не відновлюється. Такі віруси дуже швидко виявляють себе, оскільки операційна система і застосування досить швидко перестають працювати.
— Parasitic
До паразитичних відносяться всі файлові віруси, які при розповсюдженні своїх копій обов'язково змінюють вміст файлів, залишаючи самі файли при цьому повністю або частково працездатними. Основними типами таких вірусів є віруси, що записуються в початок файлів (prepending), в кінець файлів (appending) і в середину файлів (inserting). У свою чергу, впровадження вірусів в середину файлів відбувається різними методами — шляхом перенесення частини файлу в його кінець або копіювання свого коду в свідомо невживані дані файлу (cavity-віруси).
Впровадження вірусу в початок файлу
Відомо два способи впровадження паразитичного файлового вірусу в початок файлу. Перший спосіб полягає в тому, що вірус переписує початок файлу, що заражається, в його кінець, а сам копіюється в місце, що звільнилося. При зараженні файлу другим способом вірус створює у оперативній пам’яті свою копію, дописує до неї заражуваній файл і зберігає одержану конкатенацію на диск.
Таким чином, при запуску зараженого файлу першим управління отримує код вірусу. При цьому віруси, щоб зберегти працездатність програми, або лікують заражений файл, повторно запускають його, чекають закінчення його роботи і знову записуються в його початок (іноді для цього використовується тимчасовий файл, в який записується знешкоджуваний файл), або відновлюють код програми в пам'яті комп'ютера і настроюють необхідні адреси в її тілі (тобто дублюють роботу ОС).
Впровадження вірусу в середину файлу
Існує декілька методів впровадження вірусу в середину файлу. У найпростішому з них вірус переносить частину файлу в його кінець або «розсовує» файл і записує свій код в простір, що звільнився. Деякі віруси при цьому компресують переносимий блок файлу так, що довжина файлу при зараженні не змінюється.Другим є метод «cavity», при якому вірус записується в свідомо невживані області файлу. Вірус може бути скопійований в незадіяні області заголовка EXE-файлу, в «дірки» між секціями EXE-файлів або в область текстових повідомлень популярних компіляторів. Існують віруси, що заражають тільки ті файли, які містять блоки, заповнені яким-небудь постійним байтом, при цьому вірус записує свій код замість такого блоку.
Крім того, копіювання вірусу в середину файлу може відбутися в результаті помилки вірусу, в цьому випадку файл може бути необоротно зіпсований.
Впровадження вірусу в кінець файлу
Найпоширенішим способом впровадження вірусу у файл є дописування вірусу в його кінець. При цьому вірус змінює початок файлу таким чином, що першими виконуваними командами програми, що міститься у файлі, є команди вірусу. У COM-файлі в більшості випадків це досягається шляхом заміни перших трьох (інколи більше) байтів на команду переходу на код вірусу. В EXE-файлі модифікується його заголовок — змінюються значення стартової адреси (точки входу у програму) і довжіні файлу (додавання довжіні самого вірусу). Зараження *.ВАТ-файлів:
Віруси допісують в *.ВАТ файл свій набір інструкцій. Особливо небезпечні ті, які працюють з AUTOEXEC.BAT, оскільки це безпосередньо відбивається на роботі системі. Втім, такі віруси досить просто віявити, оскільки ВАТ-файли без проблем читаються. Але для цього корістувач має буті достатньо кваліфікований та обізнаний із тім, що має буті записане в даному ВАТ-файлі, а що — сторонній код. Зараження *.SYS-файлів
Вірус приписує свій код до тіла файлу та модифікує його заголовок таким чином, що DOS розглядає інфікований файл як ланцюжок з двох або більше драйверів. Такий вірус може буті дуже небезпечнім і живучим, оскільки завантажується в ОП при завантаженні ОС раніше за будь-який антивірус (звісно, якщо він також не є драйвером). Зараження *.СОМ-файлів
Вірус записує свій код у файл. Відповідно, модифікується початок файлу — замість перших трьох байтів записується трібайтна команда бліжнього переходу JMP (передача керування на тіло вірусу), а три оригінальні байті зберігаються в області даних вірусу. Специфіка роботи з СОМ-файлами полягає в тому, що в DOS їх розмір не може перевищувати 64 кілобайт. Це пов’язано з тім, що СОМ-формат передбачає розміщення програмних кодів, даних та стеку в одному сегменті оперативної пам’яті, а розмір сегменту обмежений 64 кілобайтами (від 0х0100 до 0хFFFF). При цьому 256 байтів за адресами від 0х0000 до 0х00FF відводяться під спеціальну службову структуру — Program Segment Prefix (PSP), що містить інформацію, необхідну для коректної роботи програмі (дані туді вносить ОС). Таким чином, якщо розмір СОМ-файлу + розмір вірусу > 64 Кбайт, то вірусу не вдасться його заразити.
Якщо каталог містить як файл COM, так і файл EXE з таким же ім'ям (не враховуючи розширення), перевага надається файлу COM.
Наприклад, якщо каталог містить два файли, названі foo.com і foo.exe, наступна інструкція запустила б foo.com:
C:\>foo.
Якщо користувач бажає виконати foo.exe, він можуть явно вказати повне ім'я файлу:
C:\>foo.exe.
З огляду на таку поведінку за замовчуванням, вірусописці та інші нечисті на руку програмісти іноді для своїх творінь використовують імена, подібні до notepad.com. Вони розраховують на те, що якщо цей файл потрапить до одного каталогу із відповідним ЕХЕ-файлом, невичерпно прописані команда запуску або командний файл запустять їх програму, а не текстовий редактор notepad.exe.
Останнім часом деякі вирусописці намагаються скористатися вірогідною відсутністю у сучасних користувачів досвіду роботи із командними файлами COM у поєднанні із знайомством з ім’ям Інтернет-домену .com. Вони надсилають електронні листи з вкладеним файлом, що називається, наприклад, "www.example.com". Необережний користувач Microsoft Windows, який клацає на вкладений файл, не потрапляє на веб-вузол http://www.example.com/, а запускає майстерно написаний та, ймовірно, шкідливий, двійковий командий файл www.example, надаючи йому повний доступ до своєї машини.
Зараження *.ЕХЕ-файлів
Кілька слів про формат *.ЕХЕ-файлів. ЕХЕ-файли складаються із заголовка, таблиці налаштування та власне програмних кодів і даних. Таблиця налаштування використовується MS DOS під час роботи з файлом для виконання команд віддаленого переходу чи виклику процедури, для ких потрібно знати не лише зміщення відносно початку сегменту пам’яті, але й адресу сегмента пам’яті (ЕХЕ-файли не обмежені одним сегментом). Найбільше нас цікавить саме заголовок. Його структура така:
Байти 0, 1 — містять код 4D5Ah, або MZ — ініціали Марка Збіковськи, керівника колективу розробників однієї з ранніх версій ДОС.
2, 3 — залишок від ділення розміру завантажувального модулю на 512.
4, 5 — розмір файлу в 512-байтних сторінках, округлений вгору.
6, 7 — кількість елементів таблиці налаштування адрес.
8, 9 — розмір заголовка в параграфах (параграф — 16 байтів).
0А, 0В — мінімальна кількість додаткових параграфів, потрібних програмі.
0C, 0D — максимальна кількість додаткових параграфів.0E, 0F — зміщення сегмента стеку в завантажувальному модулі в параграфах (позначимо SS0).
10, 11 — значення регістру SP (указник стека), яке встановлюється перед передачею керування програмі (SP0).
12, 13 — контрольна сума ЕХЕ-файла.
14, 15 — значення регістра ІР (лічильник програм) перед передачею керування програмі (ІР0).
16, 17 — зміщення сегмента коду в модулі завантаження (CS0).18, 19 — відстань в байтах від початку файлу до першого елемента таблиці налаштування адрес.
1А, 1В — значення 0, якщо дана частина програми резидентна, чи відмінне від 0 — якщо оверлейна.
Для того, щоб при запуску зараженої програми вірус одержав керування, вихідні значення CS0 та ІР0 замінюються точкою входу в код вірусу, а значення SS0 та SP0 перемикаються на власний стек вірусу. Крім того, оскільки довжина завантажувального модуля та довжина файлу також змінюються, слід відкорегувати поля заголовку по зміщенню 02h, 03h, 04h, 05h. Вихідні параметри заголовку зберігаються в області даних вірусу.
— Віруси без точки входу
Окремо слід зазначити досить незначну групу вірусів, що не мають «точки входу» (EPO-віруси — Entry Point Obscuring viruses). До них відносяться віруси, що не змінюють адресу точки старту в заголовку EXE-файлів. Такі віруси записують команду переходу на свій код в яке-небудь місце в середину файлу і отримують управління не безпосередньо при запуску зараженого файлу, а при виклику процедури, що містить код передачі управління на тіло вірусу. Причому виконуватися ця процедура може украй рідко (наприклад, при виведенні повідомлення про яку-небудь специфічну помилку). В результаті вірус може довгі роки «спати» усередині файлу і вискочити на свободу тільки за деяких обмежених умов. Перед тим, як записати в середину файлу команду переходу на свій код, вірусу необхідно вибрати «правильну» адресу у файлі — інакше заражений файл може виявитися зіпсованим.Відомо декілька способів, за допомогою яких віруси визначають такі адреси усередині файлів, наприклад, пошук у файлі послідовності стандартного коду заголовків процедур мов програмування (C/Pascal), дизасемблювання коду файлу або заміна адрес функцій, що імпортуються.
— Companion
До категорії «companion» відносяться віруси, що не змінюють файлів, що заражаються. Алгоритм роботи цих вірусів полягає в тому, що для файлу, що заражається, створюється файл-двійник, причому при запуску зараженого файлу управління отримує саме цей двійник, тобто вірус.До вірусів даного типу відносяться ті з них, які при зараженні перейменовують файл в яке-небудь інше ім'я, запам'ятовують його (для подальшого запуску файлу-господаря) і записують свій код на диск під ім'ям файлу, що заражається. Наприклад, файл NOTEPAD.EXE перейменовується в NOTEPAD.EXD, а вірус записується під ім'ям NOTEPAD.EXE. При запуску управління отримує код вірусу, який потім запускає оригінальний NOTEPAD.
Можливе існування і інших типів вірусів-компаньйонів, що використовують інші оригінальні ідеї або особливості інших операційних систем. Наприклад, PATH-компаньйони, які розміщують свої копії в основному катагоге Windows, використовуючи той факт, що цей каталог є першим в списку PATH, і файли для запуску Windows в першу чергу шукатиме саме в нім. Даними способом самозапуска користуються також багато комп'ютерних черв'яків і троянські програми.
— Інші способи зараження
Існують віруси, які жодним чином не пов'язують свою присутність з яким-небудь виконуваним файлом. При розмноженні вони всього лише копіюють свій код в які-небудь каталоги дисків в надії, що ці нові копії будуть коли-небудь запущені користувачем. Іноді ці віруси дають своїм копіям «спеціальні» імена, щоб підштовхнути користувача на запуск своєї копії — наприклад, INSTALL.EXE або WINSTART.BAT. Деякі віруси записують свої копії в архіви (ARJ, ZIP, RAR). Інші записують команду запуску зараженого файлу в BAT-файли. Link-віруси також не змінюють фізичного вмісту файлів, проте при запуску зараженого файлу «примушують» ОС виконати свій код. Цієї мети вони досягають модифікацією необхідних полів файлової системи. Коли заражений файл виконується, вірус йде постійно завантаженим і записує (зазвичай приховано) файл до диска: цей файл містить вірусний код. Згодом, вірус змінює FAT до посилання перетину інші файли до сектора диска, що містить вірусний код. Результат є, що кожного разу заражений файл виконується, система переходить спочатку до вірусного коду і виконує це. Перехресне з'єднання виявлене, якщо програма CHKDSK виконується, хоча вірус міг використовувати хитрість, щоб приховати зміни, якщо вірус був в пам'яті (іншими словами, якщо користувач імен пристроїв не завантажив від чистого системного диска). Завантажувальні віруси
Завантажувальні віруси заражають завантажувальний (boot) сектор гнучкого диска і boot-сектор або Master Boot Record (MBR) вінчестера. Принцип дії завантажувальних вірусів заснований на алгоритмах запуску операційної системи при включенні або перезавантаженні комп'ютера — після необхідних тестів встановленого устаткування (пам'яті, дисків і т.д.) програма системного завантаження прочитує перший фізичний сектор завантажувального диска (A:, C: або CD-ROM залежно від параметрів, встановлених в BIOS Setup) і передає на нього управління. Загальний принцип — якщо робиться спроба завантажитися із зараженої дискети, вірус заражає MBR жорсткого диска. Потім при старті комп’ютера з вінчестера вірус завантажуватиметься в оперативну пам’ять і заражатиме всі дискети, що проходять через цей комп’ютер, таким чином розмножуючись і поширюючись.
При зараженні дисків завантажувальні віруси «підставляють» свій код замість якої-небудь програми, одержуючої управління при завантаженні системи. Принцип зараження, таким чином, однаковий у всіх описаних вище способах: вірус «примушує» систему при її перезапуску вважати в пам'ять і віддати управління не оригінальному коду завантажувача, але коду вірусу. Для цього вірус виконує такі дії:
1) Під час початкового завантаження системи записує себе в пам’ять за адресою 0000:7С00h (саме за цією адресою система записує перший сектор нульової доріжки нульової сторони дискети або першого жорсткого диску).
2) Після цього перевстановлює значення регістрів SS та SP на свій власний стек.
3) Відрізає від системи кілька кілобайтів пам’яті (в старших адресах, тобто в кінці) та записує в цю область свій код.
4) Передає керування наступній секції свого коду, вже записаній в основну пам’ять.
5) Ця секція, в свою чергу, спершу перевизначає вектор переривання INT 13h на код вірусу.
6) Записує в пам’ять за адресою 0000:7С00h справжній завантажувальний сектор.
7) Перевіряє, чи заражено вінчестер. Якщо ні — заразити. Якщо так — далі.8) Передає керування справжньому завантажувальному сектору.Зараження дискет проводиться єдиним відомим способом — вірус записує свій код замість оригінального коду boot-сектора дискети. Вінчестер заражається трьома можливими способами — вірус записується або замість коду MBR, або замість коду boot-сектора завантажувального диска (зазвичай диска C), або модифікує адресу активного boot-сектора в таблиці розділів диска (Disk Partition Table), розташованій в MBR вінчестера.
При інфікуванні диска вірус в більшості випадків переносить оригінальний boot-сектор (або MBR) в якій-небудь інший сектор диска (наприклад, в перший вільний). Якщо довжина вірусу більше довжини сектора, то в сектор, що заражається, поміщається перша частина вірусу, решта частин розміщується в інших секторах (наприклад, по-перше вільних). Ці сектори помічаються як збійні.Щоб помістити вірус повністю в завантажувальний сектор, слід врахувати таке:
— розмір MBR вінчестера та BOOT-сектора дискети — 512 байтів (200h).— в MBR програма-завантажувальник займає не більше 446 байтів. Розмір завантажувальника в boot-секторі дискети в різних версіях DOS різний. На завантажувальній дискеті, відформатованій під MSWIN 4.1 (Windows 98) для завантаження MS DOS 7.1 (Для завантажувальних дискет під: Windows™ 98, Windows™ 98 Second Edition, Windows™ ME і навіть Windows™ XP цей Boot Record містить один і той самий код!), власне програма-завантажувальник займає 321 байт (від адреси 003Еh до адреси 017Еh включно (виходить 383 — 62 = 321)). Потім ідуть 4 байти регістрів даних, потім — три повідомлення про помилку (“Invalid system disk”, “Disk I/O error”, “Replicate the disk, and then press any key”), які сукупно займають 84 байти (від адреси 0183h до адреси 01D6h включно). Потім ідуть назви двох системних файлів IO.SYS та MSDOS.SYS і ще три байти даних (всього 25 байтів). Два останніх байта boot- та MBR-секторів містять код 55ААh. Якщо його затерти, система перестане з цього диска завантажуватися.
Таким чином, розмір коду вірусу не повинен перевищувати 434 байтів. Якщо вдасться цього досягти, звертання до диску відбуватиметься коректно, і навіть така програма, як NDD, не фіксуватиме змін в boot- чи MBR-секторах, що вельми важливо.
Макро-віруси
Найбільшого поширення набули макро-віруси для Microsoft Office (Word, Excel і PowerPoint), що зберігають інформацію у форматі OLE2 (Object Linking and Embedding). Віруси в інших застосуваннях достатньо рідкісні. Фізичне розташування вірусу усередині файлу MS Office залежить від його формату, який у разі продуктів Microsoft надзвичайно складний, — кожен файл-документ Word, Office97 або таблиця Excel є послідовністю блоків даних (кожен з яких також має свій формат), об'єднаних між собою за допомогою великої кількості службових даних. Унаслідок такої складності форматів файлів Word, Excel і Office97 представити розташування макро-вірусу у файлі можна лише схемою:
Незаражений файл-документ або таблиця Вірус в файлі-документі або таблиці
* Заголовок файлу
* Службові дані (каталоги, FAT)
* Текст
* Шрифти
* Макроси (якщо є)
* Інші дані
* Заголовок файла
* Службові дані (каталоги, FAT)
* Текст
* Шрифти
* Макроси (якщо є)
* Макроси віруса
* Інші дані
При роботі з документами і таблицями MS Office виконує різні дії: відкриває документ, зберігає, друкує, закриває і т.д. При цьому MS Word, наприклад, шукає і виконує відповідні «вбудовані макроси» — при збереженні файлу по команді File/Save викликається макрос FileSave, при збереженні по команді File/SaveAs — FileSaveAs, при друці документів — FilePrint і т.д., якщо, звичайно, такі макроси визначені. Існує також декілька «автомакросів», що автоматично викликаються за різних умов. Наприклад, при відкритті документа MS Word перевіряє його на наявність макросу AutoOpen. Якщо такий макрос присутній, то Word виконує його. При закритті документа Word виконує макрос AutoClose, при запуску Word викликається макрос AutoExec, при завершенні роботи — AutoExit, при створенні нового документа — AutoNew. Автоматично (тобто без участі користувача) виконуються також макроси/функції, що асоціюються з якою-небудь клавішею або моментом часу або датою.
Макро-віруси, що вражають файли MS Office, як правило, користуються одним з перерахованих вище прийомів — у вірусі або присутнє авто-макрос (авто-функція), або перевизначений один із стандартних системних макросів (асоційований з яким-небудь пунктом меню), або макрос вірусу викликається автоматично при натисненні на яку-небудь клавішу або комбінацію клавіш. Отримавши управління макро-вірус переносить свій код в інші файли, зазвичай у файли, які редагуються в даний момент. Рідше макро віруси самостійно шукають інші файли на диску. Способи маскування вірусів
1). Латентний період (активація через деякий час та/або за певних умов).2). «Стелс»
3). Поліморфізм
4). Метаморфізм
1. Латентний період — активація вірусу через певний проміжок часу або за певних умов. Прикладом є вірус CIH („Чорнобиль”), написаний Chen Ing Hau.
2. «Стелс».
На прикладі OneHalf:
За допомогою власного обробника переривання Int12h (візначення розміру використовуваної пам’яті) вірус приховує зменшення розміру вільної пам'яті на 4 кілобайти для всіх програм, окрім програми CHKDSK (утиліта перевірки диска з комплекту DOS) і програми Norton Commander. За допомогою власного обробника переривання обслуговування DOS Int21h приховує приріст довжини зараженого файлу. При спробі трасування вірусу в пам'яті за допомогою виклику переривання Int1h (покрокове перерівання для відлагодження та трасування) він за допомогою власного обробника «завішує» систему організацією циклу без виходу.
3. Поліморфізм.
Поліморфізм — техніка, що дозволяє утруднити виявлення комп'ютерного вірусу за допомогою скан-рядків і, можливо, евристики. Вірус, що використовує таку техніку, називається поліморфним.Шифрування - найчастіше використовуваний метод досягнення поліморфізму в коді. Проте, не весь код можна зашифрувати, оскільки в цьому разі вірус перестане працювати. Маленька частина залишається незашифрованою і використовується для запуску зашифрованого коду. Антивірусне програмне забезпечення націлюється саме цю невелику ділянку незашифрованого коду. Програмісти-зловмисники прагнули захистити свій поліморфний код від цієї антивірусної стратегії перезаписом незашифрованого механізму розшифровки кожного разу, коли вірус або черв'як заражає новий файл або комп’ютер.Поліморфізм полягає у формуванні коду вірусу «на льоту» — вже під час виконання, при цьому сама процедура, що формує код також не повинна бути постійною і видозмінюється при кожному новому зараженні. Більшість антивірусних програм намагаються виявити шкідливий код, що відповідіє комп'ютерному вірусу, або частину коду такого вірусу, за допомогою перевірки файлів і даних, що знаходяться на комп'ютері або пересилаються через комп'ютерну мережу або Інтернет. Якщо змінити код вірусу, що відповідає за пошук і зараження нових файлів, або яку-небудь іншу важливу його частину, то антивірус не зможе виявити такий "змінений" вірус. Часто код вірусу "міняють", додаючи оператори NOP або інші оператори, що не змінюють алгоритм. Таким чином, виявлення по-справжньому поліморфних вірусів методом скан-рядків неможливе.
Після появи полиморфизму антивирусні продукти, в свою чергу, також опанували нові методи: евристика (складний сигнатурний аналіз для виявлення основних сигнатур в різних мутаціях дешифрувального механізму задля більш надійного виявлення цих шкідливих програм) и емулятори коду (це означає, що файл запускається в захищеному ізольованому середовищі віртуального комп’ютера, вбулованого в анти-вірус. Файл аналізується на предмет поведінки, характерної для вірусів, наприклад, спроб знайти інші виконувані файли та модифікувати їх).
4. Метаморфізм
В комп’ютерній вірусології метаморфний код — це код, здатний до самоперепрограмування. Найчастіше він це робить шляхом переведення свого коду в яке-небудь тимчасове представлення, редагування цього представлення, а потім переведення його назад в двійковий код. Ця процедура застосовується до всього вірусу, включаючи механізм метаморфізму. Вона запускається тоді, коли вірус збирається заразити нові файлі, тому вірус-нащадок ніколи не виглядатиме так, як його батько.Метаморфний код більш ефективний та стійкий за поліморфний, оскільки більшість сучасних антивірусних програм аналізує код на шкідливість навіть під час виконання цього коду.Інше значення терміну „метаморфізм” — здатність вірусу заражати виконавчі файли двох або більше ОС або навіть існувати на комп’ютерах з різною архітектурою. Такий вірус часто являє собою сукупність різних окремих вірусів. Початковий код вірусу пишеться так, щоб він коректно транслювався в машинний код всіх платформ, на яких має працювати. Теоретично, метаморфний вірус здатен перетворити своє тимчасове представлення в набір інструкцій для абсолютно іншої комп’ютерної архітектури.Метаморфізм означає, що мутує весь код, а не лише шифратор/дешифратор, як у випадку поліморфізму. Втім, такі віруси не дуже розповсюджені, оскільки їх дійсно дуже складно написати.90% коду вірусу( займає механізм метаморфізму, а його „бойова” частина — що залишилося.
Метаморфний вірус складається з таких частин:
— Дизасемблер. Перша частина механізму. Декодує кожну інструкцію для визначення її довжини, використовуваних регістрів та іншої інформації. Повинен вміти декодувати такі інструкції, як JMP та CALL, що змінюють регістр ІР.
— Стискач. Стискає дизасембльований код, згенерований в попередньому поколінні. Слугує для запобігання єкспоненційного зростання довжини вірусу з кожним наступним поколінням. Найскладніша частина вірусу, хоча складність безпосередньо залежить від того, які механізми маскування застосовуються автором.
— Мутатор. Основна частина механізму. На цьому етапі відбувається зміна коду.
— Розширювач. Стискач навпаки — кодує одну інструкцію кількома, результат роботи яких той самий, або додає „порожній” код, який ніяк не впливає на роботу алгоритму, але створює додаткові перешкоди антивірусу.— Асемблер. Перетворює те, що побудував розширювач, в двійковий код, одночасно відновлюючи оператори JMP, CALL та інші.
Негативні наслідки дії вірусів
«Ігрові» ефекти
Історично перший різновид шкоди, яку наносили віруси комп’ютерам. Перші віруси були радше жартами, і писалися з метою продемонструвати колегам чи приятелям свої програмістські навички. І мало що може зрівнятися у переконливості, ніж раптова зміна поведінки комп’ютера і різні жартівливі ефекти, такі як виведення на екран різних цікавих повідомлень, самовільне блимання тексту тощо. Такі віруси не чіпали даних чи програм, і досить легко видалялися. Тим не менше, зусилля, які слід було для цього прикласти, збивали користувачів з робочого настрою, змушували нервувати. Тому навіть ці віруси — шкідливі (приклади — Creeper, Elk Cloner).
Іноді „ігрові” ефекти використовуються в якості побічних у більш серйозних вірусах. Наприклад, вірус OneHalf також передбачав виведення на екран повідомлення “Dis is OneHalf. Press any key to continue”, але робив це вкрай рідко (після зашифровки половини диску на кожній четвертій зараженій машині, якщо число і значення таймера кратні чотирьом). Подібний прийом використовував черв’як Christmas Tree, що виводив на екран зараженого комп’ютера зображення різдвяної ялинки.
Руйнування даних та структур даних у файлі, файлової системи тощоФайл може бути необоротно зіпсований в результаті помилки вірусу при копіюванні свого коду в середину файлу. Особливо це актуально для cavity-вірусів, як можуть неточно розрахувати довжину порожнини і зачепити частину коду самого файлу.
Про OneHalf: При всій ретельності прописування процедур зараження і шифровки-розшифровки диска при практичних зараженнях дисків виявлено, як мінімум, дві помилки. Одна з них полягає в тому, що деякі диски об’ємом 420 мегабайт заражаються некоректно (при зараженні невірно визначається кількість секторів MBR і останній сектор тіла вірусу «відбивається» на сектор, зайнятий Partition Table, що приводить диск в неробочий стан). Слід врахувати, що в цьому випадку вірус встигає коректно перенести оригінальний MBR в один з прихованих секторів, і можна відновити працездатність диска за допомогою перенесення MBR на своє місце уручну Diskedit’ором. Другою помилкою є те, що при шифруванні деяких дисків вірус «помиляється» і шифрує останні 2 доріжки з ключем, відмінним від записаного в MBR. При наступному запуску і роботі із зашифрованими доріжками він коректно виправляє цю помилку. Проте, якщо цей момент співпадає з розшифровкою доріжок антивірусами, то останні 2 доріжки можна вважати втраченими.
Взагалі, з вірусом OneHalf пов’язана цікава історія. В принципі, сам по собі цей вірус не дуже шкідливий, оскільки сам розшифровує зашифровані файли, після чого вони працюють абсолютно коректно. Звісно, його, як і будь-яку програму, може проглючити, і тоді наслідки можуть бути дуже серйозними (див. вище), і, звісно, слід намагатися здихатися його якнайшвидше. Тут і виникли проблеми.Справа в тому, що найбільше від пов’язаних із діяльністю вірусу OneHalf втрат інформації постраждали користувачі антивірусу Dr. Web версій включно до 1.6 — єдиного антивіруса-поліфага, що вбивав OneHalf. Це пояснювалося тим, що в цих версіях автор антивіруса Ігор Данилов не передбачив дій по відновленню зашифрованої частини диску, а просто видаляв вірус, після чого дані виявлялися втраченими, оскільки нема кому було їх розшифровувати (ключ знищувався разом із вірусом). Звісно, в цих втратах інформації звинуватили сам вірус, а в наступних версіях Dr. Web’а цей недолік було усунуто.
Руйнування програм, уповільнення їх роботи, приведення програм у неробочий стан
Яскравим прикладом таких вірусів є віруси-перезаписувачі, що записують свій код замість коду файлу, що заражається, знищуючи його вміст. Природно, що при цьому файл перестає працювати і не відновлюється. Хоча, такі віруси дуже швидко виявляють себе, оскільки операційна система і застосування досить швидко перестають працювати, вони дуже небезпечні, оскільки через них доводиться перевстановлювати знищену програму або ОС.
Іншим способом серйозно нашкодити користувачам є уповільнення роботи конкретної програми чи ОС в цілому за рахунок дописування у код програми, наприклад, довгих циклів. З метою сповільнення ОС вірус запускає процес, який може або взагалі бути прихованим від користувача, або маскуватися під інший процес, найкраще системний, на який користувач не одразу зверне увагу. Інколи обходяться без цього, спеціально обираючи специфічні імена, на кшталт THIS_IS_VIRUS. В останньому випадку є сенс казати про змішаний сповільнююче-„ігровий” ефект.
Якщо руйнування програми — це заміщення коду програми вірусом і виконання вірусу замість програми, то приведення програми у неробочий стан — це блокування вірусом запуску цієї програми, наприклад, через заміщення шляху до файлу програми на шлях до свого файлу, або просто в нікуди, що може призвести до збоїв у роботі великих багатомодульних програм. Також досить ефективно прописувати себе замість драйверів пристроїв, після чого вони перестають працювати, а користувач звинувачує у всьому „залізо”.Збій в роботі програми також можна викликати, використовуючи техніку „переповнення стека/буфера” (stack/buffer overflow). В комп’ютерній безпеці та програмуванні, переповненням буфера називається програмна помилка, яка може призвести до виняткової ситуації доступу до пам’яті та завершення програми або, якщо користувач зробив це зумисно,до можливого порушення безпеки.
Переповнення буфера — це аномальна ситуація, коли процес намагається записати свої дані за межі буфера фіксованої довжини. В результаті надлишкові дані записуються поверх сусідніх даних. Заміщені таким чином дані можуть бути іншими буферами, змінними, даними про роботу програми, що може призвести до аварійного завершення програми або одержання невірних результатів. Також переповнення може бути викликане вхідними даними, спеціально розробленими для виконання шкідливого коду чи щоб змусити програму поводитися непердбачувано. Переповнення буфера спричиняють вразливість програмних продуктів і є базою багатьох експлойтів. Втім, ретельна перевірка розміру буфера програмістом, компілятором чи середовищем виконання може запобігти цьому.
Переповнення пам’яті, засмічення каналів зв’язку
Поголовна епідемія справжнього мережного вірусу, що отримав назву „черв'як Морріса”. Вірус заразив більше 6000 комп'ютерних систем в США (включаючи Дослідницький центр NASA) і практично паралізував їх роботу. Унаслідок помилки в коді вірусу він, як і вірус-черв'як "Christmas Tree", необмежено розсилав свої копії по інших комп'ютерах мережі, запускав їх на виконання і таким чином повністю забирав під себе всі мережеві ресурси. Для свого розмноження вірус використовував помилки в системі безпеки операційної системи Unix для платформ VAX і Sun Microsystems. Крім помилок в Unix, вірус використовував і інші оригінальні ідеї, наприклад, підбір паролів користувачів (із списку, що містить 481 варіант) для входу в системи під чужим ім'ям. Загальні збитки від вірусу Морріса були оцінені в 96 мільйонів доларів.
DoS-атака (від англ. Denial of Service — «відмова в обслуговуванні») і DDoS-атака (Distributed Denial of Service — «розподілена відмова обслуговування») — це різновиди атак зловмисників на комп'ютерні системи. Метою цих атак є створення таких умов, при яких легітимні (правомочні) користувачі системи не можуть одержати доступ до ресурсів, що надаються системою, або цей доступ утруднений. Види DoS-атак
Існують різні причини, з яких може виникнути DoS-умова: Помилка в програмному коді, що приводить до звернення до невживаного фрагмента адресного простору, виконання неприпустимої інструкції або іншої необроблюваної виняткової ситуації, коли відбувається аварійне завершення серверного застосування. Класичним прикладом є звернення за нульовим (англ. null) покажчиком. Недостатня перевірка даних користувача, що приводить до нескінченного або тривалого циклу або підвищеного тривалого споживання процесорних ресурсів (вичерпанню процесорних ресурсів) або виділення великого об'єму оперативній пам'яті (вичерпанню пам'яті). Флуд (англ. flood) — атака, пов'язана з великою кількістю зазвичай безглуздих або сформованих в неправильному форматі запитів до комп'ютерної системи або мережевого устаткування, що має за мету або призвела до відмови в роботі системи через вичерпання ресурсів системи — процесора, пам'яті або каналів зв'язку. Атака другого роду — атака, яка прагне викликати помилкове спрацьовування системи захисту і таким чином привести до недоступності ресурсу. Якщо атака (зазвичай флуд) проводиться одночасно з великої кількості IP-адрес, то в цьому випадку вона називається розподіленою атакою на відмову в обслуговуванні (DDoS).
Виявлення DoS-атак
Існує думка, що спеціальні засоби для виявлення DoS-атак не потрібні, оскільки факт DoS-атаки неможливо не помітити. У багатьох випадках це дійсно так. Проте достатньо часто відбувалися успішні атаки, які були помічені жертвами лише через 2-3 доби. Бувало, що негативні наслідки атаки (типу флуд) полягали в зайвих витратах на оплату трафіку, що з'ясовувалося лише при отриманні рахунку. Крім того, багато методів виявлення атак неефективні поблизу об’єкта атаки, але ефективні на магістральній мережі. У такому разі доцільно ставити системи виявлення саме там, а не чекати, поки користувач, що піддався атаці, сам її зафіксує та звернеться по допомогу. До того ж, для ефективної протидії необхідно знати тип, характер і інші показники DoS-атаки, а оперативно отримати ці відомості якраз і дозволяють системи виявлення.
Методи виявлення можна розділити на декілька великих груп: сигнатурні — засновані на якісному аналізі трафіку;
статистичні — засновані на кількісному аналізі трафіку;
гібридні — поєднуючі в собі достоїнства двох попередніх методів.
Захист від DoS-атак
Заходи протидії DoS-атакам можна розділити на пасивні й активні, а також на превентивні та реакційні.
Нижче наведено короткий перелік основних методів. Запобігання. Профілактика причин, що спонукають тих або інших осіб організовувати DoS-атаки. Дуже часто атаки є наслідком особистої образи, політичних, релігійних розбіжностей і т.п.
Фільтрація (пропускання «своїх» та блокування «чужих» пакетів) і блекхолінг (відстежування пакетів, що надходять з адреси, що належить простору ще не присвоєних адрес). Ефективність цих методів знижується мірою наближення до об’єкта атаки і підвищується мірою наближення до її джерела.
Усунення вразливостей. Не працює проти атак типу флуд, для яких «вразливістю» є скінченність тих або інших ресурсів.
Нарощування ресурсів (щоб надовше вистачило).
Роззосередження. Побудова розподілених і продубльованих систем, які не припинять обслуговувати користувачів, навіть якщо деякі їх елементи стануть недоступні через атаку.
Ухилення. Відведення безпосередньої мети атаки (доменного імені або IP-адреси) подалі від інших ресурсів, які часто також піддаються нападу разом з безпосередньою метою.
Активні дії у відповідь. Дії на джерела, організатора або центр управління атакою. Заходи можуть бути як технічного характеру (не рекомендується), так і організаційно-правового характеру.
Порушення функціонування ОС
Два останніх байта boot- та MBR-секторів містять код 55ААh. Якщо його затерти, система перестане з цього диска завантажуватися (див. Лекція 2). Це інколи використовується авторами вірусів для того, щоб комп’ютер не міг завантажитися з жорсткого диска. Методика ефективна у поєднанні з „латентним періодом” — певний час вірус лише розмножується, а потім всі заражені комп’ютери, як по команді, перестають завантажуватися.
У випадку Windows-систем шкідливі програми атакують системний реєстр. Інколи вони обмежуються простим його засміченням, що вже спричиняє затримки в завантаженні та роботі системи, інколи — заміщають собою важливі системні записи.
Фізичне пошкодження комп’ютерів
CIH поширюється через файли формату Portable Executable (EXE) під Windows 95, Windows 98, и Windows ME. CIH не поширюється під Windows NT, Windows 2000, Windows XP чи Windows Vista.CIH заражає виконавчі файли, розділяючи свій код на маленькі фрагменти, що вставляються в проміжки між розділами, зазвичай присутні у PE файлах, та записуючи невелику процедуру ре-асемблювання та таблицю розташування сегментів свого коду у невикористовуване місце в хвості PE-заголовка. Через це CIH прозвали "Spacefiller". Розмір вірусу — приблизно 1 кілобайт, але через його просунутий метод мульти-карієсного зараження заражені файли зовсім не збільшуються. Вірус також використовує метод перескакування з процесорного кільця 3 (рівень прикладних програм) на кільце 0 (рівень ядра ОС) для перехоплення системних викликів.Корисне навантаження цього дуже небезпечного вірусу спершу заповнюєє перший мегабайт (1024KB) жорсткого диску, починаючи з сектора 0, нулями. Це призводить до видалення інформацє про таблицю логічного розбиття диску і завішує машину..Друга частина навантаження намагається перезаписати Flash BIOS.
Через, можливо, ненавмисну рису цього вірусу, в BIOSах, які він може вдало перезаписати, критичний код часу завантаження заміщується на сміття. Це спрацьовує лише на деяких машинах. Багато казали про особливу вразливість комп’ютерів з материнськими платами на базі чіпсета Intel 430TX, але найважливішим чинником успішного доступу вірусу до флеш-пам’яті є тип Flash ROM чіпа. Різні Flash ROM чіпи (або сімейства чіпів) мають різні процедури дозволу запису. CIH не робить жодних спроб визначити тип Flash ROM чіпу и має в своєму розпорядженні лише один варіант процедури запису.Якщо спрацьовує перша частина навантаження, перезаписана інформація губиться повністю. Якщо перший логічний диск відформатований під FAT32 і має обсяг більше 1ГБ, перезаписується лише MBR, таблиця розбиття, бут-сектор першого логічного диска та перша копія FAT першого диска. MBR та бут-сектор можна просто замінити стандартними версіями, таблицю розбиття — перебудувати шляхом перегляду всього вінчестера, а першу копію FAT — відновити з другої копії. Тобто, повне відновлення всіх даних без втрат може бути зроблено автоматично за допомогою утиліт типу Fix CIH. Якщо ж перший диск не FAT32 або менший за 1GB, дані користувача на цьому диску вціліють, але без кореневого каталогу та FAT її буде складно відновити в повному обсязі, особливо в разі великої фрагментації даних.Якщо спрацьовує друга частина корисного навантаження, комп’ютер взагалі не запуститься. Треба або викликати спеціаліста для перепрограмування чіпа, або замінити його, оскільки системи, які вміє вражати вірус, ще не мають засобів відновлення BIOS’а.
Типи троянських програм
Backdoor — троянскі утиліти віддаленого адмініструванняТроянські програми цього класу є утилітами віддаленого адміністрування комп'ютерів в мережі. За своєю функціональністю вони багато в чому нагадують різні системи адміністрування, що розробляються і поширюються фірмами-виробниками програмних продуктів. Єдина особливість цих програм примушує класифікувати їх як шкідливі троянські програми: відсутність попередження про інсталяцію і запуск. При запуску «троян» встановлює себе в системі і потім стежить за нею, при цьому користувачеві не видаються ніяких повідомлень про дії трояну в системі. Більш того, посилання на «трояни» може бути відсутнім в списку активних застосувань. В результаті «користувач» цієї троянської програми може і не знати про її присутність в системі, тоді як його комп'ютер відкритий для віддаленого управління.Утиліти прихованого управління дозволяють робити з комп'ютером все, що в них заклав автор: приймати або посилати файли, запускати і знищувати їх, виводити повідомлення, стирати інформацію, перезавантажувати комп'ютер і т.д. В результаті цей троян може бути використаний для виявлення і передачі конфіденційної інформації, для запуску вірусів, знищення даних і т.п. — уражені комп'ютери виявляються відкритими для зловмисних дій хакерів.Таким чином, троянські програми даного типу є одним з найнебезпечніших видів шкідливого програмного забезпечення, оскільки в них закладена можливість найрізноманітніших зловмисних дій, властивих іншим видам троянських програм.Окремо слід зазначити групу бекдорів, здатних розповсюджуватися по мережі і упроваджуватися в інші комп'ютери, як це роблять комп'ютерні черв'яки. Відрізняє таких «троянів» від черв'яків той факт, що вони розповсюджуються по мережі не мимоволі (як черві), а тільки по спеціальній команді «господаря», керівника даної копієї троянської програми.
Trojan-PSW — крадіжка паролів
Дане сімейство об'єднує троянські програми, що «крадуть» різну інформацію із зараженого комп'ютера, зазвичай — системні паролі (PSW — Password-Stealing-Ware). При запуску PSW-трояни шукають системні файли, що зберігають різну конфіденційну інформацію (зазвичай номери телефонів і паролі доступу до інтернету) і посилають її по вказаному в коді «трояну» електронній адресі або адресам. Існує PSW-троян, який повідомляє і іншу інформацію про заражений комп'ютер, наприклад, інформацію про систему (розмір пам'яті і дискового простору, версія операційної системи), тип використовуваного поштового клієнта, IP-адресу і т.п. Деякі трояни даного типу «крадуть» реєстраційну інформацію до різного програмного забезпечення, коди доступу до мережевих ігор і інше. TROJAN-AOL — сімейство троянських програм, що «крадуть» коди доступу до мережі AOL (America Online). Виділені в особливу групу через свою численність.
Trojan-Clicker — інтернет-клікери
Сімейство троянських програм, основна функція яких — організація несанкціонованих звернень до інтернет-ресурсів (зазвичай до веб-сторінок). Досягається це або посилкою відповідних команд браузеру, або заміною системних файлів, в яких вказані «стандартні» адреси інтернет-ресурсів (наприклад, файл hosts в MS Windows). У зловмисника можуть бути наступні цілі для подібних дій: збільшення відвідуваності яких-небудь сайтів з метою збільшення показів реклами;організація DoS-атаки (Denial of Service) на який-небудь сервер;залучення потенційних жертв для зараження вірусами або троянськими програмами. Trojan-Downloader — доставка інших шкідливих програмТроянські програми цього класу призначені для завантаження і установки на комп'ютер-жертву нових версій шкідливих програм, установки «троянів» або рекламних систем. Завантажені з інтернету програми потім або запускаються на виконання, або реєструються «Троєю» на автозавантаження відповідно до можливостей операційної системи. Дані дії при цьому відбуваються без відома користувача. Інформація про імена і розташування завантажуваних програм міститься в коді і даних Трої або викачується Троєю з інтернет-ресурсу, що «управляє» (зазвичай з веб-сторінки).
Trojan-Dropper — інсталятори інших шкідливих програмТроянські програми цього класу написані з метою прихованої інсталяції інших програм і практично завжди використовуються для «підсовування» на комп'ютер-жертву вірусів або інших троянських програм. Дані трояни зазвичай без яких-небудь повідомлень (або з помилковими повідомленнями про помилку в архіві або невірній версії операційної системи) скидають на диск в який-небудь каталог (у корінь диска C:, у тимчасовий каталог, в каталоги Windows) інші файли і запускають їх на виконання. Зазвичай структура таких програм наступна:
Основний код
Файл 1
Файл 2
...
«Основний код» виділяє з свого файлу решту компонентів (файл 1, файл 2 ...), записує їх на диск і відкриває їх (запускає на виконання). Зазвичай один (або більш) компонентів є троянськими програмами, і як мінімум один компонент є «обманкою»: програмою-жартом, грою, картинкою або чимось подібним. «Обманка» повинна відвернути увагу користувача і/або продемонструвати те, що файл, що запускається, дійсно робить щось «корисне», тоді як троянська компонента інсталюється в систему.
В результаті використання програм даного класу хакери досягають двох цілей:скритна інсталяція троянських програм і/або вірусів;
захист від антивірусних програм, оскільки не все з них в змозі перевірити всі компоненти усередині файлів цього типу.
Trojan-Proxy — троянскі проксі-сервери
Сімейство троянських програм, що скритно здійснюють анонімний доступ до різних інтернет-ресурсів. Зазвичай використовуються для розсилки спаму. Trojan-Spy — шпигунські програми
Дані Трояни здійснюють електронне шпигунство за користувачем зараженого комп'ютера: інформація, що вводиться з клавіатури, знімки екрану, список активних застосувань і дії користувача з ними зберігаються в який-небудь файл на диску і періодично відправляються зловмисникові. Троянські програми цього типу часто використовуються для крадіжки інформації користувачів різних систем онлайнових платежів і банківських систем.
Trojan — інші троянскі програми
До даних Троянів відносяться ті з них, які здійснюють інші дії, що потрапляють під визначення троянських програм, тобто руйнування або зловмисна модифікація даних, порушення працездатності комп'ютера і інше. У даній категорії також присутні «багатоцільові» троянські програми, наприклад, ті з них, які одночасно шпигують за користувачем і надають proxy-сервіс віддаленому зловмисникові. ArcBomb — «бомбы» в архивах
Є архівами, спеціально оформленими так, щоб викликати нештатну поведінку архіваторів при спробі розархівувати дані — зависання або істотне уповільнення роботи комп'ютера або заповнення диска великою кількістю «порожніх» даних. Особливо небезпечні «архівні бомби» для файлових і поштових серверів, якщо на сервері використовується яка-небудь система автоматичної обробки вхідної інформації — «архівна бомба» може просто зупинити роботу сервера. Зустрічаються три типи подібних «бомб»: некоректний заголовок архіву, дані, що повторюються, і однакові файли в архіві.Некоректний заголовок архіву або зіпсовані дані в архіві можуть привести до збою в роботі конкретного архіватора або алгоритму разархивірованія при розборі вмісту архіву. Значних розмірів файл, що містить дані, що повторюються, дозволяє заархівувати такий файл в архів невеликого розміру (наприклад, 5ГБ даних упаковуються в 200КБ RAR або в 480КБ ZIP-архів).Величезна кількість однакових файлів в архіві також практично не позначається на розмірі архіву при використанні спеціальних методів (наприклад, існують прийоми упаковки 10100 однакових файлів в 30КБ RAR або 230КБ ZIP-архіві).
Trojan-Notifier — інформування про успешну атаку
Трояни даного типу призначені для повідомлення свого «господаря» про зараження комп'ютера. При цьому на адресу «господаря» відправляється інформація про комп'ютер, наприклад, IP-адреса комп'ютера, номер відкритого порту, адреса електронної пошти і т.п. Відсилання здійснюється різними способами: електронним листом, спеціально оформленим зверненням до веб-сторінки «господаря», ICQ-повідомленням. Дані троянські програми використовуються в багатокомпонентних троянських наборах для сповіщення свого «господаря» про успішну інсталяцію троянських компонент в систему, що атакується
Антивірусні пакети
Для виявлення, видалення і захисту від комп'ютерних вірусів розроблено декілька видів спеціальних програм, які дозволяють виявляти і знищувати віруси. Такі програми називаються антивірусними. Розрізняють наступні види антивірусних програм:
— програми-детектори
— програми-доктори або фаги
— програми-ревізори
— програми-фільтри
— програми-вакцини або іммунізатори
Програми-детекториДетектори здійснюють пошук характерної для конкретного вірусу сигнатури в оперативній пам'яті і у файлах і при виявленні видають відповідне повідомлення. Недоліком таких антивірусних програм є те, що вони можуть знаходити тільки ті віруси, які відомі розробникам таких програм. Програми-доктори або фаги
Фаги не тільки знаходять заражені вірусами файли, але і «лікують» їх, тобто видаляють з файлу тіло програми-вірусу, повертаючи файли в початковий стан. На початку своєї роботи фаги шукають віруси в оперативній пам'яті, знищуючи їх, і тільки тоді переходять до «лікування» файлів. Серед фагов виділяють поліфаги, тобто программи- доктори, призначені для пошуку і знищення великої кількості вірусів. Найбільш відомі з них: Aidstest, Scan, Norton AntiVirus, Doctor Web. Враховуючи, що постійно з'являються нові віруси, програми-детектори і програми-доктори швидко застарівають, і потрібне регулярне оновлення версій. Антівіруси-поліфаги – найбільш поширені засоби по боротьбі з шкідливими програмами. Історично вони з'явилися першими і до цих пір утримують безперечне лідерство в цій області.У основі роботи поліфагов стоїть простій принцип – пошук в програмах і документах знайомих ділянок вірусного коду (так званих сигнатур вірусів). Під сигнатурою можуть розумітися різні речі. У загальному випадку сигнатура – це такий запис про вірус, який дозволяє однозначно ідентифікувати присутність вірусного коду в програмі або документі. Найчастіше сигнатура – це безпосередньо ділянка вірусного коду або його контрольна сума (дайджест).Спочатку антівіруси-поліфаги працювали за дуже простим принципом – здійснювали послідовний перегляд файлів на предмет знаходження в них вірусних програм. Якщо сигнатура вірусу була виявлена, то проводилася процедура видалення вірусного коду з тіла програми або документа. Перш ніж почати перевірку файлів, програма-фаг завжди перевіряє оперативну пам'ять. Якщо в оперативній пам'яті опиняється вірус, то відбувається його деактивація. Це викликано тим, що часто вірусні програми проводять зараження тих програм, які запускаються або відкриваються в той момент, коли вірус знаходиться в активній стадії (це пов'язано з прагненням економити на зусиллях по пошуку об'єктів зараження). Таким чином, якщо вірус залишиться активним в пам'яті, то тотальна перевірка всіх виконуваних файлів приведе до тотального зараження системи.Тим більше в даний час вірусні програми значно ускладнилися. Наприклад, з'явилися так звані “stealth- віруси”. У основі їх роботи лежить той факт, що операційна система при зверненні до периферійних пристроїв (у тому числі і до жорстких дисків) використовує механізм переривань. Тут для недосвідченого читача необхідно зробити “ліричний” відступ на тему “Як працює механізм переривань”. При виникненні переривання управління передається спеціальній програмі – ”Обробникові переривання”. Ця програма відповідає за введення і виведення інформації в/из периферійного пристрою. Крім того, переривання діляться на рівні взаємодії з периферією (у нашому випадку – з жорсткими і гнучкими дисками). Є рівень операційної системи (у середовищі MS DOS – переривання 25h), є рівень базової системи введення/виводу (рівень BIOS – переривання 13h). Досвідчені системні програмісти можуть працювати і безпосередньо, звертаючись до портів введення/виводу пристроїв. Але це – вже досить серйозне і важке завдання. Така багаторівнева система зроблена, перш за все, з метою збереження переносимості застосувань. Саме завдяки такій системі, скажімо, виявилося можливим здійснювати запуск DOS-застосувань в багатозадачних середовищах типу MS Windows або IBM OS/2.
Але в такій системі спочатку прихована і уразливість: управляючи обробником переривань, можна управляти потоком інформації від периферійного пристрою до користувача. Stealth-віруси, зокрема, використовують механізм перехоплення управління при виникненні переривання. Замінюючи оригінальний обробник переривання своїм кодом, stealth-віруси контролюють читання даних з диска. У випадку, якщо з диска читається заражена програма, вірус “викушує” власний код (зазвичай код не буквально ”викушується”, а відбувається підміна номера читаного сектора диска). У результаті користувач отримує для читання “чистий” код. Таким чином, до тих пір, поки вектор обробника переривань змінений вірусним кодом, сам вірус активний в пам'яті комп'ютера, виявити його простим читанням диска засобами операційної системи неможливо. Схожий механізм маскування використовується і завантажувальними вірусами, про які буде сказано далі.В цілях боротьби з stealth-вірусами раніше рекомендувалося (і, в принципі, рекомендується і зараз) здійснювати альтернативне завантаження системи з гнучкого диска і лише після цього проводити пошук і видалення вірусних програм. В даний час завантаження з гнучкого диска може виявитися проблематичним (для випадку з win32 антивірусними застосуваннями запустити їх не вдасться). Зважаючи на все вищесказане, антівіруси-поліфаги виявляються максимально ефективними тільки при боротьбі з вже відомими вірусами, тобто з такими, чиї сигнатри і методи поведінки знайомі розробникам. Тільки в цьому випадку вірус з 100-процентною точністю буде виявлений і видалений з пам'яті комп'ютера, а потім – і зі всіх файлів, що перевіряються. Якщо ж вірус невідомий, то він може достатньо успішно протистояти спробам його виявлення і лікування. Тому головне при користуванні будь-яким поліфагом – якомога частіше оновлювати версії програми і вірусні бази. Для зручності користувачів бази винесені в окремий модуль, і користувачі можуть оновлювати ці бази щодня за допомогою Інтернету.
Осібно тут коштують так звані евристичні аналізатори. Річ у тому, що існує велика кількість вірусів, алгоритм яких практично скопійований з алгоритму інших вірусів. Як правило, такі варіації створюють непрофесійні програмісти, які по якихось причинах вирішили написати вірус. Для боротьби з такими “копіями” і були придумані евристичні аналізатори. З їх допомогою антивірус здатний знаходити подібні аналоги відомих вірусів, повідомляючи користувача, що у нього, схоже, завівся вірус. Природно, надійність евристичного аналізатора не 100%, але все таки його коефіцієнт корисної дії більше 0,5. Віруси, які не розпізнаються антивірусними детекторами, здатні написати тільки найбільш досвідчені і кваліфіковані програмісти.
Евристичним аналізатором коду називається набір підпрограм, що аналізують код виконуваних файлів, пам'яті або завантажувальних секторів для виявлення в нім різних типів комп'ютерних вірусів. Основною частиною евристичного аналізатора є емулятор коду. Емулятор коду працює в режимі перегляду, тобто його основне завдання – не емулювати код, а виявляти в нім всілякі події, тобто сукупність коду або виклик певної функції операційної системи, направлені на перетворення системних даних, роботу з файлами або часто використовувані вірусні конструкції. Грубо кажучи, емулятор проглядає код програми і виявляє ті дії, які ця програма здійснює. Якщо дії цієї програми укладаються в якусь певну схему, то робиться вивід про наявність в програмі вірусного коду.
Звичайно, вірогідність як пропуску, так і помилкового спрацьовування вельми висока. Проте правильно використовуючи механізм евристики, користувач може самостійно прийти до вірних виводів. Наприклад, якщо антивірус видає повідомлення про підозру на вірус для одиничного файлу, то вірогідність помилкового спрацьовування вельми висока. Якщо ж таке повторюється на багатьох файлах (а до цього евристик нічого підозрілого в цих файлах не виявляв), то можна говорити про зараження вашої системи вірусом з вірогідністю, близькою до 100%. Найбільш могутнім евристичним аналізатором в даний час володіє антивірус Dr.Web (http://www.drweb.ru). Якщо і поступається йому, то ненамного AVP (http://www.avp.com).
Використання евристичного аналізатора, крім всього вищепереліченого, дозволяє також боротися з вірус-генераторамі і поліморфними вірусами. Класичний метод з визначенням вірусів по сигнатурі в цьому випадку взагалі виявляється неефективний.
Вірус-генератори – це спеціалізований набір бібліотек, який дозволяє легко сконструювати свій власний вірус, навіть маючи слабкі пізнання в програмуванні. Написавши нескладну програму, ви далі підключаєте до цієї програми бібліотеки генератора, вставляєте в потрібних місцях виклики зовнішніх процедур – і ось ваш елементарний вірус перетворився на достатньо складний продукт. Найсумніше, що в цьому випадку сигнатура вірусу буде кожного разу інша, тому відстежити вірус виявляється можливим тільки по характерних викликах зовнішніх процедур – а це вже робота евристичного аналізатора. Поліморфний вірус має ще складнішу структуру. Само тіло вірусу видозмінюється від зараження до зараження, при цьому зберігаючи своє функціональне наповнення. В простому випадку – якщо розкидати в тілі вірусу випадковим чином нічого оператори (типу “ mov ах, ах” або “nop”), що не роблять, то тіло вірусного коду зазнає значні зміни, а алгоритм залишиться тим самим. В цьому випадку на допомогу також приходить евристичний аналізатор. Програми-ревізори Відносяться до найнадійніших засобів захисту від вірусів. Ревізори запам'ятовують початковий стан програм, каталогів і системних областей диска тоді, коли комп'ютер не заражений вірусом, а потім періодично або за бажанням користувача порівнюють поточний стан з результатним. Виявлені зміни виводяться на екран монітора. Як правило, порівняння станів проводять відразу після завантаження операційної системи. При порівнянні перевіряються довжина файлу, код циклічного контролю (контрольна сума файлу), дата і час модифікації, інші параметри. Програми-ревізори мають достатньо розвинені алгоритми, виявляють стелс-віруси і можуть навіть очистити зміни версії програми, що перевіряється, від змін, внесених вірусом. До програм-ревізорів належить широко поширена в Росії програма Adinf від «Діалогнаука» або Winsonar 2007 XP 7. Недолік — дуже сильно гальмують роботу комьютера.
Антивірусні програми-ревізори дозволяють виявити вірус. Найчастіше виявленням вірусу справа і закінчується. Існує блок лікування для популярного антивіруса-ревізора Adinf, так званий Cure Module, але такий блок дозволяє лікувати лише ті файли, які були не заражені на момент створення бази даних програми. Проте виявити вірус на комп'ютері (або навіть підозра на нього) антивіруси-ревізори можуть з великим ступенем надійності. Зазвичай найбільш оптимальною є зв'язка поліфаг і ревізор. Ревізор служить для виявлення факту зараження системи. Якщо система заражена, то в справу пускається поліфаг. Якщо ж йому не вдалося знищити вірус, то можна звернутися до розробника антивірусних засобів, – швидше за все на ваш комп'ютер потрапив новий, невідомий розробникам вірус.
Основу роботи ревізорів складає контроль за змінами, характерними для роботи вірусних програм. Далі ми розглянемо, як цей контроль здійснюється. При установці програми створюються спеціальні таблиці. У них міститься інформація: про контрольні суми незмінних файлів, вміст системних областей, адреси обробників переривань, розмір доступної оперативної пам'яті і т.п. решта Всієї роботи ревізора полягає в порівнянні поточного стану диска з раніше збереженими даними, тому украй важливо, щоб всі контрольні таблиці створювалися не на зараженій машині. Тільки в цьому випадку робота ревізора буде достатньо ефективною. Отже, перейдемо до стадій роботи програми-ревізора.Контроль оперативної пам'яті. Ця стадія перевірки включає процедури виявлення слідів активних завантажувальних і stealth-вірусів в пам'яті комп'ютера. Якщо такі алгоритми будуть знайдені, ви отримаєте відповідне попередження. Спочатку програма шукає вже знайомі віруси. Далі програма перевіряє, чи змінився обробник Int13h. Якщо він змінився, то з вірогідністю 90% можна сказати, що комп'ютер інфікований завантажувальним вірусом (завантажувальні віруси вимушені перехоплювати це переривання з тим, щоб після своєї активізації передати управління “нормальному” завантажувальному сектору і система завантажилася без збоїв). Ревізор видасть вам попередження про це і повідомить адресу в пам'яті, по якій знаходиться новий обробник Int13h. В принципі інформація про місцезнаходження обробника необхідна програмістам і системним адміністраторам, а рядовому користувачеві слід звернути увагу на попередження. Навіть якщо ревізор встановлюється вже на заражений вірусом комп'ютер і реальну адресу обробника Int13h маскується вірусом, в 85% випадків ревізорові вдається виявити дійсну адресу обробника Int13h в BIOS і працювати, використовуючи його. Якщо по яких-небудь причинах ревізорові не вдалося отримати реальну адресу обробника, то видається попередження. Дійсна адреса обробника переривання досягається шляхом покрокового перегляду тіла вірусу (по алгоритму своєї роботи завантажувальний вірус вимушений врешті-решт передавати управління оригінальному обробникові). Деякі віруси блокують трасування переривань: при спробі трасувати їх коди вони “завішують” систему, перезавантажують комп'ютер і т.д. Тому, якщо при трасуванні переривань комп'ютер починає поводитися “дивно”, то слід бути дуже обережним – не виключено, що оперативна пам'ять уражена вірусом.Важливим параметром є і розмір вільної оперативної пам'яті. Зазвичай ревізор запускається найпершим, до завантаження яких-небудь ще програм. Якщо ж розмір оперативної пам'яті зменшився – це вірна ознака присутності в ОЗУ ще якоїсь програми. Швидше за все програма ця – вірус.
Контроль системних областей. Контроль системних областей призначений для виявлення вірусів, які використовують для своєї активації механізм завантаження. Як відомо, першою з диска завантажується завантажувальний запис (boot record), який містить в собі міні-програму, що управляє подальшим завантаженням. Для жорсткого диска першої проводиться завантаження головного завантажувального запису (MasterBootRecord або MBR).Програми-ревізори не можуть судити про початкову “чистоту” оперативної пам'яті, тому читання Master Boot Record відбувається трьома різними способами:
(bios) – прямим зверненням в BIOS;
(i13h) – читанням через BIOS-переривання Int13h;
(i25h) – читанням засобами операційної системи (переривання Int25h).
Якщо лічена інформація не співпадає, в наявності дія stealth-алгоритмів. Для більшої надійності читання MBR проводиться через IDE-порти жорсткого диска. На сьогодні в “дикій природі” не зустрічалися віруси, які можуть маскуватися від ревізора, що володіє такою функцією. Аналогічним чином проводиться перевірка і простого (не головного) завантажувального сектора. Зазвичай за рахунок того, що ревізор зберігає резервну копію системних областей, відновлення пошкоджень від завантажувального вірусу відбувається досить прозаїчно: якщо користувач дає на те свою згоду, ревізор просто записує системні області наново, використовуючи збережені раніше дані.Контроль незмінних файлів. Остання стадія перевірки, направлена на виявлення діяльності файлових вірусів – контроль зміни файлів. Для всіх файлів, які активно використовуються і в той же час не повинні змінюватися (звичайно це програми типу win.com і т. п.) створюються контрольні таблиці. У них містяться значення контрольних сум і розмірів файлів. Потім, в ході подальшого використання ревізора, інформація з дисків порівнюється з еталонною, такою, що зберігається в таблицях. Якщо інформація не співпадає, то мабуть знаходження в системі файлового вірусу. Найявніша ознака – зміна розміру або вмісту файлу без зміни дати створення файлу.
В принципі, рекомендується внести до розряду “незмінних” ті виконувані файли, шлях до яких вказаний в змінній PATH. Вони найчастіше стають жертвою файлових вірусів. Щоб не дати stealth-вірусам “обдурити” систему, читання даних також відбувається як засобами операційної системи, так і засобами BIOS. Якщо ці дані не співпали, то можна говорити про те, що в системі активно діє вирус-“невидимка”.
Після того, як всі файли перевірені, ревізори часто зберігають додаткові області пам'яті, які можуть бути зіпсовані вірусами. Це FLASH- і CMOS-пам'ять. Ці області пам'яті також змінюються достатньо рідко і тому їх зміни можуть бути підозрілі.
Програми-фільтри або «сторожі»
Є невеликими резидентними програмами, призначеними для виявлення підозрілих дій при роботі комп'ютера, характерними для вірусів. Такими діями можуть бути: спроби корекції файлів з розширеннями COM, EXE зміна атрибутів файлу прямий запис на диск за абсолютною адресою запис в завантажувальні сектори диска завантаження резидентної програми При спробі якої-небудь програми провести вказані дії «сторож» посилає користувачеві повідомлення і пропонує заборонити або вирішити відповідну дію. Програми-фільтри вельми корисні, оскільки здатні виявити вірус на найранішій стадії його існування до розмноження. Проте, вони не «лікують» файли і диски. Для знищення вірусів потрібно застосувати інші програми, наприклад фаги. До недоліків программ- сторожів можна віднести їх «настирливість»(наприклад, вони постійно видають попередження про будь-яку спробу копіювання виконуваного файлу), а також можливі конфлікти з іншим програмним забезпеченням. Прикладом программи- фільтру є програма Vsafe, що входить до складу пакету утиліт MS DOS. Вакцини або іммунізатори.
Це резидентні програми, що запобігають зараженню файлів. Вакцини застосовують, якщо відсутні програми-доктори, що «лікують» цей вірус. Вакцинація можлива тільки від відомих вірусів. Вакцина модифікує програму або диск так, щоб це не відбивалося на їх роботі, а вірус сприйматиме їх зараженими і тому не упровадиться. В даний час програми-вакцини мають обмежене застосування. Своєчасне виявлення заражених вірусами файлів і дисків, повне знищення виявлених вірусів на кожному комп'ютері дозволяють уникнути розповсюдження вірусної епідемії на інші комп'ютери.
Деякі вакцини здатні здійснювати активніші дії. Наприклад, вакцина VS_ONE_H, написана спеціально для боротьби з вірусом OneHalf ялтинським програмістом А.Крыжановским, також перехоплює int13h, і використовує алгоритм антитрасування, що називається в программістком світі "поплавець". Як тільки хто-небудь в системі здійснював спробу оттрассировать переривання 13h, вакцина видає попередження і зупиняє систему.
Метод «поплавця» заснований на тому, що трасування робиться покроково – процесор перемикається в режим відладки, і після виконання кожної команди викликає debug-переривання, використовуване, зазвичай відладчиками для покрокової відладки програми, щоб проаналізувати результати виконання команди. Виклик налагоджувального переривання має на увазі, що використовується стек процесора, в якому зберігається адреса повернення. Це і використовується для того, щоб визначити трасування. Ми забороняємо переривання, потім поміщаємо в перший вільний осередок стека код 0000 або FFFF (обидві адреси не можуть бути адресою повернення), потім прочитуємо з першого вільного осередку стека значення, вирішуємо переривання і порівнюємо лічене значення з тим, що ми туди поміщали.
Сенс методу в тому, що коли програма виконується нормально, після заборони переривань, ніхто не зможе перервати виконання наший програми, і тому, помістивши в перший вільний осередок стека яке-небудь значення, ми потім зможемо його ж звідти і прочитати, тому що стік використовувати нікому. Якщо ж програма виконується покроково, то, не дивлячись на заборону переривань, процесор все одно викличе debug-переривання після команди, якою ми поміщали в стек число. Це debug-переривання помістить у використаний нами осередок стека адресу повернення, після чого ця адреса ми і прочитаємо наступною командою читання із стека. Отримавши неспівпадання записаного і ліченого чисел ми зможемо переконатися в тому, що включений режим покрокового виконання команд процесора і ми можемо стверджувати, що піддалися зараженню вірусом.
Короткий огляд сучасних антивірусних пакетів
— BitDefender Antivirus Plus v10
функція Heuristics in Virtual Environment – емуляція віртуальної машини, за допомогою якої проходять перевірку потенційно небезпечні об'єкти з використанням евристичних алгоритмів;
автоматична перевірка даних, що передаються по протоколу POP3, підтримка найбільш популярних поштових клієнтів (MS Exchange, MS Outlook, MS Outlook Express, Netscape, Eudora, Lotus Notes, Pegasus, The Bat та інші);
захист від вірусів, що розповсюджуються через файлообменниє Peer-2-Peer мережі;
формування особистого спам-ліста користувача.
BitDefender Antivirus поки не дуже популярний серед вітчизняних користувачів, проте стабільно займає перші місця практично у всіх західних топ-рейтінгах антивірусів. Надійність BitDefender підтверджують сертифікати ICSA Labs, CheckMark і Virus Bulletin. Остання щомісячно перевіряє, наскільки захист антивірусів відповідає новим погрозам. За останні п'ять місяців BitDefender Antivirus регулярно отримував рейтинг VB 100%.
— Eset NOD32 2.5
евристичний аналіз, що дозволяє виявляти невідомі погрози; технологія ThreatSense – аналіз файлів для виявлення вірусів, програм-шпигунів (spyware), непрошеної реклами (adware), phishing-атак і інших погроз;
перевірка і видалення вірусів із заблокованих для записів файлів (наприклад, захищені системою безпеки Windows бібліотеки DLL);
перевірка протоколів HTTP, POP3 і PMTP.
NOD32 – ще один приклад практично бездоганної роботи антивіруса, який гарантований неодноразовим отриманням нагороди VB100%, а також сертифікатами ICSA і CheckMark (включаючи категорію AntiSpyware). — Антивирус Касперского 6.0
перевірка трафіку на рівні протоколів POP3, IMAP і NNTP для вхідних повідомлень і SMTP для витікаючих, спеціальні плагини для Microsoft Outlook, Microsoft Outlook Express і The Bat!;
попередження користувача у разі виявлення зміни як в нормальних процесах, так і при виявленні прихованих, небезпечних і підозрілих; контроль змін, що вносяться до системного реєстру; блокування небезпечних макросів Visual Basic for Applications в документах Microsoft Office.
Додатково:
— Ad-Aware це анти-spyware програма, ророблена фірмою Lavasoft, яка виявляє та видаляє програми, кваліфіковані як spyware чи adware. Вона також виявляє dialer’и, trojan’и, malware, data-mining, aggressive advertising, parasit’ів, browser hijacker’ів та засоби слідкування. — Kaspersky® Internet Security 7.0 - це програма для комплексного захисту ПК від вірусів і всіх інших типів шкідливих програм, а також від атак хакерів і спаму.
Основні функції
Захист від вірусів, троянських програм і черв'яків.Захист від шпигунського (spyware) і рекламного (adware) ПО.Захист від всіх типів клавіатурних шпигунів.Виявлення всіх видів руткитов.Захист від вірусів при роботі з ICQ і іншими IM-клієнтами.Відміна небажаних змін на вашому комп'ютері.Засоби створення диска аварійного відновлення системи.Безкоштовна технічна підтримка.