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