Маючи один (кілька) примірників, ми, грубо кажучи, запам'ятовуємо його логіку і порівнюємо його з логікою програми, що перевіряється, тобто оцінюємо їх семантично, а не синтаксично! Дані методи досить складні в реалізації, а інших виразних рішень подібної проблеми мені відшукати не вдалося.
Досить загадкове, але часто вживане в рекламних акціях слово грецького походження. Зазвичай його вживають, коли мова йде про детектуванні невідомих вірусів. Ну що ж, давайте розберемося з самого початку. На мій погляд, дана технологія є радше спробою виділитися на ринку антивірусних продуктів, ніж дійсно придумати технологію по боротьбі з невідомими шкідливими програмами. Вірус хоч і дуже складно відрізнити від звичайної програми, але існує ряд ознак, які в сукупності дають можливість вважати, що перед нами зловредів або заражена програма. Ну, для початку розглянемо файлові віруси - при зараженні виконуваного файлу вони повинні якимось чином додати в нього свій код.
Існує три основних техніки: створення нової секції або збільшення розміру останньої у виконуваному файлі з подальшим приміщенням коду в новий простір, або впровадження у порожні ділянки файлу (наприклад, простір між секціями файла). При цьому у кожного виконуваного файлу (далі для простоти будемо називати його PE-файлом) є строго певна структура і свій заголовок, за допомогою якого можна орієнтуватися в цій структурі. Так от, одним з полів заголовка є поле, вказувало на Крапку Входу (Entery Point - EP). EP - місце (адреса), з якого починається виконання програми. При зараженні він править це поле і змінює адресу на той, звідки починається його власний код. Після запуску зараженої програми спочатку виповниться тіло вірусу, а потім він передасть управління на оригінальну EP програми. Таким чином, ми маємо заражений файл, при цьому він зберігає свою працездатність. Так як же нам в такому випадки допоможе евристика?
Дуже рідко точка входу незараженої файлу знаходиться в останній секції і вже тим більше не може (з погляду правильної програми) перебувати між іншими секціями. Користуючись цим, антивірус робить висновок, що перед нами Unknown_WIN32_Virus. У набір подібних правил також входять списки підозрілих команд (або, знову ж, їх поєднання), підозрілі рядки всередині бінарного файлу, API-функції, які використовує додаток, і т.д. Даний метод - це спроба імітувати процес людського мислення. Але, на мій погляд, це не зовсім вдала спроба, тому часті випадки помилкових спрацьовувань, і часом вони за кількістю перевищують вірні.
Досить винахідлива техніка, що з'явилася зовсім недавно. Не всі антивіруси встигли обзавестися їй, але багато хто вже до цього прагнуть. Почнемо, як завжди, з самого початку. Коли вірус (як приклад будемо розглядати троянську програму) потрапляє на комп'ютер, перша справах він повинен закріпитися в системі: помістити свою копію в якому-небудь системному каталозі, тому зазвичай рядові користувачі туди не заглядають. Наступним етапом закріплення стає запис в автозавантаження (існує сила-силенна способів це зробити, тому чим більше подібнихмісць знайоме проактивного захисту, тим краще), ну, а далі йде корисне навантаження/установка допоміжних драйверів в ситему (досить популярна техніка), зміна пам'яті інших процесів (зокрема, впровадження dll-бібліотеки в адресний простір довіреної процесу - наприклад, інтернет-браузера), крадіжка конфіденційних даних. Як же нам допоможе ця сама проактивний захист? Її основне завдання полягає в тому, щоб запобігти потенційно небезпечні дії, вироблені в системі, але є один недолік. Система не може приймати рішень самостійно, вибір дії надається самому користувачеві (власне, він або дозволяє потенційно небезпечне дію, або ні). У більшості випадків він здатний вибрати адекватне дію для даної ситуації, але, як завжди, свою роль відіграє людський фактор, тому навіть наявність подібної системи не здатне повністю захистити нас від загрози.
Але існують і більш грунтовні рішення, що мають серйозних аналітичних компонентом, який вже сам може приймати частина рішень без втручання користувача. Візьму на себе сміливість віднести частину функцій файрволла до проатівной захисті (а в більшості випадків вони повною мірою володіють такою). Як ви могли здогадатися, це доступ інтернет-додатків - навіть якщо антивірус не зміг виявити трояна, дана можливість просто-напросто заблокує його роботу з мережею, тому вся вкрадена інформація не буде передана. У технологію створення проактивного захисту заглиблюватися не буду - скажу лише ключову фразу, яку варто ввести у пошуковик, і він вам видасть цілу купу статей з цього приводу. Приховати API-функцій - на цей запит ви отримаєте потрібні результати. А тепер, як завжди, невелика ложка дьогтю в бочці меду. Т.к. технологія відносно молода, в її реалізації дуже часто допускаються грубі помилки, що призводить до зависання системи...